שתי שאלות מראיון עבודה - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

שתי שאלות מראיון עבודה


amirxbox

Recommended Posts

סתם רוצה לראות אם אני היחיד שלא יודע לענות עליהן...


class A {
public:
virtual void f(int x=1) {
cout << "A " << x << endl;
}
};
class B : public A {
public:
void f(int x=2) {
cout << "B " << x << endl;
}
};
int main() {
A* a = new B;
a->f();
return 0;
}

מה מדפיסה התוכנית ולמה?

2.

מה הוא תפקיד של מנגנוני ההסתרה

public / protected / private

?

תשובות לא טרויאליות לחסר נסיון כמוני, אני יודע את התשובות אבל בתכלס איך מצפים שמישהו ללא ניסיון יענה על זה נכון?

ד"א מישהו רוצה להתחיל לפתח יחד פרויקט לאייפון ?(אפשר בזמנכם הפנוי לאט לאט),

השפה היא OBJECTIVE C יש עזרי GUI של וגם אויבקטים לGUI כמו JAVA SWING שכבר נכתבו, המון דוגמאות והכי חשוב הSDK חינמי.

קישור לתוכן
שתף באתרים אחרים

באיזה שפה זה? נראה כמו C

בכל מקרה PUBLIC PRIVATE וPROTECTED

לפי ההבנה שלי משיעורי C#

פאבליק אלו משתנים ופעולות שאפשר לגשת אליהם מכל CLASS אחר

PRIVATE רק מאותו קלאס שהם נמצאות בו

וPROTECTED זה כמו PRIVATE רק שגם קלאסים שקשורים לקלאס יכולים לגשת אליהם

קישור לתוכן
שתף באתרים אחרים

באיזה שפה זה? נראה כמו C

בכל מקרה PUBLIC PRIVATE וPROTECTED

לפי ההבנה שלי משיעורי C#

פאבליק אלו משתנים ופעולות שאפשר לגשת אליהם מכל CLASS אחר

PRIVATE רק מאותו קלאס שהם נמצאות בו

וPROTECTED זה כמו PRIVATE רק שגם קלאסים שקשורים לקלאס יכולים לגשת אליהם

השפה היא C++ כמובן,

לגבי השאלה היא למה המנגנון נועד לא ה קורה עם אתה מגדיר PRIVATE וכו.

קישור לתוכן
שתף באתרים אחרים

1. שאלה לא קלה. לדעתי הרבה אנשים עם שנות ניסיון רבות היו נופלים בה(מי לעזאזל זוכר איך ערכים דיפולטים מתנהגים בירושה?).

2. שאלה בסיסית ב-OO, ולא קשורה לנסיון בכלל.

קישור לתוכן
שתף באתרים אחרים

התוכנית תדפיס B 2

כי B יורשת מ A והמתודה F מוגדרת כ VIRTUAL, ואנחנו יוצרים אובייקט B ב MAIN.

המטרה של PUBLIC, PRIVATE, PROTECTED היא לשמור על אנקפסולציה של המחלקות (בקצרה ולא ממש בטוח בזה).

אכן שאלות לא פשוטות ואני לא בטוח בתשובה שלי.

קישור לתוכן
שתף באתרים אחרים

שאלה מאד בסיסית ומאד קלה לבדוק אם אתה מכיר פולימורפיזם

כל בוגר אקדמיה ידע לענות עליה בלי שום בעיה.

התשובה של MasterDK נכונה

אני לא נוהג להגיב ככה אבל ענית קצת בהתנשאות ובנוסף ענית תשובה שגויה.

B2 היא לא התשובה.

לא צריך תואר מאוניברסיטה לדעת את מנגנון הירושה/ ירושה מרובה של C++ אבל כמו שאמרתי השאלה קשה משהי נראית .

לגבי 2 גם לא טרויאלי כמו שאתם חושבים שמישהו ינסה ואז אני אתן את התשובה הנכונה.

קישור לתוכן
שתף באתרים אחרים

ד"א מישהו רוצה להתחיל לפתח יחד פרויקט לאייפון ?(אפשר בזמנכם הפנוי לאט לאט),

השפה היא OBJECTIVE C יש עזרי GUI של וגם אויבקטים לGUI כמו JAVA SWING שכבר נכתבו, המון דוגמאות והכי חשוב הSDK חינמי.

^^מה אתה בדיוק רוצה לפתח? זה לא שאני יודע לבנות דברים כל כך טוב, סתם מעניין אותי.

קישור לתוכן
שתף באתרים אחרים

^^מה אתה בדיוק רוצה לפתח? זה לא שאני יודע לבנות דברים כל כך טוב, סתם מעניין אותי.

זהו שאין לי את הרעיון, יש את היכולת (אני מקווה) ועוד כמה חברים שאולי יצטרפו אבל לא מצאנו רעיון שבאמת יתפוס.

מה שמפתה הוא שסביבית הפיתוח מאוד נוחה ויש הסכם של 70% נטו הכנסות למפתח (אפל דואגת לשרתים וגביית תשלום).

קישור לתוכן
שתף באתרים אחרים

מדפיס B1.

שאלה לא פשוטה אבל גם לא קשה אבל טריקית. אין לי הסבר מדוייק, אבל ננסה.

