ברקליס קפיטל שזוהי זרוע ההשקעות של בנק ברקליס פותחת מרכז פיתוח חדש בארץ וגיוס העובדים נעשה דרך נס טכנולוגיות בימים אלו (מרץ 2011)
המבחן הראשון ארך 4 שעות וכלל ראיון משאבי אנוש ראיון מקצועי ושני מבחנים ממוחשבים אחד אמינות ואחד באנגלית
הראיון המקצועי כלל שאלה כזו
Class A has class member int a
Class B extends A has class member int b
Class C extends B has class member int c
write the clone() method for all classes using polymorphism so that
when Class D extends C will be written, it will not have to duplicate the code
הבעיה כמובן היא הגישה למשתני מחלקה של מחלקות האב בלי לשכפל קוד
כלומר ניתן היה לכתוב את המתודה של C כך
public C clone() {
C newc = new C() ;
newc.a = this.a ;
newc.b = this.b ;
newc.c = this.c ;
return newc ;
}
אולם יש פה שורות קוד משוכפלות עם המתודות של המחלקות A B
מצד שני אי אפשר פשוט לקרוא למתודות האלה כי הן יוצרות אוביקטים מטיפוס A B ולא C כמו שאנחנו רוצים
הפתרון הוא להוציא את האתחול של האוביקט למתודה חיצונית למשל כך
public C newInstance() {
C newc = new C() ;
return newc ;
}
ואז כן אפשר לקרוא למתודה של מחלקת האב ועדיין יווצר הטיפוס שאנחנו רוצים
public C clone() {
C newc = (C)super.clone() ;
newc.c = this.c ;
return newc ;
}
ע"י: 1_אורח_כללי
יש משהו שעבר ראיון לQA?
ע"י: לולה
שלום,
התפקיד לברקליס קפיטל זה לJAVA או גם .NET?
תודה
ע"י: 1_אורח_כללי
שלום,
הפרויקטים בברקליס לא כל כך מחזיקים מעמד והם בתהליכי סגירה כרגע הם סגרו את אחד הפרויקטים הגדולים בברקליס וכנראה שכל הפרויקטים יסגרו בעתיד הקרוב
כישלון טוטאלי וחבל אבל מצד שני לא כל כך מפתיע שמדובר בחברת נס
ע"י: 1_אורח_כללי
בקשר לאיך הייתי מממש תחליף ל-final class:
final class לא ניתן לעשות לו extends לכן אני חושב שהתשובה היא פשוט ליצור קונסטרקטור דיפולטיבי כאשר הוא private במקום public. כך לא ניתן להרחיב אותו.
private A(){}
מקווה שאני צודק.
ע"י: 1_אורח_כללי
לא היה שום סמול טוק. רק שרשרת שאלות מקצועיות.
בהצלחה.
ע"י: 1_אורח_כללי
אכן פתרון מצויין ואופטימלי לדעתי.
עברתי השבוע את הראיון הראשון כולל שני המבחנים על המחשב ותואם לי ראיון טלפוני לשבוע הבא עם ברקליס לונדון.
חשבתי על זה שלצד החסרונות שבצד ראיון טלפוני,יש יתרון שמאפשר לך לבדוק פתרונות מול האינטרנט בזמן הראיון.
השאלה אם בכלל התאפשר לך להשתמש ברשת בזמן הראיון ?
לפי אופי השאלות וניסוחן זה נראה שלא ניתן לקבל תשובות מיידיות מהרשת.
ועוד שאלה, היה לכם קצת small talk וניסיון הכרות שלך והתפקידים שבצעת בחברה האחרונה, או שניגשו מיד לשאלות מקצועיות ?
ושוב תודה על ההסברים והפירוט שאתה מספק.
ע"י: 1_אורח_כללי
ובכן חזרתי לפוסט הראשון שלי וראיתי שאכן חסר הקטע של איפה הקריאה למתודה newInstance() ובכן הכוונה היא שהקריאה תתבצע ב clone() של A שהיא המחלקת אב של B (וכמובן גם של C)
מה שקורה הוא:
כל clone קורא לסופר שלו עד שמגיעים לאבא הראשון שהוא A
פה צריך לייצר אוביקט חדש מהמחלקה של הבן - לכן פה תיקרא המתודה newInstance ובגלל הפולימורפיזם תיקרא המתודה של מלחקת הבן הכי צעיר ואכן תיצור את האוביקט מהמחלקה הרצויה
לאחר מכן (בחזרה ל clone) נעשה קאסטינג למחלקה הנוכחית ומתמלאים המשתני מחלקה הנוכחית בלבד - ככה יוצא שכל clone דואג רק למה שהוא מכיר וגם אין כפילות של קוד
אני מקווה שזה ברור...
ע"י: 1_אורח_כללי
היי שרון או כל מי שיכול לספק תשובה.
בדוגמא הראשונה של מטודת השכפול הבנתי את הפתרון בו אתה קורא לclone באב ואז מוסיף את ה member החדש, וכך בשתי הרמות מעל.
לא הבנתי איכן אתה קורא למטודה החיצונית newInstance המאתחלת את האובייקט לשימוש ה clone .
האם התכוונת לקונסטרקטור ?
ד.א, מה עלה בגורל התהליך אחרי הראיון השני, נשמע תהליך די סיזיפי.
ע"י: 1_אורח_כללי
תודה שרון על הפירוט המלא.
ע"י: 1_אורח_כללי
הראיון של נס היה פנים מול פנים בעברית וכלל שאלה אחת בלבד
הראיונות עם אנשי קפיטל היו טלפוניים באנגלית ומסרתי את כל מה שזכרתי
בהצלחה
ע"י: 1_אורח_כללי
תודה שרון על התשובה.
לגבי ראיון משאבי אנוש, מבחן באנגלית ומבחן אמינות - הם ממש לא מדאיגים אותי, ובכל מקרה תודה על ההרחבה והפירוט.
הבקשה שלי התייחסה לראיון המקצועי אשר מבחינתי משחק תפקיד מאוד משמעותי בשלבי המיון, ומלבד הדוגמה שציינת לגבי מטודת clone שאכן מאוד עוזר להתכונן אליה קודם, רציתי לברר באם ישנן שאלות מקצועיות נוספות הזכורות לך באותו ראיון.
כמו כן,אם הראיון המקצועי היה טלפוני, כיצד נדרשת להעביר את הפתרון למראיין ?
בכל מקרה, שוב תודה על הסיוע.
ע"י: 1_אורח_כללי
מפתח
אני לא ממש מבין איזה מידע חסר לך (ניסיתי להיות הכי מפורט שיכולתי)
בכל אופן ראיון משאבי אנוש הוא סטנדרטי למדיי
הראיון באנגלית שאני עשיתי היה לא מקצועי אלא ממש כמו מבחן בגרות באנגלית (זה היה במרץ יכול להיות שהם שינו את התהליך שלהם מאז) והוא היה אונליין מול מחשב
כמו כן מבחן האמינות היה מול מחשב הוא הורכב משאלות "מוסריות" (במרכאות) כגון האם תמיד צריך לשמור על החוק האם עישנת פעם סמים האם גנבת פעם ממקום העבודה האם דיווחת שעות לא נכונות וכו. השאלות חוזרות על עצמן בניסוחים שונים על מנת לבדוק קונסיסטנטיות (למשל האם אפשר לפעמים לעבור על החוק) והכי חשוב הן מוגבלות בזמן ויש מעט מאד זמן לחשוב (נדמה לי כל שאלה מקבלת משהו כמו 15-30 שניות) וזאת כדי שלא יהיה לך הרבה זמן לחשוב ולהיזכר בתשובה הקודמת שנתת לשאלה הדומה (ככה אני חושב)
כמו שכתבו פה - הרעיון הוא להיות אמין ולא בהכרח לענות את התשובה שאתה חושב שהיא "הנכונה"
אחרי שגמרתי את המבחן קראו לי ל"שיחת הבהרה" ושאלו לפשר כמה תשובות שנתתי. במקרה אחד או שניים פשוט התבלבלתי בתשובה. במקרה של "האם תמיד צריך לשמור על החוק" עניתי שלא ונתתי דוגמא את מצב של "פקודה בלתי חקית בעליל" אפילו הזכרתי את המקרה המקורי (הטבח בכפר קאסם). כמו כןבשאלה האם דיווחת שעות לא אמיתיות עניתי שכן והסברתי שזה קרה לעיתים רחוקות ורק "עיגול" של שעות.
את השלב הזה עברתי.....
ע"י: 1_אורח_כללי
אם מישהו היה לאחרונה במרכז הגיוס של NESS למשרת מפתח JAVA עבור הפרוייקט המדובר, אשמח לקבל מידע מפורט יותר מעבר למה שהוזכר כאן (ותודה למי שכבר פרט) על הראיון הראשון ועל השאלות המקצועיות.
יש לי זימון לשבוע הבא ,והוסבר לי כי מדובר בראיון משאבי אנוש, ראיון מקצועי באנגלית ומבחן אמינות.
ע"י: 1_אורח_כללי
הראיונות הם טלפוניים (עשיתי כבר שניים)
ישנן גם שאלות פרטניות מאד (למשל שאלו אותי מה עושה הקומפיילר כשהוא נתקל באופרטור פלוס והתשובה הנכונה היא שהוא קודם כל בודק את הטיפוס של האופרנדים כי אם אחד מהם הוא מחרוזת אז השורה מתורגמת לשירשור של מחרוזות ע"י string buffer(
וגם היו שאלות ארכיטקטוניות (למשל דרישה להעברת הודעות בין מערכות בננו שניות עם 100% בטחון בהעברה עניתי שצריך מקביליות עם פרסיסטנס ואין לי מושג אם זה היה תשובה נכונה או לפחות מה שהוא ציפה לה)
המבחן היה למשרת פיתוח בכיר בג'אווה בפרויקט exchange derivative והמראיין היה מתיו מלונדון המראיין הראשון שלי (ההודעה הראשונה) היה אלכס מניו יורק
אני יכול לציין שזה מאד מאד קשה להתראיין טלפונית ועוד בשיחה קרוס אטלנטית ועוד באנגלית - קשה מאד לפתח דיאלוג כשמשהו לא ברור בשאלה ואני צריך לשאול כמה פעמים למה התכוון המשורר וכמובן שכל הנושא החשוב של שפת גוף מפוספס לגמרי והמראיין מקבל תמונה חלקית ביותר על המרואיין.
כמו כן רציתי לציין שיש בעיות ביצועים ק-ש-ו-ת בפורום הזה ברמה כ"כ קשה שלא עושה חשק לכתוב פה!!!
ע"י: 1_אורח_כללי
שאלות לנבחנים השונים :
1.תוכלו להזכר בשם המראיין , תוארו המקצועי ?
2.לאיזה תפקיד התראיינתם ? jave ? dotnet
3.במבט לאחור על הראיון האם השאלות דרשו הבנה מערכתית או יותר ירידה לקוצו של יוד בנושאים מסויימים ?
4.האם יש משהוא שכן עבר ויכול לעזור ?
ע"י: 1_אורח_כללי
הראיון הטלפוני הוא באנגלית?
ע"י: 1_אורח_כללי
אכן היה בלבול קטן בין final ו finally
אני חשבתי על זה לא מעט ונראה לי שהפתרון היחיד שישנו הוא בקונסטרקטור לבדוק את טיפוס של האוביקט החדש שנוצר כך
if this.getClass().getName().equals("MyClass")
ואם אין שוויון להעיף exception
ההבדל הוא כמובן שהבדיקה הזו נעשית בזמן ריצה בעוד שעם final הבדיקה נעשית בזמן הידור אבל אין לי פתרון אחר ואולי זה מה שהוא רצה לשמוע ??
ע"י: 1_אורח_כללי
אכן היה בלבול קטן בין final ו finally
אני חשבתי על זה לא מעט ונראה לי שהפתרון היחיד שישנו הוא בקונסטרקטור לבדוק את טיפוס של האוביקט החדש שנוצר כך
if this.getClass().getName().equals("MyClass")
ואם אין שוויון להעיף exception
ההבדל הוא כמובן שהבדיקה הזו נעשית בזמן ריצה בעוד שעם final הבדיקה נעשית בזמן הידור אבל אין לי פתרון אחר ואולי זה מה שהוא רצה לשמוע ??
לדעתי הפתרון הפשוט שגם ישמש תחליף לייעוד של final כלומר מניעת יירושה וגם יעבוד בזמן הידור, הוא להגדיר את כל המטודות והמשתנים במחלקה המדוברת כ private.
הרי public למחלקה מקביל ל public לכל המטודות הפנימיות, בעוד public למטודה מקביל ל private שלה, ולכן הפיכת כל המטודות לפרטיות שומר על הרעיון המקורי.
ע"י: דוני
נראה לי שאת מתבלבלת בין final ל finaly
ע"י: שרון1
היי,
אני רק בוגרת מדעי המחשב ואין לי ניסיון תכנות בתעשיה, אבל יכול להיות שתשובה לשאלה 1 שצריך לשים בסוף של בלוק catch את exception handler ל- Exception e ושם לכתוב כל מה שרצו לכתוב ב- final.
אשמח אם מישהו יגיד לי אם זה פתרון נכון.
ודרך אגב, גם אני הגשתי קו"ח דרך Ness , אבל למשרות QA . לא חזרו אלי, אולאי בדלל שאין לי ידע פיננסי.
ע"י: 1_אורח_כללי
המבחן השני היה טלפוני מול מנהל פרויקט ור"צ במרכז ברקליס בניו יורק
המבחן לקח כשעה והיה כולו מבחן מקצועי
השאלות ששאלו
1) נניח שלג'אווה לא היה המילה final
איך אפשר לישם final class בלי המנגנון של final
אני לא ידעתי את התשובה. אשמח אם מישהו ישיב פה
2) מה היתרונות והחסרונות של autoboxing
גם לא ידעתי. אני מנחש שיש בעיה בביצועים?
3) שיקולים של ביצועים ו multithreading בסינגלטונים
לגבי ביצועים התשובה היא שצריך לאתחל את המשתנה הסטטי בבלוק סטטי ולא בקונסטרקטור
(בלוק סטטי מתבצע בזמן שהקלאס נטען לזיכרון(
ככה לא צריך לשאול אם הוא שווה ל null במתודה getInstance
החיסרון בגישה הזו הוא שלא תמיד כל המשאבים נמצאים בזמן שהקלאס נטען לזיכרון
למשל קלאסים אחרים לפעמים עוד לא אותחלו
לגבי multithreading המתודה getInstance
צריכה להראות כך
public static MyClass getInstance() {
if (myInstance == null) {
synchronized (MyClass.class) {
if (myInstance == null) {
myInstance = new MyClass() ;
}
} }
return myInstance ;
}