שאלון קודגורו 9 – שלב א'

רשומה רגילה
1. מה מחשב המקרו הבא:

#define m(x,y) x<y?x:y
  1. ממוצע
  2. מינימום
  3. מקסימום
  4. חציון
2. האם יכול להיות שכל הציונים של יוסי נמוכים מהממוצע ציונים שלו?

  1. כן, רק אם חלק מהם שליליים
  2. לא, בשום מקרה
  3. כן, תמיד
  4. לא, אלא אם כן כולם שונים
3. מי המציא את מכונת טיורינג?

  1. פון ניומן
  2. אלן טיורינג
  3. סטפן וולפרם
  4. כל התשובות נכונות
4. מה המטרה של Cookies?

  1. במידה ויש Bugs בשרת, הדפדפן יכול להאכיל אותם ב-Cookies. כידוע, Bug שבע הולך לישון, ולא מפריע לפעילות
  2. שמירת הגדרות אצל הלקוח ע"מ לאפשר התאמה אישית של תוכן האתר להעדפות הלקוח
  3. יצירת HTTP Session וירטואלי, ע"ב פרוטוקול HTTP, שהוא Stateless מעצם הגדרתו
  4. מאפשר טעינה מהירה יותר של עמודים שהלקוח ביקר בהם בעבר, ע"י שמירת העצמים שלא השתנו, במקום הורדה מחודשת
5. הינך אופרטור בערוץ IRC, מה הדרך הנכונה להעיף מישהו מערוץ?

  1. /quit <user_name>
  2. /kick <user_name>
  3. /part <user_name>
  4. /kill <user_name>
6. חוזקו של TCP Session כנגד Hijacking נובע מהשדות:

  1. IP Address וה Destination Port
  2. IP Address וה MAC Address
  3. Ack Sequence and Sequence
  4. Destination Port and Src Port
7. מה משותף למונחים הבאים – ASP, ASP.NET, Perl, PHP, CGI, JSP, ColdFusion, Lasso, iHTML, Escapade, QUISP, Tcl, Miva, Moto, SMX?

  1. שפות לפיתוח לצד שרת
  2. שפות לפיתוח אתרים ברשת
  3. כלי תכנות שמאפשרים ליצור ממשק משתמש דינאמי ללא תלות בדפדפן
  4. תשובות א' עד ד' נכונות
  5. אף תשובה לא נכונה
  6. איסוף מידע על לקוחות, לפי פעולות שביצעו, לצורך בניית סטטיסטיקות וניתוח מאפיינים והעדפות שלהם
8. כיצד ניתן לקרוא לפונקציות Win32 API מתוך Managed C#?

  1. בלתי אפשרי, יש להשתמש בפונקציות מתוך ה-.NET Framework בלבד.
  2. ניתן להשתמש ב-Managed C++/CLI כמתווך בין ה-C# ל-Win32 API.
  3. אין צורך בקריאה מיוחדת, ניתן לגשת ל-Win32 API ישירות מקוד C#.
  4. ע"י שימוש ב-Interop Services שימירו את הקריאה.
  5. ניתן להשתמש ב-PInvoke או ב-Managed C++/CLI על מנת לקרוא לפונקציות ישירות.
9. מה יחזירו שתי הפקודות הבאות:

IPAddress.Parse("100.200.000.69");

 

IPAddress.Parse("100.200.000.069");
  1. את אותה התוצאה
  2. תשובה שונה בגלל endinity
  3. התשובות יהיו שונות כי המספר 069 התפרש בבסיס 8 (אוקטלי) בגלל האפס המקדים
  4. השורה השנייה תיכשל מכיוון שכתובת ה- IP אינה חוקית
10. קובץ הרצה שנבנה בעזרת קומפיילר העומד בסטנדרטים של ה- .Net Framework מורץ, נעשים השלבים הבאים:

  1. מערכת ההפעלה מזהה שזה קוד .Net לפי Header של הקובץ, מפנה את הקובץ למערכת הוירטואלית וזו מריצה את קוד ה MSIL.
  2. מערכת ההפעלה עושה Loading לקובץ, מעבירה את קוד ה MSIL לקוד מכונה ומריצה אותו.
  3. מערכת ההפעלה עושה Loading לקובץ, הפונקציה שרצה מאתחלת וקוראת ל .Net Framework CLR אשר טוענת את הקובץ ומריצה אותו.
  4. מערכת ההפעלה עושה Loading לקובץ, הפונקציה שרצה מאתחלת לקוראת ל .Net Framework CLR אשר טוענת את הקובץ מעבירה אותו לקוד מכונה ומריצה אותו.
