מאת JobHunt
1)ההבדל בי מחלקה אבסטרקטית וממשק.(כמה תשובות נכונות)
-אין הבדל
-באבסטרקט יכול להיות מימוש
-בממשק יש משנים שאינם פינאל סטטיק
-ניתן לרשת רק מחלקה אחת אבסטרקית ולממש כמה ממשקים.
2)ההבדל בין סטרינג,סטרינג באפר,סטרינג בילדר.
-כל פעם שמשנים מחרוזת(סטרינג) נוצרת חדשה.
-הבאפר והבילדר נועדו כדי לעשות מניפולציות על מחרוזות מבלי ליצור מחרוזת חדשה לצורך כך.
-הבאפר הוא סרד סייף.
-כל התשובות נכונות.
3)אם רוצים לעשות מפתח של מפה(קיי של מאפ) בתור אובייקט צריך:
-לממש איקוואלס
-איקוואלס והש קוד
-איקוואלס וטו סטרינג
-כלום
4)פונ' סוואפ עם מחרוזות – האם תעבוד ותחליף (סטרינגס נשלחים ביי ואליו)
5)מה היתרון והחיסרון של אינדקסים בדטה בייס -שאלה פתוחה
6)מחיקת איבר מלינקדליסט כשיש מצביע על הראשון ועל האיבר למחיקה ב אוו של 1. (כתיבת אלגוריתם)
7)בדיקת תקינות של ביטוי עם 3 סוגי סוגרים (כתיבת אלגוריתם)
8)עם איזה מבנה תממשי מילון ולמה זה יותר יעיל לממש עם המבנה הזה. (תשובה פתוחה)
9)סינגלטון בלייזי מוד, מה צריך להוסיף לקוד כדי שזה יהיה סרד סייפ(שאלה פתוחה) (אנוטציה סינכרונייזד, בנאי פרייבט או פרוטקטד, פונ' קלוון שלא מעתיקה)
10)אם יש 2 אובייקים שמאותחלים עם אותם שדות ומפעילים איקוואלס שלא מימשנו אותה, מה יקרה?
point p1(1,2)
,
p2(1,2)
return p1.equals(p2);
-יחזור שקר (זה התשובה כי המימוש הדיפולטי אם לא עושים אוברייד הוא השוואת כתובות )
-יחזור אמת
-טעות קומפילציה
-טעות ריצה
11)מה ההבדל בין לינקד ליסט לאריי ליסט (מה יותר מהיר למחוק בו את האיבר הראשון, חיפוש אובייקט ע"פ אינדקס וע"פ איבר איזה זמן ריצה זה)
12) אם יש רשומות שנשלפות הרבה פעמים מ BD, וזה תהליך יקר, איך תשפרו את זה?
לבדיקת התאמה
מאת JobHunt
נתון עץ בינארי:
צור פונקציה ההופכת את כל הענפים והצמתות (כמו מראה)
תשובה מוצעת:
public void ReverseTree(TreeNode root){
TreeNode tmp = root.leftReference;
root.leftReference = root.rightReference;
root.rightReference = tmp;
if(root.leftReference != null) ReverseTree(root.leftReference);
if(root.rightReference != null) ReverseTree(root.rightReference);
}
העץ בינרי בעצמו יכול להיות NULL, לדעתי שווה גם לבדוק את זה לפני שמתחילים להפוך.
נתון שתי רשימות מקושרות וחד כיווניות אשר מתמזגות בנקודה מסויימת
כתוב פונקציה אשר מחזירה את צומת המפגש
תשובה מוצעת:
public static void main(String[] args) {
LinkedList<Integer> list1 = new LinkedList<Integer>();
LinkedList<Integer> list2 = new LinkedList<Integer>();
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(4);
list1.add(25);
list1.add(34);
list1.add(43);
list1.add(5);
list2.add(-1);
list2.add(-2);
list2.add(-3);
list2.add(4);
list2.add(62);
list2.add(73);
list2.add(4);
list2.add(67);
Iterator<Integer> iter1 = list1.iterator();
Iterator<Integer> iter2 = list2.iterator();
while(iter1.hasNext() ){
while(iter2.hasNext()){
if(iter1.next() == iter2.next())
System.out.println(true);
}
}
נתון מערך של מספרים שלמים
צור פונקציה שמקבלת מערך ומחזירה את סכום הזוגות הגדול ביותר כאשר לזוגות אסור להיות שכנים .
נתון קובייה (כמו הונגרית).
תת קובייה פנימית היא כזאת שאין לה שום פאה חיצונית.
צור נוסחה המחשבת כמה תת קוביות פנימיות יש.
(דוגמא: עבור קובייה הונגרית יש 9*3 תת קוביות ורק אחת פנימית) .
לבדיקת התאמה
מאת JobHunt
כאחד שמראיין באמדוקס מועמדים לתכניתי JAVA עם/בלי ניסיון יכול להעיד ששאלות יבשות ב-JAVA לאו דווקא שופכים מספיק ידע כדי להתרשם ממועמד.
כולם יודעים לדקלם כמו תוכים את "מה ההבדל בין interface לבין abstract class"
אבל בשאלה השנייה של "מתי תשתמש בכל אחד מהם?" לא אחת מקבל דממה בתור תשובה.
בגדול – שואל על הרבה נושאים – אבל בשעה של ראיון שמתוכה 5 דקות הקדמה ומבוא, 20 דקות למימוש שאלת קוד ורעיון אלגוריתמאי – נשאר לכל היותר חצי שעה שבמהלכה מנסה לדלות כמה שיותר פרטים על ניסיונו וידיעתו של המרואיין.
בזמן הזה צריך לראות שמועמד יודע מבני נתונים, סיבוכיות, OO, וכמובן JAVA.
ואם מרואיין אם ניסיון – אז בכלל…לצלול לתוך פרוייקטים שעליו המרואיין עבד, לוודא שהוא מבין את הארכיטקטורה של המוצר עליו עבד וב-90% מהמקרים משלב שאלות כלליות לצד שאלות ספציפיות על המוצר, למשל, אם שכבת הכתיבה ל-DB היא hibernate – בין לבין אשאל שאלות על הנושא ואם עבדו עם spring אז אנבור לראות שמבחינת המרואיין זה לא סתם buzzword.
מספר המרואיינים שקיבלתי אשר כתבו spring framework בקו"ח אבל לא ידעו לענות על מה זה IoC מטרידה. באותו אופן אשאל על application servers, אם זה שאלות אדמיניסטרטיביות, ועד לרמת מימוש client המתחבר ב-REMOTE ל-java bean מסויים (שלב-שלב – לא בקוד – אלא בע"פ כדי לוודא הבנה של EJB Container).
בראיונות לא נכנס לנושאים "כבדים" מדי כמו ניהול טרנזקציות – אבל אם מישהו רושם לי שהוא יודע JDBC ושעבד מתוך application server מול DB, שיידע מה זה DATA SOURCE, שיידע מה XA ועוד דוגמאות למכביר.
ולא אחת מגיעים מרואיינים שפשוט חסרי ידע, וחבל. כי זה סה"כ לדאוג לכסות את הידע שצברתי במהלך העבודה/לימודים.
לבדיקת התאמה
מאת JobHunt
1. מה ההבדל העיקרי בין SET ו-LIST?מה השוני ביניהם?מה ההבדל בין HASHTABLE ו-VECTOR מול SET ו LIST?
2.האם משתנה סטטי יכול להיות מבוטל? (can a static method be overridden)
3.מה synchronized ?
3.תממש CONNECTION STRING ב JAVA(תקרא איך לממש את הCONNECTION ב JDBC)?
4 יהיה לך שאלות על TRY/CATCH/FINALLY?
5.יהיה עליך לקרוא פונקציה ולראות מה היא מחזירה .
שאלה 3, המימוש:
public static Connection getConnection(String user, String pass, String server, String port, String sid) {
try {
// Class.forName("oracle.jdbc.driver.OracleDriver");
// Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
// return return DriverManager.getConnection("jdbc:oracle:thin:user/password@host:port/sid");
Class.forName(("oracle.jdbc.driver.OracleDriver"));
return DriverManager.getConnection("jdbc:oracle:thin:" + user + "/" + pass + "@" + server + ":" + port + "/" + sid);
//("jdbc:oracle:thin:load/12345@goliath:1521/BPM");
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
השינוי היחידי הוא , אם אתה עובד עם ORACLE או SQL אתה משנה את ה-JAR
לבדיקת התאמה
מאת JobHunt
לכתוב פונקציה רקורסיבית שהופכת עץ בינארי-שמאל הופך לימין וימין לשמאל
נתון מערך בגודל K ובו מספרים מ1-N ומערך עזר בגודל N לכתוב קוד שיסדר את כל המספרים במערך הראשון ללא חזרות ומשמאל לימין(הכוונה שהמערך יהיה ריק מנקודה מסויימת מכיוון שרוב המספרים חזרו על עצמם)-בסיבוכיות של OׂNׁ
וקיבלתי חידה עם שקי מטבעות
ישנם K שקים אחג מהם מכיל 90 גרם במקום 100 גרם ע"י שקילה אחת יש לדעת מהו השק המזוייף
לאחר מכן נכנסתי למנהלת המחלקה בחורה מקסימה ויש לומר מבריקה שביקשה ממני לתכנן מערכת אשר תיתן את הפונקציה של T9 שיש בטלפונים הסלולאריים
ושאלה קשה שהצלחתי חלקית נתון ביטוי לדוגמא 3-4*2^4+(2*1) הביטוי הוא סטרינג
יש לתכנן אלגוריתם אשר יחזיר את התוצאה-הזעתי קשות בשאלה הזאת
מתברר שיש לישתמש ב 2 מחסניות או באחת יש כמה סוגי פתרונות
http://www.shafee.com/past-lectures/The-concept-of-a-datatype.ppt
פתרון השקים:
לשם פשטות נניח שיש 3 שקים,
ניקח את שק מס' 1 + 1/2 משק מספר 2 + 1/3 משק מספר 3 ונשקול ביחד
כעת לפי התוצאה נדע איה שק מכיל 90 גרם.
נניח ששק מס' 1 מכיל 90 גרם אזי החישוב הוא כך:
1*90 + 1/2*100 + 1/3*100
אם שק מס' 2 מכיל 90 גרם אזי החישוב יהיה:
1*100 + 1/2*90 + 1/3*100
אם שק מס' 3 מכיל 90 גרם אזי החישוב יהיה:
1*100 + 1/2*100 + 1/3*90
כך נדע בוודאות איזה שק מכיל 90 גרם.
ניתן להכליל זאת ל-K ע"י כך שפשוט ניקח מכל שק: 1/1 1/2 1/3 1/4 … אחד חלקי K
לבדיקת התאמה
מאת JobHunt
הדינאמיקה הקבוצתית מחולקת לשניים :
1)בחירת מועמדים לקבלה לעבודה
2)בניית גשר.
בגלל שזה חלק פסיכולוגי ויושבים איתכם מנהלי צוותים ומנהלי פרוייקטים , אי אפשר לדעת מה העדפה אישית שלהם ומה דרישות של תפקיד , אליו אתם מגוייסים.
החלק של מועמדים ->
מקבלים תיאור משרה ותיאור של 6 מועמדים , צריך לדרג אותם מ1 עד 6.בהתחלה כל אחד בנפרד ולאחר מכן דירוג משותף של כל הקבוצה שלכם.
לחלק הזה יש 5 דקות אם אני לא טועה , ובסוף צריך להקריא מה הקבוצה בחרה.על כל חברי הקבוצה להסכים לבחירה , אחרת היא תיפסל.חבר בקבוצה יכול להטיל וטו על ההחלטה (הדבר הכי דפוק לעשות) ואז אין החלטה . את החלק הזה עברו אנשים שהשתתפו ב-70% , לא הובילו את הדיון וגם לא שתקו לאורך כל הדיון.צריך לחשוב על אופציה , בה אף אחד בקבוצה לא יסכים אם הבחירה שלכם , ומה עושים במקרה הזה.להזכירכם , המנהלים לעתיד יושבים באותו חדר איתכם , ומקשיבים לכל דבר שנאמר.
החלק של הגשר -> נותנים המון חלקי לגו ומבקשים לבנות גשר (לפי 3 שבועות מימדים היו 10 על 15 , לפני שבוע זה כבר גדל ל-40 על 20 , אז אין לדעת ).לגשר צריכים להיות עמודי תאורה במרחק של 4 ס"מ אחד מהשני , רגליים ואסור שאף חלק בצבע אדום יגע בחלק בצבע כחול(בכל חלקי הגשר) , וכמה שיישאר פחות חלקים מיותרים – ככה יותר טוב.לבניה נתונה חצי שעה , כשבהתחלה צריך להתחלק ל-2 קבוצות ולחלק את הזמן ל
א)תכנון
ב)ביצוע
ג)אינטגרציה
כאשר בכל חלק המדריכה עומדת עם סטופר.
אחרי שלב התכנון שתי הקבוצות לא רשאיות לדבר זו עם זה , אז צריך לתכנן טוב.
אצלינו היה 15 דקות תכנון , 10 דקות ביצוע ו5 דקות אינטגרציה וזה מספיק זמן.
בסוף המדריכה שואלת באקראי לדרג את התנהלות הקבוצה ו\או התנהלות שלכם ומה ציון שהייתם נותנים לגשר.מומלץ לא לחרטט , אם הגשר יצא דפוק – אז לציין את זה .
לפני הדינאמיקות יש גם היכרות אישית :
המדריכה מפזרת המון קלפים עם כל מיני תכונות("לדעת לוותר" , "להוביל" , "לנצח" וכד') וצריך לבחור שניים:
1)תכונה שמאפיינת אותכם הכי טוב אותכם
2)קלף עם תכונה שהייתם רוצים שתהיה לכם.
פה בחלק הזה צריך לחשוב ניטרלי , ולחפש תכונות כמו "להאמין בניסים" , "לדעת להיות לבד" וכד' , אבל זה נתון לבחירה אישית שלכם .כאשר אתם בוחרים קלף תחשבו איך אפשר לעקוץ אותכם עם התכונה הזו (כי זה מה שהמדריכה עושה) .
התשובות ש"עברו" :
התכונה שלי -> לדעת להיות לבד
התכונה שהייתי רוצה שתהיה לי -> להאמין בניסים .
לבדיקת התאמה
מאת JobHunt
1.א. עבור כל node בעץ תחליף בין בן שמאל לימין
1.ב. תדפיס את העץ לפי גובה כלומר תדפיס את ה שורש, אחר כך תדפיס את הבנים הישירים שלו, אחר כך תדפיס את הבנים הישירים שלהם וכך הלאה
2. בהנתן מערך בגודל N ופונקציית rand כתוב אלגוריתם שיחזיר מערך של N מספרים מ 0 עד N-1 מסודרים בסדר ראנדומלי ולא חוזרים על עצמם.
3.א. כתוב singletone
3.ב. תסנכרן את היצירה שלו
3.ג. תשפר את קוד של היצירה כך שהשהיה ב בלוק synchronized תהיה מנימלית. (תשתמש ב design pattern)
לבדיקת התאמה
מאת JobHunt
שאלה ראשונה: יש תיאור ארוך של מחלקה של לקוחות. שואלים שם איזה שיטות צריך לדרוס. התשובה ממש בגוף המחלקה , יש 2 שיטות שכתוב שם OVERRIDE, פשוט תרשמו אותם.
אחר כך שואלים מה הסכנה ב clone של קוסטומר
אחר כך יש שאלה של מדפיסים משהו למסך ושואלים מה יודפס. (יוצרים שני אובייקטים, אחד עם ערך של 5 ואחד של 10- מכיוון שזה משתנה סטטי אז לשניהם יהיה 10 בסוף.
התשובה היא פעמיים המספר 10 (משהו כזה) מכיוון שזה משתנה סטטי מה שהוגדר שם, וכדי לפתור את הבעיה צריך להפוך אותו ללא סטטי.
אחר כך יש שאלהעל serialize. יש אובייקט שיש בו גם מספר כרטיס אשראי ורוצים להעתיק אותו לקובץ (יענו לעשות סריאלייז) מבלי להעתיק את מספר כרטיס האשראי. שואלים מה הפתרון לכך כי אסור להעתיק מידע מוגן לדיסק. לא ידעתי איך עושים את זה. אולי פשוט להוריד את הנתונים ולכתוב את האובייקט בלי.
אחר כך יש 2 שאלות שקשורות לרשימות. בכל שאלה יש קוד ושואלים מה לא בסדר בקוד ואיך לתקן
אני זוכר שבשאלה הראשונה יש בעיה שלא מנקים את האובייקט ולכן זה יוצר בעיות, צריך לעשות משהו עם clean
בשאלה השנייה אני חושב שאין שום בעיה, אבל אולי אני טועה.
אחר כך יש שאלות על SQL.
שואלים למשל מה זה PRIMARY KEY
מה זה FOREIGN KEY
ועוד כמה דברים ששכחתי.
ואז נותנים תיאור של מכון כושר וצריך לצייר את ה ERD DIAGRAM שלו (גם שאלה ב SQL)
שואלים אחר כך מה זה JDBC
מה זה MVVM
ובסוף יש שאלה הזוייה להפוך קובץ CSV של אקסל לטקסט או לדיסק.. עבודה עם קבצי CSV
זה מה שאני זוכר
אחר כך יש מרכז הערכה:
1. לספר על עצמכם.
2. המאבחנת זורקת קלפים על השולחן ואומרת לכל אחד לבחור קלף עם תכונה שהוא רוצה לשמור לעצמו וקלף עם תכונה שהוא רוצה לשפר
3. המאבחנת נותנת דף עם רשימת מועמדים לקבלה לעבודה. כל אחד צריך לדרג את המועמדים דירוג משלו, ואז הקבוצה צריכה להחליט ביחד על דירוג קבוצתי. מי שהדירוג שלו קרוב לדירוג הקבוצתי מקבל נקודות בונוס
4. צריך להרכיב גשר מלגו בתכנון קבוצתי. משימה ארוכה ולא פשוטה, חשוב לשתף פעולה ולתכנן זמן כמו שצריך.
אחר כך מנפים מועמדים בהתאם לשני השלבים הראשונים ואז שולחים לראיונות
בראיונות זה בעיקר שאלות אישיות איך אתה בעבודת צוות,ספר לי על פרוייקטים שעשית וכו'
לבדיקת התאמה
מאת JobHunt
הראיון היה מול שני ראשי צוותים.
בהתחלה מדברים איתך ורוצים לדעת מי אתה.
לאחר מכן אתה מקבל דף עם שאלה אחת בכל פעם.
שאלה 1: שאלה פשוטה: צריך לכתוב פונק' שממירה STRING ל – INT. ולאחר מכן, שואלים איך אפשר לטפל בקלט שגוי (EXCEPTION). המשיכו ושאלו קצת על EXCEPTION (מה קורה אם לא נתפס ע"י ה – CATCH).
שאלה 2: צריך לכתוב הגדרה של NODE של עץ בעל ערך INT. לאחר מכן פונקציה רקורסיבית שמחשבת את כל ה – VALUE של העץ. (תנאי עצירה צריך להיות NODE=NULL וזה יחסוך בדיקת תנאים של ענפים ריקים).
שאלה 3: א. נתון ממשק שמכיל ADD, REMOVE, SIZE. צריך לממש את מחלקת מחסנית שמממשת את הממשק (צריך לכתוב את כל ההגדרה, כולל ה – CLASS STUCK IMPLEMENT ——). כדאי להשתמש במבנה הנתונים של רשימה (יותר יעיל מוקטור כי וקטור ממומש ע"י מערך והוספת איבר למערך מלא דורש הקצאת מערך חדש בגודל כפול והעברת הנתונים לשם…)
ב. צריך לדאוג שהמחסנית תהיה מסונכרת לעבודה עם טרדים שונים (צריך להשתמש ב – SYNCHRONIZE פעמיים או שלוש כאשר משתמשים במבנה הנתונים).
ג. קוד המכיל 2 טרדים ורוצים לדעת מה הפלט. תרד ראשון כותב לתוך טבלת האש, שהמפתח שלה הוא האות הראשונה של הקלטים שמסופקים והערך הוא 1). הטרד השני קורא מהטבלה את הערך, מגדיל אותו ב – 1 וכותב אותו בחזרה (דורס את הערך הקודם שהיה בטבלה). בסופו של דבר היה לי פלט של 2 או 3 שורות .
ד. מה יכול להיות בעיה בקוד? DEADLOCK (כל טרד מבצע שני BLOCK בשני מקומות, אבל בסדר הפוך).
שאלה 4: קיים קוד שמכיל פונקציה שמקבלת שני מספרים שלמים ותו (שיכול להיות +-*/). קיים SWITCH על התו שמבצע את הפעולה החשבונית המתאימה. צריך לפתור את השאלה בצורה OO.
ב. איך אפשר להפטר מה – SWITCH? שימוש בטבלת האש: מפתח – תו, ערך – new class().
לבדיקת התאמה
מאת JobHunt
שני חלקים למבחן:
1)מבחן על השפה – המבחן אמריקאי ומורכב מ – 25 שאלות.
2)מבחן בלוגיקה (בסיסי נתונים) – המבחן פתוח ומורכב מ – 3 שאלות.
1) חישוב סיבוכיות זמן ריצה וזיכרון, למה משמש copy constructor, שאלה על תהליכים(אם משתמשים בתהליך למה אמורים לדאוג? הרעבה ודדלוק), פונקציה בונה – מי פועלת ראשונה כשיורשים(נתנו קוד ושאלו לפלט),פונקציה וירטואלית(וגם טהורה), אם כל הפונקציות וירטואליות – האם גם ה distructor חייב להיות כזה, האם swap עם משתנה עזר עדיף על swap דרך ייחוס, מה זה memory leak.
זה מה שאני זוכר.. אם אזכר בעוד שאלות אעלה.
2)נותנים כמה טבלאות והסבר על כל טבלה ומבקשים לחשב את התשלום עבור חודש ספיציפי.
לבדיקת התאמה