שחזורי ראיונות עבודה -> ראיון למתכנת מתחיל C בחברת RAD - מה שואלים
  • ראיון למתכנת מתחיל C בחברת RAD - מה שואלים
  • ע"י: avi
    מישהו היה לאחרונה בחברת רד למשרת פיתוח בשפת C? אתם יודעים מה שואלים?
  • ע"י: 1_אורח_כללי
    תודה !
  • ע"י: 1_אורח_כללי
    כל הכבוד על ההשקעה - יישר כח !
  • ע"י: 1_אורח_כללי
    הייתי שם, זה מה ששאלו אותי: 1. ניהול זכרון: נתון איזור רצוף בזכרון של בלוקים בגודל של 1KB. יש להציע מימוש של פונקציות הקצאה ושחרור עבור הבלוקים האלו. ניתן להניח שהקלט תמיד חוקי(כלומר שמשתמש לא יבקש לשחרר איזור שלא באמת הוקצה לו) פתרון שלי: רשימה מקושרת של כל הבלוקים המשוחררים. איתחול: הכנסת כל הבלוקים לרשימה הקצאה: הוצאת האיבר הראשון ברשימה והחזרתו למשתמש שחרור: הכנסת הבלוק לראש הרשימה המראיינת לא אהבה את הפתרון ואמרה שאמנם לוגית הוא נכון אבל יש בו תקורה מיותרת פתרון של המראיינת: מחסנית של כתובות אתחול: דחיפת כל כתובת של תחילת בלוק לתוך המחסנית הקצאה: הוצאת הכתובת שבראש המחסנית והחזרתה למשתמש שחרור: הכנסת הכתובת המשוחררת לראש המחסנית. 2. מימוש מניעה הדדית: יש 2 CPU שמשתמשים באותו זכרון, ישנו קטע קריטי מסויים שבו אסור ששניהם יהיו בו בו-זמנית. מה צריך כל CPU לבצע לפני ואחרי כל גישה לקטע הקריטי. את הפתרון שלי המראיינת לא ממש אהבה, אז אין טעם לרשום אותו. 3 אני לא לגמרי זוכרת אבל זה היה בערך כך: יש 2 פונציות F1 ו-F2: void f1() { stc_x *ptr f2(????????) } void f2(?????????) { stc_x s ??????? } 1. צריך להשלים את הקטעים המסומנים ב-????? כך שבסיום הקריאה ל-F2 יצביע PTR ל-S. 2. מה הבעיה עם הצבעה כזו? 3. איך אפשר לפתור את הבעיה? פתרון: 1. בהגדרה של F2 (ב-???? השניים) צריך לרשום stc_x **ptr (זה מה שהמראיינת אמרה), לגבי השאר אני לא בטוחה 2. הבעיה היא שבתוך F2 המשתנה S הוא מקומי ואחרי שיוצאים מהפונקציה הוא כבר לא מוכר וכתוצאה מכך המצביע מצביע על זבל 3. צריך להגדיר את המשתנה S כסטאטי זהו, אני מקווה שעזרתי. בהצלחה למי שהולך
  • ע"י: 1_אורח_כללי
    מקפיץ