11. בוב ואליס חברים בארגון בעל תשתית PKI.(לכולם יש את המפתח הפומבי של כולם, לכל אחד יש מפתח פרטי, נניח שאין צורך ב CA). בוב רוצה לשלוח מסמך לאליס, ולהוכיח שהוא כתב אותו. כדי לעשות זאת עליו:

  1. להצפין את המסמך ע"י שימוש המפתח הציבורי של אליס.
  2. להצפין את המסמך ע"י שימוש במפתח הפרטי של אליס.
  3. לחתום על המסמך דיגיטלית ע"י שימוש במפתח הציבורי שלו.
  4. לחתום על המסמך דיגיטלית ע"י שימוש במפתח הפרטי שלו.
12. מה יוצא דופן:

  1. GDT
  2. IDT
  3. GVT
  4. IVT
13. מה הדבר הראשון שפרוצדורה מסוג ServiceMain צריכה לעשות?

  1. לדווח לService Control Manager שהService רץ ולהתחיל להריץ את הקוד של הService.
  2. לקרוא לפונקציה RegisterServiceCtrlHandlerEx כדיי לרשום פונקצית Handler.
  3. להתחיל את הService בThread נפרד באמצעות הפונקציה StartServiceCtrlDispatcher.
  4. לקרוא לפונקציה RegisterWaitForSingleObject עם פונקציה שמכילה את הקוד של הService ולסיים את הפרוצדורה.
14. סגרתי חלון אך הProcess שלו עדיין מופיע בTask Manager. מה יכול להיות הגורם האפשרי?

  1. כשסגרתי את החלון נשלחה הודעה WM_DESTROY אך לא נשלחה הודעת WM_QUIT.
  2. הProcess עדיין משחרר משאבים שתפס וייסגר בקרוב.
  3. קיימים עוד Threads בProcess שממשיכים לרוץ.
  4. כל התשובות נכונות.
15. למה משמש המאקרו _T(x)?

  1. שינוי מחרוזת x למחרוזת UNICODE או ASCII לפי הגדרות הפרוייקט.
  2. משנה את כל התווים במחרוזת x לאותיות קטנות על מנת שיהיה קל להשוות ביניהן.
  3. מוסיף x טאבים.
  4. מבצע Truncate למחרוזת x (מוריד את הרווחים מהסוף ומההתחלה).
16. מה משמעות ראשי התיבות SMS ברשת סלולר?

  1. Safety Management System
  2. Short Message Service
  3. Sonar Middleware Standard
  4. Sega Master System
17. מה משמעות ראשי התיבות של GSM ברשת סלולר?

  1. Group Special Mobile
  2. Global System for Mobile Communications
  3. General Service Mobile
  4. Geocentric Solar Magnetosphere
18. מה הסיכוי, בערך, שמספר ת"ז (נניח מספר מקרי בן תשע ספרות) יכיל רק שלוש ספרות שונות?

  1. אחת למיליארד
  2. מיליונית אחוז
  3. פרומיל
  4. חצי
19. כמה עולה לצרכן שקית ניילון לכריך?

  1. אלפית אגורה בדיוק
  2. פחות מעשירית אגורה
  3. בערך חמש אגורות
  4. יותר מעשרים אגורות
20. לפניך פונקציה:

unsigned int f(unsigned int n)
{
	unsigned int sum = 0, x = n;
	while(x)
	{
		sum += x;
		x = (x+n) % (n+1);
	}
	return sum;
}

באיזה סיבוכיות זמן הפונקציה הרצה?

  1. O(nlogn)
  2. O(n)
  3. O(n^2)
  4. O(logn)
  5. O(1)
  6. למעט עבור n=0, הפונקציה נכנסת ללולאה אינסופית
21. איזה אלגוריתם מיון הכי יעיל ב Worst case?

  1. bubble sort
  2. quick sort
  3. insertion sort
  4. merge sort
22. נגדיר את המספר 0 כ"שקר לוגי", ואת המספר 1 כ"אמת לוגי".
איזה מבין השערים הבאים זהה בפעולתו לחיבור מודולו 2?

  1. AND
  2. OR
  3. XOR
  4. NOT
23. איזה מהפרוטוקולים הבאים יכול לעבור ניתוב:

  1. ARP
  2. Ethernet
  3. DHCP
  4. IP
24. איך מחשב מזהה שיש כפילות בכתובות ה-IP ברשת המקומית, שלא עם כתובת ה-IP שלו?

  1. התקבלו שתי הודעות ARP reply עם כתובת IP זהה וכתובות MAC מקור שונות.
  2. התקבלו שתי הודעות ARP request עם כתובת IP זהה וכתובות MAC מקור שונות.
  3. התקבלה הודעת DHCP המתריעה על כפילות בכתובות IP.
  4. אין אפשרות למחשב שאינו שרת ה-DHCP לזהות כפילות בכתובות IP.
