Test at Trusteer/IBM

מאת JobHunt

א. תלמדו טוב טוב על הפונקציות הווירטואליות, לעומק
ב. mutable
ג. מימוש של המחסנית – ממש קוד
ד. multithreading
ה. שאלות כלליות – virtual memory
ו. שאלות מעולם ה-windows: dll, message loop, load lock, injecton

שאלות ששאלו בשלב המיונים:

1. כתוב פונקציה רקורסיבית שמחשבת מספר פיבונאצ'י
כתוב פונקציה לא רקורסיבית שמחשבת מספר פיבונאצ'י
חשב את זמן הריצה של שתי הפונקציות

2. נתון sequence (יכול להיות וקטור, מערך או רשימה) ששמו connections, עם רשימת איברי Connection.
ל-Connection יש שתי שיטות:
is_active() – מחזירה האם החיפוש פעיל
get_priority() – מחזירה את העדיפות של החיבור
כתוב שיטה שמחזירה sequence של החיבורים הפעילים, ממויינים לפי העדיפות שלהם.

3. בדוק במחרוזת שמתקבלת האם הסוגריים תקינים.

4. להוסיף למימוש רגיל של מחסנית – שיטה שמחזירה ב-O(1) את האיבר המקסימלי במחסנית.
אין לשנות את זמן הריצה של שאר השיטות (אבל אפשר ורצוי להוסיף להן דברים).
רמז: לשמור במשתנה את האיבר המקסימלי הנוכחי לא יעזור

 

לבדיקת התאמה

IBM – מבחן בית

מאת JobHunt

מבחן בית של IBM

Implement a utility that will use Java reflection APIs to print "struct" objects. These "structs" are defined as follows:

o They have only public attributes

o Each attribute can be of the following types:

· "Structs"

· Collection or array of "Structs"

· Primitive (e.g. int), primitive wrapper (e.g. Integer) or String

The program should navigate the object structure and print the structure

לבדיקת התאמה

IBM – QA

מאת JobHunt

בראיון של הQA הם בהתחלה אמרו איך היית בודק את פיבונאצ'י

אמרתי שעל מקרי בסיס, הייתי בודק האם אכן מתקיים fib(n) = fib(n-1) + fib n-2
עבור הרבה אנים. צריך לחשוב מתי יש גלישה (כלומר מה קורה עבור מספרים שיותר גדולים ממקס' אינט). כמובן לבדוק מה קורה כשמכניסים קלט לא תקין, למשל מס' שלילי או מס' לא שלם (למרות שהכנסת מס' לא שלם היא טעות קומפ')
אחרי זה הוא שאל אותי איזה מס' הכי גדול אפשר להכניס לפונק' ונתן פונק' שוות ערך
fib(n) = fib (n-1)*1.6.
נראה לי הכוונה היתה לעשות
fib(n) = fib(n-1)*1.6 = fib(n-2)*1.6^2 = … fib(1)*1.6^n
ואז עבור n>32 נקבל מס' שהוא גדול ממקסימום אינט כי 33^1.6 זה מתקרב ל 32^2
משהו כזה, לא בטוח

לבדיקת התאמה

אחרי זה נתן תשאלה הידועה על יש מערך עם מספרים שונים מאחד עד אן הוצאנו אחד איך נמצא איזה, הוצאנו שניים איך נמצא איזה. ואז במערך יש רק ראשוניים ואסור להשתמש בסכימה איך נמצא איזה שניים לא נמצאים – התשובה פה היא להכפיל את כל המספרים. לחלק את 100! במה שיצא ולקבל מס' כלשהו.
מכיוון שכל מס' הוא פירוק יחיד של ראשוניים לא צריך פה שתי משוואות וברגע שנקבל מס' כלשהו ישר נדע איזה 2 ראשוניים מרכיבים אותו.

IBM – כללי 2

מאת JobHunt

1. אתה מקבל פוינטר למערך ממוין ואת גודל המערך.

במערך יש מספרים שחוזרים על עצמם מספר פעמים.
אתה צריך להחזיר את המערך הממוין בלי כפילויות.
2. יש מעין מערכת של בנק מה חשוב שיהיה במערכת בזאת.
הוא כיוון לכך שחשוב לדאוג שיהיה mutex ואז דיברנו
על הסנה בmutex שזה dedlock ועל איך אפשר לפתור
את הבעיה.

לבדיקת התאמה

IBM – כללי 1

מאת JobHunt

1. כתוב פונקציה רקורסיבית שמחשבת מספר פיבונאצ'י

כתוב פונקציה לא רקורסיבית שמחשבת מספר פיבונאצ'י
חשב את זמן הריצה של שתי הפונקציות

2. נתון sequence (יכול להיות וקטור, מערך או רשימה) ששמו connections, עם רשימת איברי Connection.
ל-Connection יש שתי שיטות:
is_active() – מחזירה האם החיפוש פעיל
get_priority() – מחזירה את העדיפות של החיבור
כתוב שיטה שמחזירה sequence של החיבורים הפעילים, ממויינים לפי העדיפות שלהם.

לבדיקת התאמה

3. בדוק במחרוזת שמתקבלת האם הסוגריים תקינים.

4. להוסיף למימוש רגיל של מחסנית – שיטה שמחזירה ב-O(1) את האיבר המקסימלי במחסנית.
אין לשנות את זמן הריצה של שאר השיטות (אבל אפשר ורצוי להוסיף להן דברים).
רמז: לשמור במשתנה את האיבר המקסימלי הנוכחי לא יעזור

5. יש 1,000 קבצי HTML בחלקם יש מספרי טלפון בצורה +972 (3) 1234567, צריך לשנות את צורתם ל-+972-3-1234567. איך תעשה זאת כך שיקח לך פחות מחצי שעה (הכל כולל הכל).

6. כתיבת פונקציה שבהינתן מספר עשרוני תחזיר את מספר המופעים של 1 בייצוג הבינארי של המספר הנתון – למשל עבור 7 יוחזר 3.