מספר שיחות אחד על אחד. שאלות כלליות. שאלה או שתיים טכניות.
שאלות מתוך הראיון
שני רובוטים נופלים על מערך אינסופי (בשני הכיוונים) במקום לא ידוע ומשאירים מצנח (סימון) במקומם. לרובוטים יש אפשרות ללכת ימינה שמאלה או לעמוד במקום.
תכתוב אלגוריתם לרובוטים (אותו אלגוריתם יפעל בשניהם) בכדי שהם יפגשו.
המרחק בין הרובוטים הוא בעצם N. מפה מחשבים את סדר גודל של הפתרון.
תשובות
הוסף תשובה
|
לצפיה בתשובות
ינואר 2019
אם כל אחד הולך לכיוון אחר אז יש מצב שהם לא יפגשו
אם אחד עומד והשני מתקדם גם יש סיכוי שלא יפגשו
אם שניהם הולכים באותו הכיוון אז סה"כ הראשון יגיע לסימון של חברו כאשר צעד כבר N צעדים וגם השני התקדם N
ולכן כדי שיפגשו על השני לחזור למקום שסימן ז"א עוד N צעדים ולכן סה"כ (O(N
דיי מהיר ברור. כולל סדרה של סך הכל 3 ראיונות טכניים ו-1 HR.
שאלות מתוך הראיון
ראיון ראשון - שאלה ראשונה: התחיל כשיחה על סדרת פיבונצ'י, והמשיך למימוש ודרכים לייעול (המנעות מרקורסיה ומה בעייתי בה). שאלה שנייה: מימוש מחלקה שבהנתן מערך של שירים, מספקת כל פעם שיר רנדומלי אחר (לא מחזירה שירים שכבר נבחרו, אלא אם כן כולם נבחרו וחוזר חלילה).
ראיון שני - מימוש pool גנרי של משאבים. בגדול כדאי לחדד איך מממשים Thread Pool ב-Java או בכל שפה אחרת. שימוש במבנה נתונים כמו מחסנית לצורך זה. בנוסף, שימוש ב-Factory כדרך למימוש pool גנרי (יכולת לייצר משאבים שונים לפי ה-Factory שהתקבל והטיפוס של המחלקה). התעסקות עם מולטי-ת'רדינג כאשר יש מקורות שונים מבקשים משאבים מאותו ה-Pool והוא מוגבל בכמות שהוא יכול לספק. בקשות מקבילות.
שאלות על סדרת פיבונאצ'י ולמה המימוש הרקורסיבי הוא יקר, ואיך אפשר לפתור את זה בשיטה יעילה יותר.
שאלה נוספת על איך לבנות מערך רנדומלי של שירים ביעילות זיכרון טובה