תחילה הסבירו על החברה ואז שאלו עלי, ועל החברה שאני עובד בה היום. לאחר מכן שאלו 3 שאלות תכניות.
שאלות מתוך הראיון
1. ביקשו שאסרטט קלאס חדש בדיאגרמת קלאסים, ולהראות איך הוא מתחבר לתוכנה שלנו.
בנוסף לכך ביקשו לכתוב את הקלאס (רק משתנים ומתודות מרכזיים והאם יש ירושה).
2. האם משהו לא בסדר בקוד הבא:
class A
{
public:
A()
{
}
~A()
{
}
void foo()
{
cout << "A" << endl;
}
};
class B : public A
{
public:
B()
{
}
~B()
{
}
virtual void foo()
{
cout << "B" << endl;
}
};
void main()
{
A * p = new B;
p->foo();
delete p;
}
3.1. מה הפלט של הקוד הבא:
class A
{
public:
A()
{
}
~A()
{
}
virtual void foo()
{
cout << "A" << endl;
}
};
class B : public A
{
public:
B()
{
}
~B()
{
}
virtual void foo()
{
cout << "B" << endl;
}
};
void main()
{
A * px = NULL;
A * pa = new A;
B * pb = new B;
px = pa;
px->foo();
px = pb;
px->foo();
delete px;
}
3.2. מה יהיה הפלט אם נחליף את הפונקציה הראשית בזו:
void main()
{
A a;
B b;
A& x = a;
x.foo();
x = b;
x.foo();
}
תשובות
הוסף תשובה
|
לצפיה בתשובות
מרץ 2020
2. כן, צריך להגדיר את foo של קלאס A כvirtual, אחרת התוכנה תקרוס בפקודה delete p.
3.1.
A
B
3.2.
A
A
מאי 2020
2. אם תבצעו את מה שנאמר בתשובה הקודמת הפלט יהיה B.
3.1. צריך להגדיר A::foo() בקריאה הראשונה לפונ' כדי שלא תקרוס, והפלט יהיה:
A
B
3.2. צריך להחליף את השורה:
A & x = a;
בשורה:
A & x = b;
כדי שהתוכנה לא תקרוס, ואז הפלט יהיה:
B
B
פברואר 2022
לא מדוייק התגובה האחרונה בכל אופן לסעיף האחרון ברגע שעם & התשטבה BB ובלי BA
עוסקת בתכנון, פיתוח, ייצור ושיווק ציוד לתמיכה, פיקוח ובדיקת תהלידי ייצור של מוצרי אלקטרוניקה. קו המוצרים כולל מערכות AOI לבדיקה אופטית ובקרת קווי ייצור מעגלים מודפסים וצגים שטוחים ופתרונות הדמיה בייצור מעגלים משולבים.