ראיון מקצועי לאחר מכן ראיון hr ואז עוד ראיון מקצועי
שאלות מתוך הראיון
1. נתון שולחן עגול וכלי משחק עגולים (שני סוגים שונים) אשר גודל כל כלי משחק בהכרח קטן מהשולחן
מצא אסטרטגיה אשר לא משנה מה אתה מנצח כאשר אם האחרון מניח את הכלי הוא מנצח
תשובות
הוסף תשובה
|
לצפיה בתשובות
אוגוסט 2020
אתה מתחיל ושם כלי באמצע, כל כלי שהיריב שם אתה מציב בצורת רפלקציה
שאלה אחת שאני זוכרת, שאלה שחוזרת על עצמה בהרבה ראיונות.
מקבלים מערך עם n+1 מספרים במערך זה מופיעים כל המספרים מ1 עד n רק מספר אחת מופיע פעמיים וצריך להחזיר את המספר הזה.
תשובות
הוסף תשובה
|
לצפיה בתשובות
דצמבר 2018
יש לסכום את כל האיברים במערך ומהמהספר שיצא להחסיר את סכום המספרים מ1עד n
ספטמבר 2019
פתרון נאיבי ופחות מתוחכם:
מיון המערך (סיבוכיות זמן אנ לוג אנ)
לאחר מכן סריקת המערך למציאת איברים שווים (סיבוכיות זמן אנ).
יש ראיון טלפוני ואם עוברים אותו אז יש ראיון מקצועי
שאלות מתוך הראיון
בראיון הטלפוני:
1) ההבדל בין וקטור לרשימה
2) איך מממומשת הגדלה של וקטור
3) מה ההבדל בין וקטור ורשימה לבין hashtable
4) כשה-dtor לא וירטואלי מה הבעיה חוץ מזליגת זיכרון
5) מה יקרה אם נגדיר פונקציה: char* func() { return string.c_str()} ואז נבצע
char* t = func()
6) למרות שלא מומלץ אבל מה יקרה אם נגדיר int* a = &(int*)17 ואז נבצע
printf("%d",a+3)
בראיון המקצועי:
1) כתוב פונקציה שהופכת מחרוזת
2) איך מתגברים על מצב שבו פונקציה מקצה מצביע מקומי עם הקצאה דינמית ואז יש קריסה? ומה קורה אם יש return באמצע הפונקציה?
3) לכתוב מחלקה שמממשת unique_ptr
4) לכתוב מחלקת shared_ptr
5) איך מתגברים על exception במקרה של הקריאה הזו:
func(sharedptr(new x),sharedPtr(new y)
תשובות
הוסף תשובה
|
לצפיה בתשובות
אוקטובר 2016
טלפוני:
1)וקטור הוא רציף ופחות דינמי. רשימה היא לא רציפה אבל דינמית.
2)ביצירת הוקטור מוגדר capacity שזה המקום שנשמר מראש עבור הוקטור גם אם הגודל שהגדרנו יותר קטן. ברגע שמגיעים לקיבולת הזו מבצעים הקצאה מחדש בגודל כפול ולשם מעתיקים את המידע.
3)מפה היא ממומשת בעזרת עץ אדום-שחור שמאפשר שליפה מהירה ע"י logn
4) תפקידו גם לסגור כל מיני handles למשל לקבצים.
5) למעשה t מחזיק מצביע למקום שכבר נעלם כאשר הפונקציה הסתיימה. מדובר ב-dangling pointer
6) יודפס המספר 29 כי בהנחה שהמצביע הוא32 4 בתים אנחנו מתקדמים 12 בתים מעבר ל17
מקצועי:
1) חשוב לבדוק אם הפרמטר הוא null, לבדוק שגודל הפרמטר אינו 0
2) עושים try+catch. לגבי return אפשר להשתמש ב-unique_ptr
3) אסור שיהיה copy ctor, אופרטור השמה משתמש ב-Move
4) יש להחזיק משתנה counter ולהצביע אליו. חייבים להשתמש ב-copy ctr
5) נשים לב שסדר יצירת המשתנים לא ידוע ולכן אם יש exception ביצירת אחד המשתנים תיתכן זליגה במשתנה אחר לכן צריך ליצור פונקציה סטטית Init שתיקרא מהמצביע ותקבל new x וככה נשמור בכוח על סדר הקריאות