ראיון עם ראש צוות שבמהלכו בין היתר אני מספר על פרוייקטים חשובים שעשיתי. לאחר מכן מבחן של כמה שאלות שבסופו חוזר הראש צוות ועוברים על התשובות יחד.
שאלות מתוך הראיון
1. שאלה על כך שהדיסטרקטור של הבן משחרר עוד דברים שהדיסטרקטור האבא לא משחרר. מגדירים אובייקט עם מצביע לאבא ואחכ משחררים. מה לא בסדר?
2. יש אובייקט ועושים לו קופי קונסטרקטור דיפולטיבי. מה לא בסדר?
3. מערכת של ציור שיש פעולה שמציירת קו ישר, פעולה שמציירת ריבוע ופעולה שמציירת עיגול וצריך לתכנן את המערכת וגם לתת שתי פתרונות לאיך אפשר לתמוך בפעולת undo.
4. יש קוד של כפתורים עם הרבה if-ים וצריך לעשות דיזיין חדש כך שבשורה אחת הכל ייבנה ולא יהיה את if-ים.
תשובות
הוסף תשובה
|
לצפיה בתשובות
אוקטובר 2017
1. הקונסטרקטור של הבן נקרא אבל בשחרור נקרא הדיסטרקטור של הבן וכך חלק מהדברים לא משוחררים. צריך להגדיר את הדיסטרקטור של הבן כוירטואל.
2. הקופי קונסטרקטור דיפולטיבי לא עושה הקצאה חדשה וכך שני אובייקטים מחזיקים את אותו מצביע וכאשר עושים שחרור לאחד מהם אז השני מצביע לזבל. צריך להגדיר קופי קונסטרקטור שעושה הקצאה חדשה.
3. לעשות דיזיין למערכת מבחינת מונחה עצמים.
לגבי ה undo יש את האפשרויות הבאות:
1. לשמור במחסנית בכל פעם את כל המסך בצורה כזו כל פעולת undo תהיה קצרה אבל המחסנית תקח הרבה זכרון כי כל פעם שומרים את כל המסך.
2. במחסנית לשמור בכל פעם את הפעולה האחרונה שנעשתה. בצורה כזו הזכרון של המחסנית נמוך כי שומרים רק את הפעולות שנעשו אבל פעולת undo תקח זמן כי צריך לרוץ על כל המחסנית ולעשות פעולה פעולה. כמובן שתחילה צריך למחוק את הפעולה האחרונה מן המחסנית.
3. אפשרות שלישית היא לשלב בין שני הגישות - כל 10 פעולות לשמור תמונת מסך מלא ואז בפעולת ה undo מסירים את הפעולה האחרונה ואז חוזרים לתמונת המסך האחרונה ומשם עושים את הפעולות שיש במחסנית.
4. כנראה דיזיין פאטרן פאקטורי
התהליך מורכב מריאיון עם שני ראשי צוות ריאיון עם ראש קבוצה וריאיון hr.
זו שאלה מהריאיון עם שני ראשי הצוותים.
שאלות מתוך הראיון
1.לממש סינגלטון בסי שארפ שכל מה שהוא עושה זה שיש לו מטודה Public אחת שהיא מחזירה את הזמן הנוכחי.
2.לממש שיפור למטודת settimer המטודה settimer המוצגת מקבלת מצביע לפונקציה וזמן במילי שניות וקוראת למטודה שהבאנו לה מצביע אחרי המילי שניות הללו . יש לה בעיה שאם קוראים לה בשני קריאות רצופות למשל - settimer(5000 , A) settimer(4000,b ) ייקרא רק למטודה b אחרי 4 שניות ולא לA צריך לממש מטודהsettimer2 שתשתמש בקודמת ובמבנה נתונים סטנדרטי ככה שכן ייקראו שני המטודות בזמנים שלהם . לא צריך להתייחס להתנגשויות כלומר לא להניח שיש שני מטודות שנקראות על אותו זמן וגם להניח שאנחנו לא בסביבה multithreaded.
3. מערך עם 2n+1 מספרים כאשר כל המספרים חוץ מאחד חוזרים פעמיים (2n כפולים ואחד בודד) איך נמצא את הבודד בזמן המהיר ביותר.
תשובות
הוסף תשובה
|
לצפיה בתשובות
ספטמבר 2017
1. קל ואפשר להסתכל באינטרנט
2. יש לחשוב איך לקרוא שוב לsettimer אבל מבנה הנתונים צריך להיות משהו כמו ערימת מינימום.
3. פשוט לעשות xor על כל המספרים - כלומר לאתחל משתנה לאפס ולעשות xor עם כל מספר במערך כך כל מספר יבטל את עצמו ונשאר רק עם המספר שחזר על עצמו פעם אחת.
סיבוכיות o(2n) סיבוכיות מקום 1.
אוגוסט 2019
הטיימר האמיתי צריך לקפוץ בכל פעם שבקשה לטיימר עשויה להיות רלונטית.
במילים אחרות צריך לשמור את כל בקשות הטיימר - ברשימה למשל, ולעשות מכנה משותף. למשל טיימר(15) טיימר(95) וטיימר(60) יביאו לכך שכל 5 שניות הטיימר צריך לבדוק אם מישהו מהם הגיע ליעדו. במקרה שבו אין מכנה משותף אז שיקפוץ כל אלפית שנייה או במקום זאת אפשר להגדיר שהרזולוציה של הבקשות יהיה נמוך יותר - עד 0.01 שניות ואילו בפועל הרזולוציה של הטיימר היא 0.001.