25. ב BASH, מה השורה הבאה אומרת?

for i in $(cat $foo | head -15); do echo –n $i; done
  1. הפקודה תדפיס את 15 השורות הראשונות בקובץ שאליו מצביע FOO כשורה אחת רצופה.
  2. השורה לא חוקית כי לא אתחלנו את המשתנה FOO בתחילת הלולאה.
  3. הפקודה תדפיס 15 שורות מהתוכן של המשתנה FOO ל STD OUT.
  4. הסינטקס שגוי לחלוטין. אסור היה לשים ; בסוף ה () של הלולאה. וגם מה זה בכלל done? אתם בטוחים שזה BASH?
26. אם אני מבצע את הפקודה:

ls Favorites > /dev/null 2>&1

מה יקרה?

  1. ה STD ERR ילך ל STD OUT, וה STD OUT ילך ל DEV NULL, ה STD ERR יופיע על המסך.
  2. ה STD ERR יופנה ל STD OUT ומשם ל DEV NULL ולא יופיע על המסך.
  3. ה STD ERR ילך ל DEV NULL ישירות.
  4. הפקודה לא חוקית ולא תפעל כלל.
27. לפניך פונקציה המיועדת להחליף בין תוכן שני משתנים. היא מקבלת כפרמטרים מצביעים לשני המשתנים:

void swap(int *a, int *b)
{
	int **tmp;
	/* Missing swap line */
}

במקום השורה החסרה, יש להוסיף שורה אשר תבצע את פעולת ההחלפה. כל הדרכים המוצעות "עקומות", אך רק אחת תעבוד כמו שצריך. הנח כי sizeof(int) == sizeof(int *).
בחר את השורה המתאימה ביותר:

  1. *tmp = a; a = b; b = *tmp;
  2. **tmp = *a; *a = *b; *b = **tmp;
  3. tmp = (int **)a; a = b; b = (int) tmp;
  4. tmp = (int **)*a; *a = *b; *b = (int)tmp;
  5. *tmp = (int *)*a; *a = *b; *b = (int)*tmp;
28. כולנו מכירים את המושג של לולאה אינסופית, האם ניתן להיכנס לרקורסיה אינסופית?

  1. כן – פונקציה רקורסיבית ללא תנאי עצירה תרוץ לנצח
  2. כן – פונקציה רקורסיבית עם לולאה אינסופית תכנס לרקורסיה אינסופית
  3. כן – אם שומרים את הReturn Address על הHeap במקום בStack
  4. לא – אין לנו זכרון אינסופי, ולכן תעוף אחרי זמן סופי על גלישת מחסנית
29. קיימת הסיטואציה הבאה:
יש לי 2 מחלקות – Ckarin, CYaniv.
יש ליצור מופע של CYaniv כ DataMember של CKarin ולהיפך.

Yaniv.h
class CYaniv
{
            void Karin();
            CKarin *m_pKarinInstance;
};
Karin.h
class CKarin
{
            void Yaniv();
            CYaniv* m_pYanivInstance;
};

כאשר ניסית לקמפל – הקומפיילר זרק שגיאה.
כיצד תתקן את הבעיה?

  1. החלפת סדר המחלקות, שכן CYaniv לא יכול להגדיר משתנה CKarin לפני שהוא הוצהר.
  2. הוספת Include ל<stdafx.h>
  3. הוספת Include ל<Karin.h>
  4. Forward declaration של CKarin ב-Yaniv.h.
  5. CKarin חייב לרשת מCYaniv.
  6. יצירת מחלקה – CKarinYaniv ממנה יורשות שתי המחלקות.
30. ב- HTTP1.1 נתמך connection reuse (keep alive). כיצד תכולה זו עוזרת לתפקוד הפרוטוקול?

  1. חיבור שעושים לו reuse חוסך ב- 3-way handshake של יצירת חיבור TCP, ולכן מוריד את ה- latency בין חיבורים
  2. השרת באופן אוטומטי מעביר כמה קבצים/נתונים בבת אחת על connection אחד, וחוסך כוח עיבוד ללקוח
  3. השרת מתפקד כ- proxy ומגן על כל החיבורים מפני מסירת מידע אישי
  4. תכולה זו עוזרת לעקוף בעיות שנוצרות עם מוצרי NAT (כגון modem-router ביתי או firewall עסקי)

כתיבת תגובה