בגלל שהפונקציה וירטואלית היא עוברת קישור בזמן ריצה ( מהקריאה למימוש הרלונטי ). בגלל ש a הוא מצביע ל A לפי הגדרה ( ובזמן קומפילציה ). בזמן ריצה, לאחר הקריאה הקפיצה הראשונה תהייה ל מימוש של A, בגלל שהפונקציה וירטואלית הוא יקפוץ למימוש של האוביייקט הרלוונטי, אבל הפרוטוטייפ של שניהם זהה לכן X יקבל את הערך בפרוטוטייפ המקורי , שזה 1.

בקשר ל PUBLIC PRIVATE PROTECTED, זה באמת משהו בסיסי שכל אחד שמתעסק בשפות OO צריך לדעת.

קישור לתוכן
שתף באתרים אחרים

מדפיס B1.

שאלה לא פשוטה אבל גם לא קשה אבל טריקית. אין לי הסבר מדוייק, אבל ננסה.

בגלל שהפונקציה וירטואלית היא עוברת קישור בזמן ריצה ( מהקריאה למימוש הרלונטי ). בגלל ש a הוא מצביע ל A לפי הגדרה ( ובזמן קומפילציה ). בזמן ריצה, לאחר הקריאה הקפיצה הראשונה תהייה ל מימוש של A, בגלל שהפונקציה וירטואלית הוא יקפוץ למימוש של האוביייקט הרלוונטי, אבל הפרוטוטייפ של שניהם זהה לכן X יקבל את הערך בפרוטוטייפ המקורי , שזה 1.

בקשר ל PUBLIC PRIVATE PROTECTED, זה באמת משהו בסיסי שכל אחד שמתעסק בשפות OO צריך לדעת.

ההסבר לא טוב, אתה מפספס את הפואנטה שהיא מה קומפילר חכם יעשה שהוא רואה int x =CONST.

לגבי PRIVATE וPUBLIC- כל אחד יודע מה הם עושים אבל מה ההגדרה המדויקת שלשלמה הם נועדו

השאלה היתה אמריקאית ואלו האפשרויות:

שאלה 3

בתכנות מונחה עצמים? public / protected / private מה מהבאים הוא תפקיד של מנגנוני ההסתרה

1. למנוע מאדם שאינו מורשה לבצע קוד מסוים

2. למנוע מהמתחרים לקרוא קוד שהוא פרטי שלנו

3. למנוע מהמשתמש לבצע פעולות שיגרמו לשגיאה

4. למנוע משינויים במחלקה אחת לאלץ שינוי במחלקה אחרת

קישור לתוכן
שתף באתרים אחרים

תשובה: 4, אבל בשביל זה אתה לא צריך לדעת יותר מדי עקרונות OO.

1 לא קשור, מי זה אדם מורשה? לא מורשה לקרוא להם מתי, איפה?.. בקיצור לא קשור בכלל.

2 - ממש לא קשור.

3 - 3 כל פעולה יכולה לגרום לשגיעה. גם לא נכון.

מכאן, אם יש תשונה נכונה, אז התשובה היא 4.

הסבר יותר רלוונטי.

הקומפיילר אינו אחראי לנהל זכויות משתמשים, לדאוג לחריגות או אפילו להסתיר את הקוד. המטרה של הסתרת מידע היא להפריד בין המנשק של המחלקה לבין פרטי המימוש שלה, וע"י כך למנוע משינויים במימוש של מחלקה מסוימת להשפיע על מחלקות אחרות.

בקשר לשאלה הראשונה, אני לא יודע עד כמה ההסבר שלי נכון, אני די בטוח שכזה זה עובד. אשמח לקראות הסבר מפורט יותר.

לא יודע עד כמה זה קשור בכלל מה קומפיילר יעשה במצב הזה, כי זה לא רלוונטי. בגלל שהפרוטוטיפ של 2 הפונקציות זהה ( אין הבדל בין 1 ל 2 )

הקריאה תעבור למימוש של B אם הפרוטוטייפ המקורי של A וערכי ה DV שלה.

אבל תכלס, זה ממש לא משנה,, מה שאתה מתאר פה זה מקרה קצה שלא אמור להתקיים בכלל. מחלקה יורשת אשר דורסת מטודה של מחלקת האב צריכה לשמור על עקרון same or bettter. במצב הזה אני לא בטוח שזה נשמר. מכיוון שהפעלה של F של B בלי פרמטרים תתן תוצאה שונה לחלוטין. אבל זה כבר קשור למימוש של המטודה וכול'. אבל בכל מקרה, ניראה לי שיש פה סטייה.

קישור לתוכן
שתף באתרים אחרים

אני חייב לציין שיש לי כאב ראש. אבל A::f מוגדרת כוירטואלית בעוד ש-B::f אינה מוגדרת כוירטואלית, לשתיהן אותה חתימה.

עד כמה שאני זוכר - זו שגיאת קומפילציה. מצד שני אולי הקומפיילר מאפשר את זה.

בכל מקרה default parameters הם יצור סטטי - הקומפיילר משתמש בהם בזמן קומפילציה.

קישור לתוכן
שתף באתרים אחרים

זאת לא שגיעת קומפילציה מכיוון ש F לא באמת מוגדרת וירטואלית. virtual לא מתיחס לפרוטוטייפ של המטודה או לחתימה אלה זו בעצם הוראה לקומפיילר לבצע קישור דינמי בזמן ריצה. (dynamic biding) . וברגה שמטודה "הוגדרה" להיות ווירטואלית במחלק האב היא שומרת על אותה "הגדרה" בכל מחלקות הבן. ( פחות או יותר )

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...