בראיון הראשון מתקיים המבחן. לאחר מכן בפגישה נוספת, ראיון עם המגייס.
שאלות מתוך הראיון
בחלק הראשון שאלות קצרות והגדרת מושגים (דוגמאות) כמו למשל מערכות הפעלה, דפדפנים, הסרה של תוכנה.
בחלק השני שאלה אחת על שלוש מעליות שהותקנו וצריך לכתוב אילו בדיקות יש לעשות עליהן, בנוסף שאלה על תוכנה במחשב וגם בה יש לכתוב סדרת בדיקות שיש לבצע לתקינותה.
יש לכתוב את כל התשובות למבחן באנגלית.
מזמנים למבחן לאחר שיחת טלפון קצרה.
לא משוחחים איתך פנים מול פני לפני המבחן, המבחן עצמו הוא שעתיים לערך, נעשה בכתיבה על דף, באנגלית.
שאלות מתוך הראיון
ישנה שאלה על חיי הבאג, אילו תהליכים ישנם.
מספר שאלות להגדרות וידע כללי - שאלה על כתובת IP, היכן תבדוק ב WORD מדוע אתה לא מצליח לכתוב בעברית, מה ההבדל בין NAN ל SAN ועוד מספר שאלות.
מספר שאלות לחשיבה, כצד תבדוק מערכות מסויימות - שאלה אחת נגעה לכיצד תבדוק ותאשר את פעילותן של 3 מעליות.
שאלה אחרונה נגעה במערכת הבנויה משתי תוכנות המתממשקות לשרת DB, כאשר השניה צורבת על DVD את המידע מהראשונה - עלייך לחשוב על מקרים בהם המערכת תתקלקל, מה תבדוק.
שיחה קצרה עם הראש צוות, סיפר על החברה ועל התפקיד, לאחר מכן שאל עליי ואז נתן לי מבחן עם 3 שאלות.
שאלות מתוך הראיון
1)בהינתן מערך של char שיש בו רווחים, לכתוב פונקציה שתחזיר את המערך ללא הרווחים.
2)לעשות design למערכת שמציירת צורות (שורה, עיגול, ריבוע) ולתמוך בפקודת undo.
לאחר הראיון הראשון נקראתי לראיון שני מול ראש הצוות. גם כאן השיחה החלה בלדבר על עצמי ולעבור על קורות החיים, לאחר מכן הסבר נוסף על הצוות ועל הטכנולוגיות ותחומי האחריות שלו. לאחר מכן ניתנה מעין שאלת דיזיין כללית שלא דרשה כתיבה טכנית - יותר בלמצוא/לתכנן פתרון על הלוח ולאחר מכן להסביר לראש הצוות.
הראש צוות היה נחמד מאוד, לא דחף, התנהג בנימוס והתעניין
שאלות מתוך הראיון
ראיון חשיבתי שיותר התמקד בדיזיין, שימוש נכון במבני נתונים ואלגוריתם יעיל.
ישנה מערכת שמורכבת ממסד נתונים עם טבלה אחת (יש פירוט של השדות), וקבצי XML שנמצאים במערכת קבצים. המטרה היא שקבצי ה-XML וה-DB יהיו תואמים. לכל רשומה במסד הנתונים אמור להיות קובץ XML תואם וגם הפוך. חשוב לציין שבקבצי ה-XML מופיעים שדות מתוך ה-DB אך יש בקובץ פרטים אחרים שלא שמורים ב-DB.
1) הסבר כיצד ניתן לבדוק את המערכת עבור ארבעת הבעיות הבאות:
א)קובץ חסר: יש רשומה ב-DB שאין קובץ XML שתואם לה
ב)קובץ יתום: יש קובץ XML שאין לו רשומה ב-DB
ג)קובץ לא נכון: הפרטים בקובץ ה-XML שונים מהפרטים שרשומים ב-DB (עבור אותו קובץ)
ד)קובץ לא נפתח: יש קובץ אבל הוא לא תקין ולא ניתן לפתוח אותו
שאלה שנייה: תתכנן אלגוריתם/דיזיין שמאפשר לקחת את ה state הנוכחי של המערכת (כלומר לא לשנות את המערכת הקיימת, אלא לבנות מעליה) כך שניתן יהיה לזהות כל אחת מהבעיות שלהלן. תניח שיש כ-10 מיליון קבצים. הפתרון צריך להיות יעיל ככל הניתן
שאלה שלישית: תרחיב את האלגוריתם כך שניתן יהיה לתמוך בתיקון של כל בעיה שמוצאים
הגעתי דרך חברת השמה. שיחה טלפונית קצרה לגבי החברה ולספר קצת עליי ואז קביעת ראיון ראשון. הראיון הראשון היה מול מנהל הפיתוח וכללה שיחה של כחצי שעה על עצמי ואז הסבר על החברה ומה הצוות עצמו עושה. לאחר מכן ניתן מבחן שכלל שאלות טכניות על C++ ושאלות שהתמקדו בדיזיין. לאחר סיום הבחינה עוברים על התשובות מול מנהל הפיתוח ומסבירים כל שלב, יש שאלות שהוא מנסה להוציא ממך פתרון יעיל יותר או פתרון אחר יותר אלגנטי. הראיון הראשון ארך בסה"כ כ-3 שעות.
בסה"כ האנשים היו נחמדים מאוד, לא לחצו, היו מנומסים. האווירה הייתה מצוינת ולא עוינת
שאלות מתוך הראיון
בראיון הראשון:
1) יש קוד ב C++ שכוללת בין היתר פונקציה שלא ממומשת, צריך למממש אותה: בהינתן מחרוזת צריך למחוק את הרווחים שבה בצורה יעילה
2) יש בקוד בעיית דליפת זיכרון, צריך להסביר מה הבעיה, איך ניתן לשחזר אותה ואיך פותרים
3) יש בקוד בעיית temporal safety או משהו בסגנון, כלומר שיכולה להיווצר בעיה שלמישהו יש גישה לפרמטר למרות שלא מעוניינים בכך. צריך להסביר את הבעיה, איך ניתן לשחזר ואיך ניתן לפתור בעזרת 2 שיטות שונות
4) שאלת דיזיין כללית: נותנים מערכת כמו paint ורוצים להכניס תמיכה בפעולת undo. צריך לתאר 2 שיטות לתמוך
5) שאלת דיזיין נוספת: בהמשך לשאלה הקודמת נותנים מעין פסאודו-קוד שמראה איך מייצרים כפתור במערכת ואיך מציירים צורה בעזרת הכפתור. צריך לתכנן את המערכת (ממש לתת דיזיין ולהסביר בפסאודו קוד) בצורה שתאפשר הוספת צורות חדשות (כמו מתומן למשל) בשיטה פשוטה ובנוסף שבהינתן שהקוד לצורה החדשה קיים, שניתן יהיה להוסיף תמיכה בצורה החדשה בעזרת הוספה של שורה אחת בלבד.
תשובות
הוסף תשובה
|
לצפיה בתשובות
אוגוסט 2016
לשלושת השאלות הראשונות מופיעות תשובות ברשת. ספציפית בשאלה השנייה הבעיה נובעת בגלל שאין virtual destructor. בשאלה השלישית הבעיה נובעת בגלל שאין copy constructor.
בשאלה הרביעית: יש בעיקרון 3 פתרונות. יש 2 שהם obvious ויש אחד שהוא שילוב של שניהם. פתרון אחד שהוא מהיר אבל עם הרבה זיכרון זה שבכל פעולה שעושים בצייר שומרים את המצב של הלוח (מטריצה) באיזהשהו מבנה נתונים כמו מחסנית. ואז כשעושים undo פשוט מוציאים משם ומציירים.
פתרון שני שהוא איטי אבל משתמש בפחות זיכרון זה כל פעם שמציירים על הלוח לשמור מה מציירים, ואז כשעושים undo מוחקים את הדבר האחרון מהמבנה נתונים ואז עוברים על המבנה מההתחלה ועד הסוף ומציירים
פתרון שלישי: שומרים בכל צעד מה צויר (בדומה לשיטה השנייה) אבל כל X ציורים (שמגדירים מראש) שומרים את המצב של הלוח (מטריצה). ככה כשעושים undo הולכים למטריצה האחרונה ששמרנו, ואז הולכים ממנה ועד סוף מבנה הנתונים ומציירים. (מעין שמירת מצבי ביניים)
השאלה האחרונה בחנה פשוט ידע ב design patterns ושיטות עבודה ב object oriented