I was wait for long, I'm coming in 9 and the first interview was made at 10:30/ after that, I was go to other 2 managers, and take some lime one hour more, and then I do a test for two hours
היו שני מראיינים: ראש צוות ותכנת. תחילה ראש הצוות סיפר על החברה (מתמחה במכשירים רפואיים, חברה עולמית), ואח"כ ביקש שאספר להם עלי ומה עשיתי בעבודה הקודמת.
לאחר מכן ביקשו שאציג פרויקט שעשיתי, ולתאר מה היה במחלקות שונות, ובאילו תבניות עיצוב השתמשנו בפרוייקט.
אח"כ שאלו את השאלות המקצועיות.
*מאחר והאתר מגביל את גודל הטקסט ל1000 תווים, אז אפרסם את השאלות בחלקים. זה החלק השני.
שאלות מתוך הראיון
4. יש עובד חדש בחברה, שניסה לדבג את הקטע קוד הבא, ומשום מה הדיבוג עוצר דווקא ב-else. מה יכול לגרום לזה שהשתנה ה-x, אם הפונקציות g(), f() לא עוסקות ב-x?
int x = 5;
f();
g();
if (x==5)
{
... // Breakpoint here
}
else
{
... // Breakpoint here
}
5. מה זה volatile?
תשובות
הוסף תשובה
|
לצפיה בתשובות
יוני 2017
4.
סיבה 1:
יש תהליכון (thread) נוסף שרץ במקביל (למשל קובץ נוסף באותה סביבה) ומשנה את X לפני שמגיעים אל if.
סיבה 2:
יש פסיקה (interrupt) שהתעוררה ומשנה את X לפני שמגיעים אל if.
5.
אחד השלבים בהידור תכנית הוא אופטימיזציה. בשלב זה המהדר מנסה לבצע פעולות שונות בכדי לזרז ולייעל את פעולת התכנית. אחת מפעולות הייעול היא שמירת ערכו של משתנה שניגשים אליו פעמים רבות בקטע קוד מסוים ברגיסטר מהיר גישה.
במקרים מסוימים אנו מעונינים למנוע את האופטימיזציה. לדוגמא, כאשר משתנה מסוים עלול להשתנות ע"י מערכת ההפעלה, החומרה או ע"י תהליך אחר עליו להיות מאוחסן בזיכרון ולא ברגיסטר.
volatile הוא מציין בהגדרת משתנה המורה למהדר להימנע מלבצע עליו אופטימיזציה, ולא לשמור אותו ברגיסטר בזמן השימוש בו. דוגמא:
volatile int hw_flag;