מחפשת עבודה17
Active member
לאחרונה אני מתראיינת ללא מעט תפקידים, ומכיוון שיש לי רקע מסוים בשפת C++ - אני מחפשת גם בה תפקידים.
אחד הדברים ששמתי אליהם לב הוא שבחלק משמעותי מהתפקידים ספציפית ב C++ - תמיד תעלה שאלה בסגנון של ״תבחני את הקוד הבא ותגידי מה הוא עושה״ כדי לבחון את ההיכרות שלי עם היבטים שונים של השפה - בעיקר ירושה על סוגיה, מהם הסוגים השונים של Constructors שקיימים בשפה, למה צריך virtual destructor, ומה ההבדל בין new / delete של C++ לעומת הקצאות הזכרון שהיא ירשה משפת סי.
כמי שעבדה כמה שנים בשפה, אני מן הסתם מכירה את רובן המכריע של הנקודות האלו מתוך ניסיון, וגם את אלו שמעולם לא נתקלתי בהן באופן ישיר אני מסוגלת לנחש בצורה הגיונית (למשל שמשתנים סטטיים לא מוקצים כחלק מאובייקט של הקלאס אלא בזכרון נפרד). אבל לפעמים יש מקרי קצה שאני באמת שכחתי.
זה משהו שקרה לי בראיון לאחרונה. אחת השאלות היתה לקבוע את הגודל של אובייקט של הקלאס, ולמרות שבאמת ידעתי לסנן החוצה את המשתנים הסטטיים, ושגודל של int הוא ארבע בייטים, זכרתי שלפעמים הקומפיילר מוסיף ״ריפוד״ לאובייקטים כדי ליישר אותם לזכרון בצורה טובה.
מה שלא זכרתי זה שכשיש בקלאס מתודות וירטואליות - האובייקט עצמו מכיל פוינטר לטבלת המתודות הוירטואליות.
ואתם יודעים מה? סביר להניח שכסטודנטית וכג׳וניורית, הייתי זוכרת את הפרט הזה. C++ היתה השפה שלימדו אותנו דרכה תכנות מונחה עצמים, ודרכה למדנו על מתודות וירטואליות, ועל איך עובדים איתן בשפה, כולל באמת ההתייחסות לטבלת המתודות הוירטואליות.
אבל עם השנים, הפרט הזה נשכח, למרות שבהרבה מובנים אחרים - אני מכירה את השפה הרבה יותר לעומק מאשר הכרתי אותה בתור סטודנטית. למשל השתמשתי בכל ספריית הטייפים והאלגוריתמים שלה. למדתי והשתמשתי גם בפיצ׳רים שנכנסו לשפה מאד 2011, ואני בהחלט יכולה להשתתף בדיון מעמיק ומרתק (בעיני לפחות) על הנושאים האלו.
מעבר לזה, אני מרגישה שרמת הידע שלי השתפרה פשוט כי ״חייתי״ את השפה (ועל הדרך עוד כמה שפות) דרך הידיים, והנושא של גודל של קלאס או איך בדיוק עובד המנגנון של המתודות הוירטואליות של השפה פשוט לא היה חלק מהשימוש היומיומי שלי בשפה.
אני לא אומרת שהשאלה הזו לא חשובה, או שהתרגילים מהסוג הזה מיותרים. הרוב המכריע של השאלות שעולות בהם - הן שאלות חשובות ורלוונטיות מאוד שמתכנת טוב אמור לדעת את התשובות עליהן. אבל יש לי תחושה שיש דברים שייתכן שהם לא בהכרח בסיסיים בשפה כמו שמראיינים עלולים לחשוב שהם.
אחד הדברים ששמתי אליהם לב הוא שבחלק משמעותי מהתפקידים ספציפית ב C++ - תמיד תעלה שאלה בסגנון של ״תבחני את הקוד הבא ותגידי מה הוא עושה״ כדי לבחון את ההיכרות שלי עם היבטים שונים של השפה - בעיקר ירושה על סוגיה, מהם הסוגים השונים של Constructors שקיימים בשפה, למה צריך virtual destructor, ומה ההבדל בין new / delete של C++ לעומת הקצאות הזכרון שהיא ירשה משפת סי.
כמי שעבדה כמה שנים בשפה, אני מן הסתם מכירה את רובן המכריע של הנקודות האלו מתוך ניסיון, וגם את אלו שמעולם לא נתקלתי בהן באופן ישיר אני מסוגלת לנחש בצורה הגיונית (למשל שמשתנים סטטיים לא מוקצים כחלק מאובייקט של הקלאס אלא בזכרון נפרד). אבל לפעמים יש מקרי קצה שאני באמת שכחתי.
זה משהו שקרה לי בראיון לאחרונה. אחת השאלות היתה לקבוע את הגודל של אובייקט של הקלאס, ולמרות שבאמת ידעתי לסנן החוצה את המשתנים הסטטיים, ושגודל של int הוא ארבע בייטים, זכרתי שלפעמים הקומפיילר מוסיף ״ריפוד״ לאובייקטים כדי ליישר אותם לזכרון בצורה טובה.
מה שלא זכרתי זה שכשיש בקלאס מתודות וירטואליות - האובייקט עצמו מכיל פוינטר לטבלת המתודות הוירטואליות.
ואתם יודעים מה? סביר להניח שכסטודנטית וכג׳וניורית, הייתי זוכרת את הפרט הזה. C++ היתה השפה שלימדו אותנו דרכה תכנות מונחה עצמים, ודרכה למדנו על מתודות וירטואליות, ועל איך עובדים איתן בשפה, כולל באמת ההתייחסות לטבלת המתודות הוירטואליות.
אבל עם השנים, הפרט הזה נשכח, למרות שבהרבה מובנים אחרים - אני מכירה את השפה הרבה יותר לעומק מאשר הכרתי אותה בתור סטודנטית. למשל השתמשתי בכל ספריית הטייפים והאלגוריתמים שלה. למדתי והשתמשתי גם בפיצ׳רים שנכנסו לשפה מאד 2011, ואני בהחלט יכולה להשתתף בדיון מעמיק ומרתק (בעיני לפחות) על הנושאים האלו.
מעבר לזה, אני מרגישה שרמת הידע שלי השתפרה פשוט כי ״חייתי״ את השפה (ועל הדרך עוד כמה שפות) דרך הידיים, והנושא של גודל של קלאס או איך בדיוק עובד המנגנון של המתודות הוירטואליות של השפה פשוט לא היה חלק מהשימוש היומיומי שלי בשפה.
אני לא אומרת שהשאלה הזו לא חשובה, או שהתרגילים מהסוג הזה מיותרים. הרוב המכריע של השאלות שעולות בהם - הן שאלות חשובות ורלוונטיות מאוד שמתכנת טוב אמור לדעת את התשובות עליהן. אבל יש לי תחושה שיש דברים שייתכן שהם לא בהכרח בסיסיים בשפה כמו שמראיינים עלולים לחשוב שהם.