ריאיון ראשון בזום עם שני מראיינים: מנכ"ל ואחד העובדים בחברה לפני כן האחרון שוחח איתי בטלפון ושאל אותי שאלות על פייתון כמו מהי פונקציית למבדה, מה זה ליסט קומפריהנשן, ומה זאת הפונקציה __str__
שאלות מתוך הראיון
1. בהינתן שני מעבדים מסוגים שונים, ולכל אחד סימולטור שונה, לינארי בגודל הקלט: הסימולטור הראשון מודד את ביצועי המעבד הראשון ע"י כך שהוא מחזיר את כמות הסייקלים, מחזורי השעון, של המעבד על תוכנית מסוימת. הסימולטור השני מודד את ביצועי המעבד השני לפי זמן הריצה שלו על אותה תוכנית נתונה כמו מקודם. איך תוכל לדעת איזה מעבד טוב יותר מבין השניים?
2. כעת, נניח שהסימולטור הראשון, כלומר זה שמחזיר את כמות הסייקלים של המעבד הראשון, רץ בזמן אקספוננציאלי בגודל הקלט. כיצד נוכל להימנע מלהריץ את הסימולטור האיטי הזה שוב ושוב, למזער את השימוש בו למינימום, ובכל זאת להצליח להעריך את ביצועי המעבד הראשון? (לא ניתן להשתמש בסימולטור השני, כמובן).
3. הייתה גם שאלה שלישית, אבל הם חתכו לי את הריאיון באמצע בגסות רוח משפילה מאוד, לצערי לא עשיתי צילום מסך. הרגשתי כל כך מושפל ומבוהל בריאיון המבזה הזה.
תשובות
הוסף תשובה
|
לצפיה בתשובות
דצמבר 2021
1. לכל מעבד הרי נתונה מהירותו. כלומר כמות הסייקלים שלו לשנייה. והרי דרך חלקי מהירות שווה זמן. כעת יש לנו את אותן יחידות מדידה בשני הסימולטורים, למשל שניות, ונוכל להשוות בקלות בין המעבדים. נבחר כמובן במהיר מביניהם.
2. נריץ את הסימולטור האיטי על שני קלטים שונים של התוכנית שגודלם קטן, בסדר גודל לוגריתמי, למשל: log(n) וגם 2log(n). כעת זמן הריצה של הסימולטור האיטי יהא O(n). נעביר קו ישר בין שתי הנקודות של שתי התוצאות השונות שקיבלנו. ציר האיקס מייצג את גודל הקלט, וציר הוואי מייצג את כמות הסייקלים של המעבד. כעת, באמצעות ישר זה נוכל להעריך עבור גודל כל קלט, כמה מחזורי שעון יידרשו למעבד הראשון.