5 דק' הצגה עצמית שלי,
10-15 דק' הסבר על החברה והתפקיד
ועוד שעה שאלות טכניות.
שאלות מתוך הראיון
היה לי לממש API של STACK אבל ששומרת את האיבר הקטן ביותר כל הזמן. ואפשר להשיג אותו בכל רגע נתון.
תשובות
הוסף תשובה
|
לצפיה בתשובות
ינואר 2024
הרעיון שלי הוא לממשל מחסנית (אם מבקשים גם בצורה ספציפית איך לממשל את המחסנית אז אפשר עם ליסט או כל מבנה נתונים נאחר עם פוינטר לאיבר האחרון שהוכנס פשוט) בצורה כזו שיש פוינטר לאיבר הקטן ביותר במחסנית בכל רגע נתון (מבצעים בדיקה בכל הכנסה למחסנית ומעדכנים את הפוינטר הזה בהתאם).
אם הכוונה ב'להשיג אותו' היא לשלוף אותו מהמחסנית החוצה (גם אם הוא באמצע המחסנית לצורך העניין), אפשר לייצר איזשהו משתנה בוליאני שיהיה חיובי אם"ם התבצעה קריאה לפונקציה ששולפת את האיבר הקטן ביותר במסחנית. ואז בכל הוצאה מהמחסנית, לבדוק אם מדובר באיבר הזה ואם המשתנה הבוליאני חיובי, אם כן נתעלם ממנו ונמשיך לאיבר הבא. ככה אפשר לממש את זה ב-O(1) במקום כמובן לייצר מחסנית חדשה לגמרי בלי אותו האיבר.
2 תוכניות זהות רצות על המחשב ושניהן מדפיסות את הכתובת של הפויינטר.
הכתובות המודפסות זהות, כיצד זה אפשרי?
תשובות
הוסף תשובה
|
לצפיה בתשובות
ינואר 2024
במערכות הפעלה מודרניות נעשה שימוש בזיכרון וירטואלי כדי לנהל את מרחב הכתובות של כל תהליך.
כל תהליך (כולל שתי התכניות הנ"ל) פועל במרחב כתובות וירטואלי משלו,
ומערכת ההפעלה ממפה את הכתובות הווירטואליות אל כתובות הזיכרון הפיזיות.
אותה כתובת **וירטואלית** בשני תהליכים שונים יכולה להתמפות לכתובות פיזיות שונות. לכן, אם שתי התוכניות מדפיסות את כתובתו של אותו משתנה או אובייקט, הן עשויות להראות את אותה כתובת וירטואלית, אך בפועל הן מתייחסות למיקומים פיזיים שונים בזיכרון.