התראיינתי שם למשרת פיתוח לכלי פנימי, ורשמתי את השאלות:
1) פונקציה שמקבל short וצריכה להחזיר כמה ביטים דלוקים במספר
פתרון:
- לבצע שיפטים ימינה ולבדוק כל פעם את הביט הימני
- להחזיק מערך עם כל הערכים האפשריים ועבור כל ערך להחזיק כמה ביטים דלוקים ואז זה ב O של 1.
שאלת המשך הייתה שאין מקום להחזיק את כל המערך (פתרון לזה הוא פשוט)
2) לרשום פונקציה שמקבל 3 ומחזירה 7 , מקבלת 7 מחזירה 3 (כמה שיותר מימושים)
פתרון:
- עם פקודות IF
- מערך עם ערכים בתא ה7 ובתא ה3
- XOR עם הערך 4
- להחזיר עשר פחות X
- להחזיר 21 חלקי X
3) שאלה על שני ת'רדים שרצים עשר איטרציות ובכל איטרציה מבצעים inc ל counter , מה הערכים האפשרים ל counter בסיום הריצה
פתרון:
בין 2 ל 20 , קורה בגלל שפעולת הinc מתבצעת בקריאה מהזכרון , העלאת הערך , וכתיבה חזרה לזכרון.
4) עוד שאלה מוכרת , עם מלך שמקבל במתנה 1000 חביות , אחת מהן מורעלת , ויש ברשותו עבדים שיטעמו. המטרה היא למצוא את החבית המורעלת.
הפתרון הטוב ביותר הוא למספר את החביות, לייצג אותן בבינארית , עבור כל ביט (יש 10) להקצות עבד , וכל עבד ישתה מיקס של כל החביות שמספר הביט שאליו הוא הוקצה דולק. כל העבדים שימותו שתו מהחבית המורעלת, לכן הביטים שהוקצו להם ירכיבו את מספר החבית.