ברוכים הבאים למאגר השאלות שלנו – אתם מוזמנים לשלוח אלינו במייל שאלות שהיו לכם בראיונות עבודה.
כל הפתרונות הם פתרונות מוצעים בלבד. מצאתם טעות? שילחו לנו ונשמח לתקן.
מומלץ מאוד לפתור ולהתרענן לפני כל ראיון כדי להגיע לראיון מוכנים וחדים! שימו לב שהשאלות חוזרות על עצמם לכן פתרו גם שאלות ישנות והגיעו מוכנים לראיון.
לנוחיותכן/ם תפריט לניווט בין הקטגוריות השונות וחיפוש בתוך העמוד.
שיתוף המידע כאן עוזר לך להגיע מוכן לראיונות עבודה ולחסוך זמן רב, לחץ כאן וגלה כיצד להגיע לפי 2 יותר ראיונות בעזרת הרשת של ג'ובהאנט!
חדש – עכשיו כל הראיונות בספר הכנה לראיונות עבודה בהייטק – לפרוץ כל ראיון עבודה ולהתקבל בקלות!
-
888רנדום לוג'יק
-
Amdocsאמדוקס
-
Appleאפל
-
Applied Materialsאפלייד מטיריאלס
-
CEVA DSP
-
CEVA DSP – חידות קידוד
-
CEVA DSP – פיתוח
-
CEVA DSP – פיתוח תוכנה
-
CEVA DSP – QA ומולטימדיה
-
CEVA DSP – Logic Design Engineer
-
CEVA DSP – מהנדס וריפיקציה
-
CEVA DSP – מפתח בדיקות אוטומציה
-
CEVA DSP – QA אוטומציה
-
CEVA DSP – קומפיילר
-
CEVA DSP – Debugger Engineer
-
CEVA DSP – צוות Video Codec
-
CEVA DSP – חידות ושאלת אסמבלי
-
Check Pointצ'ק פוינט
-
יום מבחנים בצ'ק פוינט – קוד
-
יום מבחנים 2020 – עדכון
-
יום מיונים- תיכנות- תאור מפורט
-
שאלות מיום מיון 2020-עדכון
-
2020 Security Analyst
-
משרת QA
-
יום מיון QA
-
יום מיון לבדיקות ותמיכה טכנית
-
למשרת QA
-
JAVA ראיון
-
צ'ק פוינט – C++ UI
-
צ'ק פוינט – C++ UI
-
צ'ק פוינט – QA
-
צ'ק פוינט – Security Analyst
-
צ'ק פוינט – תכנות
-
צ'ק פוינט – תמיכה טכנית
-
Dalet
-
Elbitאלביט
-
exelateאקסלייט
-
Final
-
fiverr
-
Fundtechפנדטק
-
General ElectricGE
-
Holaהולה
-
HP
-
IBM
-
Innovidאינוביד
-
Intelאינטל
-
Marvell
-
Mellanoxמלאנוקס
-
Microsoftמיקרוסופט
-
Optimal
-
Philipsפיליפס
-
Rafaelרפאל
-
Sandiskסנדיסק
-
SAPסאפ
-
Sapiensסאפיאנס
-
STMSSofTov
-
Trusteerטרסטיר
-
Verintורינט
-
Wixוויקס
-
Yopto
-
Zerto
-
ראיון אישי
-
שאלות היגיון וכלליות
-
מתוך מבחנים לאפלייד מטריאלס – 12
-
מתוך מבחנים לאפלייד מטריאלס – 11
-
מתוך מבחנים לאפלייד מטריאלס – 10
-
מתוך מבחנים לאפלייד מטריאלס – 9
-
מתוך מבחנים לאפלייד מטריאלס – 8
-
מתוך מבחנים לאפלייד מטריאלס – 7
-
מתוך מבחנים לאפלייד מטריאלס – 6
-
מתוך מבחנים לאפלייד מטריאלס – 5
-
מתוך מבחנים לאפלייד מטריאלס – 4
-
מתוך מבחנים לאפלייד מטריאלס – 3
-
מתוך מבחנים לאפלייד מטריאלס – 2
-
שאלה בחברת אוקינאה – OIT
-
מתוך מבחנים בראיון עבודה באפלייד מטריאלס
-
מתוך ראיון ב"פגסוס טכנולוגיות" – 3
-
מתוך ראיון עבודה ב"פגסוס טכנולוגיות" – 2
-
מתוך ראיון ב"פגסוס טכנולוגיות"
-
מתוך ראיון באינטל
888 - רנדום לוג'יק
NOC Team Member
יום ראיונות ראשון:
1. שאלון פרטים אישיים
2. דינמיקה קבוצתית – אתגר המרשמלו
3. מבחן סגור
Please rate the following tasks by their priority and think how you should handle it.
A. Partner (who in the past had many false alerts) calls and says that players can't register.
B. You get an alert that two servers need to be restarted.
C. Support opened a case about players from one country that cannot register. they only provide 1 example.
D. You got an alert that service crashed on a server.
E. Support calls and says that there are over 50 complaints from members that cannot play on 888casino.
F. You got an email from 3rd party vendor about upcoming maintenance and you need to send formal mail to the partners.
G. You got an alert that the Casino DB is down.
H. You got an email saying there was a version upload to the registration process. You should communicate that to the support in Gibraltar and Antigua.
I. You got an email from internal employee asking to unlock his user.
4. מבחן פתוח – הגדרת מושגים (מותר להשתמש באינטרנט)
High availability
Active directory
Physical server vs. Virtual server
DNS
Test server connection
IIS vs. TOMCAR
HTTP errors 200-500
3 way handshake
Hosts file
HTTP vs. HTTPS
Application 3 layers
5. ראיון אישי
יום ראיונות שני:
1. ראיון עם מנהל NOC
2. מבחן אמינות ממוחשב
3. ראיון עם מנהל משאבי אנוש
Amdocs - אמדוקס
מבחן תכנות 2020 – עדכון
1)ההבדל בי מחלקה אבסטרקטית וממשק.(כמה תשובות נכונות)
-אין הבדל
-באבסטרקט יכול להיות מימוש
-בממשק יש משנים שאינם פינאל סטטיק
-ניתן לרשת רק מחלקה אחת אבסטרקית ולממש כמה ממשקים.
2)ההבדל בין סטרינג,סטרינג באפר,סטרינג בילדר.
-כל פעם שמשנים מחרוזת(סטרינג) נוצרת חדשה.
-הבאפר והבילדר נועדו כדי לעשות מניפולציות על מחרוזות מבלי ליצור מחרוזת חדשה לצורך כך.
-הבאפר הוא סרד סייף.
-כל התשובות נכונות.
3)אם רוצים לעשות מפתח של מפה(קיי של מאפ) בתור אובייקט צריך:
-לממש איקוואלס
-איקוואלס והש קוד
-איקוואלס וטו סטרינג
-כלום
4)פונ' סוואפ עם מחרוזות – האם תעבוד ותחליף (סטרינגס נשלחים ביי ואליו)
5)מה היתרון והחיסרון של אינדקסים בדטה בייס -שאלה פתוחה
6)מחיקת איבר מלינקדליסט כשיש מצביע על הראשון ועל האיבר למחיקה ב אוו של 1. (כתיבת אלגוריתם)
7)בדיקת תקינות של ביטוי עם 3 סוגי סוגרים (כתיבת אלגוריתם)
8)עם איזה מבנה תממשי מילון ולמה זה יותר יעיל לממש עם המבנה הזה. (תשובה פתוחה)
9)סינגלטון בלייזי מוד, מה צריך להוסיף לקוד כדי שזה יהיה סרד סייפ(שאלה פתוחה) (אנוטציה סינכרונייזד, בנאי פרייבט או פרוטקטד, פונ' קלוון שלא מעתיקה)
10)אם יש 2 אובייקים שמאותחלים עם אותם שדות ומפעילים איקוואלס שלא מימשנו אותה, מה יקרה?
point p1(1,2)
,
p2(1,2)
return p1.equals(p2);
-יחזור שקר (זה התשובה כי המימוש הדיפולטי אם לא עושים אוברייד הוא השוואת כתובות )
-יחזור אמת
-טעות קומפילציה
-טעות ריצה
11)מה ההבדל בין לינקד ליסט לאריי ליסט (מה יותר מהיר למחוק בו את האיבר הראשון, חיפוש אובייקט ע"פ אינדקס וע"פ איבר איזה זמן ריצה זה)
12) אם יש רשומות שנשלפות הרבה פעמים מ BD, וזה תהליך יקר, איך תשפרו את זה?
מבחן למתכנתים
נתון עץ בינארי:
צור פונקציה ההופכת את כל הענפים והצמתות (כמו מראה)
תשובה מוצעת:
public void ReverseTree(TreeNode root){
TreeNode tmp = root.leftReference;
root.leftReference = root.rightReference;
root.rightReference = tmp;
if(root.leftReference != null) ReverseTree(root.leftReference);
if(root.rightReference != null) ReverseTree(root.rightReference);
}
העץ בינרי בעצמו יכול להיות NULL, לדעתי שווה גם לבדוק את זה לפני שמתחילים להפוך.
נתון שתי רשימות מקושרות וחד כיווניות אשר מתמזגות בנקודה מסויימת
כתוב פונקציה אשר מחזירה את צומת המפגש
תשובה מוצעת:
public static void main(String[] args) {
LinkedList<Integer> list1 = new LinkedList<Integer>();
LinkedList<Integer> list2 = new LinkedList<Integer>();
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(4);
list1.add(25);
list1.add(34);
list1.add(43);
list1.add(5);
list2.add(-1);
list2.add(-2);
list2.add(-3);
list2.add(4);
list2.add(62);
list2.add(73);
list2.add(4);
list2.add(67);
Iterator<Integer> iter1 = list1.iterator();
Iterator<Integer> iter2 = list2.iterator();
while(iter1.hasNext() ){
while(iter2.hasNext()){
if(iter1.next() == iter2.next())
System.out.println(true);
}
}
נתון מערך של מספרים שלמים
צור פונקציה שמקבלת מערך ומחזירה את סכום הזוגות הגדול ביותר כאשר לזוגות אסור להיות שכנים .
נתון קובייה (כמו הונגרית).
תת קובייה פנימית היא כזאת שאין לה שום פאה חיצונית.
צור נוסחה המחשבת כמה תת קוביות פנימיות יש.
(דוגמא: עבור קובייה הונגרית יש 9*3 תת קוביות ורק אחת פנימית) .
אמדוקס – עצות ממראיין
כאחד שמראיין באמדוקס מועמדים לתכניתי JAVA עם/בלי ניסיון יכול להעיד ששאלות יבשות ב-JAVA לאו דווקא שופכים מספיק ידע כדי להתרשם ממועמד.
כולם יודעים לדקלם כמו תוכים את "מה ההבדל בין interface לבין abstract class"
אבל בשאלה השנייה של "מתי תשתמש בכל אחד מהם?" לא אחת מקבל דממה בתור תשובה.
בגדול – שואל על הרבה נושאים – אבל בשעה של ראיון שמתוכה 5 דקות הקדמה ומבוא, 20 דקות למימוש שאלת קוד ורעיון אלגוריתמאי – נשאר לכל היותר חצי שעה שבמהלכה מנסה לדלות כמה שיותר פרטים על ניסיונו וידיעתו של המרואיין.
בזמן הזה צריך לראות שמועמד יודע מבני נתונים, סיבוכיות, OO, וכמובן JAVA.
ואם מרואיין אם ניסיון – אז בכלל…לצלול לתוך פרוייקטים שעליו המרואיין עבד, לוודא שהוא מבין את הארכיטקטורה של המוצר עליו עבד וב-90% מהמקרים משלב שאלות כלליות לצד שאלות ספציפיות על המוצר, למשל, אם שכבת הכתיבה ל-DB היא hibernate – בין לבין אשאל שאלות על הנושא ואם עבדו עם spring אז אנבור לראות שמבחינת המרואיין זה לא סתם buzzword.
מספר המרואיינים שקיבלתי אשר כתבו spring framework בקו"ח אבל לא ידעו לענות על מה זה IoC מטרידה. באותו אופן אשאל על application servers, אם זה שאלות אדמיניסטרטיביות, ועד לרמת מימוש client המתחבר ב-REMOTE ל-java bean מסויים (שלב-שלב – לא בקוד – אלא בע"פ כדי לוודא הבנה של EJB Container).
בראיונות לא נכנס לנושאים "כבדים" מדי כמו ניהול טרנזקציות – אבל אם מישהו רושם לי שהוא יודע JDBC ושעבד מתוך application server מול DB, שיידע מה זה DATA SOURCE, שיידע מה XA ועוד דוגמאות למכביר.
ולא אחת מגיעים מרואיינים שפשוט חסרי ידע, וחבל. כי זה סה"כ לדאוג לכסות את הידע שצברתי במהלך העבודה/לימודים.
אמדוקס – מתכנת JAVA
1. מה ההבדל העיקרי בין SET ו-LIST?מה השוני ביניהם?מה ההבדל בין HASHTABLE ו-VECTOR מול SET ו LIST?
2.האם משתנה סטטי יכול להיות מבוטל? (can a static method be overridden)
3.מה synchronized ?
3.תממש CONNECTION STRING ב JAVA(תקרא איך לממש את הCONNECTION ב JDBC)?
4 יהיה לך שאלות על TRY/CATCH/FINALLY?
5.יהיה עליך לקרוא פונקציה ולראות מה היא מחזירה .
שאלה 3, המימוש:
public static Connection getConnection(String user, String pass, String server, String port, String sid) {
try {
// Class.forName("oracle.jdbc.driver.OracleDriver");
// Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
// return return DriverManager.getConnection("jdbc:oracle:thin:user/password@host:port/sid");
Class.forName(("oracle.jdbc.driver.OracleDriver"));
return DriverManager.getConnection("jdbc:oracle:thin:" + user + "/" + pass + "@" + server + ":" + port + "/" + sid);
//("jdbc:oracle:thin:load/12345@goliath:1521/BPM");
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
השינוי היחידי הוא , אם אתה עובד עם ORACLE או SQL אתה משנה את ה-JAR
אמדוקס – תוכניתן JAVA מתחיל 2
לכתוב פונקציה רקורסיבית שהופכת עץ בינארי-שמאל הופך לימין וימין לשמאל
נתון מערך בגודל K ובו מספרים מ1-N ומערך עזר בגודל N לכתוב קוד שיסדר את כל המספרים במערך הראשון ללא חזרות ומשמאל לימין(הכוונה שהמערך יהיה ריק מנקודה מסויימת מכיוון שרוב המספרים חזרו על עצמם)-בסיבוכיות של OׂNׁ
וקיבלתי חידה עם שקי מטבעות
ישנם K שקים אחג מהם מכיל 90 גרם במקום 100 גרם ע"י שקילה אחת יש לדעת מהו השק המזוייף
לאחר מכן נכנסתי למנהלת המחלקה בחורה מקסימה ויש לומר מבריקה שביקשה ממני לתכנן מערכת אשר תיתן את הפונקציה של T9 שיש בטלפונים הסלולאריים
ושאלה קשה שהצלחתי חלקית נתון ביטוי לדוגמא 3-4*2^4+(2*1) הביטוי הוא סטרינג
יש לתכנן אלגוריתם אשר יחזיר את התוצאה-הזעתי קשות בשאלה הזאת
מתברר שיש לישתמש ב 2 מחסניות או באחת יש כמה סוגי פתרונות
http://www.shafee.com/past-lectures/The-concept-of-a-datatype.ppt
פתרון השקים:
לשם פשטות נניח שיש 3 שקים,
ניקח את שק מס' 1 + 1/2 משק מספר 2 + 1/3 משק מספר 3 ונשקול ביחד
כעת לפי התוצאה נדע איה שק מכיל 90 גרם.
נניח ששק מס' 1 מכיל 90 גרם אזי החישוב הוא כך:
1*90 + 1/2*100 + 1/3*100
אם שק מס' 2 מכיל 90 גרם אזי החישוב יהיה:
1*100 + 1/2*90 + 1/3*100
אם שק מס' 3 מכיל 90 גרם אזי החישוב יהיה:
1*100 + 1/2*100 + 1/3*90
כך נדע בוודאות איזה שק מכיל 90 גרם.
ניתן להכליל זאת ל-K ע"י כך שפשוט ניקח מכל שק: 1/1 1/2 1/3 1/4 … אחד חלקי K
אמדוקס – C++ ומרכז הערכה
הדינאמיקה הקבוצתית מחולקת לשניים :
1)בחירת מועמדים לקבלה לעבודה
2)בניית גשר.
בגלל שזה חלק פסיכולוגי ויושבים איתכם מנהלי צוותים ומנהלי פרוייקטים , אי אפשר לדעת מה העדפה אישית שלהם ומה דרישות של תפקיד , אליו אתם מגוייסים.
החלק של מועמדים ->
מקבלים תיאור משרה ותיאור של 6 מועמדים , צריך לדרג אותם מ1 עד 6.בהתחלה כל אחד בנפרד ולאחר מכן דירוג משותף של כל הקבוצה שלכם.
לחלק הזה יש 5 דקות אם אני לא טועה , ובסוף צריך להקריא מה הקבוצה בחרה.על כל חברי הקבוצה להסכים לבחירה , אחרת היא תיפסל.חבר בקבוצה יכול להטיל וטו על ההחלטה (הדבר הכי דפוק לעשות) ואז אין החלטה . את החלק הזה עברו אנשים שהשתתפו ב-70% , לא הובילו את הדיון וגם לא שתקו לאורך כל הדיון.צריך לחשוב על אופציה , בה אף אחד בקבוצה לא יסכים אם הבחירה שלכם , ומה עושים במקרה הזה.להזכירכם , המנהלים לעתיד יושבים באותו חדר איתכם , ומקשיבים לכל דבר שנאמר.
החלק של הגשר -> נותנים המון חלקי לגו ומבקשים לבנות גשר (לפי 3 שבועות מימדים היו 10 על 15 , לפני שבוע זה כבר גדל ל-40 על 20 , אז אין לדעת ).לגשר צריכים להיות עמודי תאורה במרחק של 4 ס"מ אחד מהשני , רגליים ואסור שאף חלק בצבע אדום יגע בחלק בצבע כחול(בכל חלקי הגשר) , וכמה שיישאר פחות חלקים מיותרים – ככה יותר טוב.לבניה נתונה חצי שעה , כשבהתחלה צריך להתחלק ל-2 קבוצות ולחלק את הזמן ל
א)תכנון
ב)ביצוע
ג)אינטגרציה
כאשר בכל חלק המדריכה עומדת עם סטופר.
אחרי שלב התכנון שתי הקבוצות לא רשאיות לדבר זו עם זה , אז צריך לתכנן טוב.
אצלינו היה 15 דקות תכנון , 10 דקות ביצוע ו5 דקות אינטגרציה וזה מספיק זמן.
בסוף המדריכה שואלת באקראי לדרג את התנהלות הקבוצה ו\או התנהלות שלכם ומה ציון שהייתם נותנים לגשר.מומלץ לא לחרטט , אם הגשר יצא דפוק – אז לציין את זה .
לפני הדינאמיקות יש גם היכרות אישית :
המדריכה מפזרת המון קלפים עם כל מיני תכונות("לדעת לוותר" , "להוביל" , "לנצח" וכד') וצריך לבחור שניים:
1)תכונה שמאפיינת אותכם הכי טוב אותכם
2)קלף עם תכונה שהייתם רוצים שתהיה לכם.
פה בחלק הזה צריך לחשוב ניטרלי , ולחפש תכונות כמו "להאמין בניסים" , "לדעת להיות לבד" וכד' , אבל זה נתון לבחירה אישית שלכם .כאשר אתם בוחרים קלף תחשבו איך אפשר לעקוץ אותכם עם התכונה הזו (כי זה מה שהמדריכה עושה) .
התשובות ש"עברו" :
התכונה שלי -> לדעת להיות לבד
התכונה שהייתי רוצה שתהיה לי -> להאמין בניסים .
מבחן תכנות
1.א. עבור כל node בעץ תחליף בין בן שמאל לימין
1.ב. תדפיס את העץ לפי גובה כלומר תדפיס את ה שורש, אחר כך תדפיס את הבנים הישירים שלו, אחר כך תדפיס את הבנים הישירים שלהם וכך הלאה
2. בהנתן מערך בגודל N ופונקציית rand כתוב אלגוריתם שיחזיר מערך של N מספרים מ 0 עד N-1 מסודרים בסדר ראנדומלי ולא חוזרים על עצמם.
3.א. כתוב singletone
3.ב. תסנכרן את היצירה שלו
3.ג. תשפר את קוד של היצירה כך שהשהיה ב בלוק synchronized תהיה מנימלית. (תשתמש ב design pattern)
אמדוקס – תוכניתן JAVA מתחיל
שאלה ראשונה: יש תיאור ארוך של מחלקה של לקוחות. שואלים שם איזה שיטות צריך לדרוס. התשובה ממש בגוף המחלקה , יש 2 שיטות שכתוב שם OVERRIDE, פשוט תרשמו אותם.
אחר כך שואלים מה הסכנה ב clone של קוסטומר
אחר כך יש שאלה של מדפיסים משהו למסך ושואלים מה יודפס. (יוצרים שני אובייקטים, אחד עם ערך של 5 ואחד של 10- מכיוון שזה משתנה סטטי אז לשניהם יהיה 10 בסוף.
התשובה היא פעמיים המספר 10 (משהו כזה) מכיוון שזה משתנה סטטי מה שהוגדר שם, וכדי לפתור את הבעיה צריך להפוך אותו ללא סטטי.
אחר כך יש שאלהעל serialize. יש אובייקט שיש בו גם מספר כרטיס אשראי ורוצים להעתיק אותו לקובץ (יענו לעשות סריאלייז) מבלי להעתיק את מספר כרטיס האשראי. שואלים מה הפתרון לכך כי אסור להעתיק מידע מוגן לדיסק. לא ידעתי איך עושים את זה. אולי פשוט להוריד את הנתונים ולכתוב את האובייקט בלי.
אחר כך יש 2 שאלות שקשורות לרשימות. בכל שאלה יש קוד ושואלים מה לא בסדר בקוד ואיך לתקן
אני זוכר שבשאלה הראשונה יש בעיה שלא מנקים את האובייקט ולכן זה יוצר בעיות, צריך לעשות משהו עם clean
בשאלה השנייה אני חושב שאין שום בעיה, אבל אולי אני טועה.
אחר כך יש שאלות על SQL.
שואלים למשל מה זה PRIMARY KEY
מה זה FOREIGN KEY
ועוד כמה דברים ששכחתי.
ואז נותנים תיאור של מכון כושר וצריך לצייר את ה ERD DIAGRAM שלו (גם שאלה ב SQL)
שואלים אחר כך מה זה JDBC
מה זה MVVM
ובסוף יש שאלה הזוייה להפוך קובץ CSV של אקסל לטקסט או לדיסק.. עבודה עם קבצי CSV
זה מה שאני זוכר
אחר כך יש מרכז הערכה:
1. לספר על עצמכם.
2. המאבחנת זורקת קלפים על השולחן ואומרת לכל אחד לבחור קלף עם תכונה שהוא רוצה לשמור לעצמו וקלף עם תכונה שהוא רוצה לשפר
3. המאבחנת נותנת דף עם רשימת מועמדים לקבלה לעבודה. כל אחד צריך לדרג את המועמדים דירוג משלו, ואז הקבוצה צריכה להחליט ביחד על דירוג קבוצתי. מי שהדירוג שלו קרוב לדירוג הקבוצתי מקבל נקודות בונוס
4. צריך להרכיב גשר מלגו בתכנון קבוצתי. משימה ארוכה ולא פשוטה, חשוב לשתף פעולה ולתכנן זמן כמו שצריך.
אחר כך מנפים מועמדים בהתאם לשני השלבים הראשונים ואז שולחים לראיונות
בראיונות זה בעיקר שאלות אישיות איך אתה בעבודת צוות,ספר לי על פרוייקטים שעשית וכו'
אמדוקס – פיתוח תוכנה
הראיון היה מול שני ראשי צוותים.
בהתחלה מדברים איתך ורוצים לדעת מי אתה.
לאחר מכן אתה מקבל דף עם שאלה אחת בכל פעם.
שאלה 1: שאלה פשוטה: צריך לכתוב פונק' שממירה STRING ל – INT. ולאחר מכן, שואלים איך אפשר לטפל בקלט שגוי (EXCEPTION). המשיכו ושאלו קצת על EXCEPTION (מה קורה אם לא נתפס ע"י ה – CATCH).
שאלה 2: צריך לכתוב הגדרה של NODE של עץ בעל ערך INT. לאחר מכן פונקציה רקורסיבית שמחשבת את כל ה – VALUE של העץ. (תנאי עצירה צריך להיות NODE=NULL וזה יחסוך בדיקת תנאים של ענפים ריקים).
שאלה 3: א. נתון ממשק שמכיל ADD, REMOVE, SIZE. צריך לממש את מחלקת מחסנית שמממשת את הממשק (צריך לכתוב את כל ההגדרה, כולל ה – CLASS STUCK IMPLEMENT ——). כדאי להשתמש במבנה הנתונים של רשימה (יותר יעיל מוקטור כי וקטור ממומש ע"י מערך והוספת איבר למערך מלא דורש הקצאת מערך חדש בגודל כפול והעברת הנתונים לשם…)
ב. צריך לדאוג שהמחסנית תהיה מסונכרת לעבודה עם טרדים שונים (צריך להשתמש ב – SYNCHRONIZE פעמיים או שלוש כאשר משתמשים במבנה הנתונים).
ג. קוד המכיל 2 טרדים ורוצים לדעת מה הפלט. תרד ראשון כותב לתוך טבלת האש, שהמפתח שלה הוא האות הראשונה של הקלטים שמסופקים והערך הוא 1). הטרד השני קורא מהטבלה את הערך, מגדיל אותו ב – 1 וכותב אותו בחזרה (דורס את הערך הקודם שהיה בטבלה). בסופו של דבר היה לי פלט של 2 או 3 שורות .
ד. מה יכול להיות בעיה בקוד? DEADLOCK (כל טרד מבצע שני BLOCK בשני מקומות, אבל בסדר הפוך).
שאלה 4: קיים קוד שמכיל פונקציה שמקבלת שני מספרים שלמים ותו (שיכול להיות +-*/). קיים SWITCH על התו שמבצע את הפעולה החשבונית המתאימה. צריך לפתור את השאלה בצורה OO.
ב. איך אפשר להפטר מה – SWITCH? שימוש בטבלת האש: מפתח – תו, ערך – new class().
מבחן שני חלקים
שני חלקים למבחן:
1)מבחן על השפה – המבחן אמריקאי ומורכב מ – 25 שאלות.
2)מבחן בלוגיקה (בסיסי נתונים) – המבחן פתוח ומורכב מ – 3 שאלות.
1) חישוב סיבוכיות זמן ריצה וזיכרון, למה משמש copy constructor, שאלה על תהליכים(אם משתמשים בתהליך למה אמורים לדאוג? הרעבה ודדלוק), פונקציה בונה – מי פועלת ראשונה כשיורשים(נתנו קוד ושאלו לפלט),פונקציה וירטואלית(וגם טהורה), אם כל הפונקציות וירטואליות – האם גם ה distructor חייב להיות כזה, האם swap עם משתנה עזר עדיף על swap דרך ייחוס, מה זה memory leak.
זה מה שאני זוכר.. אם אזכר בעוד שאלות אעלה.
2)נותנים כמה טבלאות והסבר על כל טבלה ומבקשים לחשב את התשלום עבור חודש ספיציפי.
Apple - אפל
Firmware Engineer
הייתי בראיון ב APPLE לא מזמן לתפקיד FW Enigneer.הנה שאלה ששאלו אותי שם.
אני לא עברתי. לא יודע אם אני מצטער על זה או לא…
נתון בניין בן שמונה קומות עם מעלית.
נתונות הפונקציות הבאות.
void EngineUp()
void EngineDown()
void EngineStop()
STATE EngineStateGet()
כאשר STATE הוא ה ENUM הבא
enum STATE{
UP=0,
DOWN,
STOP
};
int EngineGetCurrFloor()
ובנוסף ישנה עוד פסיקת חומרה שקוראת לפונקצייה הבאה בכל פעם שלוחצים על אחד הכפתורים במעלית
void EnignePressedFloor(int floor)
הפוקצייה מקבלת כפרמטר את הקומה שבה נלחץ כפתור המעלית
נתבקשתי לכתוב קוד שיממש אלגוריתם של המעלית?
הייתי צריך להתייחס למבנה הנתונים שבו אני אשתמש. לdesign הכללי של הקוד ולאחר מכן לכתוב את הקוד על דף.
כמו-כן הייתי צריך להתייחס לבעיות RT שיכולות לקרות, וכיצד ניתן לפתור אותם.
בהצלחה!!!
Applied Materials - אפלייד מטיריאלס
ראיון למשרת מהנדס חשמל
בראיון מדברים על אינטרפומטר מייכלסון התאבכות עקיפה NA לייזרים דובר גם על צומת PN על גלאים
למשל גלאי PIN הם מתעסקים במיקרוסקופ אופטי ולא אלקטרוני הייחוד הוא שהאור מגיע מלמטה
כבקשת הלקוח דברנו על מיקוד של אור של לייזר ,עדשות מרכזות, על קוהרנטיות של אור, למה
צריך אינטרפומטר בכלל מה השימוש שלו.
קורסים לדעת :
אופטיקה פיסיקלית
התמרת פורייה
לייזרים
אופטיקה גאומטרית
גלאים
אלקטרוניקה
מל"מ
CEVA DSP
CEVA DSP – חידות קידוד
1. מה הבעיה בקוד הבא:
char *p;
p = 0x10000;
*p = 0x600;
*p = 0x800;
2. נתונה תמונה עם 256X256 פיקסלים ועוד פריים עם 16X16 פיקסלים. צריך למצוא את הפריים הכי קרוב לפריים הנתון בתוך התמונה. ההגדרה של הפריים הכי קרוב הוא זה שסכום הפרשי הפיקסלים בערך מוחלט הוא הנמוך ביותר. צריך להתייחס לתמונה ולפריים כאיזורים רציפים בזיכרון כאשר הפונקציה מקבלת שני מצביעים לשניהם.
CEVA DSP – פיתוח
1. נתון משתנה בעל 8 סיביות, יש לכתוב פונקציה בשפת סי
שתקבל את המשתנה ותחזיר את ההשתקפות של אותו משתנה. דוגמא:
עבור קלט של:
001011001
הפלט יהיה:
100110100
פתרון:
דרך1 :
בעזרת לולאה לאפס כל פעם 7 ביטים ולהשאיר רק 1, כאשר אנחנו כבר יודעים מה ערכו- ליצור משתנה חדש.
דרך 2:
בעזרת מערך קבוע של 256 ערכים, כל פעם שמקבלים משתנה ניגשים למערך שמסודר כך שבמקום ה- X יש השתקפות של X
CEVA DSP – פיתוח תוכנה
שאלה 1:
פונקציה מקבלת מצביע למחרוזת ומספר מסוג INT
על הפונקצייה להמיר את המספר מint לchar תוך כדי התחשבות במספרים שלילים
שאלה 2:
נותנים לך מערך בגודל N
בהתחלה אומרים לך כמה עולה כל פעולה (אונארית /בינארית)
מראים לך קטע קוד
ומבקשים ממך לחשב זמן ריצה.
אח"כ אומרים לך שיש כפל של שני מערכים בגודל N בכל פעם שהפו' נקראת
ובנוסף המערך צריך לזוז ימינה מקום אחד ויש להוסיף איבר חדש משמאל
עליך למצוא דרך לייעול התוכנית
רמז: אפשר להמנע מהזזת כל התאים ימינה פעם אחת ולבצע את זה ב-O(1
CEVA DSP – QA ומולטימדיה
1. נתונה מערכת מולטימדיה שמקבלת שני פרמטרים: א. קבצי אודיו ב. קבצי וידאו.
המערכת מקבלת אך ורק את הפורמטים הנתונים ויכולה לשלב בין שניים (אחד מכל סוג)
למערכת גם מקשי PLAY,REWIND,STOP,SEEK.
תכנן בדיקות למערכת.
פתרון
לנסות ולבנות פתרון שמפורק לראשי פרקים: שלב קבלת הפרמטרים, שלב בדיקה, שלב פלט.
לפרק את הבדיקות בין וידאו לאודיו.
לצורך בדיקת תקינות מלאה, לקחת מערכת שאנחנו יודעים שעובדת ולהשוות מולה את הבדיקה שלנו מבחינת איכותה.
2. שאלת תכנות בשפת C, שכללה ידע בביטים (פעולות MSAKING, OR, AND).
מתכנת שיכור רשם את התוכנית הזאת, עליך להבין מה היא עושה, ואיפה המתכנת טעה.
עליך לכתוב מחדש את הפונקציה.
bool func(int *data, int size, int value)
{
int arr[32];
short index;
for(index = 0; index < size; index++)
arr[index] = data[index];
for(index = 0; index < size; index++)
arr[index] = arr[index] & vlaue;
data = &arr[0];
}
פתרון:
הפונקציה לוקחת כל תו במערך ומבצעת עליו MSAKING בעזרת המשתנה value.
א. short בעייתי.
ב. גלישת זיכרון (מכוון שההקצאה היא רק ל-32 מקומות ועלולים להיות יותר)
ג. הקצאת המערך בתוך הפונקציה לא תקינה כי מערך סטטי מת בסוף הפונקציה ולכן ההשמה בשורה האחרונה היא בעייתית.
ד. ניתן, וצריך לשכתב על המערך הנתון את הפתרון.
CEVA DSP – Logic Design Engineer
בשאלה הראשונה נתנו לי תרשים של כניסות ומוצאים של רכיב מסויים, ושל clock ושאלו אותי מה הרכיב עושה – המוצא היה זהה לכניסה בהפרש של מחזור שעון אחד, לכן זה DFF.
אחר כך נתנו לי את אותה שאלה עם גרפים שונים – הכניסה הייתה מדרגה, והמוצא היה Pulse אחד כשהכניסה עולה ל'1', וPulse נוסף כשהכניסה יורדת חזרה ל"0'. לכן הרכיב הוא גוזר בעלייה וירידה, ואז ביקשו ממני לממש אותו עם לוגיקה. אחר נתנו לי לממש רכיב שגוזר רק בעלייה (אם תבדוק במאגר השאלות של האתר, יש פתרון לזה באחד הקבצים).
אני לא כל כך זוכר את השאלה שאחר כך, אבל זה היה משהו שקשור ברכיבי ארכיטקטורה של מחשב( adder-ים, shift registers וכו')
CEVA DSP – מהנדס וריפיקציה
1. מימוש גוזר סינכרוני וגוזר אסינכרוני ע"י FFים ושערים לוגיים (כאשר נתונה התנהגות הסיגנלים (מוצא, שעון וכניסה)
2. לממש רכיב שמקבל מספר (כתובת) בעל 8 ביטים ועוד מספר size שיכול להיות 1,2,4 בלבד (כמובן בעל 3 ביטים) ומוציא את הכתובת+ size .
ניתן לממש רק ע"י:
– MUXים
– רכיב שיודע להוסיף 1 למספר בעל 8 ביטים בכניסה (Half Adder) . מותר להשתמש בו פעם אחת בלבד.
– חומרה צירופית (OR,NOT,AND וכו')
אולי פשוט ניתן לממש מחבר עם שרשרת של Half Adder כאשר כל Half Adder ממודל ע"י : s=AxorB , c=AB , רק בשני המסכמים (השני והשלישי) ישנה בעיה שיש צורך במידול של full adder (בראשון אין בעיה כי אין עדיין carry , ומהרביעי אין בעיה כי אין כניסה של size ).
את זה אפשר לפתור ע"י : להכניס לכניסה השנייה של ה half adder (הממודל) , xor של ביט ה – size ו ה – carry הקודם (וזה עובד כי רק ביט אחד של ה size הוא 1 ).
זה עובד, אבל אז צריך לגרור את הCarry לכל 8 הביטים, כי בכל מקום שיש Carry מדרגה קודמת וביט נוכחי של הכתובת, עשוי להיווצר Carry חדש. והרי מותר להשתמש ברכיב פעם אחת בלבד..
ואם כבר מממשים F.A. אפשר לעשות את זה כבר עד הסוף רק בעזרת שערים לוגיים, בלי הרכיב המדובר ובלי MUXים. אבל כנראה שגם זו לא הכוונה.
אפשר אולי ע"י מוקס 8X3, של 8 ביט. להשתמש בSIZE בתור SEL.
SEL=0, מעבירים כמות שהוא.
SEL=1, מעבירים '0'&[7:1]
SEL=4, מעבירים "00"&[7:2]
זה בעצם לעשות SHIFT ידני…
לחבר את זה לHA שיבצע INC. ולאחר מכן את התוצאה להעביר שוב בMUX כזה, שיצרף את הביטים "שהזזנו" חזרה לתוצאה.
CEVA DSP – מפתח בדיקות אוטומציה
extern static_array[N]
func(int x)
{
static short array[N]
int x, i
for (i=N;i<1;i–)
array[i-1]=array[i]
array[0]=x
for(i=1;i>N;i++)
value +=(long)array[i]*static array[i]
return value
}
פעולת חיבור/כפל/חיסור עולה 1 (סייקל cycle) פעולת גישה למערך עולה 5 סייקלים
שאלות:
1. כמה כל התכנית עולה? ( פעולות בתוך הלולאה, כמו קידום המשתנה לא עולים כסף)
2. קצר את זמן הריצה בחצי כשלרשותך הפונקציות:
inc_mod(i,n){
while(i<=n)
i++
if i=n
i=0
}
dec_mod(i,n){
while (i>=0)
i–
if i=0
i=n]
}
CEVA DSP – QA אוטומציה
יש מעבד שאינו משתמש בfloat ועל מנת לייצג שברים, הוא משתמש בinteger long המיוצג עם שלמעשה מיוצג בעזרת 4B-32bit.
נגדיר את ביטי הlong באופן הבא:
הביט הMSB נסמנו S -signed
ה8 ביטים הבאים נסמנם E – Exponentially
ו23 ביטים הנותרים נסמנם M -mantissa
הנוסחה הבאה מייצגת את השבר בעזרת ה long:
(1- בחזקת S)כפול( M )כפול(2 בחזקת E)
צריך לרשום את הפונקציה :
unsigned long add(unsigned long float1, unsigned long float2)
שמקבלת שני ערכי long (שהם למעשה שברים) , עושה חיבור שלהם ומחזירה את התוצאה בlong
אולי התכוון ל bit shifting:
2^E=.1 << E
CEVA DSP – קומפיילר
השאלה הראשונה היא לממש פונקציה הממירה
int -> string
שתקרא מהפונקציה הראשית הבאה:
int main(void) {
int x=1234;
char *str = malloc(100);
rev(x,str);
printf("num is %s",str); // Should print 1234
return;
And my solution is (Solved it correctly at home later =\ ):
void rev(int x,char *str){
int j=0;
if (x==0){
str[0]='0' ; str[1]= '\0'; return;
}else if (x<0){
str[0]='-';
j=1;
x = x*(-1);
}
int counter=0;
int temp = x ;
while (temp-(temp/10)*10 >0){
counter++;
temp =temp/10;
}
str[counter+j]='\0';
j = 1-j;
for (;counter>0;counter–){
int t = x-(x/10)*10;
str[counter-j] = '0'+t;
x = x/10;
}
}
CEVA DSP – Debugger Engineer
שאלו 3 שאלות:
1. א – מהם שני סוגי החיפוש בעצים? – לאורך ולרוחב.
ב – נתון שבשביל לממש חיפושים אלה, משתמשים בתור ובמחסנית. באיזה סוג חיפוש משתמשים בתור, ובאיזה למחסנית?
2. השאלה על הכפל, תוך שימוש ב inc, dec, jnz, אשר מופיעה כאן בפוסטים קודמים.
3. נתון הקוד הבא:
קוד: בחר הכל
extern short const_array[2000]
long fun(short x) {
static array[2000];
long res = 0;
for (int i=1999; i>0; i–) array[i] = array[i-1];
array[0] = x;
for (i=0; i<2000, i++) res += array[i]*const_array[i];
return res;
}
כאשר כתיבה למערך לוקחת 5 מחזורי שעון, קריאה והשמה למשתנה 5 מ"ש, וכל פעולה אחרת מ"ש אחד. ללולאת ה for עצמה איך בזבוז מ"ש.
לצורך העניין, סיבוכיות הפונקציה הנ"ל היא 23n+6 (כאשר n מייצג 2000).
המשימה: לצמצם את זמן הריצה.
אני הגעתי ל 18n, אבל המראיין אמר לי שאפשר בסדר גודל של חצי. לא הצלחתי .
המשך –
ל-traversing שהוא depth first (כלומר כל ה pre / post / in orders), צריך להשתמש במחסנית. הרעיון הוא שדוחפים ושולפים נתונים מהמחסנית בהתאם לסוג הסריקהץ
ל-traversing שהוא breadth first, משתמשים בתור (שהוא בעצם FIFO). למה זה היגיוני? תחשבו שהכנסתם לתור את האב, שני בניו, ואז 4 "נכדים". הסריקה צריך להתבצא מהאב -> בנים -> נכדים.
CEVA DSP – צוות Video Codec
תאריך:
1. כתוב תוכנית ב-C שתגיד האם המערכת שאתה עובד בה היא big endian או little endian.
פתרון:
קוד: בחר הכל
int endian()
{
long int *buff;
short int i;
buff = (long*) malloc(sizeof(long));
*buff = 1;
(char) i = *buff;
if (i == 1)
{
return 1;//little
}
else
{
return 0; //big
}
}
2. ברשותך מעבד שתומך בפקודות הבאות:
mac(x,y,z) = x*y+z
H(Rx) = high bits of reg Rx
L(Rx) = low bits of Rx
המעבד יכול לבצע 2 פקודות במחזור.
לרשותך כמה רגיסטרים שתצטרך.
ממש את הפונקציה הבאה:
( ( (a – b)<<2 ) + c – d + 4)>>3
תוך שימוש בפקודות ובקבועי int.
פתרון:
פנים הסוגריים זה קל למימוש. הטריק של החלוקה ב-8 (3<<) הוא להזיז את ה-low bits של פיתרון פנים הסוגרים ב-13 (כלומר כפל ב-2^13) ולקחת את ה-high bits (אין גלישה כי מדובר על חיבור וכפל של int).
אם פותחים את הסוגריים בצורה הבאה למשל:
קוד: בחר הכל
(a – b)*2^15 + (c – d + 4)*2^13
ניתן לממש ב-3 מחזורים:
קוד: בחר הכל
R5 = mac(b, -1, a) || R6 = mac(d, -1, c)
R7 = mac(R5, 2^15, 0) || R8 = mac(R6, 1, 4)
R9 = mac(R8, 2^13, R7)
והתוצאה נמצאת ב-H(R9).
CEVA DSP – חידות ושאלת אסמבלי
נתונים 2 קופסאות 2->1 שמקבלות שתי מספרים ומוציאות את המינימום ואת המקסימום בהתאמה.
בעזרת שתי הקופסאות האילו צריך לממש קופסה של 3->3 שממינת 3 מספרים.
האמת זה שאלה לא קשה.
זה ממש לא בעייה למצוא את המינימום ואת המקסימום.
מה שהסתבכתי זה למצוא את המספר האמצעי. אבל אם חושבים על זה טוב פותרים גם את זה.
שאלה שנייה.
ממש קוד אסמבלי של פונקצייה שכופלת שני מספרים x,y
למשל foo(x,y)w (ה W זה כדי שיהיה כתב ברור )
כאשר נתונים רק 3 פקודות אסמבלי.
inc x
dec x
jnz label.
אילו שני סוגי קופסאות אחד של מינימום ואחת של מקסימום.
אבל מותר להשתמש בכל קוספה כמה פעמים שרוצים.
בעקרון צריך להשתמש ב- 3 לולאות ולייבלים ועם משתנה עזר:
לולאה 1 – עובדת על X
לולאה 2 – עובדת על Y
לולאה 3 – עובדת על Z שמקבלת את הערך המקורי של X
Check Point - צ'ק פוינט
יום מבחנים בצ'ק פוינט – קוד
קודם כל המבחן לא קל בכלל אז אל תזלזלו ותתכוננו חזק , תבואו ערניים ועם סנדביץ טוב ובקבוק מים (עדיף ערק שיהיה בכיף) ואל תיהיו מקובעים בראש מבחינת פתרון (למי שחושב שלפתור את השאלות בבית זה פותר אותו מלהתאמץ).
מי שבאמת מסיים את המבחן שלהם בשלוש שעות תותח ומגיע לו לעבוד שם כי אתה חייב לתקתק את הקוד כמו מכונה , לא כולם מספיקים גם ב 4 שעות והם משוחררים הביתה.
קצת לגבי המבחן :
קודם כל יש לקרוא את ההוראות לכל שאלה באנגלית והזמן רץ גם בזמן הקריאה , ההוראות כתובות שם וכן את הדברים שאתה צריך על מנת לפתור את השאלה , אין טעם לחפש בקוד סתם דברים למעט לגבי הערות מה עושה פונקציה ספציפית שאתה רוצה להשתמש בה.
מי שפתר את השאלות שמופיעות פה ורשם לעצמו הערות יחסוך לו זמן , מה שכן לפתור בבית את השאלות לא מדמה בצורה מלאה את שיטת העבודה שלהם על הפונקציות שאתה צריך לכתוב ולכן תבינו את הבסיס לפתרון ובשטח תבינו מה הם עושים ואיך להתאים את זה (באמת שלא מסובך רק קחו בחשבון עשר דק הבנה של מה בדיוק קורה ולכן ממליץ באמת להתחיל משאלה מספר 1 שהיא יחסית קלילה על מנת להבין את העקרון).
*היתה גישה מאוד מצומצמת לאינטרנט בעיקר על מנת לחפש פונקציה ספציפית בשפה שבה אתם נבחנים , לא הייתי בונה אבל על זה כי תגלו שזה מעכב מאוד אם תנסו לחפש יותר ממשהו אחד.
לגבי השאלות :
1)כמו שכתוב כאן בפורם , לדעת עץ בינארי ממויין ואיך עושים סריקה שלו.
2)שאלת API באמת שלא מסובך , תחפשו איזה פונקציות קיימות לשימוש ומה הם עושות , כמו כן תעברו על הקוד להבין טיפה מה קורה שם.
3)השאלה הקשה ביותר במבחן , תקראו טוב את ההוראות ואז תיגשו למצוא את הבאגים ולתקן , המלצה תעברו שורה שורה בקוד ותבינו מה היא עושה ותחפשו איפה השגיאות הלוגיות (מומלץ לעבוד עם הדיבאגר ולהבין מה קורה שם)
*הערה – היה מישהו שכתב פה כבר שכנראה ההודעות שהוא קיבל היו לא תקינות אז זה לא נכון כנראה שהוא פשוט לא הבין מה צריך לעשות בצורה מלאה ,שלא תתקעו ותחשבו שזה קרה גם לכם ותתיאשו.
4)כמו שכבר אמרתי הם עובדים בצורה מעט שונה מבחינת קוד אז אם אתם מנסים לממש בבית קחו בחשבון שיש להתאים למה שתקבלו בשטח .
*יש שם רמז ברור בקוד לכמות המקסימלתי הניתנת של שולחים בעלי 10% או יותר מהסה"כ אם לא הבנתם עד עכשיו כמה ולמה.
5)היתה לי שאלה נוספת אז קחו בחשבון שזה יכול להיות לכל השפות , אני אישית לא נתקלתי אף פעם בשאלה כזאת , יש שעה לחשוב איך לבצע ולממש (תפתרו בבית לפני דוגמאות ממה שתמצאו על מנת שיעזור לכם בחשיבה).
אל תתבישו לקחת עשר דקות הפסקה לפני החלק הבא לשרותים וכו'.
לגבי החלק של ה לינוקס :
1)באמת שאין צורך להתכונן או להיות בעל ידע מראש ,אני אישית בחיים לא פתחתי לינוקס , הכל כתוב לכם בהוראות פלוס להפעיל מעט את הראש , יש שעה וחצי שזה בהחלט אמור להספיק.
יום מבחנים 2020 – עדכון
הייתי שבוע שעבר במבחנים האלה וזה אכן זהה לכל מה שנכתב כאן:
4 שעות בחינה, כשבשעה הרביעית יורדות כבר נק'.
4 שאלות לממש, הראשונה עץ בינארי, וכ'ו כמו שכבר נכתב.
שום שאלה שם לא היתה ממש קשה, כמו זה שהייתי צריך להתמודד עם להבין קוד קיים ולעבוד עליו.
זה לקח לי המון זמן לקלוט מה מקבלת/מחזירה כל פונק' שהם בנו שם, והיו מקומות שהם בכוונה כתבו בצורה לא מובנת. כמו כן, לדעתי ההוראות מאד לקו בחסר.
השעון שמתקתק מולך גם תורם ללחץ.
לדעתי ההכנה הכי טובה למבחן כזה (בדיעבד)-לבקש מחבר איזה שהוא תרגיל בC שהוא עשה כבר בעבר. לבקש ממנו למחוק 2 מימושים של פונק' ושאתה צריך לממש אותם. משהו כזה.
יום מיונים- תיכנות- תאור מפורט
יש למבחן 3 חלקים: חלק ראשון הכי גדול שבו 4 שאלות תכנותיות והוא נמשך 3-4 שעות, חלק שני של שעה וחצי ובו נדרשים להריץ קצת פקודות בסיסיות של תקשורת בין שתי מכונות לינוקס ובנוסף גם לקמפל ולהתקין קוד תוכנה מוכן, חלק שלישי הוא בן רק חצי שעה והוא מבחן עיצוב גרפי.
חלק א:
ישנה כביכול מערכת שאמורה לבצע 4 פעולות (כל פעולה זה שאלה): פיירוול של מסרים, סינון מסרים עם וירוסים, סינון מסרים עם מילות מוגנות וניטור של תעבורת המסרים.
מקבלים solution מוכן שבתוכו יש פרויקט שבו 4 מחלקות, כל מחלקה מייצגת שאלה נפרדת, בכל מחלקה יש פונקציה או שתיים ריקות או לא תקינות שאותן אתם צריכים למלא/לתקן.
חוץ מהמחלקות האלו ישנן עוד מחלקות נתונים ועוד פרויקטים אבל בהם לא נוגעים.
מחלקה חשובה מאוד היא מחלקת הודעה/מסר (message) שבאה לייצג טיפוס נתונים מסוג הודעה, בטיפוס הזה יש כתובת שולח, כתובת מקבל, תוכן ההודעה (כמחרוזת) ועוד..
בנוסף לאחר שכתבתם את הקוד ישנו טסטר אוטומטי שהוא מריץ הרבה מסרים על המחלקות השונות והוא מדווח אם מה שכתבתם מתפקד כהלכה ואכן המחלקות מבצעות מה שצריך על המסרים ומקטלגות אותן נכון.
שאלה 1 – צריך לכתוב חיפוש בעץ בינארי ממוין (כלומר לכל קודקוד הבנים משמאל קטנים יותר מהקודקוד ומימין גדולים יותר), ישנו עץ בינארי ממוין שמכיל בכל קודקוד כתובת אסורה (נמשל כתובת של ספאם), את העץ בונים בפונקציה אחרת שעוברת על קובץ טקסטואלי וממירה אותו לעץ אבל הקוד הזה לא אמור לעניין אותכם, בנוסף ישנה פונקציה שמקבלת הודעה ובה אתם צריכים לכתוב קוד שבודק שכתובת השולח וכתובת המקבל לא נמצאים בעץ, אם אחד מהם נמצא אז מחזירים enum שמייצג לזרוק את המסר אחרת מחזירים enum לקבל את המסר.
שימו לב שהביצועים מאוד מאוד חשובים בייחוד בשאלה הזאת ולכן הדרך הכי טובה לדעתי לפתור את זה היא לעשות סריקה של העץ באמצעות while ולא רקורסיה! (מי שלא יודע שיחפש בגוגל איך מחפשים ערך באמצעות לולאה בעץ בינארי ממוין ודגש על ממוין!).
כמה דגשים די טריוואלים: שימו לב שצריך לעשות 2 סריקות של העץ (אחת עבור כתובת השולח ושניה עבור המקבל) לכן כמובן שעדיף לכתוב את סריקת העץ כפונקציה נפרדת שמקבלת פרמטר כתובת ולקרוא לפונקציה פשוט פעמיים, דגש שני הוא שאין לאתחל את העץ בתוך הפונקצית טיפול מסרים שאתם כותבים כי אז עבור כל מסר העץ יאותחל מחדש, יש להגיד משתנה private מסוג העץ במחלקה (של השאלה) ובבנאי שלה לאתחל את העץ וכך הוא יאותחל רק פעם אחת.
שאלה 2 – בשאלה זאת נדרשים לסרוק כל מסר ולגלות האם הוא מכיל וירוס, הסריקה מתבצעת באמצעות מחלקה אחרת שנקראת אנטי וירוס שבה לא אמורים לגעת (אבל כן להבין קצת את הקוד שלה), גם כאן יש לממש פונקציית טיפול במסרים כאשר כל מסר נשלח לאובייקט מסוג המחלקה האחרת ויש לו פונקציה שסורקת את המסר ומחזירה האם יש בו וירוס או אין ובהתאם אתם מחזירים את ה – enum המתאים.
כמה דגשים: כמו בשאלה 1 גם כאן יש להגדיר משתנה פרטי מסוג מחלקת אנטי וירוס ולאתחל אותו בבנאי, חשוב לשים לב שהאתחול כולל גם new וגם קריאה לפונקציית setup (פונקציה של המחלקה) שהיא טוענת בסיס נתונים של הוירוסים וכך האובייקט אנטי וירוס מוכן לשימוש, אגב הצורה שבה הסריקה מתבצעת היא באמצעות ביטויים רגולרים אבל זה לא אמור לעניין אותכם, שימו לב שגם בקריאה אח"כ לפונקציית סריקת מסר מלבד המסר יש עוד כמה ערכים בוליאנים ששולחים אליה, יש ערך שנקרא fullscan שהוא צריך להיות false כי אם הוא true אז מה שיקרה זה שמסר שישלח יבדק כנגד כל הבסיס נתונים של הוירוסים שזה מיותר מכיוון שאם הוא false אז הוא סורק רק עד מציאת וירוס ראשון ואז מפסיק וזה ישפר לכם את הביצועים, יש עוד פרמטר (הראשון ביותר) שבכלל אין לו שימוש בתוך האנטי וירוס וסתם כתבו אותו כדי לבלבל, והפרמטר האחרון הוא loadviruses אך הוא יכול להיות true או false זה לא משנה, כי גם ככה בכל קריאה לסריקת מסר יש בדיקה האם הבסיס נתונים כבר נטען קודם ואם כן אז לא טוענים אותו גם האם הפרמטר הזה יהיה true.
שאלה 3 – יש מחלקה שבתוכה יש פונקציה שמקבלת את המסר וקוראת לפונקציות אחרת במטרה לראות האם במסר יש מילים שמורות אסורות, אם כן אז יש להחזיר enum של זריקת המסר אחרת קבלת המסר, הקוד כבר כולו כתוב כולל פונקציית קבלת המסר אבל יש בקוד הזה הרבה באגים ובכלל המצב הראשוני שלו שהוא מתרסק אם מריצים אותו.
כמה דגשים: יש שם בהתחלה משתנה result שאותו מחזירה הפונקציה אך בשני ה – if העיקריים לא מוצב בו הערך ואת זה יש לתקן, יש משתנה messagedata שלא מקבל ערך בהתחלה.
שימו לב שהתיקונים הם אומנם ברובם בפונקציית הקבלת מסר אך יש גם לתקן קצת בפונקציות האחרות, בנוסף בשאלה הזאת מאוד עוזר בסוף להריץ את הטסטר האוטומטי כדי לוודות שכל המסרים קוטלגו כמו שצריך.
שאלה 4 – צריך לכתוב 2 פונקציות, אחת היא של קבלת המסרים והשנייה היא החזרה של כל הכתובות השולחות שמהם נשלחו יותר מ – 10% מהמסרים עד עכשיו.
הדרך לממש את זה היא באמצעות hashtable וביתר פירוט dictionary ב – #C, כל מפתח (key) יהיה בו כתובת שולח מסוימת וכל ערך יהיה כמה מסרים הכתובת הזאת שלחה, כלומר בעת קבלת מסר חדש בפונקציית הקבלת מסרים יש להעלות את המונה של מפתח כתובת השולח ב – 1 (או כמובן אם זו פעם ראשונה אז יש להוסיף מפתח חדש עם הערך 1) בנוסף יש לשמור מונה פשוט גלובלי ברמת המחלקה שכל פעם שמתקבל מסר חדש אז הוא מוגדל ב – 1.
בפונקציית החזרת הכתובות יש פשוט לעשות לולאה שסורקת את כל המפתחות ב – hashtable ועבור כל מפתח בודקת האם הערך שלו לחלק בערך של המונה הכללי גדול שווה מ – 0.1 (כלומר שווה או גדול מ – 10%), אם כן אז מוסיפים אותו לרשימה שאותה בסוף מחזירים בפונקציה.
כמה דגשים בכלל לכל חלק א: חשוב להגן על הקוד כמו נמשל בפונקציית קבלת ההודעות לבדוק שההודעה המתקבלת היא לא null ושהמסר בתוכה לא ריק, כדאי גם להשתמש ב – try catch בייחוד במצבים של נמשל פניה לאנטי וירוס החיצוני בשאלה 2 שם אנחנו לא יודעים איך מימשו אותו.
חלק ב:
בחלק זה בודקים ידיעה והבנה של פקודות תקשורת בסיסיות, קימפול והתקנה בלינוקס, זה נעשה באמצעות מסמך מפורט שבכל שורה אומר תעשו כך ותעשו כך, אתם צריכים לעקוב שורה אחרי שורה במסמך ולבצע בפועל את ההוראות על שתי מכונות וירטואליות של לינוקס שהן באותה הרשת, ברוב ההוראות במסמך גם רשום איזו פקודה יש להקליד, נמשל רשום שיש לבדוק תקשורת על ידי כתיבת ping וכתובת ה – ip של המכונה השניה, אך יש שורות שבהן לא רשומות הפקודות כמו נמשל רושמים שם שיש לקמפל (תוכנה מסוימת שמקודם הורדנו) בדרך הסטנדרטית ואחר כך להתקין אותה אבל לא רושמים איזה פקודות להקליד.
אנסה לפרט מה שאני זוכר שיש לעשות שם: דבר ראשון יש לבדוק כתובות ip של שתי המכונות, אחר כך לעשות פינג מהמכונה הראשונה לעצמה, אחר כך מהראשונה לשניה, להוריד קובץ tar/zip מהמכונה השניה לראשונה באמצעות ftp, הקובץ הוא למעשה התקנה של תוכנה בשם pure ftp, יש לפתוח אותו, לקמפל את התוכן שלו, להתקין את התוכנה, להריץ אותה, לעשות kill לתהליך שלה, לחפש בתוך אחד ה – headers שלה מסר מסוים (welcome to), לפתוח את המסר הזה ולהוסיף לו את המילה my, לקמפל שוב ולהתקין את התוכנה מחדש, לפתוח את התוכנה ולראות שהמסר שהיא מציגה בהתחלה השתנה בהצלחה.
כמה דגשים: כמו שקודם אמרתי רוב הדברים שיש לעשות רשום במסמך איזה פקודות צריך להקליד כך שאין צורך לזכור פקודות בעל פה, כשמחפשים את המסר שיש לשנות אז לחפש רק את המילים "welcome to" ולא את כל המסר (כי זה נראה לי מסר שמשורשר משני מקומות שונים) אם אני זוכר נכון זה נמצא בקובץ messages_en.h, את הקימפול הסטנדרטי אפשר לעשות עם gcc או make אבל אין צורך לשבור את הראש ולמצוא מה צריך לקמפל אלא יש שם קובץ טקסט שנקרא install, פותחים אותו עם עורך טקסט וישר בשורה הראשונה רשומות 3 פקודות שצריך להריץ, מריצים את 3 הפקודות אחת אחרי השניה והן גם מקמפלות וגם מתקינות את התוכנה, כדי להפעיל את התוכנה אני נכנסתי פשוט לתיקיית הקיצורי דרך לתוכנות מותקנות שהיא אם אני זוכר נכון usr/local/sbin (בכל מקרה כאשר מריצים את 3 הפקודות אז רשום לאיפה הוא מתקין אותה).
חלק ג:
טוב האמת שכאן אין לי יותר מדי מה לומר וגם אין כל כך איך להתכונן לזה, מדובר במשימת עיצוב גרפי, אגב אין חובה לעשות את החלק הזה אבל מי שעושה אותו יהיה לו יתרון בקבלה לתפקידים שדורשים יכולת עיצוב ממשקים, במשימה מדברים על מערכת שמשמשת לחיפוש עובדים בחברה, נותנים תמונה שבתוכה יש כביכול תוצאת חיפוש אחת שכוללת תמונה של עובדת, כמה פקדים והרבה מידע עליה שנמצא בדרך כלל כתיבות טקסט, התצוגה הראשונית בתמונה לא נראית טוב ודי מבולגנת, המשימה היא לפתוח את התמונה בשלמותה בצייר ולגזור ממנה חלקים שונים כמו נמשל התיבות טקסט ואותן לארגן בתמונה חדשה (חלון צייר שני) כך שבסופו של דבר תתקבל תמונה סופית שונה שמציגה את העובד ופרטיו בצורה הרבה יותר מאורגנת, יפה ושימושית, ניתן לשנות את הגודל של הפקדים, צבעים ובכלל כל דבר כמעט שאפשר לעשות בצייר.
כמה דגשים: כדי להתכונן לחלק זה אז למי שלא מכיר אולי כדאי באמת לעבוד קצת עם הצייר, לגזור חלקים מתמונה לשנות גדלים וכ"ו, כדאי לעבוד בצייר במוד זום מוגדל (נמשל 200%), כדאי להתחיל מלחשוב על קבוצות פקדים שונות עם מכנה משותף כמו נמשל כל התיבות שמכילות את פרטי הכתובת ואז פשוט לגזור אותן מהתמונה הראשונה ולשים אותן ביחד יפה בשניה, כאמור הכי טוב לגזור כל פעם דברים מהראשונה וכך לאט לאט התמונה הראשונה מתרקונת ונהיה יותר קל להתסכל עליה ולתכנן מה עושים (זו לפחות הדרך שאני מצאתי בשבילי הכי טובה אך כמובן שיש עוד דרכים).
שאלות מיום מיון 2020-עדכון
היום מתחלק לשלושה מבחנים, אני אתמקד במבחן הראשון בלבד.
קצת רקע על המבחן:
– קיימים 4 סעיפים בלתי תלויים אחד בשני.
לאחר השלמת כל סעיף יש להריץ את התוכנית ושם מתקבל משוב
האם הצלחתם או לא. חייבים לסיים את כל הסעיפים על מנת לעבור.
– אורכו 4 שעות (אך נאמר שם כי הזמן המומלץ הוא 3 שעות).
– ניתן להיבחן ב-c/ c++/ c#/ java אך נאמר שם כי מומלץ להיבחן
ב-c או ב-++c מכיוון שכך יפתחו בפניכם יותר משרות.
– ניתן להיעזר באינטרנט אך לא ניתן להיכנס למייל האישי או להוריד קבצים למחשב.
– אחת לכמה זמן מגיע נציג מטעם החברה לעזור אם ישנן שאלות.
– אם סיימתם, יגיע אותו נציג ויבדוק יחד איתכם את פלטי ריצת התוכנית, במידה ואין
שגיאות, תמשיכו למבחן הבא. אחרת, תמשיכו לכיוון היציאה, יש בבניין ליד קפיטריה טובה, אתם מוזמנים להטביע את יגונכם בקפה.
המלצה: המבחן הוא 4 שעות, תבואו מוכנים עם בקבוק מים ומשהו מתוק.
הערה: אני נבחנתי בשפת ++c.
השאלות הן כמו שכבר נכתב כאן בעבר ולכן אחזור בקצרה:
1.1 מימוש פונקציה לחיפוש בינארי בעץ.
חשוב: הפונקציה מקבלת אוביקט מסוג "הודעה" בלבד.
1.2 שימוש ב-API של החברה.
ישנו צמד קבצי h/cpp בהם תמצאו את הפונקציות הרלוונטיות.
לצורך הסעיף הזה אני ממליץ בחום לעבור על התהליך הזה (שימוש ב-API).
1.3 תיקון שגיאות – נתון קובץ cpp אשר מכיל בתוכו שגיאות (תחביר, לוגיקה וכדומה),
יש למצוא את כולן ולתקן אותן.
הערה: לדעתי שווה לדחות את הסעיף הזה לסוף, קצת מייגע.
1.4 נתונה תעבורת הודעות ממען לנמען ויש להחזיר רשימה של כתובות (מען/נמען)
של כל אלה שאחראים ליותר מ-10% מההודעות הללו.
חשוב: הפונקציה מקבלת אוביקט מסוג "הודעה" בלבד.
המבחן נעשה ב-visual studio על פרוייקט קיים שמכיל ארבע פולדרים עיקריים, כל אחד רלוונטי לשאלה אחרת (ומכיל את קבצי ה-c וה-h הרלוונטיים לשאלה). למעשה, אתם מממשים מס' מצומצם של פונקציות בתוך מערכת קיימת.
אין צורך לכתוב קבצים מאפס, בכל שאלה כבר קיים קובץ עבודה מוכן שבו רק צריך לממש פונקציות בהתאם להנחיות המבחן.
מבחינת השאלות עצמן, המבחן נועד לראות בעיקר לבדוק את היכולת שלכם להבין את המערכת ולכתוב עבורה פונקציות, לכן אין יכולת אמיתית לבוא עם פתרון "מוכן" מהבית, אבל בסופו של דבר לא מדובר במבחן מסובך מדי. אני ממליץ לדעת טוב את הסינטקס של השפה שבה אתם בוחרים לעבור את המבחן ולחזור על עקרונות תכנותיים (לבדוק הקצאות זיכרון, חריגה במערכים וכו'). מבחינת רמת הקוד, מדובר בסה"כ בתכנות די בסיסי (אין צורך אמיתי להשתמש בת'רדים למשל).
1. מימוש חיפוש על עץ בינארי: אין מה להסתבך פה, מקבלים קודקוד ואיבר שרוצים למצוא.
2. מימוש ע"י שימוש ב-API חיצוני: כנ"ל, אתם מקבלים API ואת המימוש הלא מתועד שלו וצריכים להבין איך הקוד עובד ולהשתמש בו.
3. תיקון קוד קיים: אתם מקבלים קובץ C מוכן וצריכים לדבג אותו ולתקן את השגיאות בקובץ עצמו כך שיעבוד. עיקר העבודה הייתה סביב עקרונות תכנותיים ב-C (מניפולציות על מערכים וסטרינגים, הקצאות זכרון וכו').
4. בדיקת סטטיסטיקות – אין יותר מדי מה להוסיף למעט העובדה שמספקים לכם מימוש של hashTable שאפשר (ומומלץ) לעבוד איתו.
לכל שאלה יש טסט שאתם יכולים להריץ בכדי לבדוק אם הפתרון שלכם עובד.
חייבים לפתור את כל השאלות כדי לעבור ומוקצות לכך ארבע שעות, אם כי מבחינתם אתם צריכים לפתור הכל בשלוש (כלומר מי שלא פותר בשלוש שעות יכול להמשיך לעבוד עוד שעה, אבל זה מפחית את הסיכויים שלו להמשיך).
אין יותר מדי מה להרחיב על שני המבחנים הבאים:
הראשון הוא מבחן על פקודות shell בסיסיות לינוקס (וההנחיות פחות או יותר אומרות לכם מה לעשות בדיוק, פשוט לעקוב אחריהן) והשני הוא מבחן GUI שבו אתם צריכים לערוך תמונה בצייר וליצור ממנה GUI של תוכנה.
2020 Security Analyst
במבחן שני חלקים – חלק 1 עם שאלות כלליות ממתמטיקה ומד"מח – הסתברות בדידה (קומבינטוריקה), קצת על מבני נתונים בסיסיים, ועוד כל מני כאלו שבגדול לא אמורה להיות בעיה לפתור אותם אם סיימת שנה א'.
בחלק שני עובדים עם הדוחות של WireShark – היכרות של כמה שעות לפני זה אמורה להספיק..
בגדול תצטרך להסיק מסקנות על הלוגים (Logs) של תקשורת (שהם נתונים בפורמט ה-HexEdit ב-WireShark) ולראות בין כמה Logs כאלו איזה מהם שגוי ובמה (כשלפני זה מתארים לך בקצרה מה הפרוטוקול שהשתמשו בו, כלומר איך נראה ה Log – מה מופיע בהתחלה, מה בסוף, איזה בית זה אורך הקלט איזה בית זה עוד משהו.. ככה שלהתמצות ב Hexa יכול לחסוך זמן). וגם ישאלו איזה תוכנית של C (יותר מדויק נותנים תוכנית עם כמה שורות חסרות) יכולה לבדוק האם ה-Log הוא בטוח או יכול לשמש לפרצות (כמובן שיתנו הסבר כלשהו על איזה פרצות יכולות להיות ובגלל מה).
בגדול התוכניות של C הם מאוד קצרות (בערך עשרה שורות) וצריך להשלים בתוכן כמה שורות בודדות.
ככה יתנו לך כ3-4 פרוטוקולים (ולכל אחד כ2-3 Logs) ועל כל אחד מהפרוטוקולים מגוון של שאלות באותו סגנון כפי שתארתי.
כדאי להקשיב לאינטואיציה אם לא מספיק לפתור משהו כי המבחן הוא אמריקאי וחבל לא לענות, אז אם משהו נראה כנכון כדאי לבחור בו.
משרת QA
מה כדאי ללמוד למשרת QA – עברו על המדריך הטכני שלהם איך לחבר ראוטר ולגלוש איתו באינטרנט, לא צריך לקרוא את כולו, גם לא בבחינה אבל צריך לדעת לעשות חיפוש ממוקד בקובץ PDF ענק (משהו כמו 800 עמודים) באמת שלא צריך להתרגש מזה כיוון שיש שם המון תמונות הסברים מאוד מפורטים
נסו למצוא בכוחות עצמכם איך להתחבר לאינטרנט באופן קוי, איך להתחבר לאינטרנט באופן אלחוטי לא מאובטח ואיך להתחבר אלחוטית באופן מאובטח. רמז, לפני שאתם מראים לבוחנים שיש לכם חיבור אלחוטי נתקו את כבל הרשת ובידקו שאתם גולשים, כך גם תוכיחו שהאלחוטי עובד אם ישאלו אתכם על זה
יום מיון QA
שאלות מיום מיון:
חלק 1- מתכנסים בערך 30 איש ועושים לנו מבחן במחשב
המבחן הראשון היה בעצם הגדרות של משולש ושאלות לדוגמא
הגדרות-
במשולש יהיו רק מספרים חיובים
משולש יתאפשר רק אם 2 הצלעות גדולות מהצלע השלישית
יש משולש שווה שוקיים שונה שוקיים ו ישר זווית
וככה עוד הגדרות ומביאים לכם שאלה נגיד
באיזה נתונים המערכת תתן באג? כזה ככה
(1,22,3)
(1,1,1)
(1,2,3)
וכאילו 111 זה הישר זוית כי כל הצלעות שוות 123 זה שונה לעות והראשון לא קשור
אני מקווה שעזרתי להבין בערך
המבחן השני היה על submask וIP למשל שאלו
באיפי כזה 20\192.2.5.0 (אני לא יודעת אם האיפי הזה חוקי זה לצורך הדוגמא לא ממש מבינה בזה)
אז שואלית כמה HOST יש בזה כמה SUBNET אפשר להכניס לכתובת כזאת
ועל הסיביות שאחרי הסלאש
ועל איפי לפי מחלקות ACB
בעקרון רוב השאלות כאלה
אם יש לי מספר ככה וככה כמה סיביות יהיו בו
אם יש לי איפי ממחלקה C איך הSUBNET שלו יראה
225.225.225.0
או
225.6.0.21
כאלה וגםם היה שאלה כמה רשתות יש בכתובת איפי 162.35.2.6 לדוגמא
ואחרי זה מוצאים את כולם ואז המבחן השלישי
מאמר על פייורוואל של צק פוינט ואיך הוא עובד
ואז שאלות על המאמר למשל
מראים לכם ממש תמונה מהגדרת חוק בFIREWALL ואומרים לכם אם במצב שחוק מוגדר ככה
מה לא יתאפשר\ או כן יתאפשר\ או מה יקרה כשננסה להיכנס לדדף HTTP וכאלה
זה היה החלק הקל
אחרי השלב הזה לא המשכתי מתוך ה30 נשארו רק איזה 5 אנשים
לדעתי החלק הכי חשוב זה על כל המספריםם הבינארים 1111.0000.11100 בלה בלה חח שאני לא מבינה בזה כלום
אם אתם באים עם ידע מעמיק בזה תאכלס אפשר לעבור
אני לאבאמת יודעת מה הם חיפשו אנשים בלי ידע עם הרבה ידע או ידע בינוני כי אנשים שהיו איתי היו ממש בקיאים בחומר אז לא באמת יודעת על מה הם בוחנים
אגב מבחן ראשון זה 10-15 שעה
השני שעה
והשלישי שעה
אבל מסיימים אותם הרבה יותר מהר
בהצלחה לכל מי שנבחן
יום מיון לבדיקות ותמיכה טכנית
יום מיונים ל-QA ותמיכה טכנית:
שני מבחנים על מחשב עם שאלות על תקשורת מחשבים: ip, default gate,server עם אינטרנט וכו'.
בחלק השני מקבלים ראוטר וצריך לדעת לקנפג אותו בהתאם להוראות שהם מבקשים. כמדומני שזה היה לשנות את הip לip דינאמי
או משהו בסגנון הזה.
בסוף המבחנים עברו 10 בסך הכל, 5 לתמיכה טכנית ו5 לQA.
נבחן נוסף:
היו 2 מבחנים באנגלית עם זמן ידוע מראש, החלק הראשון היה קל יחסית וכל אחד יכול לעבור אותו, החלק השני כלל טקסט ארוך באנגלית על מעבר תנועות בין ראו טריים. הדוגמאות שהם נתנו לא היו ברורות בכלל, ובתשובות היה נשמה כי יש יותר מתשובה אחת מתאימה. היות ולא ניתן להתכונן לזה מראש, אז מומלץ לקחת זמן ולהתרכז ולנסות להבין את הדוגמאות עד הסוף.
אכן התחילו את היום אני מעריך משהו כמו 40-50 איש ועברו בודדים מאוד.
נבחן נוסף:
המיון מתבצע בכמה שלבים:
בשלב הראשון יש מבחן שמורכב משני חלקים. לכל חלק יש 10 שאלות והכל באנגלית.
חלק הראשון- מתוארת "תוכנה" עם מספר כללים שצריכים להתקיים בה. משתמש אמור להכניס ערכים עבור צלעות למשולש בהתאם לכללים והתוכנה בודקת האם הערכים שהוזנו חוקיים או לא.
לחלק הזה מוקצבת רבע שעה והוא מאוד פשוט.
החלק השני- מסמך של 15 עמודים בערך (כולל השאלות) שכולל חלק לקריאה- רקע והסברים על פיירוול מסויים. השאלות בעצם בודקות אם הבנת את החוקים,הגבלות והרשאות במקרים לדוגמא.
חלק מהשאלות הן על תרשימי זרימה שמציגים את המקרים אחרי שעברו שינויים (ואז צריך להבין מה השינוי ומה המשמעות שלו).
בכל מקרה, גם החלק הזה ממש לא מסובך. לוגיקה פשוטה..
לחלק הזה הוקצבה שעה.
ביום מיון שהייתי כמעט כולם עברו את השלב הזה (יותר מ20 אנשים לדעתי).
בשלב השני- מתחלקים לקבוצות של 4-5.
כל אחד מקבל ראוטר ( check point utm edge) (פיזית), וצריך לחבר אותו להאב, למחשב (אם זה משנה למישהו משהו, מדובר ב XP) ולקנפג אותו בהתאם להוראות (חומרי עזר- PDF של 800 עמודים על הראוטר, דף שמתמצת את התהליך התקנה, 2 דפים של הגדרות מושגים בסיסיים כמו DNS, gateway).
שלב ראשון- לחבר פיזית, להגדיר IP, סיסמא ולבדוק שאכן הצלחת להתחבר לרשת.
שלב שני- להעביר את כל הסיפור לWIFI.
שלב שלישי אני לא זוכרת.
החלק הזה מורכב משלושה שלבים ואורך 85 דקות.
מי שעובר את החלק הזה ממשיך לראיונות בכ"א.
אם יש משהו שאתה יכול להכין את עצמך למיונים זה בעצם לדעת לחבר ולקנפג ראוטר מהתחלה ועד הסוף (מי שלא מנוסה בעניין כדאי מאוד שיתנסה ויתרגל כמה שיותר אחרת חבל על הזמן שלכם. 85 דקות לא יספיקו למי שלא בקיא).
נבחן נוסף:
לגבי החלק הראשון של המבחנים:
המבחן הראשון (של המשולשים) באמת פשוט. רק הלחץ והאנגלית הם אלה שמפריעים.
המבחן השני הוא שבעה עמודים של אנסין ואחכ 10 שאלות.
מסבירים שם על איך מוקצים מספרי IP.
אני מתכון לספרות של הכתובת IP. מה הם מייצגות.
ללמוד את משמעות המחלקות A B C.
להבין מה זה אומר הסלאש שיש לפעמים אחרי כתובות IP.
(X.X.X.X\26)
להבין איך מייצרים כתובת SUBNET מכתובת IP.
בעיקרון להבין טוב טוב מה המספרים של כתובות IP אומרים. זה כל הנושא.
זה קצת קשור למספרי בינארים ופעולות על מספרים בינארים כמו XOR AND OR.
למשרת QA
הראיון הראשון היה טלפוני שבדק נכונות לסוג העבודה וטיפה רקע מקצועי.
הראיון השני היה מול הר״צ והמנהל qa.
בראיון הזה היה בעיקר שיחה על מי אני מה אני למה אני רוצה לעבוד אצלהם ולמה אני מתאים.
חלק שני היה שהם סיפרו על המשרה לעומק אופי המקום וכו.
חלק שלישי היה שאלות מעולם הqa.
בגל שאני באתי מעולם התקשורת לא היו שאלות תוכנה.
השאלה:
נתונה לך מכונת פחיות לפני שחרור ללקוח.
איזה בא בדיקות תגדיר לביצוע לפני שחרור המכונה מהמפעל?
אין תשובה נכונה במאה אחוז, יש להציג עקרון חשיבה שבודק את כל המכלולים בנפרד, את הפונקציונליות של הכל ביחד ומצבי קיצון( לדוגמא מה קורה שמכבים את המכונה באמצע שליפת פחית, או מה קורה שלוחצים על כמה משקעות בו זמנית וכו…)
חלק רביעי שאלות מעולם התוכן שממנו באתי (מאמין שאם הייתי בא מעולם של תוכנה זה היה מגיע מכיוון התוכנה) תקשורת.
שאלה:
מה תפקידו של nativ vlan.
כאשר שני עמדות מחוברות אחת לשני בכבל וכל אחת מוגדרת עם כתובת רשת אחרת.
עמדה א10.10.10.10 255.255.255.0 gw 10.10.10.1
עמדהב 20.20.20.20 25.2555.255.0 gw 20.20.20.1
העם פינג יעבור בין המחשבים?
בתשובה צריך כמובן להגיד גם למה…
מנגנון arp והאופן שבו כרטיס הרשת בעצם עובד ויודע האם הכתובת נמצאת אצלו ברשת או לא.
נ.ב התשובה היא לא.
אחרי זה היה מבחן מעשי
לקחו אותי למעבדות נתנו לי fw לא זוכר את הדגם. ואמרו לי לחבר אותו ככה שיהיה לי פינג שיעבור בין שני עמדות שמחוברות אליו.
אמרתי להם בהתחלה שמעולם לא נגעתי בfw ולכן התרגיל הפשוט.
לזכותי יאמר שהייתה בעיה שגם הרצ לא ידע לפתור ואולי היה לזה שיקול במעבר שלי לשלב הבא.
בשלב שאחריו היה חי ראיון עם המנהל של הקבוצה שהיה בעיקר הכרות יבשה וגם באמת קצת משו כמו חצי שעה ומשם ישר עברנו לhr
JAVA ראיון
המבחן מורכב מ 5 שאלות: Java
בכל שאלה צריך לממש פונקציה:
1. צריך לממש עץ בינארי, שעושה חיפוש בינארי.
2. צריך לממש קריאה לפונקציה שמחזירה Struct * ואז לשלוח לפונקציה אחרת את ה Struct שקיבלנו.
3.צריך לתקן קוד, שלא התקמפל.
4. שאלת אלגוריתם.
5. שאלת נושא.
בעקרון מי שמסיים 4 שאלות Java מתוך 5 – עובר.
צ'ק פוינט – C++ UI
יום מבחנים – הייתי קצת מזמן, אז עוד היה את המבחן של פרוטוקול התקשרות עם A ו-B,
אני יודע שהיום כבר שינו את זה.
אח"כ ראיון ראשון עם ראש צוות –
לספר על עצמי ועל פרוייקט הגמר מהלימודים.
להסביר מה זה פונקציה וירטואלית
איך הייתי מממיין רשימה מקושרת של מחרוזות
איך מממשים פונקצית hash (הסבר כללי לא מימוש)
לממש דרישה מסוימת משני קלאסים כך ש-B יורש מ-A.
אח"כ ראיון שני עם ראש קבוצה –
לממש את הפונקציה atoi ב-C
יש לך זכרון שבנוי מבלוקים של 1K כל אחד, ממש myFree, myMalloc – צריך להחזיק בכל תא בזיכרון את כתובת הזיכרון הפנוי הבא.
צ'ק פוינט – C++ UI
התראיינתי למשרת מפתח UI ב C++
ויחד איתי ביום הגיוס היו עוד איזה 40 איש חלק למשרת ה UI וחלק לUNIX KERNEL
את אלא שנבחנו ל KERNEL שאלו את השאלה שכולם כתבו פה עם הפרוטוקול תקשורת שאני לא חושב שמישהו הצליח לעשות שם (דיברתי עם הרבה אנשים אחרי המבחן).
את המבחן למשרת ה UI נתנו לנו לעצב מסכים לתוכנה שתהיה TASK MANAGER למשימות יומיומיות כמו ב"אוטלוק" ב VISUAL STUDIO 2003 רק את המסכים בלי הקוד,
בנוסף הם ביקשו שנכתוב מדריך למשתמש באנגלית איך להשתמש בתוכנה ומה מייצג כל מסך שעיצבנו.
עיצבתי משהו נחמד שחשבתי שהוא מאוד יפה ונוח אחרי שיומיים קראתי על עיצוב תוכנה ו-GUI.
היה מבחן נוסף של שליטה ב UNIX וב-VMWARE וטיפה תיכנות ב C וסקריפטים, היה צריך לפתוח תקשורת בין 2 מחשבים דרך VMWARE ולעשות פעולות בסיסיות שמוסברות במבחן כמו פינגים ועריכת קבצי C, רצוי לחזור על פקודות UNIX לפני המבחן.
פה הפצצתי כי אחרי כל תרגיל המערכת "מודיעה" אם הצלחת או לא.. אז בוודאות היה מושלם.
צ'ק פוינט – QA
כל המבחנים באנגלית אז כדאי מאוד לדעת אנגלית ברמהה גבוהה.
בשלב הראשון מקבלים 3 מבחנים:
מבחן אחד של רבע שעה שהוא היחיד שאיכשהו קשור ל qa אבל הקשר חלש. מציגים לכם תוכנה שמחשבת האם המשולש הוא שווה שוקיים, שווה צלעות, או שונה צלעות והמשתמש יכול לשים אינפוט של אורכי צלעות שונים. התוכנה כביכול מוציאה פלט מה סוג המשולש לפי הקלט של אורך הצלעות. יש כל מיני תנאים והשאלות שואלות מה בעצם יחשב כבאג בתוכנה (שאלות אמריקאיות).
מבחן נוסף הוא מאמר באנגלית, כ4-5 עמודים שבו מפורטות שיטות שונות לסימון הframes בשכבת הdatalink ( אם אני זוכר נכון bit flag, internet sum). באמצעות השיטות האלה בעצם מזהים האם המידע שהועבר ברשת הוא שלם ותקין. צריך לדעת שפה בינארית וגם שיטות חישוב של שפה בינארית ( חיבור בינארי בעיקר). זה המבחן הקשה ביותר.
והמבחן הנוסף הוא בנושא חוקי פיירוול. מאמר קליל על כיצד מוגדרים חוקים בפירוול.
בשלב השני צריך לדעת לחבר ראוטר,, על זה תוכלו למצוא מידע בפורומים כי זה רץ כבר שנים…
לסיכום, ידע ברשתות כמעט ולא נחוץ פה, ידע בשפה הבינארית נחוץ
צ'ק פוינט – Security Analyst
מבחן אורך כ-3 שעות. יש בו שני חלקים.
בחלק הראשון נשאלות שאלות טכניות כמו העברת בסיסים בינאריים הקסדיצמאליים וצריך לדעת כפל/OR/AND/<</>> יש שאלות הסתברות מאוד פשוטות, שאלה אחת על סיבוכיות קוד, שאלות על פלט קוד C ושאלות מתמטיקה.
החלק השני של המבחן היה לי מאוד קשה, יש להשתמש בתוכנת WIRESHARK ולזהות כל מיני שגיאות מ-4 סוגי פרוטוקולים ולדעת מה ה-OFFSET וצריך להשלים קודים בשפת C.
לפני החלק הראשון מגדירים לכם כמה סימנים ומה הם עושים. & זה כמו שער AND , | זה כמו שער OR , >> מעביר מספר בינארי שמאלה נגיד : 01110111 >>3 אז זה 00001110
שאלה 1:
מה התוצאה של 1+2+3…+200 תשובה : 20100
שאלה 2:
ישנם 10 כדורים בתוך כד , 5 מתוכם לבנים ו-5 שחורים. מה ההסתברות שב-3 הוצאות (ללא החזרה)
לא נוציא כדורים באותו הצבע.
תשובה: 1 – (ההסתברות להוצאת רק לבנים+ההסתברות להוצאת רק שחורים) = 5/6
שאלה 3:
כמה זה 1025 * 100000010
תשובה: אני הפכתי את 1025 לבינארי וכפלתי ביניהם.
שאלה 4:
a[]={0,2,1,3}h
int i;
for(i=0,i<4,i++)h
{
a[i]h=a[a[i]]h
}
כמה שווה בסוף a[2]h
h זה אני שמתי בשביל היישור.
שאלה 5:
יש מגירה שבה 3 גרביים שחורות,4 גרביים לבנות,5 גרביים ירוקות,6 גרביים צהובות,7 גרביים אדומות. אתה מוציא גרביים בחושך ולכן לא רואה את מה שאתה מוציא. מה המספר המינימלי של הוצאות שצריך כדי להוציא זוג תואם.
שאלה 6:
יש יתוש שנוצר בזמן 0. אחרי 2 שניות הוא מתחיל ליצור יתושים כל שנייה.
מה קורה בשנייה 8.5(אחרי 8 שניות)? תשובה:34
שאלה 7:
עוד שאלה על מספרים בינאריים.
דגשים לחלק הראשון של המבחן :
לדעת לחבר מספרים בינאריים, לדעת להפוך בינארי לעשרוני וההיפך.
לעבור על קומבינטוריקה, שפת C , לא משהו היסטרי… אין פוינטרים או דברים כאלה.
החלק השני כולו הוא על תוכנת ה -WIRESHARK
נותנים לכם קבצים שבכל קובץ יש כמה חבילות,פקטס, ע"פ קובץ וורד שיש בו הגדרות מה נחשב התקפה אתם צריכים להסתכל על החבילות ולהגיד איפה לפי ההגדרה יש ניסיון חדירה.
קל מאוד לזהות את החבילות שיש בהן חדירה , אתם תשימו לב שאיפה שיש את הDATA פתאום יש מלא מספרים כמו 4141414141414141414141414141414 , אבל ממש הרבה!
חלק חשוב!!
יש קובץ C שבו יש את הלוגיקה של הגדרת פריצה, אם הפלט הוא 1 אז יש פריצה אם יש 0 אז זה בסדר, אתם צריכים בקובץ הזה להבין על פי ההגדרות שקיבלתם בקובץ הוורד להגיד מה הערכים של המשתנים P,X,Y.
פתרונות מוצעים:
שאלה 4
a[0] = 0
a[1] = 1
a[2] = 1
a[3] = 3
שאלה 5
אני מניח שהגרביים מכל סוג זהים (כלומר אין הבדל בין ימין ושמאל), לכל צריך להסתכל על המקרה הגרוע מכל ובו נצטרך להוציא גרב מכל סוג כלומר 5 ובהוצאה ה6 בהכרח תהיה מצבע שכבר הוצאנו.
צ'ק פוינט – תכנות
מבחן תכנות עם 4 שאלות:
הראשונה- לממש חיפוש רקורסיבי בעץ מיון בינארי (שני בנים לכל צומת, השמאלי קטן יותר מהאבא והימני גדול יותר מהאבא).
השניה- לפי API שהם נותנים לך לדעת איך לקרוא לפונקציה.
השלישית: נתון לך מחסן מילים ואתה צריך באמצעות פונקציות של STRING לוודא שבמחרוזת שנתונה לך לא מופיעה אף אחת מהמילים הנ"ל.
הרביעית: אתה מקבל המון הודעות שנשלחות ממען לנמען, למשל מ 24 ל 36, מ 55 ל 2 וכו', ואתה צריך להחזיר רשימה של הכתובות של כל אלה שאחראים ליותר מ 10% מההודעות.
כל המבחן הוא בעצם STRUCT שמכיל 2 מספרים- כתובת של השולח וכתובת של המקבל (כתובת מיוצגת ב INT) ובנוסף סטרינג של ההודעה שהשולח רוצה להעביר.
ברקורסיה עם העץ הבינארי יש בעצם כתובות שאסור שיעברו ביניהם הודעות. למשל אם בעץ יש את המספר 6 אז אסור שהודעה מ 6 תישלח ואסור ש 6 יקבל הודעות. מה שצריך לעשות זה לחפש אם הכתובת של השולח או הכתובת של המקבל מופיעים בעץ ואם הם מופיעים להחזיר TRUE, אחרת FALSE (או הפוך, יהיה כתוב לך שמה).
בשאלה הרביעים צריך לכתוב פונקציה שלאחר מכן תוכנה של צ'קפוינט מריצה עליהם אלפי קלטים, ולפי התוצאות הם רואים אם צדקת או לא.
לגבי סביבת העבודה: לפי מה שהבנתי לjava זה אקליפס ולכל השאר ויז'ואל סטודיו.
מותר להיעזר באינטרנט בשעת המבחן.
צ'ק פוינט – תמיכה טכנית
שלב ראשון: 10 שאלות אמריקאיות בנושא של Subnetting. השאלות האלה ממש ממש קלות למי שלומד קצת ומתרגל. דוגמאות לשאלות (הכל באנגלית):
1) תמצא Subnet mask לכתובת 192.168.0.1…
2) מה broadcast address של הרשת 192.168.0.1
יש עוד כמה סוגים של שאלות כאלה, ראיתי כבר בפורום פה ששיחזרו כמה שאלות כאלה.
אני למדתי ותרגלתי עם האתר: http://www.subnetting.net/Subnetting.aspx?mode=practice
זה האתר הכי טוב לתרגול וללימוד, השאלות באתר הזה ובמבחן זהות לחלוטין!!!
כשתגיעו לרמה שבה אתם מצליחים לפתור את כל התרגילים באתר בשתי דקות תדעו שאתם מוכנים אש!
אחרי השלב הזה נשרו 3 אנשים ונשארנו 8.
שלב שני: השלב הזה מורכב משני מבחנים מעשיים.
המבחן הראשון: חיבור מחשב למודם ולראוטר.
המבחן הזה הוא החשוב מבין שני המבחנים המעשיים אז תלמדו אותו טוב טוב!
המבחן בנוי משלושה סעיפים:
1) לחבר את המחשב למודם ולראוטר ולבדוק שיש תקשורת דרך הפינג שמביאים לכם.
איך עושים את זה??
צעד 1 – אתם מקבלים חוברת צבעונית עם ארבעה עמודים, תפעלו בדיוק לפי החוברת וסיימתם את הסעיף, אבל אם אתם קוראים את ההוראות האלה אתם בטח לא כאלה מבריקים אז אני אפשט את זה בשבילכם.
צעד 2 – תיקחו שני כבלים מהמתלה, תחברו למחשב שלכם מצד שמאל צד אחד של הכבל ואת הצד השני תחברו לאחת מיציאות ה- LAN של הראוטר (סוג הראוטר הוא edge).
צעד 3 – תחברו את הכבל השני ליציאת ה WAN של הראוטר ואת הצד השני למודם(מודם HP , עם הרבה כניסות).
צעד 4 – תיכנסו להגדרות הרשת שלכם במחשב: , לוח בקרה —> הגדרות רשת —> עכשיו אתם רואים רשת LAN שזה רשת מקומית ורשת WIRELESS , תעשו לחצן ימני על רשת ה-LAN ותבחרו ב-properties—> פה תבחרו TCP/IPv4 ותעשו PROPERTIES—-> תגדירו כמו שמצויר לכם בחוברת שזה אומר שהכל יהיה באוטומטי, אתם לא צריכים להקליד בסעיף הראשון כלום שם.
צעד 5 – תיכנסו להפעלה —> cmd —> ותקלידו ipconfig —> קחו את default gateway ותרשמו בחלון של הדפדפן.
צעד 6 -מבקשים ממכם סיסמא כדי להיכנס להגדרות של הראוטר, שם משתמש : admin,
סיסמא: 1-8. ברכותיי אתם בהגדרות של הראוטר.
צעד 7 – ברגע שנכנסתם לתוך ההגדרות של הראוטר מופיע מולכם איזה מדריך, תמלאו את ההגדרות במדריך לפי מה שכתוב לכם בלוח שבכיתה. הוא מבקש סיסמא שכתובה לכם על הראוטר, כתובת איי פי של הראוטר, מדינה ועוד כמה הגדרות שהתשובות אליהן נמצאות על הלוח.
אם מאיזושהי סיבה סגרתם את המדריך בטעות אתם יכולים לפתוח אותו מחדש דרך : SETUP —ואז SETUP WIZARD וקיבלתם שוב את המדריך.
צעד 8 – סיימתם למלא את ההגדרות במדריך, ברכותיי. תיכנסו שוב למסך השחור
(הפעלה–>cmd)ופה אתם רושמים בדיוק ככה: ping 192.168.30.1 , כתובת האייפי שאתם באמת כותבים פה היא הכתובת שמופיעה על הלוח ליד המילה ping. מה שקורה עכשיו זה שהמחשב מקבל נתונים מאיזושהי כתובת וזה צריך להראות לכם שעברו הנתונים. אחרי שסיימתם את השלב הזה תקראו למדריך שייראה שהצלחתם.
סעיף שני של המבחן:
2) להגדיר את רשת ה – WIFI ויש בונוס אם אתם מאבטחים אותה.
אני ממליץ לכם להסתכל באינטרנט באיזשהו מדריך של הגדרת רשת אלחוטית זה בערך אותו הדבר.
צעד 1 – ללכת ללוח הבקרה —-> רשתות —-> לבחור את הרשת של Wireless —-> לעשות properties—–>ללכת שוב ל – TCP/IPv4 ולעשות properties.
צעד 2 – להכניס את כל הנתונים שעל הלוח ידנית , זה כולל את הכתובת אייפי שנמצאת על הראוטר, מסכה, default getway ועוד כמה שיש לכם אותם כבר על הלוח.
צעד 3 – להיכנס שוב להגדרות של הראוטר ושם אתם צריכים ללכת ל – networks —> my networks ולהתאים את ההגדרות למה שהגדרתם בצעד 2.
זה הכיוון הכללי של סעיף 2 , אל תתפסו אותי בדיוק בדיוק במילה, בשביל זה תקראו מדריך להגדרת רשת אלחוטית והוא בטח ייתן לכם יותר פרטים + תמונות של החלונות.
כמו כן , במדריכים שתמצאו באנטרנט תגלו גם איך לאבטח את הרשת ותקבלו את הבונוס.
אחרי הסעיף הזה תבדקו שה-WIFI עובד על ידי כך שתנתקו את הכבל של המחשב מהיציאה של ה-LAN.
סעיף 3 במבחן: אני לא זוכר את הסעיף הזה, לצערי אני קיבלתי כבל רשת שהיה רופף וזה גרם לי לפשל מאוד בכל המבחן הזה. תנסו לברר את זה איכשהו ממישהו אחר שהיה שם.
אחרי שסיימתם את המבחן הזה , מבקשים ממכם לפתוח note pad ולרשום עשר שורות באנגלית. אתם יכולים לכתוב על כל דבר בחיים שלכם , הם רק רוצים לדעת מה הרמה של האנגלית שלכם, אז אם האנגלית שלכם לא משהו או שאתם מפחדים לעשות שגיאת כתיב תתאמנו על זה.
שני טיפים אישיים: 1. תיקחו כבלים תקינים , כלומר שיש להם את הצ'ופצ'יקים ששומרים אותם בפנים.
2. יש שני שולחנות בכיתת המעבדה ,אחד של 6 מקומות והשני של 2 מקומות, אני ממליץ לכם מאוד לשבת בשולחן של 2 המקומות כי השולחן של ה – 6 מקומות עמוס בחוטים ואנשים יכולים להוציא לך את החוט בטעות שלא לדבר שכולם מלחיצים אותך!
זהו מבחינת המבחן המעשי הראשון.
עכשיו המבחן המעשי השני:
סיימתם את המבחן הראשון , עכשיו אתם יוצאים לאיזו הפסקונת והולכים עם איזה בחור קצת מוזר(אבל גבר) למעבדה הראשונה, זאת שעשיתם בה את המבחן העיוני הראשון.
הקטע של המבחן הזה הוא לראות איך אתם מסתדרים עם משהו שאתם לא מכירים ונתקלים בו בפעם הראשונה.
המבחן הוא על המחשב ומותר להשתמש באנטרנט בשביל לחפש חומר.
בתוך המחשב אתם פותחים איזושהי תוכנה שהבחור המוזר יגיד לכם, הוא יסביר לכם להפעיל את שלושת החלונות של התוכנה. אתם נכנסים לחלון של הראוטר , אל תדאגו הוא יגיד לכם איזה ועליו אתם מבצעים את הכניסה למערכת הלינוקס ועונים על השאלה הראשונה.
ממה שאני זוכר כשאתם מפעילים את המסך הזה הוא מבקש שם משתמש וסיסמא, שם המשתמש הוא admin והסיסמא היא vpn123 , כשאתם מקלידים את הסיסמא אתם לא תראו שכתבתם משהו, אל תדאגו , זה כותב. תלחצו אנטר ואתם עכשיו בתוך הלינוקס.
ברכותיי, אתם כרגע כותבים בתוך טרמינל של לינוקס! לינוקס! לינוקס!
כל מה שהסברתי עכשיו הבחור המוזר יסביר לכם, אבל טוב שתדעו עוד לפני מה צריך לעשות.
ועכשיו לשאלה הראשונה.
השאלה הראשונה מורכבת משלושה סעיפים:
1)get into /var/exam directory.
איך עונים על הסעיף הזה? עושים חיפוש באינטרנט של איך נכנסים לתוך תיקיה בלינוקס ושם אתם תראו איך עושים את זה, אבל מאחר שאתם לא מבריקים אני אסביר לכם, לא בגלל שאני נחמד,אלא בגלל שאני שונא את צ'ק פוינט.
הפקודה הנכונה לשם כך היא cd.
הסינטקס הולך ככה: cd /var/exam יכול להיות שזה גם הולך ככה cd /var/exam/f את ה-f רשמתי רק כדי שה- / יהיה מצד ימין למילה exam , לא כותבים את ה -f.
בכל מקרה, אפשר למצוא את זה פה: http://www.computerhope.com/unix/ucd.htm#03
2) read the text written in the file in that directory
איך עונים על זה?
צעד 1:
אתם כרגע בתיקיה, אתם צריכים לגלות איזה קובץ נמצא בתיקיה הזאת ולגלות מה כתוב בו.
איך מגלים איזה קבצים נמצאים בתיקיה? תחפשו בגוגל כי אני לא אחפש את זה עכשיו במיוחד בשבילכם. מצאתם את שם הקובץ , שם הקובץ במבחן הוא myexam.
צעד 2: בלינוקס אתם צריכים לדעת את סוג הקובץ בשביל להצליח לפתוח אותו, מן הסתם אפשר להבין שזה קובץ text כי אתם צריכים לקרוא מה כתוב בו, אבל ליתר בטחון תחפשו בגוגל איך מגלים סוג של קובץ בתיקיה. הכל נמצא באנטרנט.
צעד 3: גיליתם שסוג הקובץ הוא text ברכותיי! עכשיו אתם צריכים לקרוא ממנו. איך עושים את זה? נכון , מחפשים בגוגל. טוב נו , אני יודע שאתם מוגבלים אז מצאתי את זה בשבילכם.
http://www.computerhope.com/unix/ucat.htm
צעד 4: גיליתם מה כתוב בקובץ , כתוב שם you have passed question 2. לכו תקראו לבחור המוזר שיראה את זה.
סעיף 3 בשאלה הזאת:
3) "create a text file and give it the name: my_exam and write in it :"Good luck
איך עושים את זה? מחפשים בגוגל, טוב נו, בגלל שהגעתם עד לפה אתם כנראה ממש עצלנים ולא מוצלחים אז קבלו את הלינק שיסגור לכם את הפינה:
http://www.if-not-true-then-false.com/2 … ut-editor/
ברכותיי! סיימתם את שאלה מס' 1 בהצלחה! עכשיו לשאלה מספר 2!
רק שתדעו, אף אחד לא הצליח את שאלה 2 , אני הייתי קצת קרוב לפתור אותה.
מביאים לכם דיאגרמה שדומה קצת לתמונה הזאת:http://www.gyre.co.uk/images/broadband_router_1.png
במקום שלושה מחשבים שמחוברים לראוטר, יש שניים, האיי פי של מחשב 1 הוא משהו כמו 172.168.0.1 ושל המחשב השני האיי פי הוא 192.168.0.1 , זה לא בדיוק האיי פי שלהם, אבל הרעיון הוא שהם נמצאים על רשתות שונות והראוטר הוא זה שמצליח לגרום להם לתקשר ביניהם.
לראוטר יש שני חיצים החץ השמאלי מסומן במילה eth0 והחץ הימני (של המחשב הימני) הוא eth1.
עכשיו… זה קטע מסובך לאללה, אבל אני אחסוך לכם קצת זמן. יש פקודה שנקראת sysconfig.
הפקודה נותנת לכם כמה אפשרויות , אתם צריכים להגדיר ראוטר ואז להגדיר את שני המחשבים האחרים(hosts).
Dalet
משרת QA ב DALET
בתחילה היה ראיון עם ראש צוות QA (שכחתי את שמו), לאחר מכן עשיתי מבחן מול מחשב במשך שעה ואז סיימתי ונתנו לי תשובה שלילית כעבור שבוע בערך, אולי יותר.
היו מס' שאלות, ביניהם :
1. 8 מטבעות, אחד מהם קל יותר, מה מינימום השקילות בשביל לגלות את המטבע הקל?
2. נתנו לי גם לכתוב מקרי בדיקה על מעליות (לא זוכר את הפרטים)
3. נתנו חתיכת קוד קטנה (if,else…) ושאלו מה מינימום הבדיקות שצריך.
Elbit - אלביט
אלביט – כללי 2
הייתי באלישרא(חברת בת של אלביט) בראיון למשרת סטודנט פיתוח ומימוש אלגוריתמים ב-C. ראיון ראשון היה ראיון טכני אבל שאלו גם שאלות אישיות תוך כדי. מול ראש צוות, אדם נחמד ומקצועי.
שאלה ראשונה: לכתוב איזושהיא פונקציה ב-C שמקבלת אינדקציה של נגיעה במסך נגיעה(מקבלים קוארדינטות X ו-Y) ותודיע אם הנגיעה היא נגיעה חדשה או לא, כשנגיעה חדשה מוגדרת אינדיקציה במרחק שגדול מ-3 בX או בY מהאינדיקציה הקודמת. סתם פונקציה פשוטה וקצרה אבל לקח הרבה זמן להבין מה בדיוק המשימה, לא היה ברור. אח"כ נשאלתי אם אפשר לייעל או אפילו לקצר מעט את הקוד(כי אצלי היה אפשר ואכן קיצרתי). לשים לב למקרה קצה.
שאלה שנייה: אתה עובד במפעל של צלחות וצריך לבדוק את החוזק של הצלחות. יש בניין של 1000 קומות ואתה צריך לומר ע"י זריקות של הצלחות מהקומות, מאיזה קומה בדיוק הצלחת נשברת. בכל זריקה שבה לא נשברה הצלחת אתה יכול לרדת לקחת אותה ולזרוק שוב.
חלק ראשון- יש לך צלחת אחת בלבד וזריקות ללא הגבלה. מה היית עושה?
חלק שני- יש צלחות בלי הגבלה. מה מספר הזריקות המינימלי למציאת הקומה?
חלק שלישי- כעת יש לך 2 צלחות בלבד. מה מספר הזריקות המינימלי למציאת הקומה?
תוך כדי ובין השאלות הטכניות, נשאלו שאלות כמו: מה אתה רוצה לעשות עוד 5 שנים? איך אתה בלקבל מרות? אם אני אומר שאתה טועה ואתה בטוח בדעתך מה תעשה?
לקראת הסוף המראיין קרא לבוסית שלו להצטרף(כנראה מנהלת המחלקה או משהו כזה). היא שאלה למה בחרת ללמוד את זה, למה אתה חושב שאתה מתאים לתפקיד, עבודות שעבדתי בהם, ועוד..
אלביט – כללי 1
מחולק לשלושה חלקים : ראיון מקצועי \ אישי \ שאלון אישיות +סיווג בטחוני
בראיון המקצועי המראיינת שאלה 3 שאלות יחסית פשוטות עם אלמנט תכנותי בסיסי
1: למיין 4 מספרים מגדול לקטן , ע"י שימוש ב"רכיב" שמקבל שני כניסות ומוציא MIN ו MAX בינייהן
2: שני רכבות שנוחתות עם מצנח מהאויר(שנשאר בנקודת הנחיתה) על אותה מסילה ונעות לאותו כיוון, לשנייהן יש את אותו ציפ מתוכנת. מה יהיה הקוד בציפ שיגרום להן להפגש , יש 4 פקודות : MF – תתקדם צעד אחד קדימה
MB – תתקדם צעד אחד אחורה
IF)P – תנאי שבודק אם הגעת למצנח(
GOTO – קפיצה לאזור אחר בקוד
3: יש מערך בגודל N , יש לבנות פונקציה ( בשפת C ) שמחזירה TRUE עם ערך מסויים מופיע בה. בהתחלה אין דרישה ליעילות – אחרי זה היא מבקשת לשפר את הקוד.
exelate - אקסלייט
יום מיונים וראיונות בחברת אקסלייט
הייתי שם לא מזמן , היא שאלות הבאות : מה פוליפורמיזם ? ירושה ? encapsulation ?
access modifiers in JAVA , default , public , protected , private – לפרט על כל אחד .
שאלת SQL , נתונה טבלה עם שמות של אנשים , תאריך לידה ו שדה מגדר , צריך לספור את כמות הגברים והנשים שנולדו בין תאריכים מסויימים. שאלה בJAVA נתונה תוכנית שמרוקנת מחסנית עם iterator , היה צריך למצוא בה באגים . לכתוב תוכנית שמקבלת מספר N ומחזירה מערך שבו המספרים עד לN בסדר אקראי , בסיבוכיות זמן של N. שאלה על thread עושים על אובייקט wait אבל אף אחד אחר לא עושה Notify . מאוד מומלץ לדעת JAVA , אחרת יהיה קשה מאוד לענות על השאלות כי התוכניות נתונות בJAVA.
חבר נוסף בקהילה הוסיף:
אני יכול לספר לך שפתרון השאלה עם הרשימה שמתרוקנת שזה צריך להוסיף FINALLY אחרי ה TRY CATCH ולרשום בתוכו את שתי השורות האחרונות בבלוק ה TRY שמוחקות את האיבר.
השאלה עם ה THREADS זאת פונקציה ששולפת מ QUEUE איברים , יש שני בלוקים שמתמבצעים בצורה אטומית בתוכה.
אחד שמחכים בו עד שיהיה איברים בכלל ב QUEUE והשני שולף את האיבר , הבעיה היא אם יש יש רק איבר אחד ב QUEUE ו THREAD ראשון נכנס ובדיוק בנקודה שבין שני הבלוקים התרחש CONTEXT SWITCH , ו THREAD שני נכנס ושלף את האיבר ויצא ושוב התרחש CONTEXT SWITCH במקרז הזה ה THREAD הראשון ינסה לשלוף איבר ולא יהיה וידפיס שגיאה..שזה לא יפה.
אני קבלתי ציון B והם צריכים B+ בשביל להמשיך ..וכשאמר לי שקבלת B בקשת לבדוק מול הבודק את השאלה עם ה SQL ויצאתי אכן טועה כי פספסתי נתון , ובטעות שמתי את המבחן בתיק והלכתי הביתה ..עכשיו שמתי לב שהשאלה החמישית קיבלת C למרות שפתרתי אותה שאלה לפני יום המבחן והפתרון שלי נכון 100% ועונה על הדרישות אבל כנראה לא קריא.
המסר הוא שהם חופפים עם הבדיקות..תבקשו הסברים לציון ובהצלחה לכולם.
אני יכול לספר לך שפתרון השאלה עם הרשימה שמתרוקנת שזה צריך להוסיף FINALLY אחרי ה TRY CATCH ולרשום בתוכו את שתי השורות האחרונות בבלוק ה TRY שמוחקות את האיבר.
השאלה עם ה THREADS זאת פונקציה ששולפת מ QUEUE איברים , יש שני בלוקים שמתמבצעים בצורה אטומית בתוכה.
אחד שמחכים בו עד שיהיה איברים בכלל ב QUEUE והשני שולף את האיבר , הבעיה היא אם יש יש רק איבר אחד ב QUEUE ו THREAD ראשון נכנס ובדיוק בנקודה שבין שני הבלוקים התרחש CONTEXT SWITCH , ו THREAD שני נכנס ושלף את האיבר ויצא ושוב התרחש CONTEXT SWITCH במקרז הזה ה THREAD הראשון ינסה לשלוף איבר ולא יהיה וידפיס שגיאה..שזה לא יפה.
אני קבלתי ציון B והם צריכים B+ בשביל להמשיך ..וכשאמר לי שקבלת B בקשת לבדוק מול הבודק את השאלה עם ה SQL ויצאתי אכן טועה כי פספסתי נתון , ובטעות שמתי את המבחן בתיק והלכתי הביתה ..עכשיו שמתי לב שהשאלה החמישית קיבלת C למרות שפתרתי אותה שאלה לפני יום המבחן והפתרון שלי נכון 100% ועונה על הדרישות אבל כנראה לא קריא.
המסר הוא שהם חופפים עם הבדיקות..תבקשו הסברים לציון ובהצלחה לכולם.
Final
שחזור ראיון מלא ב- Final
הייתי שם בראיון לאחרונה, ואני מצטרף לתגובות שהיו כאן קודם, אל תלכו, בזבוז זמן. הבנתי את זה גם מחברים שם אנשי השמה שמכירים את החברה והתיאור שלהם לחברה "קבוצה של סנובים שלא מקבלים אף אחד "
ואכן בזבזתי יומיים .
הייתי בראיון עם HR ,שהמשיך במבחן שעברתי אותו , והגעתי לראיון טכני נוסף שידעתי את התשובות להכל.
יום אחרי קיבלתי מייל שלא ממשיכים איתי את התהליך. לא ברור לי למה.
מפרט את השאלות בכיף, אבל שוב , ממליץ לא לבזבז את הזמן.
מבחן 3 שאלות (דומה למה שפירטו קודם ) של חצי שעה:
1- לכתוב פונקציה שמדפיסה מספר לא שלילי עם פונקציה שכל פעם מדפיסה תו אחד בלבד (אני מימשתי ברקורסיה שכל פעם מחלקת ושולחת שוב+ מדפיסה את השארית )
2- למצוא בעיות בקוד קיים – היתה בעיה שיש השמה למשתנה לוקאלי שבסוף הפונקציה משתחרר.
והיתה בעיה של strcpy לתוך פוינטר שמצביע למערך ריק.
3- לרשום מה יודפס- class שיורש מעוד class , יש לכולם פונקצית קונסטרקטור, דיסטרקטור והדפסה (לא וירטואלי) . השמה בין פוינטר של האבא לפוינטר של הבן (עדין ידפיס את ה פונקציה של האבא כי הפונקציה לא וירטואלית) . יצירה של הבן יוצרת קודם את האבא.
ראיון מקצועי (לא ממש לכתוב קוד, יותר הסבר בעל פה של אלגוריתם):
1. יש שתי רשימות מקושרות , שאולי מתישהו נפגשות לרשימה אחת. איך נדע אם הן נפגשות ?
2. קיבלנו מספר INT , איך נדפיס את הייצוג הבינארי שלו ? (לכתוב פונקציה)
3. יש לי סרבר וקליינט. הקליינט שולח הודעות לסרבר. אם הסרבר מקבל יותר מ5 הודעות ב5 שניות הוא יפסיק להציג את ההודעות . איך נייצג את זה?
יש לי בסרבר מערך של זמנים, כל פעם הזמן האחרון נרשם , ומקדמים פוינטר לזמן הראשון. כל פעם שנקבל הודעה חדשה הסרבר יבדוק אם עברו 5 שניות מהזמן הראשון. אם כן, יציג. אם לא לא יציג. ויוסיף את הזמן החדש למערך במקום הזמן האחרון.
4. היתה עוד שאלה ….. לא זוכר מה היא. אבל בעקרון הבנתי שהם לא תמיד שואלים בדיוק את אותן שאלות וקצת משנים תוך כדי הראיון .
5. לתת דוגמא לבעיה שניתקלתי בה בעבודה . בעיה קצרה של יום יומיים. איך טיפלתי בה.
fiverr
המבחן של fiverr
יש שאלות תכנות לא קשות במיוחד לא זוכר מה היה , היתה שאלת sql , שאלה על כמות מילים במסמך או משהו כזה שאלת קריאת קוד ולהגיד מה לא בסדר. הקוד הוא ברובי.
היו שאלות כלליות על performance ו scaling של backend.
היתה שאלת תכנות לא מסובכת עם פתרון רקורסיבי.
Fundtech - פנדטק
Fundtech – שאלות אלגוריתמיקה ותכנות
בשאלה הראשונה מוצגת מערכת של העברת כספים בין בנקים, המערכת מיועדת לבנקים עצמם והיא מאפשרת לקליינטים שלהם להעביר כספים מחשבון אחד לאחר (בין בנקים שונים). המערכת אמורה לוודא שהפרטים של החשבון המעביר והחשבון אליו מעבירים- debit & צונזר – הודעת זבל נכונים' ושעמלה של 5$ נגבת עבור כל העברה. ישנו תיאור של הדפים באינטרנט אותם הקליינטים עוברים, וגם תיאור קצר של המערכת. המטלה היא לרשום 15 מבחנים המחולקים לפי סוג (או gui או process) ולציין בשביל כל אחד מהסוגים (g\p) מהו המבחן הכי חשוב. זוהי השאלה המרכזית במבחן ואמורים להשקיע בה את מירב הזמן/מאמץ.
בשאלה השנייה יש שני סעיפים- הראשון הוא לתת שתי דוגמאות של כשלים שעלולים להתגלות מתוך הבדיקות שתוארו- דוגמא אחת של כשל חמור מאוד והשנייה של כשל מינורי. בסעיף השני שואלים מה כדאי לעשות במידה ולקוח טוען שהועבר יותר מידי כסף מהחשבון שלו.
בשאלה השלישית נדרשים לרשום תרשים זרימה המתאר את התעדכנות בסיס הנתונים- בכל פעם נכנס מידע חדש של תעריפי שער חוץ- אם התעריפים זהים הם מועתקים על פני העדכון הקודם והוא נמחק, ואם הם שונים צריך להוסיך אותם ל-db אחרי העדכון האחרון. במידה והנתונים לא מצליחים לעלות כראוי צריך לדלג עליהם והודעה נשלחת כי העדכון לא צלח. בכל פעם שמסתיים העדכון המערכת שלוחת קריאה לעדכון הבא, אלא אם זה העדכון האחרון ליום ואז היא אמורה לזהות שנגמרו העדכונים. (יש מצב שהיה עוד משהו אבל אני כבר לא זוכר)
ברביעית ישנם שני סעיפים לכתיבה ב-sql: א- בחירה פשוטה של קטגוריית שמות (מתוך טבלה) המבוססת לפי קריטריון מספרי (גיל) ומוצגת בסדר עולה (order by). ובשנייה צריך למשוך משלוש טבלאות שונות (עם עמודות חופפות בין טבלה א ל-ב ובין טבלה ב ל-ג) קטגוריה שנמצאת בטבלה הראשונה לפי סינון נתונים הנמצאים בטבלה השלישית. משך הבחינה הוא שעה וחצי (לפחות 3/4 שעה רק על השאלה הראשונה) כל המבחן הוא באנגלית (קריאה וכתיבה) והשימוש בטלפון אסור.
Fundtech -מבחן באנגלית
המבחן באנגלית וצריך לענות באנגלית:
שאלה ראשונה: צריך לעשות test case לפחות 15 למערכת שלהם (יש הסבר עליה) ולחלק לפי קטגוריות של gui ושל process
שאלה שנייה: היו שתי סעיפים את הראשונה אני לא זוכר כל כך רק שהיא קשורה למה שרשמת בשאלה 1 ושואלים על זה
סעיף שני היה לקוח a טוען שחויב יותר ממה שהיה צריך איזה בדיקות צריך לעשות (שוב זה קשור למערכת שלהם)
שאלה 3: היה תיאור של איזה תהליך שמעלה קובץ וצריך לעשות לו תרשים זרימה
שאלה 4:sql יש 3 טבאות ושתי סעיפים הראשונה מצא שמות לקוחות שגרים בירושלים והגיל שלהם מתחת ל26 ושהשמות יהיו בסדר ממוין.
והסעיף השני לא זוכר בדיוק רק אני זוכר שצריך לעשות מכפלה קרטזית בין 3 הטבלאות שיש בשאלה.
Fundtech – UI\JAVA
פגישה ראשונה – מבחן תיאורתי
JS – שימוש עם VAR ובלי
כתובת אלגוריתם אשר ממין מערך של 0 ו1 – זורק 1 לסוף ו0 להתחלה. מהי הסיבוכיות.
שאלות על HTML CSS.
כתובת אלגוריתם על רשימה מקושרת שמכניסה איבר לאמצע.
פגישה שניה – מבחן מעשי
שימוש בJQUERY UI
כתובת עמוד בודד אשר התפריט שלו זה טאבים ניתנים לגרירה (סידור מחדש) – לחיצה על כפתור מוסיפ עוד טאב
תחת כל טאב יש עמוד שמכיל טופס הרשמה לעובד המכיל פרטים בסיסים. גם אשראי. בלחיצה על אישור מתקיימת ואלידציה על הנתונים (שימוש בספריה) ומחיקת הטאב. כמובן שאם הואלידציה לא מאושרת מוצגת הודעת חיווי.
להקפיד על CSS נקי, html מסודר, חלוקה בין הקבצים. שימוש בספריות נכונות וממוקמות במקום הנכון בפרוייקט.
Fundtech – פיתוח java/j2ee
מבחן של שעה, שאלות פתוחות וכתיבת קוד ואז ראיון.
דוגמא לשאלה:
public class Sync1 extends Thread{
private int m_value;
public Sync1(int value){
m_value = value;
}
public synchronized void printValue(int iValue){
while(true){
System.out.println(iValue);
}
}
public void run(){
printValue(m_value);
}
}
public class Sync2 extends Thread{
private Sync1 m_sync1;
public Sync2(Sync1 sync1){
m_sync1 = sync1;
}
public void run(){
m_sync1.printValue(2);
}
}
public class ssss {
public static void main(String[] args) {
Sync1 sync11 = new Sync1(1);
sync11.start();
Sync2 sync2 = new Sync2(sync11);
sync2.start();
Sync1 sync12 = new Sync1(3);
sync12.start();
}
}
מה יהיה הפלט?
שאלה נוספת:
נתון מערך בגודל 99
int[99]
יש בו מספרים מ1 עד 100 וחסר מספר אחד בצורה לא מסודרת. יש לכתוב מתודה יעילה שתמצא מה המספר החסר.
Fundtech – בדיקות
השאלות :
1. מערכת שמקבלת X מה – D.B. ואמורה לשלוח Y אל מערכת אחרת שמקושרת אליה, אבל במקום Y מתקבל Z . אילו בדיקות היית מבצע ?
2. נתונה מערכת של קרדיט וחיובים וכדומה ומבוצעים במערכת פעולות שאותם צריך לתאר בתרשים זרימה.
3. שאילתת SQL שמציגה את השם של האדם שיש לו את האייטם הכי גדול בטבלה.
4. נתונה כספת שיכולה לקבל בין 8 ל- 10 ספרות ואותיות . בכל פעם מופיעים תנאים שהכספת מקבלת ואם היא לא מקבלת את מה שהיא אמורה , היא מוציאה הודעת שגיאה על גבי הצג . צריך לרשום T.C. לאותם תנאים : STEP DESCRIPTION , EXPECTED RESULTS , ACTUAL RESULT בטבלה.
Fundtech – משרת QA
4 שאלות:
בשאלה ראשונה שולחים X למערכת 1 היא מעבדת את זה לY ושולחת למערכת 2 והיא גם כן מעבדת ושולחת Z. ואז מישהו אומר שבמקום Z קיבלו משהו אחר וצריך לכתוב שלבים איך מאתרים בעיה.
בשאלה 2 ביקשו לכתוב שאילטה קלה בSQL
בשאלה 3 לכתוב טבלת הרצה (נראה לי ככה זה נרקא) כלומר לכתוב גרף מורכב מIF ופעולות.
ובשאלה 4 יש כספת עם מלא דרישות וצריך לכתוב איזה בדיקות הייתה עושה.
כל המבחן הוא באנגלית וצריך לענות באנגלית.
ראיון שני עם ראש צוות:
1. לספר על עצמך.
2. למה אתה רוצה לעבוד בQA
3. שאילה. קיים רכיב תוכנה שמקבל 3 אותיות ומחזיר אותם בסדר הפוך. מה הייתה עושה עם מתקשר עלך הלוקח ואומר שבמיקום להחזיר אתיות בסדר הפוך, המארכת מחזירה אותם בסדר שונה. למשל קלת ABC, הפלת צריך להיות CBA אבל הוא ACB…
General Electric - GE
בדיקות – QA – משרת סטודנט
הייתי בראיון עבודה למשרת סטודנט QA בGE
1)היה צריך להדפיס ברקורסיה את כל המספרים הראשוניים עד 10001..
צריך להקפיד על יעילות.. וצריך לשים לב למקרי קצה..
2)היה צריך לצייר מעגל בתוך מטרציה של משתנים בוליאנים..
צריך להקפיד על יעילות.. וצריך להקפיד על רציפות.. והכי חשוב לשים לב שערכי המטריצה הם ערכים שלמים למרות שנוסחת המעגל נותנת ערכים לא שלמים… (וצריך לתת לזה מענה)
הכל בשפת C.
פיתוח תוכנה
היו 8 שאלות ,השאלות הן כאלו:
1.1 מה ההבדל בין וירטואל ללא וירטואל בסי פלוס פלוס, האם יש הבדל , ואם כן, תסבירו, ותתנו דוגמא.
1.2 האם קונסטרקטור יכול להיות וירטואל , אם כן או לא , הסבר ותן דוגמא.
1.3 האם דיסקרטור יכול להיות וירטואל , אם כן או לא, הסבר ותן דוגמא.
2.1 תכתוב הצהרות למחלקה שעושה מחשבון פשוט.(מחשבון פשוט)
2.2 תממש אותן
3.1 נתונה רשימה מקושרת, תהפוך אותה.
4.1 מה זה singleton הסבר ותן דוגמא איך היית ממש את זה.גם במקבץ של השאלות.
5.1 מה זה deadlaod הסבר ותן דוגמא. גם במקבץ.קשור למערכת הפעלה.
6.1 נתונה המחלקה הבאה, היא לא מתקמפלת,
למה?
class a{
public int x=7;
public int y=9;
void f1(){x=24;}
void static f2(){y=35;}
}
6.2 מה היית מסדר כדי שזה יתוקן.
7.1 נתון בית אחד שזה 8 ביטים. תממש פונקציה שבודקת שיש בדיוק 3 ביטים שהם 1.
8.1 בונוס: 107 במקבץ השאלות המפורסמות . נתון חדר בגודל 12X12X30 מטר. הקיר השמאלי ישנו שקע חשמל שנמצא מטר מעל הריצפה, ובאמצע הקיר הימני ישנו שקע חשמל שנמצא מטר מתחת לתקרה. ברור שניתן להעביר כבל באורך 42 מטר בין השקעים, אבל איך ניתן להעביר כבל באורך 40 מטר ביניהם?
שימו לב- השאלות כמו בכל החברות, חוזרות על עצמן.
Hola - הולה
ראיון דרך Skype
בקשו ממני לממש כל מיני פונקציות במסמך גוגל דוקס. כמו להדפיס מטריצה בצורה ספיראלית, לממש את הפונקציה strcmp ואז לשנות אותה שלא תהייה case sensitive. היה עוד שאלות אבל אני לא זוכר זה היה לפני חצי שנה.
הסבר לצורה ספירלית נגיד וזה מטריצה של 3X3 שכתוב בה מ1 עד 9 לפי הסדר אז שיודפס למך בסדר הבא.
1,2,3,6,9,8,7,4,5
Hola – כללי -2
השאלה הייתה לכתוב פונקציה שמקבלת string שמכיל סוגריים ובודק שהביטוי תקין לדוגמא: (({{[]}})) זה תקין כי עבור כל סוגר פותח יש סוגר שסוגר אותו.
הביטוי ([({))} לדוגמא לא טוב כי המיקום של הסוגר האחרון לא במקום הנכון וחסר סוגר מרובע אחד.
סעיף ב' אותה שאלה רק תוסיף גם את הסוגר | שהוא וההופכי שלו זהים בצורה.
הפתרון הוא להשתמש במחסנית
public static boolean check (String s)
{
Stack<Character> st = new Stack<Character>();
Character old_ch = null,ch =null;
for (int i=0;i<s.length();i++)
{
ch=s.charAt(i);
if (ch=='(' ||ch=='<' ||ch=='[' ||ch=='{' )
st.push(ch);
else{
if (ch==')' ||ch=='>' ||ch==']' ||ch=='}' ){
if (st.isEmpty())
return false;
old_ch =st.pop();
if (old_ch=='(' && ch!=')') return false;
if (old_ch=='[' && ch!=']') return false;
if (old_ch=='{' && ch!='}') return false;
if (old_ch=='<' && ch!='>') return false;
}
}
}
if(!st.empty())
return false;
return true;
Hola – כללי -1
המבחן השני ב-Hola
Hello
Problem
===========
Simplify the implementation below as much as you can.
Even better if you can also improve performance as part of the simplification!
FYI: This code is over 35 lines and over 300 tokens, but it can be written in
5 lines and in less than 60 tokens.
static int func(String s, char a, char b)
{
if (s.isEmpty()) return -1;
char[] strArray = string.toCharArray();
int i=0;
int aIndex=0;
int bIndex=0;
while (aIndex=0 && bIndex==0 && i<strArray.length)
{
if (strArray[i] == a)
aIndex=i;
if (strArray[i] == b)
bIndex=i;
i++;
}
if (aIndex != 0)
{
if (bIndex == 0)
return aIndex;
else
return Math.min(a, b);
}
else
{
if (bIndex != 0)
return bIndex;
else
return -1;
}
}
הפתרון:
static int func(String s, char a, char b)
{
for (int i = 0; i < s.length(); ++i)
{
char ch = s.charAt(i);
if (ch == a || ch == b)
return i;
}
return -1;
}
ראיון שלישי:
הראיון הבא אחריו הוא שיחה בסקייפ עם אחד העובדים שלהם, לי נתנו לממש פונקציה שמשווה בין מחרוזות ללא התייחסות לupper/lower case. מתחילים ממימוש פשוט ומתחילים לייעל אותו- אם זה ע"י הוספת מערך להמרה מאותיות גדולות לקטנות ואם זה בסופו של דבר ע"י loop enrolling כדי לחסוך בפקודות jmp. אני מאמינה שבשלב הזה השאלה לא זהה לכולם, כי בראיון אח"כ שאלו אותי מה הייתה השאלה שקיבלתי.
ראיון רביעי:
הקוד:
void f() {
Deferred d;
d.then(new DeferredCallback(function(){
console.print("first "+ d.value);
return 'b';
}).then(new DeferredCallback(function(){
console.print("last " + d.value);
});
d.foo('a');
}
הפלט הנדרש:
first a
last b
HP
HP – מהנדס תוכנה
עוד שאלות:
איך להדפיס עץ לפי רמות, כלומר- קודם את הרמה הראשונה(שורש), ואז את הרמה השניה(שני בניו של השורש), הרמה השלישית(ארבעת בניהם של שני הבנים של השורש) וכו…
(ניתן לפתור בעזרה מבנה נתונים list)
בנוסף שאלו מה ההבדל בין ת'רד לפרוסס
HP – ראיון למתכנת
ראיון ראשון – פסיכוטכני + אישיות מול מחשב
ראיון שני – טלפוני עם מישהו מהצוות, סוג של מקצועי אבל בקטנה.
ראיון שלישי – מקצועי: שעתיים בערך עם מתכנת
ראין רביעי – גם כן סביב השעה וחצי שעתיים, מקצועי עם ר"צ.
הראיונות המקצועיים:
שאלות על ה heap וה stack, להראות מה קורה בזכרון בקריאה לפונקציות, שאלות על garbage collector – אופן פעולה (חציית הזכרון לשניים והעתקה של עץ הצבעות)
למה אי אפשר לממש garbage collector בעזרת reference count, כלומר למחוק אובייקט רק כשמונה ההצבעות עליו מקבל ערך 0 (אי אפשר כי מה יקרה אם שני אובייקטים יצביעו אחד על השני)…
שאלות design למיניהן: התבקשתי לתכנן משחק של ציור עם כפתורים המייצגים צורות, צריך ללחוץ על הצורה הרצויה ואז על הלוח כדי לצייר את הצורה (או משהו בסגנון). צריך לפרט באילו אובייקטים להשתמש, ירושות (אם יש) ….
כנ"ל רק לממש משחק שחמט.
לכתוב פונקצייה שמקבלת מחרוזת ומחזירה את אורך הפלינדרום הארוך ביותר במחרוזת.
HP – סטודנט ALM
הראיון התחלק ל3 חלקים:
חלק 1 – הסבר על התפקיד, ואז השאלה "ספר לי על עצמך", לאחר מכן מבחן, 2 עמודים משני הצדדים הכוללים שאלות כמו מה ההבדל בין http ל https
מה עושות הפקודות הללו ב Linux
מה זה dns server
ttl
ואז שאילתא בSQL – להגיד מה היא עושה
לאחר מכן מורידים חלק מהשילתא ושואלים למה היא נכשלה
לאחר מכן יש 2 טבלאות ומבקשים ממך לכתוב כמה שאילתות כמו להעתיק את הטבלה לטבלה חדשה
לעשות group by, למצוא את הפעולה שנעשתה ע"י קוד מספר 9 ועוד
אחר כך יש 4 שאלות על XML,חצי מהן זה שאתה יודע לקרוא
החצי השני זה קצת יותר הבנה למשל מה זה \\ בXML
path\\
החלק השני – ראיון באנגלית – ספר לי על עצמך ועל בעיות שהיו לך במהלך התואר ואיך פתרת, משם גלשנו לשיחה על singleton (הובלתי לשם) ועוד דברים
החלק השלישי – שאלות הגיון
הציגו לי את השאלה על הפתילים – למדוד 45 דקות
שאלת הדליים – דלי של 3 ו דלי של 5 ליטר, יש צורך למדוד 4 ליטר
ורשימה מקושרת בעלת 49 איברים שכל איבר מחזיק מספר 1-50 (ללא חזרות), צריך למצוא איבר החסר
אחר כך שאל מה קורה במקרה של שני איברים חסרים ובמקרה של שלושה
ולאחר מכן שאל אותי מה הציפיות שלי מהחברה ולמה אני מתאים ל HP
HP – QA
היו 5 שאלות
2 שאלות על SQL – לכתוב שאילתת SQL לא פשוטה ומידית ושאילתת עדכון
כתיבת פונקציה רוורס לרשימה להשתדל לא משתנה עזר
החלפת משתנים ללא משתנה עזר
שאלת היגיון – הפרש בין מחוגים
HP – אינדיגו – תכנות
ראיון באינדיגו – כשעה וחצי עד שעתיים:
1. כ 20 שאלות אמריקאיות כלליות ב C++ ו MULTI THREADING
2. 2, 3 קטעי קוד ב C++ ו MULTI THREADING , לפענח את התוצאה + למצוא באגים (כמו חסרה נעילה וכו')
3. לכתוב פונקציה קטנה ב ++C שעושה מניפולציה על מילה (חיפוש ביט, היפוך ביטים וכו')
4. נתון תאור של מערכת קטנה ויש לעשות לה תכנון (ב UML או באופן אחר ).
HP – QA
החלק הראשון בא לראות חשיבה בריאה והבנה של מערכת תקשורת, יש שם שאלות כמו איזה בדיקות הייתה עושה למערכת (למשל בדיקת עומסים כדי לראות שהמערכת יודעת לטפל בהרבה משתמשים או בדיקה שהמערכת מאובטחת)אבל שווה בכלל לעבור בקצרה על מודל השכבות (תדע מה זה שרת DNS)
בחלק השני יש שאלה למיין מערך שמורכב מ 0 1 ו 2 למשל { 22112222001201112000}
עוד שאלה על עצים, יש לך ציורים של עצים ואתה צריך לומר לאילו עצים כל ציור מתאים
מה זה tcp/ip
HP – משרת בדיקת ידנית
1. נתון מערך ממויין ופונקציה find שבזמן O(1)i מוצאת בו ערך, ידוע שעל המערך מבצעים הזזה לפי Pivot מסויים שאינו ידוע, ממש פונקציה שתשתמש ב find, ותמצא באותו זמן ערך במערך החדש.
2. ממש פונקציה המאתחלת מערך בערכים 1..n
3. ממש פונקציה המבלגנת את המערך המאותחל באופן רנדומי
4. חידה: ישנם n גמדים ו n נורות, הגמד הראשון מדליק/מכבה כל נורהבקפיצות של 1, השני בקפיצות של 2, כלומר 1,3,5,7,9,.. וכך הלאהאילו נורות ידלקו לאחר שכל הגמדים ביצעו את פעולתם ?
בהנתן K נורות מה המשמעות של כל מספרי הנורות הדולקות בסוף התהליך ?
5. ממש פונקציונליות של עפרון, נתונה טבלה גדולה שאותה צריך למלא בהתייחסות לבדיקות שיש לבצע על העפרון, והפלט הצפוי לאחר כל בדיקה.
HP – כללי
1) סריקת לינק ליסט וזיהוי מעגל
2) כנ"ל אבל עם כאטש של מימוש הגרף ע"י טבלה ולא במימוש המקובל
3) תוכנית שמקבלת פקודה + טייםאוט ומריצה אותה ומחזירה שגיאה למקרה שהפקודה נכשלה או עבר הזמן
4) מימוש OO למערכת חניונים שמקבלת סוג מכונית ומאתרת חניון מתאים לסוג המכונית
HP – כללי
יש לך מערך 3 צבעים לסדר אותם לפי הצבע נמצא באתר הפתרון
איך תייצג מבנה נתונים למפעל שרוצה לשמור את נתוני העובדים שלו, ככה שתוכל להכניס כקלט את האותיות שמתחילים את השם והמערכת תמצא לך את העובדים
(צריך להשתמש בעצים משהו שנקרא יער כול תא בעץ מצביע לעץ חדש של כול האותיות וכך האלה)נגיד בעץ הרא שון השורש יש את כול האותיות וכול אות מצביע לעץ אחר עם כול האותיות.
מה קורה שיש מליוני עובדים איך אפשר לשפר את מבנה הנתונים
שיפור של העץ הוא בהכנסה של השמות לעץ אם נניח אתה מכניס שם: משה
ושאתה נמצא באות מ אין מילים אחרות אז תתן מצביע כבר לשם משה ככה תחסוך צמתים בעצים
היו שאלות מה זה הורשה איך תזהה ומעיין סיפור מעשה ולצייר את המחלקות שלו
שיטות …
תשובה:
יש מערך שמכיל 26 אותיות
מכול אות יש מצביע לעוד מערך של 26 אותיות וככה מכול אות
שאתה בונה את המבנה נתונים
אתה צריך לשים לב לסדר האותיות להגיע למקום הראשון שאין מילה ולעדכן שם את המילה
לדוגמא המילה הראשונה שאני מכניס היא
big
אני מגיע למערך הראשון במקום 1 ורואה שאין למקום הזה תת עץ אז אני שומר את המילה שם
לאחר מכן מגיעה המילה bigest
התוצאה תיהיה שבמערך הראשי במקום 1 ניצור מערך נוסף באותו מערך במקום של האות
i ניצוק שוב מערך חדש ובמקום של האות g במערך החדש נשים את המילה
big
מששיכים למילה החדשה מה שחסר זה
est
תחת האות g ניצור מערך חדש ובתחת האות e במערך החדש נכניס את המילה
bigest
ראיון שני:
ליצור את המחלקות והשיטות של אוניברסיטה מסויימת
יש קטע קוד לדעת מה הוא עושה ( בשאלה זאת יש לשים לב שמשתנה מחלקה שלא מאותחל מקבל את הערך 0 )
ויש קטע קוד לשים לב מה שגוי בו . לעשות CODE REVIEW
הדברים שיש לשים לב . לממש TOSTRING של אובייקט INBOXING ו OUTUBOXING מיותר !
HP – מהנדס תוכנה
1.להפוך רשימה מקושרת
2.לחשב מספר קודקודים בעץ.
3.שאלה על מחוגי שעון , בהינתן שעה ודקה לחשב את הזוית בין המחוגים.
4.בהינתן מספרים מ1..n ועוד מספר אחד שחוזר על עצמו .
להגיד איזה מספר חוזר על עצמו .
5.להפוך מחרוזת.
HP – QA
ראיון ראשון:
נמשך קרוב לשעתיים.
רצו לשמוע על הלימודים ועל הפרוייקט. הרבה חפירה והרבה כתיבה על הלוח.
אח"כ באה שאלה מקצועית אחת:
ציירו לי מחשבון שרץ על אתר כלשהו. למחשבון יש 2 שורות להכנסת משתנים (נגיד x ו- y) , עוד 5 פעולות חשבון (חיבור, חיסור, כפל , חילוק , שווה) ושורה להצגת הפלט.
צריך לחשוב על כל הבדיקות שהיית מבצע על המחשבון הזה. שרצו דגש על בדיקות פוזיטיביות (דברים שהמחשבון אכן אמור לעשות) ובדיקת נגטיביות (דברים שהמחשבון לא אמור לעשות).
ראיון שני:
שוב חפירה על הלימודים והפרוייקט.
2 שאלות:
1. נתון ערך – צריך למיין אותו בצורה הכי יעיללה. כל מימוש של nlogn יהיה טוב נראה לי. מכיוון שהערכים במערך היו נתונים אני הצעתי מיון מנייה שרץ ב- n אבל לא בטוח שהמראיין הבין מה אני רצה ממני (ככה זה נראה לי)
2. מה קורה כאשר מקישים
http://www.google.com – תאר את התהליך עד אשר דף ה-web מגיע חזרה למחשב + ברגע שהוא מגיע איזה בדיקות צריך להריץ.
HP – כללי
ראיון ראשון זה ראיון פסיכומטרי ופסיכולוגי
ראיון שני :עם ראש צוות ,נתן לי דף שיש בו 10 שאלות הקשורות בתחום הרשתות והאינטרנט
כמו למשל מה אתה יודע על פרוטוקול TCP/IP ומה HTTP וURL וROUTING TABLE וDNS<<<<
אחר כך שאלות תוכה כמו
נתון לך מערך בגודל 100 והוא מכיל מסברים מ 1 עד 100 כאשר אין חזרות ,אם אומרים לך שחסר מסבר אז איך אפשר לגלות אותו ,ואם חסרים שני מסברים אז איך אפשר לגלות אותם
שאלה שניה :במינימום שקילות לזהות מטבע מזויף,שאלה זו מןפיעה בקובץ השאלות
שאלה שלישית : נתונה מחרוזת צריך להציע דרך שתאפשר לנו לצמצם את המחרוזת ובחזרה להחזיר אותה למחרוזת המקורית ,המחרוזת יש בה חזרות למשל על מספרים או אותיות
HP – תוכניתן JAVA
1. כפל של X ו Y ללא שימוש בלולאות או כפל
תשובה: רקורסיה
mult(x,y) = x + mult(x,y-1)
2. הדפסה של עץ בינארי (לא מאוזן) ללא רקורסיה
תשובה: שימוש במבנה נתונים
3. נתונים מספר זוגות עם יחס ביניהם.
יש לסדר אותם במבנה נתונים שיענה על השאלה האם X כלשהו גדול מ Y כלשהו
HP – מהנדס פיתוח ב-C++
1. כתוב פונקציה רקורסיבית שמזהה האם סטרינג נתון הוא פולינדרום
2. נתונה פונ'
void f(int i)
switc(i)
case 1:
// code
case 2:
//code
case 3:
//code
הצע שיטה למימוש f ללא תנאים.
3. כתוב פונקציה המקבלת שתי רשימות ומחזירה רשימה חדשה המכילה את החיתוך של הרשימות הנתונות.
IBM
Test at Trusteer/IBM
א. תלמדו טוב טוב על הפונקציות הווירטואליות, לעומק
ב. 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 – מבחן בית
מבחן בית של 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
בראיון של ה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
1. אתה מקבל פוינטר למערך ממוין ואת גודל המערך.
במערך יש מספרים שחוזרים על עצמם מספר פעמים.
אתה צריך להחזיר את המערך הממוין בלי כפילויות.
2. יש מעין מערכת של בנק מה חשוב שיהיה במערכת בזאת.
הוא כיוון לכך שחשוב לדאוג שיהיה mutex ואז דיברנו
על הסנה בmutex שזה dedlock ועל איך אפשר לפתור
את הבעיה.
IBM – כללי 1
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.
Innovid - אינוביד
Innovid – 2020
Question ( I MADE A IMAGE OF A TEST )
DESIGN A WEB CRAWLER (class diagram +pseudo code).
A web crawler starts with a list of URLs to visit , As the crawler visits it identifies all the hyperlink in the page and adds them to the list OF URLs to visit and then recursively visit them
Innovid – כללי 6
1. תעצב שרת של הודעות כמו whatsapp? כאן הם רוצים לראות איך אתה מעצב מערכת. איזה קומפוננטות יהיו בשרת.
2. תכתוב פונקציה שבודקת האם העץ מאוזן/ מלא, כלומר אם יש לכל אב שני בנים וכל העלים באותו הגובה, כאן לא מספיק רק לבדוק ברקורסיה האם שני הבנים קיימים לכל אב אלא צריך לבדוק האם כל העלים באותו הגובה.
3. יש לך k רשימות ממוינות עם מספרים, כתוב פונקציה שבוחרת את הטווח המינמלי האפשרי כך שבטווח זה יהיה לפחות מספר אחד מכל רשימה. לדוגמא:
רשימה 1 – 1 20 21
רשימה 2 – 2 22 24
רשימה 3 – 30 40 50
אז הטווח המינימלי הוא 21-30 כי 21 מופיע ברשימה ה1, 22 ו 24 מופיעים ברשימה ה2 ו30 מופיע ברשימה ה3
4. כתוב פונקציה שמקבלת גבהים ומשקלים של אנשים בצורה (180,85),(190,60),(150,100),…
ומחזירה את האנשים ומספרם של אלו שאפשר לבנות מהם מגדל כך שהחוק הוא שכל בנאדם שמעל לבנאדם אחר הוא גם רזה יותר וגם נמוך יותר מהקודם. זה לא ממויין אז אני מעריך שצריך אולי למיין לפי גבהים ולפי משקלים.
5. שאלת בונוס – תתאר מחלקה שמספקת מנעול רק כאשר אין deadlock.מצאתי את הפיתרון כאן:
http://stackoverflow.com/questions/5171 … -deadlocks
Innovid – כללי 5
היו 5 שאלות חלק יחסית קלות אבל היו כמה די קשות במיוחד השאלת בונוס.
1) קיימת פונקציה שאומרת אם מחרוזת היא תת מחרוזת של מחרוזת אחרת. בהינתן שתי מחרוזות איך ניתן באמצעות קריאה אחת בלבד של הפונקציה הנ"ל לדעת האם מחרוזת אחת היא סיבוב ציקלי של השניה, למשל "יאיר" "ריאי" תתן תשובה חיובית.
פתרון מוצע: כך את המחרוזת יאיר ותבנה ממנה מחרוזת עם כל הסיבובים האפשריים: "יאיריאי".
ואז תבדוק אם ריאי היא תת מחרוזת שלה.
בונוס:
כתוב פונקציה שמקבלת שני מספרים ומחזירה מקסימום שלהם ללא השוואות.
פתרון מוצע:
בהינתן a b
dif = a-b
sign = 1 if dif is negetive 0 if positive (עושים זאת ע"י פעולות bitwise שנuתנות את ביט הסימן של dif)
ולבסוף החזר
a – (a-b)*sign
Innovid – כללי 4
1. נתון מערך בגודל m x n כך ש m,n לא בהכרח שווים . צריך להדפיס את איברי המערך בצורה ספירלית
כלומר אם נתון
1 2 3 4
5 6 7 8
9 10 11 12
תדפיס:
ZZZ 4 3 2 1 5 9 10 11 12 8 7 6 ZZZ
ה- ZZZ זה רק ליישור שורה. 5 לולאות מהגיהינום.
2. יש n איברים ולכל איבר יש ערך. צריך למצוא מבנה נתונים שאיתו אפשר ב o(1) בלבד לעשות את כל הפעולות הבאות:
1. לשנות ערך של איבר
2. להחזיר ערך של איבר
3. לשנות את כל הערכים של כל האיברים (זה כמובן הקושי פה)
פתרון מוצע: http://stackoverflow.com/questions/10005544/interview-qu%D0%B5stion-data-structure-to-set-all-values-in-o1
שאלה שלישית:
צריך לתאר UML של מעלית.
שאלת הגיון:
אתה מחזיק מגילה ובה K משפטים:
רק משפט אחד מהמשפטים שבמגילה זו הוא נכון.
בדיוק שני משפטים מהמשפטים שבמגילה זו הם נכונים.
בדיוק שלושה משפטים מהמשפטים שבמגילה זו הם נכונים.
*
*
*
כל המשפטים במגילה זו הם נכונים.
אילו מהמשפטים במגילה נכונים???
פתרון מוצע: רק המשפט הראשון נכון.
Innovid – כללי 3
נתונה פונקציה – random 5 שמחזירה מספר רנדומלי בין 1 ל 5 ממש את random 7.
תשובה מוצעת:
int randbit( void )
{
while( 1 )
{
int r = rand5();
if( r <= 4 ) return(r & 1);
}
}
int randint( int nbits )
{
int result = 0;
while( nbits– )
{
result = (result<<1) | randbit();
}
return( result );
}
int rand7( void )
{
while( 1 )
{
int r = randint( 3 ) + 1;
if( r <= 7 ) return( r );
}
}
Innovid – Web Developer
1. The 2 Eggs Problem – Building of 100 floors, You need to find the breakable floor. (google it…)
2. NXN pixels picture, each pixel is 4 bit. You need to build a method for rotating the pic in 90 degree.
3. Data structure of UML: create Class Diagram:
a. some Receivers – first answer
b. one Manager – second answer
c. some Directors –third answer.
If Receiver can't take the call , it moves to Manager,
If Manager can't take the call, it moves to Director
4. Bonus:
Data structure of Two Tress:
T1 – Tree with millions of nodes
T2 – Tree with hundreds of nodes
You need to write algorithm which saying wheatear T2 is sub-tree of T1 ?
T2 is sub-tree of T1 if there is a node in T1 that which all his descending exists
Innovid – כללי 2
שאלות גירסא 1:
1.describe using uml or other programming language an elevator
2.יש לך n משפטים
אומרים לך להגיד לכל משפט האם הוא אמת שקר או אי אפשר לדעת
אבל זה שונה מהמגילות
כל משפט נראה כך:
there is exactly one false sentence
there are exactly two false …
there are exacyly n false
3.
תתארי מבנה נתונים שאת יכולה לעשות את כל הפעולות הבאות בo(1)
יש לך
insert(location,value)
reset(value)
pull(index)
חסרה פה שאלה נוספת ושאלת בונוס(לא זוכרת נדמה לי שהן מופיעות בקובץ גם)
גירסא 2:
עמוד 54(1.1):
Implement an algorithm to determine if a string has all unique characters What if you
can not use additional data structures?
עמוד 54 (1.6):
Given an image represented by an NxN matrix, where each pixel in the image is 4
bytes, write a method to rotate the image by 90 degrees Can you do this in place?
לא סגורה על זה אבל נראה לי שהיתה שאלה:Assume you have a method isSubstring which checks if one word is a substring of
another Given two strings, s1 and s2, write code to check if s2 is a rotation of s1 using
only one call to isSubstring (i e , “waterbottle” is a rotation of “erbottlewat”)
(1.8)
עמוד 78 שאלה 2 היתה
שאלת זריקת ה2 ביצים ממגדל היתה
שאלת בונוס :
עמוד 60 שאלה 4.7 (שני עצים)
חלק מהשאלות והפתרונות מופיעים כאן:
http://www.valleytalk.org/wp-content/uploads/2012/10/CrackCode.pdf
Innovid – כללי 1
יש שתי טבלאות, a ו-b, ב-a יש 30 שורות וב-b יש 20. כמה שורות תקבל בתוצאה של
select * from a,b
תשובה מוצעת: 600.
Intel - אינטל
אינטל – ROC
ביום הראשון:
1.מבחן באנגלית – רמה קלה יחסית , טקסט בנושא חיילות בצה"ל כמו שכבר כתבו פה לפני.
2.מבחן טכני אמריקאי כנראה ברמה של שנה ראשונה של הנדסאי חשמל
אין מה להתכונן הם לא מצפים שתצליחו בו יותר מידי (אני ניחשתי הכל ועברתי שלב)
3.מבחנים פסיכוטכניים על מחשב של פילת: מתמטיקה – הסקה מתרשים, עיבוד צורות, נורות ומתגים דלוקים וכבויים ולגלות איזה מתג לא תקין, השוואת מחרוזות ואולי עוד משהו שאני לא זוכר.
יום למחרת כבר הודיעו שעברתי וצריך להגיע למבחנים נוספים עוד יומיים
מה שהיה בשלב השני:
1.דינמיקה קבוצתית
2.מבחן וילון – נמצאים עם צורה מאחורי וילון וצריך להסביר ל-2 מועמדים אחרים איך להרכיב אותה מצורות גיאומטריות שמונחות לפניהם. פעם אתם מאחורי הוילון ופעם או פעמיים אתם בצד שמקבל את ההוראות.
אחרי השלב הזה סיננו חלק מהאנשים, השלב הבא:
חלוקת קשב: מקשיבים באוזניות לתוכנית רדיו ותוך כדי התוכנית יש קול שמקריא תרגילים מתמטים פשוטים יחסית
במקביל לפתרון התרגילים צריך להרכיב צורה מסוימת שמונחת לפניכם מקוביות
בצבעים שונים.
אחרי השלב הזה סיננו עוד אנשים
מי שנשאר מגיע לראיון מול ראש צוות.
ראיון בעיקר אישי בלי שאלות מקצועיות
אולי גם שאלות היגיון תלוי במראיין
לגבי מבחן הרדיו :
שמים לך אוזניות עם מוסיקה וברקע נשאלים תרגילים מטמטיים, פעולות בסיסיות .
אתה אמור להשיב עליהם תוך כדי שאתה מרכיב צורות בקוביות ע"פ דוגמא .
משהוא בסיגנון משחק הטנגם רק עם 9 קוביות בעלות פאות עם צבעים וצורות שונים .
צאו מנקודת הנחה שלא תצליחו ליפתור את כל התרגלים אך יש לומר בצורה ברורה את התרגיל ששמעתם (לדעתי הפיתרון פחות חשוב אפשר להיות קרובים לפיתרון שואלים 5.3 כפול 2 אז למי שאין מחשב בראש יגיד 10.5 או 11) .
לגבי הצורות תנסו לפתור לפחות 4 פאזלים
אינטל – סטודנט להנדסת חשמל ואלקטרוניקה
ראיון ראשון:
שאלה 1:
תחילה שאלו אם אני מכיר את מערכת ההפעלה LINUX ספציפית PERL
לאחר שהשבתי שלא,ביקשו ממני לכתוב סקריפט שמקבל מהמשתמש 3 משתנים בודק אם סכומם מתחלק ב7 ללא שארית אם כן מדפיס BOOM אם לא מדפיס את סכומם,עזר:GOOGLE
שאלה 2:
מערכת תקשורת בין מעבד לזכרון,תחילה לצייר את קווי הכניסה והיציאה בין הרכיבים
לאחר מכן ליצור בשפת C++ תוכנית שתבדוק אם בין קווי הכתובת או המידע יש נתק או קצר,כאשר נתק המוצא בגבוה,כאשר קצר בין הקווים המוצא יורד לנמוך
שאלה 3:
ליצור מערך רנדומלי מהמספרים 1 עד N
ראיון שני:
היו הרבה שאלות אני ארשום את אלו שאני זוכר
שאלה 1:
אתה סוחר שבבעלותו משקל מאזניים וברשותך סדרת משקולות בלתי מוגבלת מ1 קילו עד 40 קילו ברזולוציה של קילו,1,2,3,4…40
אתה שוקל סחורה ברזולוציה של קילו,מהו הסט המינימלי שתדרש לקחת איתך כדי שתוכל לשקול סחורה מ1 ועד 40 קילו בדיוק של קילו.
שאלה 2:
שטוטית קצת,שאלו אם קבל בהגדרתו הוא מעגל פתוח,איך קיים זרם?
שאלה 3:
ליצור בעזרת רכיב ROM 2X4 רכיב הממש and,or,XOR,not(bit wise) בין שני ביטים
שאלה 4:
צור תוכנית בC++ שמקבלת מספר בגודל של עד 7 ביטים ומוציאה את סכום האחדות במספר.
ועוד מלא שאלות קטנות הראיון לא כלל שאלות אישיות לכן הוא היה מפוצץ בהרבה מאוד שאלות קטנות
תשובות:
ראיון ראשון:
שאלה 1:כדי לעשות מה שהם ביקשו צריך דברים בסיסיים
סינטקס בסיסי של תוכנית,אופרטורים,סינטקס קלט ופלט ותנאי הסתעפות.
ברגע שיש לך את כל אלו הפתרון פשוט בכל שפה שהיא.
שאלה 2:
אתה טוען חיצונית לזיכרון בכתובת 0 את הערך FFFF
כדי לבדוק קצר,אתה מריץ את המספרים 1,2,4,8,16,32,64
אם באחד מהם הערך הנשלף הוא FFFF אז יש קצר כי הגעת לכתובת 0 בטעות
כדי לבדוק נתק אתה פשוט מנסה לקרוא מכתובת 0,אם לא קיבלת את FFFF זה אומר שיש נתק והגעת לכתובת אחרת
שאלה 3:
ממלא את המערך בסדר עולה מ1 עד N
לאחר מכן עובר תא תא ועבור כל תא מגריל מספר מ1 עד N בעזרת פונקצית RAND
אתה מבצע החלפה של התא עם התא שהוגרל המספר שלו
ראיון שני:
שאלה 1:
סט מינימלי 1,3,9,27
הטריק הוא לחשוב על הנחת משקולות על שני צדדי המאזניים ובכך לכסות טווח גדול יותר
שאלה 2:
קבל הוא נתק בהגדרתו,התנועה של הזרם היא בעצם תנועה של מטענים מהלוח השלילי לחיובי ובעצם יצירת המטען על השפה של הקבל ובכך לקבל את המתח של המקור עליו,לכן קבל בDC במצב היציב הוא נתק מאחר ויש שיוויון פוטנציאלים עם המקור,במקור AC הקוטביות של הקבל משתנה בהתאם לתדר המקור ולכן יש זרם חילופין.
חפרתי על זה יותר בהקשר של שדות אלקטרומגנטים,כי זה הניתוח הנכון יותר,אבל זה הניתוח המופשט
שאלה 3:
אתה פשוט טוען בROM את הערכים של הפעולות
0001
0111
0110
1100
כאשר and,or,XOR,not(a0
כאשר הכניסות הם קווי הכתובת a0,a1
בכל כתובת בזכרון יש את כל הפעולות לפי הסדר הנ"ל
שאלה 4:
אתה פשוט סוכם את השארית מחלוקה ב2
ולאחר מכן מחלק את המספר ב2
וממשיך ככה עד שהמספר מתאפס
התוצאה היא מספר האחדות.
אינטל – הנדסת תוכנה
בראיון ראשון שאלו אותי:
1. נתונה רשימת קבצים ובכל אחד מהם #include לקבצים אחרים. יש לך פונקציה שבאמצעותה אתה יכול לטעון את כל קבצי ה-include מקובץ נתון. צריך לכתוב פונקציה שטוענת את כל קבצי ה-include בהינתן קובץ source מסויים. יש למנוע כניסה ללואה אינסופית הנגרמת מקריאת מעגלית של include.
פתרון: ע"י רקורסיה
בראיון שני:
1. לממש cashe בגודל n, המבוסס LRU. כל כניסה ל- cashe מורכבת מכתובת ותוכן.
פתרון: hash table: ה-key הוא הכתובת. המיפוי נעשה ע"י פונקציית גיבוב של mod. בכל תא מחזיקים את התוכן שמופה לשם ברשימה משורשרת. חוצמזה מחזיקים רשימה דו-כוונית הממוינת לפי הזמן (ואז בטבלת הגיבוב יש הצבעות גם בין הרשימות השונות שבכל תא).
2. יש מגבלת זכרון של 12 ביט. כל פקודה מורכבת מכתובת ומהוראה.האם אפשר לתמוך בכל הדרישות הבאות:
(פה נותנו לי 4 דרישות שאני לא זוכרת את כולן. דרישה היא מהסגנון: כתובת מורכבת מ-3 ביט והוראה מ-4 ביט).
פתרון: אפשר לתמוך בכולן ובאחרונה רק בחצי מהדרישה (כדי להגיע לזה פשוט צריך להראות להם חישוב של כל האופציות השונות. יש מצב בו שבעקבות 2 דרישות אתם תצטרכו להשתמש ב-11 ביט, אז תשתמשו בביט הנותר כביט מציין, 0- פקודה ראשונה, 1- פקודה שנייה). אח"כ ביקשו ממני להוכיח את זה שא"א לתמוך בכל הדרישות, אז פשוט צריך לחשב את גודל הזיכרון הנדרש כדי לתמוך בכול הדרישות, ומקבלים שזה 12^2 + 8, ובפועל יש רק 12^2 זכרון, ולכן א"א לתמוך בכל הדרישות.
אינטל – Firmware Engineer
שאלות על קורס מערכות הפעלה. איך מסנכרנים תרדים וכד'.
שאלות לגבי שימוש בזכרון – האם כדאי להגדיר זכרון על ה "סטאק" או בצורה דינמית. למה יש יתרון.
יש איזו "קופסא" עם API שנותן כל פעם בייט אחד עם מידע, יש שני ביטים שדולקים בקצה, אחד מציג אם ההודעה הסתיימה, ואחד מציג האם יש עוד מידע. משהו כזה. צריך לכתוב קוד שיטפל בקבל הודעות.
יש מערכת שמדליקים אותה, מעביר נתונים לפירם-וור, וזה לוקח הרבה זמן, איך אפשר ליצור מערכת שמעדכנת רק שינויים.
אינטל – כללי 3
1. SQL: נתונה טבלה CITY)) בעלת שמות ערים (לדוגמא ת"א, חיפה, ירושלים).
קיימת פונקציה שכאשר שולחים לה עיר מוצא ועיר יעד – היא מחזירה את המרחק.
הדרישה לבנות שאילתת SQL אשר מחזירה טבלה בה יש עמודת מוצא, עמודת יעד, ומרחק.
כדוגמא:
מוצא | יעד | מרחק
ירושלים | תל-אביב | 30
פיתרון:
SELECT O.NAME as Orig, D.NAME as Dest
FROM CITY O, CITY D
WHERE (Orig<Dest)
אינטל – כללי 2
שאלות תיכנות משולב עם מבני נתונים
שאלה 1 לגבי מימוש של מילון כלשהו בצורה יעילה
שאלה 2 לגבי ספירה של 4 ביטים כל פעם בבסיס אחר (בסיס 2,3,4 וכו')
אינטל – כללי 1
1. נתונה קופסה הממיינת 2 מספרים – מצד אחד מקבלים 2 מספרים מהצד השני מקבלים את הגדול מבניהם והקטן )
בנה קופסה הממיינת 4 מספרים.
כעת נתון שאחד הקופסאות במערכת שבנית תקולה. התקלה יכולה להיות או שהמוצא הוא כמו הכניסה או שהקופסה הופכת את הסדר (בלי קשר לגודל).
הבא מספר מינימלי של סדרות מספרים שיבדקו האם המערכת מכילה רכיב פגום.
לבדוק אם היא הופכת פשוט תכניס 1234 ממוין
לבדוק אם היא מעבירה בלי למיין תכניס 4321 ממוין הפוך
ולמעשה מספיק להכניס את האופציה השניה בלבד ואם המוצא לא תקין אז בהכרח המערכת תקולה
2. בנה מכונת מצבים המקבלת ביטים (1 או 0, כל פעם נכנס ה-LSB) ומוציאה 1 אם המספר מתחלק בשלוש. תאר בקצרה איך לבנות את המעגל.
כעת רוצים לדעת האם המספר מתחלק ב-12. מה צריך לבדוק.
איך נבדוק האם מספר מתחלק בשלוש אם כל פעם נכנס ה-MSB.
Marvell
Marvell – הנדסאי Layout
Marvell – סטודנט מהנדס אלקטרוניקה 2
1. בחן את פקודת המאקרו הבאה ותגיד אם יש בה בעיות:
#define MULTIPLY(x,y) x*y.
2. נתון בית בעל 8 סיביות מה הדרך להפוך אותו בrealtime כך שמספר הבא:
X7 X6 X5 X4 X3 X2 X1 X0
יהיה כך:
X0 X1 X2 X3 X4 X5 X6 X7
(פתרון: צריך להבין שהבית מייצג מס' בין 0 ל256 ולכן יש לבנות בתוכנה מערך בן 256 תאים שבכל תא נמצא הערך שאמור להתקבל אחרי ההפיכה כך שהמערכת פשוט תקרא את המס' ותתרגם אותו לתא מסויים במערך והוא כבר יתן בדיוק את המס' ההפוך)
3. כעת המס' הנתון הוא בן 32 סיביות ולבנות מערך בגודל של 4 גיגה זה המון זיכרון אז איך אפשר עכשיו לעשות את זה ב realtime?
(פתרון: את המס' הזה נוכל לחלק ל4 מספרים בני 8 סיביות כל אחד ולהכניס אותו למערך שבנינו קודם ורק להחליף את הסדר של המערכים שנשלחו).
Marvell – סטודנט מהנדס אלקטרוניקה 1
1) מערכות ספרתיות:
נתונה מערכת בעלת שתי כניסות, בכניסה 1 ישנו X בעל 4 סיביות ובכניסה 2 ישנו X+2 גם כן בעל 4 סיביות.
המוצא של המערכת הוא X+1 בעל 4 סיביות.
צריך לממש את המערכת הנ"ל מבלי להשתמש במחברים או מחסרים.
פתרון: אם X הוא זוגי אז במוצא ניתן את X כאשר הסיבית הLSB שלו עם NOT.
אם X הוא אי זוגי אז במוצא ניתן את X+2 כאשר הסיבית ה-LSB שלו עם NOT.
מימוש עם MUX כאשר LSB של X היא הכתובת הבוחרת.
2) נתון מערך בגודל N של מספרים אי שליליים.
צריך למצוא 5 מספרים הכי גדולים אבל כך שהם לא יהו שכנים במערך. (כלומר אף זוג מחמשת המספרים האלה לא יכול להיות צמוד במערך המקורי)
הראה דרך פתרון.
פתרון: לוקחים מערך של אינדקסים מ-0 עד N-1 וממינים את המערך המקורי בסדר יורד.
המספר הכי גדול הוא המספר הראשון, ואז לפי זה בודקים את המספר השני במערך הממוין אם הוא השכן של הראשון, אם כן אז מדלגים למספר השלישי ומבצעים את
אותה הבדיקה אם לא אז מצאנו עוד מספר ועוברים למספר השלישי וכך הלאה עד שמגיעים ל5 מספרים הכי גדולים שהם לא שכנים.
3) (סיבוך של 2)
כעת בגלל אילוצי המערכת לא ניתן לרוץ על המערך המקורי יותר מפעם אחת.
השאלה נשארת זהה. רמז: ניתן להשתמש במערך עזר אך אסור להעתיק את כל המערך המקורי למערך עזר (ואז בעצם לפתור כמו מקודם)
פתרון: נקח מערך בגודל של 15 כך שבתא אחד נוכל לשמור גם את הערך של תא מסוים וגם את האינדקס שלו.
נמצא בריצה אחת על כל המערך המקורי 15 מספרים הכי גדולים, נשמור אותם ואת האינדקסים שלהם במערך העזר.
וכעת הגענו למצב שבמקרה הכי גרוע יש לנו 2 שכנים למספר אחד הכי גדול. ובגלל שיש לנו 15 הכי גדול אז נוכל למיין את מערך העזר ולבחןר על בטוח 5 מספרים הכי
גדולים שהם לא שכנים
4) המשך:
מערך עזר יכול להיות יותר קטן מ-15! מהו גודלו המינימלי כך שעדיין יעמוד בדרישות?
פתרון: 13
Marvell – כללי 1
ביקשו שאפרט על פרוייקט שעשיתי.
השאלות שהיו:
1. כתוב פונקציה המקבלת מספר המורכב משמונה ביטים. יש לבדוק האם כמה ביטים דלוקים במספר. לדוג' עבור 01001010 התשובה תהיה 3
2. כתוב פונקציה המקבלת מספר המורכב משמונה ביטים. להחזיר את המספר ההופכי . לדוג' עבור 01001010 התשובה תהיה 01010010
3. יש לתאר מכונת מצבים אשר מקבלת מחרוזת אשר מסתיימת ב "\N" ומורכבת ממספר מילים. המילים מופרדות באמצעות רווח אחד או יותר. יש להחזיר את מספר המילים.
פתרון:
עבור שאלות 1-2: הם רצו לראות שאני משתמש בטבלה צדדית ולא מבצע מכל מיני חישובים מסובכים
Marvell – ואלידציה
לכתוב פונקציה שמקבלת שני מערכים ממויינים ומחזירה מערך גדול ממויין שמכיל את שני הקטנים.
– שאלה מפגרת, אבל אז הם שואלים "בתור איש בדיקות, איך היית בודק את הפונקציה הזאת?"
צריך לראות שהבדיקות שלך מכסות כל שורה בקוד ושאתה מקפיד לבדוק גם מקרי קצה כגון: מערך בגודל 32^2 (גודל של אינט) ושאתה לא מעמיס על הסטאק של הפונקציה שקראת ממנה ועוד…
עוד שאלות ששאלו: 1. אם אני מכיר מעגלים שמעבירים מAC ל DC? איך ממשים אותם? באיזה גובה יהיה ה DC?
2. אם יש מכשיר שמקבל מתח מסויים ומוציא מתח קטן ממנו לעומס, ללא תלות בהתנגדות הכניסה של העומס?
3. יש מכשיר שמקבל 5V ומוציא V10? איך הוא עושה את זה?
Mellanox - מלאנוקס
Mellanox – Firmware
1. ממש פונקציה שמקבלת מספר עשרוני ומדפיסה את ערכו הבינארי.
2. בהינתן רשימה מקושרת עם מצביע לאיבר הראשון בלבד. החזר רשימה שהיא אותה הרשימה שקיבלת רק בסדר הפוך, כלומר אם הסדר היה
head–>11>22>33
אז אחרי הוא יהיה:
head–>33>22>11
אסור להזיז האיברים עצמם, רק מצביעים.
יש לפתור ב-C.
פתרונות מוצעים:
/*
*Q1.Write a function in C for printing to screen the binary value of a given decimal value.
*/
#include <stdio.h>
#include <string.h>
long dec2bin(int dec){
if(dec<0){ printf("MINUS: (-)"); dec=-dec;}
if(dec==0 || dec==1) return (long) dec;
return (long) (10*dec2bin(dec>>1) + (dec & 1));
}
main(){
int arg=-300000;
printf("%ld is the binary value of the decimal number: %d", dec2bin(arg), arg);
}
/*Will result: MINUS: (-)1001001001111100000 is the binary value of the decimal number: -300000*/
/*
*Q2. Reverse a given Linked List. Only pointers changes are allowed.
*/
#include<stdlib.h>
#include<stdio.h>
typedef struct linkList {
int value;
struct linkList * next;
} Node;
void printLinkedlist(Node *head){
printf("\nHead->");
for( ; head; head = head->next)
printf("%d->", head->value);
printf("NULL\n");
}
Node* reversedLink(Node *head){
if( !(head && head->next) ) return head;
Node *reversedhead = reversedLink(head->next);
head->next->next = head;
head->next = NULL;
return reversedhead;
}
void main() {
Node * curr, * head;
int i;
head = NULL;
for(i=1; i<=10; i++, head=curr)
*(curr = (Node *) malloc(sizeof(Node))) = (Node) {i, head};
printf("\nBefore:");
printLinkedlist(head);
printf("\nAfter:");
printLinkedlist( (head = reversedLink(head)) );
}
/*Will result:
Before:
Head->10->9->8->7->6->5->4->3->2->1->NULL
After:
Head->1->2->3->4->5->6->7->8->9->10->NULL*/
Mellanox – חידות הגיון ותכנות
ראיון מחולק לשלושה חלקים:
1) שני מראיינים שואלים שאלות עליך.
2) אחד מהם מספר על החברה.
3) חלק שלישי זה שאלה לוגית ושאלת קוד:
1) שאלה לוגית:
יש שלושה כדים אשר מכילים שני כדורים. צבעי הכדורים יכולים להיות:
אדום אדום
אדום שחור
שחור שחור
כדים הנ"ל אם תויות אשר כיתוב עליהם משקר.
כד ראשון:
כיתוב על התוית – אדום אדום
כד שני:
אדום שחור
כד שלישי:
שחור שחור
צריך למצוא מינימום הוצאות כדי לדעת איזה כדורים נמצאים בכדים בוודאות.
פתרון:
יש שלוש פתרונות לתרגיל הזה וצריך להציג אותם וכמובן להסביר למה בחרתם בפתרון הזה, מה המינימום ההוצאות בכל פתרון.
פתרון ראשון:
נניח הוצאנו כדור אדום מכד ראשון:
בכד ראשון יהיה אדום שחור
בכד שני – שחור שחור
בכד שלישי – אדום אדום
אם הוצאנו מכד ראשון כדור שחור:
כד ראשון – שחור שחור
כד שני – אדום אדום
כד שלישי – אדום שחור
זאת אומרת במקרה הזה יהיה שני הוצאות כדי לדעת איזה כדורים יש בשאר הכדים וזה סיכוי של 50 על 50.
פתרון שני:
דומה לפתרון הראשון רק פה אנחנו צריכים הוצאה אחד. וזה סיכון 50 על 50.
פתרון שלישי (פתרון הנכון):
אנחנו נוציא כדור אדום מכד שני ולכן:
כד שני – אדום אדום
כד ראשון – שחור שחור
כד שלישי – אדום שחור.
המלצות:
תחשבו על תרגילי לוגיקה היטב, על תמהרו (מה שעשיתי), זה לא אמור לקחת יותר מ-5-10 דקות.
2) שאלה על קוד:
נתונה הגדרה של הפונקציה הבאה –
char *str pbreak(str1*, str2*);
ומספר דוגמאות לקריאת פונקציה –
str1 = 'Hello Mellanox!';
str2 = '123!';
str2 = '123';
str2 = 'olle';
עליכם להסביר מה מקבלת ומחזירה פונקיה ומה תהיה ב-str2 לאחר שפונקיה תסיים לעבוד.
גם כן צריך להסביר כל שלב שאתם עושים.
אחרי זה מבקשים לכתוב פונקציה זו ב-C או ב-Python בכמה שפחות שורות קוד.
צריך גם להסביר סיבוכיות למקרים ספיציפיים שיכולים לשאול.
Mellanox – INFORMATIONS SYSTEM ENGINEER
1. כתוב פונקציה המזהה אם מספר הוא פולינדרום
2. שאלה ידועה על איך מזהים את המספר החסר במערך מספרים מ 1 עד N וגם אם חסרים 2 מספרים
Mellanox – BOARD DESIGN
נתונים שני סוגי רכיבים עם שתי כניסות ויציאה אחת שזו טבלת האמת שלהם.
יש ליצור מרכיבי איי ו- בי שער קסור
A1 A2 F B1 B2 F X1 X2 F-XOR
0 0 0 0 0 Z 0 0 0
0 1 Z 0 1 Z 0 1 1
1 0 Z 1 0 Z 1 0 1
1 1 Z 1 1 1 1 1 0
Mellanox – Design Verification Engineer
שאלה 1:
נתון רכיב עם 3 כניסות ו-2 יציאות.
הרכיב מוציא מספר 'אחדים' שיש בכניסה.
למשל, עבור כניסות 001, 010, 100 – ביציאה יהיה 01 ('אחד' אחד)
עבור כניסות 011, 101, 110 – ביציאה יהיה 10 (שני 'אחדים')
עבור כניסה 111 – ביציאה 11 (שלושה 'אחדים')
מהרכיבים כנ"ל בלבד תבנה רכיב עם 7 כניסות ו-3 יציאות
פתרון:
ישנם סה"כ 4 רכיבים:
שני רכיבים (רכיב1 ורכיב 2) מקבלים כניסות X1-X6
מוצא שלהם זה Y1-Y4
רכיב 3 מקבל כניסות : Y2, Y4 ו-X7
מוצא של רכיב 3: Z3, Z4
רכיב 4 מקבל כניסות: Y1, Y3 ו-Z3
מוצא של רכיב 4: Z1, Z2
מוצא של הרכיב היעד: Z1, Z2 ו-Z4
שאלה 2:
ישנם 25 סוסים.
מהו מספר מרוצים הקטן ביותר הנדרש כדי לבחור 3 סוסים המהירים ביותר.
בכל מירוץ יכולים להשתתף עד 5 סוסים.
תשובה: 7 מירוצים.
פתרון:
שלב 1: מריצים 5 מרוצים עם כל הסוסים הניתנים (נמספר מירוצים מ-1 עד 5)
בגמר המירוצים כל סוס מקבל מספר אישי: 'מקום' – 'מספר מירוץ'
למשל שלושה מנצחים במירוץ 4 יהיו: 4-1, 4-2, 4-3
מסקנת ביניים: עקרונית אותנו מעניינים 3 סוסים המנצחים בכל מירוץ – סה"כ 15 סוסים.
שלב 2: מכניסים למירוץ 6 את חמישה הסוסים המנצחים בכל מירוץ (סוסים 1-1, 2-1, 3-1, 4-1, 5-1)
המנצח במירוץ 6 הוא המהיר בין כל ה-25 – המקום הראשון המוחלט.
ועכשיו הסופר טריק – לבחור מי ישתתף במירוץ השביעי והאחרון שייקבע את מקום השני והשלישי.
שלב 3:
נניח המנצח הגדול (במירוץ 6) הוא במקור המנצח במירוץ 4 (4-1 == 6-1).
כלומר המנצח הגדול ניצח את סוסים: 1-1, 2-1, 3-1, 5-1
ברור לגמרי שסוס 2-1 מהיר יותר מסוס 2-2.
וסוס 2-2 מהיר יותר מסוס 2-3.
כלומר סוס 2-3 יכול לזכות לכל היותר במקום רביעי כי 4-1, 2-1 ו-2-2 בוודאות מהירים ממנו.
לכן 2-3 לא ממשיך תחרות.
באותו אופן יורדים מתחרות סוסים 1-3, 3-3, 5-3
סוס 4-3 עדיין לא יורד מתחרות ונחשב למועמד כי ייתכן וכל הסוסים הכי מהירים היו במירוץ 4.
עכשיו נתבונן בסוס 6-2 – סוס במקום השני במירוץ 6.
בזמנו סוס 6-2 היה המנצח במירוץ שלו. נניח זה סוס 5-1 (5-1 == 6-2)
סוס 5-1 הפסיד לסוס 4-1, אבל ניצח את 1-1, 2-1, 3-1
מה עכשיו ניתן להגיד למשל על סוס 3-2?
שישנם לפחות שלושה סוסים מהירים ממנו: 4-1, 5-1, 3-1
כלומר סוס 3-2 יורד מתחרות כמו גם סוסים 1-2, 2-2.
נניח סוס 6-3 == 3-1.
מכאן סוסים 1-1, 2-1 שהפסידו בגדול במירוץ 6 לא ישתתפו גם
נותרנו עם 5 מועמדים למירוץ 7 ואחרון: 5-1 (6-2), 3-1 (6-3), 5-2, 4-2, 4-3
שניים הראשונים במירוץ 7 יתמפו למקומות שני ושלישי בהתאם בתחרות הכללית.
Mellanox – סטודנט בצוות layout דיגיטאלי ב-backend
בראיון הראשון שאלו על הפרוייקט שעשיתי, על התוכנות שהשתמשתי (vistuoso).
ביקושו ממני לצייר סכמה של שער nand, טבלת אמת שלו ואז את ה-layout שלו.
ביקשו ממני להסביר מה השיקולים שעל פיהם ציירתי את הlayout, איך משפיע חיבור metal כזה או אחר (התשובה היא על ההשהייה מכיוון שככל שהמתח ארוך יותר ההתנגדות גדולה יותר וזה משפיע על ההשהייה של המוצא)
בנוסף שאלו שאלת הגיון:
נתונים שנים חוטים שכל אחד בוער דקה. איך ניתן למדוד 15 שניות.
הפתרון הוא שמדליקים חוט אחד משני הצדדים ואת החוט השני בצד אחד, כשהחוט הראשון נשרף עברה חצי דקה. כלומר החוט השני יכול לבעור עוד 30 שניות לכן נדליק גם את צידו השני והוא ישרף תוך 15 שניות.
בראיון השני שוב שאלו על layout של nand , ביקשו לצייר, להסביר את השיקולים של קביעת גדלי הטרנזיסטורים, שאלו על גודל של טרנזיסטור שקול של שני טרנזיסטורים בטור ובמקביל,
והרבה חפירות על ה-layout.
אחרי זה נתנו לי מעגל עם גשר דיודות כך שמשמאלו יש מקור מתח V1 שהוא 5 וולט, מימינו יש מקור מתח V2 שמשתנה בין 0 ל 5 וולט, למעלה יש מקור זרם I1 ולמטה מקור זרם I2 (הייתי מעלה שרטוט אבל אני לא יכול לצרף קובץ להודעה)
שאלו אותי מה יהיה הזרם על מקור המתח V2 (הימני) כתלות במתח של אותו מקור המתח V2.
Mellanox – DFT
1. שאלו על הפרויקט שעשיתי , צריך לדעת אותו טוב .
2. נתנו לי שאלה בתכנות לבנות פונקציה שמקבלת מספר ובודקת האם הוא פולינדרום(מימוש הפונקציה היה ב C אבל תכלס זה לא היה משנה לו באיזה שפה גם פסודו-קוד היה בסדר(שאלתי אותו) )
3. שאלת הגיון של מינימום מקסימום: ישנה קופסה שמקבלת 2 מספרים והפלט שלה הוא שני מספרים כאשר האחד הוא המקסימום והשני המינימום. ביקשו ממני לממש קופסה שמקבלת 4 מספרים וממיינת אותם(המימוש בעזרת הקופסא של שני המספרים), לאחר שפותרים את השאלה ביקשו לממש קופסא של 6 מספרים.
Mellanox – חידות הגיון
1. בטורניר משתתפות 100 קבוצות. קבוצה שמפסידה יוצאת והמנצחת משחקת מול השניה. כמה טורנירים יהיו?
2. חיבור נקודות: 5 קבוצות של 3 נקודות, יש לחבר בין הקווים כך שלא יחתכו זה את זה.
3. ריבוע המורכב מ – 9 נקודות (3 למעלה, 3 באמצע ו -3 למטה) – יש לחבר ביניהם בקו אחד.
Mellanox – מפתח Back End
1. יש לצייר layout של טרניסטור.
2. מעבר בין תצוגת רוטון לפולי – למה שקול מקור המתח המחבר אותם?
3. מעגל המחובר לארבעה נגדים בצורת מעוין. מה הnתח בין שתי נקודות?
4. להסביר איך נראית דיודה אידאלית (ציור IV).
5. מכונת מצבים – יש להסביר מה היא עושה.
Microsoft - מיקרוסופט
מיקרוסופט – כללי 2
1. פונקציה וירטואלית ואבסטרקטית, עם מחלקת אב ומחלקה יורשת.
2. אלגוריתמים
3. מבני נתונים.
מיקרוסופט – כללי 1
1. להוריד אותיות כפולות ממחרוזת: להפוך ABBC ל ABC
2. לשנות את מחלקת String Builder בכך שתאפשר ToString() ב 0 של 1
3. אלגוריתמם למרחקים קצרים (נו באמת, מי זוכר)
4. סידרת פיבונאצי, ולעשות לזה אופטימיזציה
הקוד עבור הסרת תווים כפולים ממחרוזת בO(N):
void delRep(string &s) {
int j=1, i=0;
while(s[i] != '\0' && s[j] != '\0') {
while(s[j]==s[i]) {
j++;
}
s[i+1] = s[j];
i++;
j++;
}
s[i+1]='\0';
}
מיקרוסופט – ראיון לקבוצת ה TELECOM
שלוש שאלות:
1. לממש STRLEN ואח"כ להציע רעיון להצגת מחרוזת באופן שונה כך שנוכל לדעת את האורך ב(1)O.(כאשר הCHAR הראשון יכיל את האורך).
2.השאלה המפורסמת עם המילון בפלאפון ואיך זה עובד\ מבנה נתונים מתאים(עץ)
3.לממש MALLOC וFREE כאשר ההבדל זה שכל הקצאה\שחרור יהיו באורך 10 בתים.(לחלק את מרחב הזיכרון לכתובות בקפיצות של 10 ולהכניס למחסנית משותפת).
Optimal
ראיון באופטימל עם מחשב מהבית
בהתחלה זה כמה שאלות של מבני נתונים
1.לחקות מבנה של הצעת שמות בטלפון (כמו הטלפונים הישנים) כלומר 323 יציע DAD..
2. נותנים לך תוכנה כתובה ואתה צריך לשנות אותה באופן הכי טוב שאתה יכול.. OOP ,PATERNS, וכו'
לגבי ריאיון ראשון שיש באמצעות מבחן מחשב מהבית:
22 שאלות אמריקאיות, יש 30 דקות. שאלות קלות אבל חלקן מתייחס למשהו מאד נקודתי אז או שאתה יודע
או שלא או שאתה מנחש
גם שאלות מחשבה וגם ידע. c#, xml, OO
מיהרתי לסיים אותו, אבל בדיעבד הייתי צריך צריך למדוד זמן ולבדוק דברים שלא הייתי בטוח לגביהם און ליין (:
אני ממש לא בעד חברות שמתחילות עם מבחן מבלי לדבר איתך, כנראה כתוצאה מטראומת צ'קפויינט. זה היה ריאיון ראשון שלי אי פעם והצלחתי להעביר בסביבות ה-1000 מקרי בדיקה ורק אחד לא עבר ובגלל זה לא העבירו אותי.
Philips - פיליפס
Philips – כללי 2
1)נתון אוסף של n מקטעים [a_i,b_i] צריך למצוא מקטע בה יש מקסימום חיתוכים של מקטעים נתונים ולהחזיר את המספר הזה .למשל [0,5],[0,1],[2,4],[3,5] אז מקטע בה יש הכי הרבה חיתוכים היא [3,4] שם יש 3 ,ז.א. פונק' תחזיר 3.
2)לעשות design של חיפוש מילה במערכת קבצים.
3)מה זה abstract class vs. interface
4)לעשות design של מערכת לפתרון puzzle
5)איך לכתוב קוד שיגיד האת מערכת big-endian או little-endian?
6)בהינתן מערך לא ממוין של מספרים שלמים ומספר sum יש למצוא בסיבוכיות מינימלית כל הזוגות מספרים במערך שסכומם שווה לsum
7)איך להפוך רשימה מקושרת?
8)איך בהכי מעט זכרון לעשות mask לסדרה של voxels?
9)הבדל בין תהליך וחוט?
Philips – כללי 1
Philips – סטודנט Software
הראיון הראשון הוא פחות משעה, שואלים שתסביר קצת על עצמך ועל מה שעשית ושאלת חידה אחת שצריך לממש:
נתונות 2 רשימות מקושרות וידוע שבשלב כלשהו הן מתחברות לרשימה אחת. המשימה היא למצא את הנקודה של החיבור.
פתרון:
צריך לשים לב שלעבור צומת-צומת במקביל על 2 הרשימות ולבדוק אם הן מצביעות לאותו מקום יעבוד רק אם שתי הרשימות באותו אורך.
אז מה שאפשר לעשות זה לחשב את האורכים של שתי הרשימות אם הן באותו אורך- סיימנו. ואחרת לצמצם את ההתחלה של הארוכה יותר עד האורך של הקצרה ואז לעשות כמו קודם.
וקצת שאלות כלליות על OOP.
ראיון שני:
אין שאלות שצריך לממש רק שאלות על תכנון של מערכות בOO, בודקים בעיקר איך אתה חושב
Rafael - רפאל
Rafael – מחלקת צב"דים
1. יש לך רכיב min_max שמקבל שתי כניסות ומחזיר ברגל אחת את המקס ובשניה את המינ'. אתה צריך לבנות רכיב שמורכב רק מרכיבי min_max שמקבל ארבע כניסות ומחזיר אותן ממוינות לפי הסדר.
2. ביקשו ממני לבנות בדיקה שתוכל לקבוע בוודאות אילו מתוך הרכיבים בתוך הקופסא השחורה (ישנם 5 min_max) תקולים ע"י שינוי כניסות ובדיקת מוצאים.
3. שאלו על מספר צירופים אפשריים של המערכת.
4. אח"כ ביקשו לממש את כל זה בשפת C, כלומר לכתוב פונקציית ,min_max חשוב היה מה היא מקבלת ומחזירה כי פונקציה לא יכולה להחזיר שני ערכים, אז אמרתי שאני אקבל מערך שני שני ערכים ואשנה את הסדר של הערכים כך שהראשון יהיה הגדול והשני הקטן.
Sandisk - סנדיסק
Sandisk – וריפיקציה
נתון רכיב בעל 2 כניסות: טמפרטורת הסביבה ו טמפרטורת סף שנקבעת על ידי המשתמש
ו 2 יציאות: אם
Tin>Tsaf —-> output :H=0,L=1;
Tin<Tsaf—–> output :H=1,L=0;
Tin=Tsaf —-> output :H=0,L=0;
יש לכתוב פונקציה ב C, בעלת 4 משתנים:Tin,Tsaf,H,L, (כתיבה ל Tin, Tsaf- כותבת לרכיב, קריאה מ H,L- קוראת מהרכיב.) הפונקציה צריכה לבדוק כמה שיותר אפשרויות ולהחזיר אמת או שקר לגבי נכונות הרכיב.
Sandisk – QA + פיתוח כלי בדיקה
חלק א :
you have following routines:
1.bool SingleWrite(start sector,sector count,pattern)- write a single sector
2.bool SingleRead(start sector,sector count)- read a single sector
3.bool MultipleWrite(start sector,sector count,pattern)- write a miltiple sectors
4.bool MultipleRead(start sector,sector count)- read a miltiple sectors
*each of the above routines true or false result
*sector size is 512 bytes
*memory device starts from sector 0, the last sector is equal to max device capacity in sectors
*sector count – quantity of write/read sectors
pattern-written data
Questions:
write a pseudo-code that performs the following operations on 8GB memory device:
1.write the entire media using SingleWrite with pattern OA.
2.write the entire media with SingleRead
3.write the entire media using MultipleWrite with chunk size of 64 sectors , pattern FF.
4.write the entire media with MultipleRead with chunk size of 64 sectors
חלק ב:
יש לך כרטיס זכרון, צריך לנסות לשבור את אבטחה של הכרטיס כאשר מחיקה/שמירה/קריאה של הכרטיס protected
פתרון מוצע:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PrepForSandisk1
{
class Program
{
static void Main(string[] args)
{
int[] myArray = { 7, 2, 5, 10, 3 };
int[] sortedArray = ArraySorter<int>(myArray);
string a = "abc_y_x";
string b = "bac_x_y";
Console.WriteLine(SameChars(a, b));
}
// 1. Write a method which receive an array and sort it in descending order.
static T[] ArraySorter<T>(T[] arrayToSort)
{
return arrayToSort.OrderByDescending(c => c).ToArray<T>();
}
// 2. How syntax of class which inherits from another class look like?
class A { };
class B : A { };
// 3. How you tell a program to wait for 1 second?
static void TellProgramToSleep(int seconds)
{
System.Threading.Thread.Sleep(seconds);
}
// 4. Is it possible to implement “Bungie sort” algorithm in order of n*log(n)?
// Never heard of bungie sort
// 5. Is it possible to create a WCF service and WCF data service in one model (Yes, No, Maybe)?
// 6. When do you use Thread.Keep?
// Never, such function does not exist
// 7. Have you read “C# fundamentals” by..?
// No, read several others
// 8. Do basicHttpBinding supports HTTPS (Yes, No, Maybe)?
// Yes
// 9. Can System.Array contain multiple data types, if so, write the code?
// Yes, 9.1 Array of objects
// 9.2 Array of Interfaces where each cell contains a different instance of the object
// 9.3 Array of parent classes where each cell may contain a different instance of that object
// 10. What is WPF trigger and what types of trigger exist?
// List of setters that are executed based on provided conditions (http://wpftutorial.net/Triggers.html)
// 11. What is the difference between managed and unmanaged code?
// Unmanaged is compiled to native machine code (CPU instructions) and is run by the CPU
// Managed code passes through two step compilation process before it becomes machine code
// it is compiled into IL and then by the JIT to machine instruction – so its also compiled into machine code.
// Before running this machine code the CPU loads the CLR code which provides a set of libraries for the application to use
// 12. What is the difference between Stuct and Class?
// struct is a value type, class is not – this means that….
// 13. How can you call unmanaged code from c#?
// example: [DllImport("kernel32.dll")]
// static extern int GetDriveType(string lpRootPathName);
// 14. Are you familiar with DevExpress?
// yes
// 15. Write a program which restarts the system
// 15.1 use console: System.Diagnostics.Process.Start("ShutDown", "-r"); //restart
// 16. Describe a three tier model.
// talk about MVC
// 17. What is the difference between int and long data types?
// int 32 bit, long 64
// 18. How you deny inheritance from a class?
// use the "sealed" accessor
// 19. What keyword you’ll use to query unique entries from SQL? (UNIQUE, DISTINCT, TOP, NONE OF THE ABOVE)
// DISTINCT
// 20. What is/are the protocol/s that WCF service will response with, when using webHttpBining (json, binary, xml, all of them)
// all of them
// 21. What Debug.Assert() do?
// If a condition is fulfilled, popup a messagebox that allows you to stop debugging
// Technical Interview Questions
// Logic question:
//Class Dict
//- Bool Insert(string x)
//- Bool Check(string y)
// For ex. we insert strings: “abc_x_y”, “y_x_bac” which considered equal strings
// How you’ll implement the Check method? (Found a solution using .Net Dictionary but asked to find other solution or implement the Dictionary itself)
// Answer:
static private bool SameChars(String firstStr, String secondStr)
{
char[] first = firstStr.ToArray();
char[] second = secondStr.ToArray();
Array.Sort(first);
Array.Sort(second);
bool res = first.Equals(second);
bool equals = first.SequenceEqual(second);
return res;
}
// Write a program that invokes a process, like notepad.exe opening text file.
static private void InvokeNotePad()
{
Process notePad = new Process();
notePad.StartInfo.FileName = "notepad.exe";
notePad.StartInfo.Arguments = "ProcessStart.cs";
notePad.Start();
}
// How to debug native code marshaled from .NET in VS?
//
// Have you developed multi-threaded applications?
// Yes
// Do know what Telerik is?
// Yes, company for .NET controls, like DevX
}
}
SAP - סאפ
JAVA/J2EE developer
ב-SAP (ליד צומת רעננה צפון) למבחן ב-JAVA/J2EE ראיון קצר עם ראש צוות ואז עבודה מול מחשב, בערך שעתיים, לפתח אפליקצית WEBB קטנה מאפס. יש גישה לאינטרנט צריך להתקין את כל הכלים (טומקאט, אקליפס היה רק התקנות על המחשב) אפשר להשתמש באיזה פלטפורמה שרוצים (ספרינג, סטראטס,JSP, לכתוב בעצמך…).
האפליקציה הייתה צריכה לנהל מאגר טלפונים, ללא שימוש ב-DB או JDBC (ז"א שמירה ב-SESSION).
צריכה לתמוך בהוספה, מחיקה, הצגה של הרשימה ומיון הרשימה (יש לכתוב קומפרטורים).
צריך להשתמש ב-SERVLETS עם REQUEST DISPATCHER וזה מספיק ת'כלס.
ראיון ב SAP למשרת פיתוח
המבחן ארך כ 3 שעות.
הוא לא היה קשה במיוחד אם כי לא באתי מוכן אליו.
החלק הראשון כלל כמה הגדרות של מושגים בתכנות מונחה עצמים:
פולימורפיזים, הורשה, "שיטת בניה" ועוד… אני לא זוכר… היו 4 מושגים. זה לא היה קשה במיוחד.
לאחר מכן היה סיפור כלשהו על מחסנים ו containers כאשר במחסן יכול יותר מ container אחד ולכל אחד מספר זיהוי משלו.
אני ממש לא זוכר את פרטי הסיפור, אבל נדרשים לתכנן טבלאות SQL ובנוסף לכתוב כמה שאילתות.
לאחר מכן ישנן כמה שאלות כלליות ב SQL, (אמריקאיות).
מאחר ו SQL לא היה הצד החזק שלי, טיפה התקשתי בשלב זה.
לאחר מכן היתה שאלה בתכנות מונחה עצמים (מותר לכתוב באיזו שפה שרוצים) משהו עם יינות וקבלות/דו"חות אני לא ממש, זוכר. זה לא היה קשה.
לבסוף, היתה שאלה של לכתוב אלגוריתם שאמור להחזיר האם ביטוי רגולרי כלשהו הוא חוקי או לא, למשל
2+1*(x-2) ==> חוקי לצורך העניין לעומת,
(+((1)+2 ==> לא חוקי.
שאלה דיי פשוטה, לטעמי.
Software developer – Student
ראיון ב-SAP ברעננה לתפקיד: Software developer (Student) – End User Experience Job .
היה אמור להיות ראיון של חצי שעה ולאחריו מבחנים של שלוש וחצי שעות.
בפועל, לא היה ראיון כי הבחור שמראיין לא היה במשרד באותו יום, ולכן עשיתי רק מבחנים. המבחן היה ממוחשב ולא היה 3 וחצי שעות בסוף- אלא שעתיים. מותר היה להשתמש בגוגל, לקמפל ולהריץ כמה שפעמים שאתה רוצה, ולהשתמש באיזה ספריות שבא לך.במבחן עצמו- היית צריך לממש סודוקו. נתנו לך מעין שלד למימוש שמכיל את ה-class-ים הבאים ב-java בצד השרת:
Game, Cell, Board (ואולי שכחתי עוד אחד).
ואת הקבצים הבאים בצד הלקוח:
game.js, cell.js, board.js + קובץ אחד של CSS ועוד קובץ של html שאת שמם אני לא זוכר.סביבת העבודה הייתה אקליפס. בעיקרון, במצב ההתחלתי כשאתה מריץ את התוכנית שלהם- אתה כן רואה לוח וכן רואה מספרים, אבל למשל אין בדיקת חוקיות ואין בדיקה אם ניצחת וכל מיני דברים בסגנון- אלה דברים שאתה צריך לממש. אתה צריך להספיק לממש כמה שיותר במגבלות הזמן שנותנים לך.
חברת SAP לתפקיד מפתח בשפת GO
להלן שאלות מתרגיל על מחשב מחברת SAP לתפקיד מפתח ענן ( Cloud Foundry ) על שפת GO.
ראיון נערך במרץ 2020
- עליך ללמוד את שפת GO דרך Go Lang tutorial לבד בבית ובזמנך הפנוי
https://tour.golang.org/welcome/1
(דורש בערך 3-6 שעות אם עושים את כל התרגילים )
- ללמוד מעט על Code Foundry באתר שלהם רק כדי להבין בכללי את הקונספט וכמה פקודות בסיסיות מה CLI שלהם
- זה התרגיל על המחשב שעושים בחברה עצמה :https://github.com/sapmulticloud/candidate-examבהצלחה
Sapiens - סאפיאנס
Sapiens – כללי 2
המבחן מחולק לשלושה חלקים:
חלק א': מבחן ERD הנושא הוא מוכר פלאפל, שמוכר כל מנת פלאפל ב 15 ש"ח, המורכבת מכמויות שונות של מזון כמו עגבניה 30 ג' מלפפון 40 ג' ועוד…
בנוסף יש לו הוצאות – עובדים, מים, חשמל ארנונה ועוד.
צריך לצייר תרשים ERD המתאר את כל הטבלאות הנצרכות כדי לקבל לבסוף איזון בין ההוצאות להכנסות.
יש להתייחס לשינויים כמו הוספת מנה לתפריט, עובד חדש, עליית מחיר הירקות.
חלק ב': מבחן ב sql הפותח בשאלות אמריקאיות, ממש פשוטות, מי שמצליח לענות נכונה על השאלות האמריקאיות באתר זה : http://webmaster.org.il/quizz/sql יקבל את כל הנקודות בחלק זה.
החלק השני קצת יותר מורכב בו אתה מקבל את הטבלאות ותוצאה של שאילתה, ועליך לכתוב את השאילתה שנותנת את התוצאה הזאת, יש ללמוד היטב קשרים בין טבלאות, גם בזמן שאין קשר בין שני הטבלאות.
חלק ג': ראיון.
Sapiens – כללי 1
בראיון הראשון, יש מבחן אמריקאי מאוד קליל על java וsql, דברים בסיסיים.
שאלות לדוגמא:
1. יוצרים שני סטרינגים ב-MAIN ומעבירים אותם לפונקציה שמחליפה ביניהם. לאחר מכן, ה-MAIN מדפיסה את הראשון ואת השני. הם שואלים מה יודפס?
2. יוצרים class אב וclass בן כאשר ה-main נמצא באב והוא יוצר אובייקט מסוג בן וקורא לפונקציה שנמצאת גם באב וגם בבן. באב הוא מדפיס סטרינג מסוים, בבן הוא קורא ל-super ואח"כ מדפיס סטרינג משלו. הם שואלים מה יודפס?
3. יוצרים אוסף (collection) עם מערך של int. מריצים הדפסה על אובייקט האוסף (ולא על המערך שבאוסף) באמצעות לולאת for ושואלים מה יודפס?
4. יוצרים hash set מוסיפים לו איברים. רצים על האיברים בו באמצעות לולאת for ושואלים מה יודפס? (ממה שאני יודע אין סדר לאיברים ב-hash set אז האיברים לא יודפסו לפי סדר הוספתם)
5. מה יותר טוב iterator או ListIterator כאשר אחת התשובות היתה שאין כזה דבר ListIterator ואני חושב שהיא הנכונה.
6. איך עדיף לממש thread? להרחיב את ה-class של thread או לממש את ה-interface של runnable?
7. במידה ויצרתם keys משלכם עבור hashmap. איזה פונקציה תצטרכו לממש? (תשובות אפשריות: clone(), hash() ועוד שתי תשובות)
8. איזו מילה ב-sql מאפשרת לבצע חיבור בין נתונים מבוקשים מ-2 או יותר טבלאות? (התשובות האפשריות: join, full join, union ועוד כמה לא קשורים)
9+10. שתי שאלות שאילתות די פשוטות. תחזרו על having ו-group by ו-distinct.
11. מה זה stored procedures ומה זה trigger?
אחרי זה יש ראיון קצר שבו אתה מסביר בעיקר על הפרוייקטים שלך ודברים שלא הצלחת במבחן.
ראיון שני הוא כבר קצת יותר קשה, אתה מקבל מערכת שאמורה לעשות משהו, כמו למשל הזמנות כרטיסים לחו"ל, ולבנות לזה database ולאחר מכן לעשות את הארכיטקטורה של זה ב java.
STMS - SofTov - סופטוב
STMS – כללי 2
מבחן ראשון על נייר,אחרי זה ראיון עם ראש צוות וHR
3 עקרונות של OOP
לכתוב מחלקת בן למחלקה אבסטרקתית שנתונה,יש רק פונקציה וירטואלית טהורה אחת שצריך לממש במחלקת בן.
שאלת SQL עם שתי טבלאות ומה תוצאה לאחר LEFT JOIN,RIGHT JOIN,INNER JOIN
נתון קוד של דיזיין פאטרן-צריך לגלות מהו(סינגלטון),שואלים אם יש בעיה עם ריצה של כמה שרדים עליו וצריך לפתור אותה.
נתון קוד של מחלקת אב ובן ושואלים איך בן מרחיב את אב ויש שם שגיאות שצריך למצוא,
יש RETURN לפני שורת קוד שצריך לבצע.
אין איתחול של פויינטר.
יש בעיית I++ במקום ++I במחסנית ואותו דבר עם –I
STMS – כללי 1
1. לרשום 3 עקרונות של OOP
2. מה זה COPY CONSTRACTOR
3. מה זה INLINE FUNCTION ומה ההבדל בינו לבין MACRO
4. מה זה virtual distractor
5. מה זה memory leak ותן דוגמא
6. לכתוב תוכנית אשר ממירה מספר בינארי למספר דצימלי
7. נתונים פרמטרים עבור 2 CLASSים (classאבא – 2 משתני private: m_number,m_ name, 3 פונקציות וירטואליות set(int num), set(int num, string name), getnum(){return m_number;} ופונקציה וירטואלית טהורה אחת clear() אשר מאפסת את m_number, m_name . classבן- משתנה private אחד, פונקציה setאחת אשר דורסת את אחת הפונקציות set הוירטואליות של האבא שהמימוש שלה צריך להיות m_number = m_number+1; , שזה בעצם שימוש במשתנה private שמוגדר בclass האבא (צריך למצוא לזה פיתרון). לכל הנתונים הנ"ל צריך לכתוב תוכנית שאחד יורש את השני.
8. נתונות 2 טבלאות, צריך לעשות להן INNER JOIN, LEFT JOIN, RIGHT JOIN
9. נתון קוד אשר צריך לזהות באיזה דיזיין פאטרן משתמשים שם (סינגלטון), ושואלים מה צריך להוסיף לקוד על מנת שהוא יוכל לעבוד גם בmulti-threading
10. נתון קוד אשר משתמש בTEMPLATES– ובהורשה. צריך לזהות שגיאות:
a. יש 2 פונקציות שלא כתוב בהם את שם הפרמטר שהן מקבלות, למשל – int Set (T& )
b. יש בעיה עם ++ ועם — , למשל זה כתוב בקוד כך: num[++ptr]
c. אין איתחול של פוינטר
d. יש בפונקציה האחרונה שורת return לפני שורה שצריך לבצע.
e. שואלים על הקוד הזה איך ובמה הבן מרחיב את האב.
f. ומה הייתם עושים על מנת שהקוד לא יחזור על עצמו (ישנה פוקציה בבן שדורסת פונקציה באבא ושממומשת כמו הפונקציה באבא רק עם תוספת של שורה אחת- איך הייתם מונעים את זה)
Trusteer - טרסטיר
Trusteer – כללי 1
המבחן/ראיון ראשון בTrusteer והמבחן/ראיון שני בPAYPAL הם על אותו העיקרון.
נותנים רשימה של התחברויות/סשנים/תשלומים שנעשו ויש להניח איזה מהרשומות היא הונאה.
על מנת להבין את הנתונים ולענות על השאלות יש להבין בנושאים הבאים:
-איזה מידע אתה מספק לPAYPAL או לבנק כשאתה נרשם
-איזה מידע אתה מספק כשאתה מתחבר (באופן פסיבי או אקטיבי)
-מה הIP אומר עלייך ואיך ניתן לזייף אותו
-מה כתובת המייל שבחרת לך (או שקבלת) יכולה לספר עלייך
-המפרט של המחשב ממנו התחברת (שפה,מערכת הפעלה וכו) מה ניתן לשנות בקלות ומה לא
ובאופן כללי לקרוא כול מה שאפשר על סוגי הונאות ואופן הביצוע שלהם (גנבת זהות/גנבת סיסמה/פישינג).
Trusteer – Malware Analyst
ראיון א'
פגישה ה-CTO עמית קליין ועם ראש צוות ה- Malware
הראיון היה אישי בלבד וללא היבטים מקצועיים כלל, עברנו באופן יסודי על קורות החיים שלי ונשאלתי שאלות מתוכן על מנת להכיר אותי בתור אדם. הראיון היה באווירה חברותית ונעימה, דגש מיוחד בהסברים שלהם היה בעובדה שהמשרה אינה משרת פיתוח כלל.
בתום הראיון אמרו לי שעברתי לשלב הבא, ראיון כוח אדם.
ראיון ב'
ראיון כוח אדם עם מישהי בשם ריבי, גם במקרה זה הראיון היינו אישי, בראיון נשאלתי לגבי צפיות השכר שלי, חבר נוסף שלי היה בתהליך איתם ולו נתנו מבחן אמינות. להלן חלק משאלות מבחן האמינות שמתקיים מול מחשב :
הגעתי לשמה ויש מבחן של 20 דקות ששאולים אותך,
כמה אחוז מהחברים שלך מעשנים סמים?
כמה סמים כבדים?
האם אתה שותה ?
האם אתה בחובות ?
האם אי פעם גנבת מהמעסיק?
האם אתה חושב שאם המעסיק מתנהג לא יפה זה מותר לגנוב?
האם אי פעם תוכנה שלא ברשיון ?
סיפורים
מישהו היה לוקח מהקופה כסף אחרי הסגירה והיה תמיד מחזיר אחרי הפתיחה, במשך 20 שנה, פתאום הוא נתפס. האם אתה מסכים שצריך לפטר אותו?
האם לא היית לוקח בן אדם שהיה בכלא למקום עבודה ?
חלק מהשאלות חוזרות במדויק, חלק בערך, 4 שניות לשאלה.
אם היית יכול לגנוב בלי להתפס, מה היית עושה ?
אם היית גונב ואף אחד לא היה נפגע, האם היית עושה את זה?
האם אי פעם הצעת למישהו סכום כספי שיתן לך שירות יותר טוב, או מתנה ?
אם אנשים היו יודעים שהם לא נתפסים בפשע, האם היו מבצעים אותו יותר?
האם חוסר הענישה מגבירה את הפשיעה?
ספר לי עצמך
מאיזה תחום אתה מגיע?
מה אתה אוהב?
מה אתה פחות אוהב?
מה אתה רוצה?
מה אתה מחפש?
איפה עבדת?
למה עזבת את המקום? לעבור למרכז / לא לעבור למרכז?
40 דקות כל הסיפור
הייתה שאלה, האם אי פעם אחרת לראיון עבודה?
כאמור חלק זה לא היה לי באופן אישי וכתוב על סמך עדות של חבר.
חלק ג'
לפני ההגעה שלחו לי רשימת נושאים ללמידה אישית, מצורף בקובץ.
הראיון כלל בעיה מחיי היום יום בלבד והיא כדלקמן :
" הגעת ליום עבודה בטרסיר והגיע אליך לקוח שמספר לך שמשהו באתר של הבנק שלו, Bank Of America נראה לו חשוד היום ועזב את המקום, ברשותף מחשב נייד אישי שלך וכן מחשב שולחני של הלקוח. עליך להסביר את הפעולות שאתה עושה על מנת להבין את מקור הבעיה ובמידת האפשר להציע דרך פתרון. אתה אמור להציע את הפתרונות מתוך סט הנושאים שקיבלת ללמוד."
Verint - ורינט
Verint – QA
מבחן קצר שבא לבדוק את הידע שלך במתודולוגיות בדיקות ואת הראיה המערכתית לזיהוי וכתיבת באגים .
המערכת שהם מתארים שם היא כזאת :
יש לך מידע שנשלח שהוא או מסוג SMS או מסוג EMAIL המערכת יודעת לאבחן בין 2 המקרים ולפיכך לשלוח אותם לטבלה הנכונה להלן ה DataBase Server .
סדר הפעולות שהמידע מועבר הוא :
1.Raw Data
2.Filtering Server – Email\SMS
3.Decrypt Server
4.DataBase Server
5.Client SQL Query Screen .
הלקוח יכול לשלוף מידע ע"י שאילתות משרת ה Database עי שעה ותאריך.
1.עליך לבנות מסמך בדיקות
2.עליך להבין כמובן את המערכת ולתאר אותה לבוחן …
זהו +-
3.יש עוד כמה שאלות שטויות על מה קורה אם …
Verint – פיתוח
שאלה ראשונה:
סעיף 1 ,בהינתן מספר unsinged int צריך למצוא את מספר הביטים הדלוקים , נגיד אם אתה מקבל את המספר 2 אתה מחזיר 1 , אם אתה מקבל 3 אתה מחזיר 2 , וכו׳ אין הגבלה על זמן ריצה , מותר להשתמש לכל היותר ב 4 משתנים .
סעיף ב , צריך למצוא את אותו הדבר רק עכשיו זמן ריצה ב o(1) ואין מגבלה על מקום בזיכרון .
סעיף ג , בכמה זכרון השתמשת בסעיף קודם ?
תנסה להקטין אותו ל O(M/c) כך ש M סה״כ מקום בסעיף קודם ו c זה מספר קבוע . וכמובן זמן ריצה נשאר o(1)
שאלה 2 :
תממש את הפונקציות enqueue ,dequeue של טור בעזרת מחסנית (יש מבחנים שמבקשים 2 מחסניות) ולא מבנה נתונים אחר .
שאלה 3 : תממש מבנה נתונים שמחזיק מספר בצורת FIFO ותממש את הפונקציות void init ( int capacity) שמאתחלת את מבני הנתונים , את set(int i) מכניסה למבנה שלך , ו get() מחזירה מספר , אם הגעת לסוף מחזירים -1 , ו size() מחזירה את גודל המבנה .
סעיף ב , הקוד של הסעיף הקודם מריצים אותו יותר מ ת׳ריד אחד , תדאג שהקוד שלך מסונכרן
Verint – מפתח ב-#C
מבחן בכתב (שעה וחצי), 5 שאלות.
1. נותנים לך ארגומנט הבנוי מסוגריים מהסוגים הבאים: (){}[]. צריך לזהות מתי ארגומנט לא חוקי. דוגמה לארגומנט חוקי: ( [ ]{ } ). דוגמה לארגומנט לא חוקי: ({)}
2. נתונה רשימה מקושרת. N חוליות. לכל חוליה יש ערך שלם (int) ואת ה-next שלה ברשימה. צריך להוריד את חוליה X (לדוגמה) מהרשימה. יש לך את הפוינטר ל-head, ל-end ול-X. אסור שזמן הריצה יהיה O(n)
3. קיימת מטריצה בגודל nXm יש לתת אלגוריתם שעבור כל ערך 0 בתא מסוים (לדוגמה: תא [i,j]) כל הערכים באותה שורה (i) ועמודה (j) יאופסו גם הם. זמן ריצה O(n*m)
4. הם מתארים תוכנה ומבקשים לצייר דיאגרמת קלאסים שלה
5. שאלת קוד ב-#C. צריך לתקן טעויות.
את התשובות ניתן לכתוב בפסאודו-קוד. אין דרישה לכתיבה ב-#C
תשובות מוצעות:
שאלה 1:
קלאסית, משתמשים במחסנית.
אפשר לראות רעיון לפתרון כאן:
http://www.java2s.com/Code/Java/Collections-Data-Structure/BracketChecker.htm
שאלה 2:
שאלה נפוצה, הרעיון בה הוא להעתיק לאיבר הנוכחי את התוכן והלינק של האיבר הבא, ובעצם למחוק את האיבר הבא (שאת התוכן שלו העתקת לנוכחי X וכך התוכן אותו ביקש ממך למחוק נמחק). התשובה שכבר נכתבה בדיון נכונה, צריך רק להתייחס למקרה קצה בוא X וא האיבר האחרון (גם צויין בתגובה אחרת).
שאלה 3:
נראה לי הצלחתי לחשוב על פתרון:
קצת קשה להסביר במילים, אבל העקרון כזה – בונים שני מערכי עזר בגודל n ו-m, אחד מיועד לציר X ושני לציר Y.
פעם אחת סורק את המטריצה, שומרים באיזה קואורדינה בX ו-Y יש 0 (נניח 2 מערכים ושומרים באינדקס המתאים) זה יוצא mxn.
לאחר מכן רץ עוד פעם על המטריצה מההתחלה, ומשווה כל תא מול האינדקס המתאים במערכים, לבדוק אם יש 0. אם יש, משווה את התא ל-0.
Wix - וויקס
WIX kickstart – יום מיונים
יום מיונים:
עם אינטרנט פתוח ויכלת לעשות את התרגיל באיזה שפה שתרצה.
היה צריך לרשום קוד שמדמה X עיגול ואתה בעצם משחק נגד האנשים שאיתך ביום מיון.
בחלק הראשון יושבים מול מחשב וצריך לפתור כמה בעיות שנתונות בזמן קצוב מי שעובר בהצלחה ממשיך לשלב הבא שזה ראיון אישישאלה ראשונה : בנה פונקציה שמקבלת מספר INT ומחזירה את המספר הגדול ביותר שניתן להרכיב עם הספרות של המספר שקיבלה הפונקציה לדוג' הפונק' מקבלת את המספר 251 יש להחזיר 521 .שאלה שנייה (לא מדויק ) : בנה פונקציה המקבלת מערך של מספרים INT ומחזירה מספר P המקיים שהסכום של P אברי המערך מתחילת המערך וסכום של P אברי המערך מסוף המערך שווים
אם לא קיים P כזה יש להחזיר -1שאלה שלישית: נתונים שני ישרים במישור (כל קו ע"י שתי 2 נקודות של התחלה וסוף הישר כלומר סה"כ הפונקציה מקבלת 4 נקודות במישור כל נקודה כידוע מיוצגת ע"י שני מספרים X Y ) צריך להחזיר האם הישרים נחתכים (בתוך התחום של הישרים כלומר בין הנקודות של הישרים)שאלה רביעית : כתוב הסבר שלם על על רשת ולינקים תכלס הבעיה פשוטה ממש נתון מערך של INT ויש להחזיר את הסכום .של שני המספרים הקטנים ביותר
: נקודה חשובה
:הם שמים דגש על קוד קריא ונכון יותר מפתרון הבעיה עצמה
יש מצב שלא תפתרו את כל השאלות אבל מה שפתרתם יהיה קוד יפה
ותמשיכו הלאה, אבל אם פתרתם הכל טוב אבל בצורה מגעילה לא תמשיכו
Wix – פיתוח
ראיון ראשון בוויקס:
שני סוגים של שאלות:
שאלות לוגיקה – כגון – תאר איך למיין רשימה מקושרת או דברים כאלה)
שאלות buzz words כמו אם אני מכיר מה זה פרוטוקול REST או NoSQL נראה שהם מעויינים להתפתח בכיוונים האלה (הם אמרו לי שיש להם משהו כמו 50 מליון טרנזקציות מול המסד נתונים שלהם והם כמראה שוקלים לעבור ל NoSql)
ראיון שני בוויקס:
הראיון השני בוויקס היה לפתח קוד במקום (נתנו לי מחשב נייד שלהם עם IDE ןעם גישה לאינטרנט)
הבעיה – נתון עץ btree כלומר לכל איבר בעץ יש 0-2 בנים לצד ימין וצד שמאל
לכל איבר יש משתנה class member אחד מטיפוס String
וכמובן יש לו הצבעות לאיבר ימין ושמאל
צריך לעשות סריאליזציה ודה-סריאליזציה לעץ
התשובה היא שצריך לכל איבר לכתוב את הרמה שלו בעץ (נגיד שהשורש הוא 0 אז הבנים שלו יהיו רמה 1 וכן הלאה)
בנוסף צריך לכתוב אם הוא ימין או שמאל
המחרוזת בסוף תיראה כך
1#R#value;
התו ; משמש מפריד בין איברים
התו # משמש מפריד בין מאפיינים של איבר
צריך לרשום גם בנים שלא קיימים ז"א לכל עלה בעץ יהיו שני בנים NULL
בנוסף הם הוסיפו בעיה של הצבעה סיבובית כלומר איבר הוא בן של אחד מהצאצאים שלו (לא בהכרח בן) כדי לפתור את זה צריך
1) כל איבר מקבל "זיהוי" משלו שנרשם יחד איתו (למשל מספר רץ)
1) לנהל רשימה של כל האיברים שעברו סריאליזציה
2) בכל פעם שמוסיפים איבר קודם כל בודקים מול הרשימה ואם הוא קיים אז כותבים את "זיהוי" שלו במקום הvalue
ואת כל זה הם מצפים שיקודדו להם בשעה או פחות.
Yopto
Yopto – QA Engineer
ראיון ראשון: שאלת הגיון, שאלות SQL משלבות group, count distinct, שאלת בדיקות איך היית בודק מוצר X נגיד דלת.
ראיון שני: 2 שאלות הגיון.
זה מה שהיה לי לפחות. מקום סטארטאפי, אם כי לא הכי התחברתי לאווירה, קצת אנמי קטן ורגוע בשבילי.
שאלת הגיון: יש 25 סוסים. הסוסים רצים במסלול (שאלתי האם זה מסלול מעגלי, והמראיין ענה שכן) ואתה צריך לבדוק מי 3 הסוסים הכי מהירים. לרשותך שעון זמן אבל ללא זיכרון, כלומר אתה יכול לדעת מי חצה את קו הסיום ראשון שני שלישי וכו' אבל לא לשמור את המידע, אחרי כמה שאלות לבוחן כמו האם הסוסים מתעייפים אז התשובה שלו הייתה שלא.
בעיקרון הפתרון הוא להריץ כל פעם 5 סוסים, לבדוק מי ה-3 הכי מהירים בכל מחזור, להשאיר אותם רצים במסלול (מעגלי הרי) ואז להריץ עוד 2 סוסים, להשוות, ככה שמסיימים את כל ה-25 סוסים. בצורה כזו אתה יכול לבדוק מי ה-3 סוסים הכי מהירים מתוך ה-25.
Zerto
שחזור ראיון מלא בזרטו
רשמתי את כל מה שזכרתי מייד לאחר הראיון ואני מביא אותו כאן:
במבחן נאמר לך כי החברה שלך מפתחת מערכת לניהול סקרים שונים. המערכת מקבלת קבוצה של סקרים PollResponses, מזהה איזה לקוח מילא כל סקר ושומרת אותם. המערכת יודעת גם להציג את התוצאות הסופיות של הסקרים שהתקבלו עד כה. לקוחות יכולים לבקש את תוצאות הסקרים על ידי שליחה של PollSummaryRequest לשרת.
בקשות מתקבלות על ידי שכבת התקשורת Communicator
שמכניס את כל הבקשות לתור. כל PollResponse שהיא תשובה על סקר עוברת authentication כדי לוודא ששולח הסקר מורשה ואז מוסיפה את תוצאות מילוי הסקר שלו לאחרות, אחרת היא מסומנת כמזוייפת ונשמרת בצד לצרכי לוג.
אפשר לבקש את תוצאות הסקרים מה- PollServer, יש שני סוגים של בקשות:
בקשה לרשימת בקשות שה-authentication שלהן נכשל.
בקשה לסיכום התוצאות לכל אחת מהשאלות – סיכום ואחוזים.
המטרה:
לקרוא את הקוד ולרשום איך בפועל מתנהגת האפליקציה
שלב שני:
לעשות קוד ריויו ולזהות בעיות בקוד. לתת לכל בעיה עדיפות ולהציע שיפורים.
שלב שלישי:
להציע שיפורים להתנהגות השרת ולממש אותם יחד עם unit tests.
מפתח C# מתחיל
הראיון די נחמד. הקוד כתוב ב C#, הוא לא מאוד מורכב טכנולוגית. נראה שעקרונות תכנות יותר מעניינים אותם מאשר לסבך את הראיון.
הראיון מתחלק לשלושה חלקים – צריך להבין את הקוד, למצוא בו באגים (ויש לא מעט) ואז לכתוב קצת קוד שמתקן חלק
מהבעיות.
לא התרשמתי שהקוד מתוחכם במיוחד, מי שכתב אותו כנראה לא מהמבריקים וגם המראיין לא עשה עליי רושם של איש טכני. כנראה שהוא פשוט עושה את המבחן הזה להמון אנשים ומכיר את התשובות אבל אם לוקחים אותו לנושאים אחרים הוא הולך לאיבוד.
מהמעט שאני זוכר היו שם בעיות של כמות הנכנסים לתור שגדולה מכמות השולפים מהתור ואולי בעיה של סנכרון טרדים. צריך להכיר producer consumer ברמה הבסיסית ביותר.
המראיין שלי התלהב משום מה דווקא משטויות. למשל, הוא מאוד מתלהב כשעושים refactoring לקוד, משנים קצת את המבנה ומוסיפים unit testing. מאוד מצא חן בעיניו שדיברתי על integration testing ועל איך הייתי משפר את הקוד ברמת הדיזיין כדי שיהיה קריא יותר.
עברתי את הראיון מזמן והעדפתי לעבוד במקום אחר עם מנהל קצת יותר חזק טכנית.
סה"כ הייתה לי תחושה טובה במקום, אווירה נעימה והאנשים נחמדים. ממליץ לאנשים חדשים או עם מעט ניסיון.
התפקיד הוא תפקיד מפתח צעיר למרות שהם טוענים אחרת. הראיון הוא פשוט ברמה הטכנית ורמת המראיינים היא ברצפה. הם מכירים כמה עקרונות מאוד בסיסיים בתיכנות ובתרגיל אולם כשהוצג בפניהם קונספט חדש של דוט נט 4.5 שני המראיינים (שניהם ראשי צוותים שם ) הסתכלו דקות ארוכות במסך ולא הבינו מה עשיתי. הרמה שם היא נמוכה ,זה שיש משרד מפואר לא אומר שהתפקיד הוא טוב. מחפשים ראש קטן שיקודד בסי שארפ ברמה בסיסית,לא חשוב להם דיזיין או יכולות חזקות.
אין מה לעשות חזרה על התרגיל או להתחכם ממילא המראיינים לא יבינו בעצמם מה עשית.
למי שבכל זאת מתעקש כדאי לעשות חזרה על אובייקט בשם BlockingCollection ועל יכולות ה Producer Consumer שלו
למרות שכאמור, המראיין בעצמו כלל לא היה מודע שאפשר לפתור ככה את התרגיל.
Zerto – משרת QA
ראיון למשרת QA – הם מציירים לך מערכת שמצד אחד יש 3 מחשבים, שלושתם מחוברים דרך SWITCH לSTORAGE אחד גדול שואלים מה היתרונות ומה החסרונות.
מציירים עוד מערכת המציגה גיבוי בשתי תצורות – כלומר במקביל לSTORAGE הפיזי בחברה ישנו עוד STORAGE בחברת גיבוי דרך האינטרנט.
אחת סינכרונית עם ACK ובאפר, ואחת א-סינכרונית ושואלים מה היתרונות ומה החסרונות של כל אחת.
מציירם את אחת המערכות מקודם (את הסינכרונית) -שואלים אותך מה הבעיות שיכולות להיות ואיך אתה יכול לאתר את הבעיות.
בשאלה האחרונה אומרים שיש בעיית אינטרנט, ואתה צריך עכשיו למצוא פיתרון זמני לגיבוי, אז תגיד שאתה צריך באפר באורך של מספר הכתובות. וכל פעם כאשר יהיה שינוי בSTORAGE הפיזי שלנו, נסמן את כתובתו בבאפר שלנו ע"י ביט '1', וככה כשהרשת תחזור נוכל לדעת מה צריך להעביר לענן.
תלמד איך בנוי STORAGE (חלוקה לבייטים, ולכל בייט יש כתובת) תדע שמספר הכתובות בSTORAGE הוא סופי ותציג להם את הפיתרון של הbit map.
ראיון אישי
דע את "האויב" – איך לראיין מועמדים – מתוך הדרכה בנושא ראיון מועמדים
מטרת ההדרכה
מטרת ההדרכה הינה להקנות למנהלות/ים מיומנויות בסיסיות בניהול ראיון עם מועמדים, על מנת לייעל את תהליך המיון והגיוס בחברה.
בסוף ההדרכה, המודרכים יוכלו:
• להתכונן לראיון
• לפתוח את הראיון וליצור תנאים מתאימים להמשכו
• לנהל חקירה מקצועית על מנת לאמוד את כישוריו ויכולותיו של המועמד
• לאמוד אספקטים באישיות המרואיין בעלי השלכה על אישיותו המקצועית
• לסיים ראיון
• לחוות דעה לגבי התאמתו או אי התאמתו של המועמד לתפקיד / לצוות/ לחברה.
• להיזהר מהטיות אשר עלולות להשפיע על שיקול הדעת וההחלטה
מתודולוגיה
ההדרכה מורכבת מחלק תיאורתי קצר על כל אחד משלבי הראיון, וסימולציות שבעקבותיהן יתקיים דיון על הדברים אשר נעשו נכון בסימולציה, והדברים אשר טעונים שיפור.
• התכוננות לראיון
• פתיחת הראיון – הסבר תיאורתי
סימולציה + דיון ומשוב
• חקירה מקצועית – הסבר תיאורתי
סימולציה + דיון ומשוב
• דיאגנוזה אישיותית – הסבר תיאורתי
סימולציה + דיון ומשוב
• סגירת הראיון – הסבר תיאורתי
סימולציה + דיון ומשוב
• הערכת התאמת המרואיין לתפקיד / לצוות / לחברה.
תוכן ההדרכה
הכנה לקראת הראיון:
לפני הראיון, יש לקרוא שוב את תיאור התפקיד, על מנת שלכל אורך הראיון יעמוד תיאור התפקיד בבסיס בחינת המועמד ועל מנת להימנע מהטיות.
יש להכין כלי כתיבה ולכתוב הערות לכל אורך הראיון! לא ניתן לזכור מהלך ראיון שלם, וכאשר באים לכתוב חוות דעת, צריך לחזור לקטעים מהראיון.
שלבי הראיון:
פתיחה
פתיחת הראיון – חימום, יצירת אווירה נוחה, הסרת מגננות מצד המרואיין
"מסגור" הראיון: הסבר על מה עומד לקרות במהלך הפגישה: ראיון, תיאור התפקיד, תיאור החברה, אפשרות לשאול שאלות על מנת שהמועמד ידע למה לצפות ושידע לשמור שאלות לסוף הפגישה.
"מסגור" תהליך המיון בחברה: ראיון מקצועי, ראיון משאבי אנוש, בדיקת ממליצים, ראיון מנכ"ל – על מנת שהמועמד יידע למה לצפות בתהליך המיון בחברה.
בירור פרטים:שאלת שאלות הבהרה כלליות על מנת לקבל תמונה ברורה של קורות החיים, ולהשלים פרטים חסרים / לברר פרטים שקיימת לגביהם חוסר וודאות.
חשוב מאוד לא לספק פרטים על התפקיד, על מנת שהמועמד לא יתאים את תשובותיו לתיאור התפקיד.
מוקשים: יש להיזהר מגלישה לשיחת רעים ולסיים את חלק הפתיחה תוך מספר דקות. יש להיזהר משבירת המסגרת אשר הוגדרה, לא לתת למרואיין להשתלט על הראיון ולפקס את המרואיין על דברים שהמראיין מעוניין לשמוע. יש לזכור כי רושם ראשוני עלול להטעות לעיתים.
חקירה מקצועית
הראיון המקצועי אמור לבדוק את הידע המקצועי והיכולות המקצועיות של העובד. לכן, יש לבחור נושא / פרוייקט שגם המראיין מגלה בו בקיאות וידע ולחקור אותו עד לרמת חוסר הידיעה של המרואיין.
לעולם אין להניח הנחות!! יש לשאול את השאלות אשר נראות טריביאליות ביותר. תפקיד של תועמלן בחברה אחת אינו דומה לתפקיד התועמלן בחברה אחרת.
מוקשים: מרואיין משתלט על השיחה / מטה אותה כרצונו, מחשבות המראיין משתלטות עליו והוא אינו מקשיב באופן פעיל, המראיין מתכונן לשאלה הבאה לפי שאלה מוכנה ואינו מקשיב לתשובות המרואיין, המראיין חושב כי הוא מכיר את החברה / התפקיד ואינו טורח לברר את הפרטים עם המרואיין לעומק.
דיאגנוזה אישיותית / התנהגותית
שאלות סגורות – מהן? מתי להשתמש בהן?
שאלות פתוחות – מהן? מתי להשתמש בהן? כאשר שואלים שאלות פתוחות, יש להקשיב היטב למרואיין, ולדלות מתוך דבריו את השאלה הבאה.
דוגמאות לשימוש בשאלות שונות לבירור מידע רצוי.
מה רוצים לברר?- מוטיבציה, יכולות מקצועיות בכלל ויכולות מכירה בפרט, יכולת ניהול מו"מ, עניין בעבודה, איבוד עניין בעבודה, התמודדות עם לקוחות, יחס לעמיתים ויכולת עבודה בצוות, יחסי אנוש, יחס למנהל וסגנון ניהולי מועדף, התמודדות עם כשלון, תחרותיות, לקיחת סיכונים, אתיקה מקצועית, חוזקות, חולשות, שאיפות לעתיד.
איך לברר זאת? – שימוש בשאלות פתוחות על מנת לתת למרואיין מרחב ולאפשר לו להרחיב. בניית "בנק" של שאלות אפשריות אשר ישמשו את המודרכים בעתיד.
מוקשים: הזדהות יתר עם המרואיין, הסתפקות בתשובות מתחמקות / שטחיות, חוסר הקשבה, שאלות מוכנות מראש ו"פספוס" מידע חשוב, מרואיין אשר "משתלט" על השיחה ולוקח אותו למקומות שנראים לו.
סגירת הראיון
1. הצגת החברה – על פי הרמה הרצויה. כאשר ברור כי המרואיין כלל אינו מתאים, הצגת החברה תיעשה באופן מתומצת. כאשר המרואיין מתאים לתפקיד ולחברה, תוצג החברה בצורה מפורטת תוך הדגשת יתרונותיה.
2. הצגת התפקיד – חשוב להציג את התפקיד רק בתום הראיון, על מנת שלא ליצור מצב שהמרואיין יתאים את תשובותיו לתיאור התפקיד.
3. שאלת שאלות – בשלב זה יכול המרואיין לשאול שאלות נוספות אם יש לו.
4. סגירת הראיון עם מועד אפשרי לחזרה למראויין עם תשובה.
מוקשים: רושם אחרון מטעה, שאלות "מכשילות"מצד המרואיין.
הערכת התאמת המועמד
עם סיום הראיון, ברצוננו להעריך את התאמת המרואיין לתפקיד, לצוות, למנהל ולחברה.
יש לזכור כי ישנן שגיאות העלולות להשפיע על חוות הדעת שלנו ועל התרשמותנו מהמועמד כמו: רושם ראשוני/אחרון מטעה, תכונות מרשימות אשר צובעות את התמונה כולה בצבעים מטעים, אפקט היחסיות (מיקום המרואיין בתוך שרשרת של מרואיינים) ועוד.
1. ההתאמה לתפקיד יכולה להיבדק מול תיאור התפקיד המפורט. האם המועמד עונה על כל הקריטריונים אשר הועמדו לצורך התאמה לתפקיד? מהי רמת ההשקעה הנדרשת מהחברה על מנת שהמועמד יגיע לתפוקות ראויות? האם היא כדאית? האם ישנם מועמדים טובים יותר ומתאימים יותר לתפקיד?
2. ההתאמה לצוות ולמנהל צריכה להבחן על פי השאלות הבאות: האם המועמד ישתלב בצוות? מה תהייה תרומתו לצוות? האם המועמד עלול להזיק לצוות? האם סגנון הניהול של מנהל הצוות מתאים למועמד זה? האם מנהל הצוות יוכל להתמודד עם מועמד זה?
3. ההתאמה לחברה צריכה להיבחן על פי השאלות הבאות: האם המועמד מתאים לאופי החברה? לתרבות הארגונית שלה? האם יעמוד בדרישות העבודה של החברה? האם יוכל להשתלב חברתית? האם המועמד יכול לעבוד על פי סגנון העבודה ונוהלי העבודה הנהוגים ומקובלים בחברה?
כאשר כותבים סיכום ראיון, יש לשבת עם קורות החיים, והרשימות אשר נרשמו במהלך הראיון. רצוי שלא לכתוב סיכום ראיון מיד, אלא כעבור כיום, על מנת שהדברים "ישקעו" ויעובדו.
בסיכום הראיון יש לכתוב בקצרה תיאור של השכלת וניסיון המועמד, תכונות אופי בולטות, ידע וניסיון בולטים ואת ההתרשמות הכללית. בסוף סיכום הראיון רצוי לחוות דיעה לגבי מידת ההתאמה של המועמד. במידה ונותרו שאלות פתוחות רצוי לרשום אותן כמו: "יש לי ספק באשר ל…"; "אבקש לברר בראיון משאבי אנוש את יכולת המועמד ל…"; על מנת שמהמראיינים הבאים יוכלו להתעכב על פרטים אלה, לנסות לברר אותם ולהוסיף מידע.
טיפים לדינאמיקה קבוצתית
1. לדבר עם שאר המועמדים לפני שמתחילים, ללמוד כמה מהשמות שלהם, ולהשתמש בהם בדיון.
2. להיות נורא נחמד ופתוח לרעיונות של כולם, גם אם הרעיונות שלהם לא משהו. הרי המשימות שמקבלים בדינמיקה קבוצתית בין כה וכה אידיוטיות, והמטרה לא לבצע אותן על הצד הטוב ביותר (או לנצח את הקבוצה השנייה בתחרות בניית מגדל אייפל מקשיות), אלא לעבוד באינטראקציה טובה עם השאר.
3. בדרך כלל במהלך הדינמיקה הקבוצתית יש לבחור רעיון אחד תוך פרק זמן קצוב, מומלץ מאוד להיות זה שממליץ על הכנסת קריטריון קשיח כלשהו ולפיו לבחור. לדוגמא: יש את הסיפור על קבוצת אנשים שנשלחים להציל את האנושות בכוכב מרוחק וצריך לדון ולבחור מהקבוצה את האנשים הכי מתאימים, קריטריון שאפשר להציע- ניתן לבחור זוגות שיתאימו.
4. לא להיות זה שיושב בצד ושותק.
5. לא להיות זה שמחלק הוראות גם, כמובן.
6. להקשיב להצעות של אחרים, ומידי פעם לומר, "משה הציע כך וכך, מה דעתכם? אני תומך ברעיון שלו."
7. להגיע לפשרות.
8. לא לתאר את הלקוח באופן שלילי, אפילו לא בצחוק.
9. לא להשוויץ הרבה מאוד בידע הטכני. אני באתי בלי שום רקע טכני רישמי וקיבלו אותי, בעוד שהיו הרבה מועמדים עם תעודות ששלחו הביתה. אם הגעת לשלב הדינמיקה הקבוצתית, דהיינו שעברת את המבחנים הטכניים בכתב ממילא. אחד שהגדיש את הסאה אפילו סיפר מול כיתה שהוא האקר שחזר למוטב. הבוחנים נטלו עט פיילוט ועשו קו גדול מאוד על השם שלו.
10. לא לצעוק כדי להתגבר על הרעש, גם אם כולם מדברים ביחד בבת אחת וזה מעצבן. אתה עלול להיראות כמו זה שמחלק הוראות.
11. מעבר לתוכן הדברים, נבחנים המשתתפים גם על סגנון ותרבות הדיון שלהם. כדאי לשמור על "רוח חברית" ולא לקטוע מועמדים אחרים.
12. פעמים רבות תישאל בסיום המשימה ע"י הבוחנים "איך היה" תתבקש לחוות את דעתך על הדיון, האם הסכמת עם ההחלטות שהתקבלו וכד’. חשוב שתדע לנמק בצורה ברורה את בחירתך, גם אם לא הסכמת" זה בסדר" רק חשוב שתסביר כי למרות שלא הסכמת ברור לך שמדובר בקבוצה וצריכים להגיע להכרעה וכיוב’.
תשובות לשאלות בראיון אישי
1) מה יגידו הממליצים עליך?
אשמח אם תיפנו אליהם, אני בטוח שיגידו עלי רק דברים טובים.
* הערה: לתת עד 3 ממליצים, לבקש שהות של יום-יומיים ע"מ לעדכן את רשימת הממליצים.
2) איך אתה בעבודת צוות?
טוב מאוד בעבודת צוות ,אך יודע לעבוד היטב גם בעבודה אישית.
3) איך הסתדרת עם הבוס שלך?
הסתדרתי מצוין, הוא סמך עלי ובטח בי ואני עליו.
* הערה: חובה להראות הערכה מקצועית הדדית.
4) איך אתה מקבל ביקורת?
יודע לקבל ביקורת, עדיף שתיהיה ביקורת בונה וכך אדע לשפר את מה שטעון שיפור, אם הביקורת לא בונה אני מנסה למקד אותה כך שתיהיה בונה.
5) מה קורה כאשר יש חילוקי דעות עם הבוס/ראש צוות?
מנסים להגיע להסכמה, אך אם לא מגיעים אליה, הבוס הוא זה שקובע והוא המחליט.
6) מה אתה לא אוהב בעבודתך?
לא אוהב שלא עומדים בלוח זמנים , בכל מקרה לא נתקע עם הבעיה, ממשיך הלאה ופותר אותה בצורה הטובה ביותר.
7) מה אתה מחפש?
אני מחפש מקום עבודה להביא לידי ביטוי את הידע,ההכשרה,המוטיבציה והיכולות שלי.
היה רצוי בתפקיד מאתגר,מעניין ובסביבת עבודה נעימה שאוכל להתפתח בה ולהתקדם בה.
8) מה אתה מצפה?
אותה התשובה כמו בשאלה הקודמת. (שאלה 7)
9) במה אתה טוב?
עושה כל דבר על הצד הטוב ביותר,שאיפה למצוינות,טיפוס יוזם עם מוטיבציה גבוהה,כושר התמדה ויחסי אנוש טובים.
10) מה התכונות השליליות שלך/חסרונות שלך?
יש לומר דבר המתפרש גם כשלילי וגם כחיובי.
11) איך אתה רואה את עצמך בעוד 5 שנים?
אני באתי לקבל את התפקיד הזה. אני אעשה אותו על הצד הטוב ביותר ובעוד שנתיים-שלוש נשב כאן ונדבר על התפקיד שלי בעוד 5 שנים.
12) למה אתה מתאים לתפקיד יותר ממועמדים אחרים?
אני לא מכיר את המועמדים האחרים ולכן אני לא אתייחס אליהם. אני יכול להגיד על עצמי שאני מביא איתי את הידע,ההכשרה,היכולת,המוטיבציה והכישורים ע"מ להתמודד בהצלחה עם התפקיד.
13) מה צפיות השכר שלך?
טיפ חשוב : בראיונות מתקדמים כשמציעים לך את המשרה – לעולם אל תהיה זה שאומר את הסכום ראשון ! זכור – במשא ומתן הצד שנוקב בסכום תמיד יהיה חלש יותר !
אם זה ראיון ראשוני לענות לפי הסדר:
א) קרוב לוודאי שתשלמו לי את השכר המקובל לתפקיד,להשכלתי.
ב) אם עדיין מתעקשים על סכום, לנקוב בשכר שהוא בטווח של פלוס-מינוס 20%
לדוגמא: 8000-12000 ₪ .
ג) אם עדיין מתעקשים על סכום אז לומר את השכר המינימלי שעבורו היית מוכן לעבוד, לדוגמא: 8000 ₪ ברוטו. כמובן שאסור להגיד סכום נמוך מדי…כמובן שזה תלוי גם בסוג הראיון-אם זה ראיון ראשוני או ראיון יותר מתקדם שבו יש הסוברים שעדיף להיות חוצפן ולהגיד דווקא סכום יותר גבוה.
ועוד טיפ לסיום- מממישהו שראיין עשרות מועמדים בחברת הייטק:
"אני יכול לגלות סוד- אף אחד מהמראיינים לא באמת יודע מה לעשות עם התשובות שתינתינה לשאלות הללו. אלו שאלות שהם למדו באיזה כנס (כמו שאני למדתי) ונראות מתוחכמות לאללה. מה שקובע בראיון הוא ה"הלו אפקט", הרזומה המקצועי וחשוב לא פחות הביטחון העצמי של המרואין ! "
אגב הטיפ הנ"ל לא תקף בכל המקרים מכיוון שכמובן יש אנשי משאבי אנוש אשר לא רק מבינים את התשובות אלא גם יודעים לנתח את משמעותן ולעשות אינטגרציה בין דברים שונים שנאמרו במהלך הראיון ולהסיק מהם מסקנות.
שאלות היגיון וכלליות
מתוך מבחנים לאפלייד מטריאלס – 12
יש 3 קערות שבהן ישנן גולות לבנות, שחורות או מעורב. על כל קערה רשום פתק:
שחור, לבן , מעורב
נתון שאף אחד מהפתקים לא נכון
בכמה שליפות של כדורים תוכלו לדעת באיזו קערה נמצא כל צבע?
פתרון: שליפה אחת בלבד מהקערה שכתוב עליה מעורב תספיק, מכיוון שבטוח יש שם צבע מסוים ואז נדביק עליה את פתק הצבע שיש בה. נשארנו עם 2 קערות עם פתק שיקרי ולכן ניתן לדעת מה כל אחד.
יום אחד התגלגלה שמועה לאוזנו של ראש שבט אינדיאני קטן,שיש מספר נשים בוגדות.
ראש הכפר כינס את כל הגברים, וסיפר להם על כך-עוד הוא הוסיף שכל אחד מהגברים יודע מי כל הנשים הבוגדות מלבד אישתו! ראש השבט קבע שכל מי שמגלה שאשתו בוגדת בו, חייב להרוג אותה עם כדור בראש ב-12 בלילה בדיוק.
בלילה הראשון לא קרה כלום – רק בלילה הרביעי נשמעו יריות.
כמה נשים בוגדות היו בכפר?
פתרון:
אישה בוגדנית אחת תתגלה בלילה הראשון היות ובעלה יודע שיש בוגדת והיות והוא לא מכיר אותה אז זו אשתו.
שתי נשים בוגדניות תתגלנה בלילה השני, כל אחד מהבעלים מכיר אישה בוגדת אחת- היות ובלילה הראשון לא התרחש כלום אז כל אחד מהם מבין שיש בוגדת שניה שהם לא מכירים והבוגדת השניה היא אשתו של כל אחד מהם.
וכן הלאה והלאה : 3 נשים בלילה ה-3 וכו' .
מתוך מבחנים לאפלייד מטריאלס – 11
כמה פעמים ניפגשים מחוגי השעון ביממה אחת (מחוג הדקות ומחוג השעות), מה ההסבר?
פתרון:
התוצאה צריכה להיות זוגית מכיוון שלאחר 12 שעות מתחיל סבב חדש הזהה לחלוטין לראשון
ב-12 שעות הם נפגשים 11 פעמים, ב-12 השעות הבאות- עוד 11 פעמים.
ולכן בסך הכל 22 פעמים.
טייס נוחת נחיתת אונס בשטח אויב, בלב שדה מוקשים. מכשירי הניווט שלו ניזוקו בנחיתה, והוא יודע רק שהגבול נמצא במרחק קילומטר אחד בדיוק, אך אינו יודע באיזה כיוון.
כיצד יוכל הטייס למצוא את הגבול תוך סיכון מינימלי? (מצא את המסלול הקצר ביותר שעל הטייס ללכת בו, על מנת להבטיח שימצא את הגבול)
מתוך מבחנים לאפלייד מטריאלס – 10
לפניך לוח שח-מט (8×8 בצבעים שחור ולבן) שנוסרו ממנו שתי המשבצות השחורות בפינות המנוגדות. האם ניתן לכסות את הלוח באבני דומינו שכל אחת מהן היא בגודל שתי משבצות של הלוח (כלומר- בגודל 1×2)?
פתרון: כל אבן דומינו מכסה שני ריבועים אחד שחור ואחד לבן, כיוון שהורידו שתי משבצות מאותו הצבע לא ניתן יהיה לכסות את המשטח כולו באבני דומינו.
מתוך מבחנים לאפלייד מטריאלס – 9
אתה נמצא באי בודד ואתה בונה שעון חול ושעון מטוטלת. איך תדע מי מדוייק יותר? איך בודקים דיוק של שעון?
פתרון: בונים מספר שעונים ומפעילים אותם ביחד ובודקים אותם אחרי פרק זמן מסויים ומשווים את התוצאות.
השעונים לא יראו בדיוק בדיוק את אותה שעה כי לכל אחד תהיה את הסטייה שלו. אופן פילוג הסטיות – המרחק בין הזמנים שהשעונים השונים מראים מהווה אינדיקציה לדיוקם.
מתוך מבחנים לאפלייד מטריאלס – 8
קיבלת ליום הולדתך שטיח בדוגמת פרה בצבעים שחור ולבן, וסט של עפרונות באורכים שונים. ברצונך להניח את אחד העפרונות על השטיח, כך ששני קצותיו מונחים על אותו צבע.
א. הוכח כי ניתן לעשות זאת עם עיפרון בכל אורך הקטן ממש מאורך השטיח.
ב. הוכח זאת למקרה בו לשטיח שלושה צבעים.
פתרון:
א. נבנה מכל עיפרון שהוא משולש שווה צלעות, כולו יכנס בשטיח כי השטיח גדול מאד יחסית לעיפרון, חייב יהיה להיות שלשתיים מקצוות המשולש אותו הצבע.
ב. נבנה ריבוע שצלעו שווה לאחד העפרונות ונחפש עיפרון בגודל אחר שאורכו יהיה שווה לאלכסון הריבוע, אם נמצא כזה עיפרון מובטח שנמצא עיפרון ששני קצותיו באותו הצבע
מתוך מבחנים לאפלייד מטריאלס – 7
הגעת לאי בודד ובו שני שבטים, האחד של דוברי אמת מושבעים והשני של שקרנים פתולוגיים. לפניך שלושה ילידים, ואתה פונה לראשון מביניהם ושואל אותו לאיזה מן השבטים הוא שייך. למרבה הצער, אתה לא מבין את תשובתו כיוון שבדיוק אתמול הוא עשה פירסינג בלשון. היליד השני חש לעזרתך ואומר: "הוא אמר שהוא שקרן", ואילו היליד השלישי טוען: "אל תאמין לשני, הוא משקר!".
לאיזה שבט משתייך היליד הראשון?
פתרון: היליד הראשון בטוח אמר שהוא דובר אמת – גם אם הוא שקרן ןגם אם הוא דובר אמת. לכן השני שקרן והראשון דובר אמת.
מתוך מבחנים לאפלייד מטריאלס – 6
לחברת אייר-טראנס מטוס ובו 100 מקומות מסומנים. לכל נוסע כרטיס ובו מספר המושב שלו. הדיילת מעלה את הנוסעים למטוס בזה אחר זה, לפי סדר הישיבה המסומן על גבי הכרטיסים.
הנוסע הראשון, ישראל ישראלי, עולה למטוס ומתיישב באחד המושבים באופן אקראי. הנוסע השני עולה למטוס ופועל באופן הבא: אם מושב מספר 2 פנוי, הוא יושב בו, אחרת הוא יושב באחד מהמושבים הפנויים באופן אקראי.
שאר הנוסעים פועלים באופן דומה לזה של נוסע מספר 2.
מה ההסתברות לכך שהנוסע המחזיק בכרטיס מספר 100 ישב במקומו?
פתרון: אם נחשב את ההסתברות ל- 2,3,4 אנשים נראה שהסיכוי שהאחרון ישב במקומו הוא ½ כנראה שזה המצב גם לאיש ה- 100.
מתוך מבחנים לאפלייד מטריאלס – 5
ברשותך כוס שבסיסה בעל קוטר קטן מזה של שפתה. כיצד תדע, בעזרת הכוס בלבד, אם הכוס מלאה בדיוק עד חצי נפחה?
פתרון: נסגור את הפתח העליון נסובב את הכוס כך שפתחה יהי מאונך לרצפה ונראה שהמים מגיעים לאמצע הכוס.
מתוך מבחנים לאפלייד מטריאלס – 4
אתה מחזיק מגילה ובה K משפטים:
רק משפט אחד מהמשפטים שבמגילה זו הוא נכון.
בדיוק שני משפטים מהמשפטים שבמגילה זו הם נכונים.
בדיוק שלושה משפטים מהמשפטים שבמגילה זו הם נכונים.
*
*
*
כל המשפטים במגילה זו הם נכונים.
אילו מהמשפטים במגילה נכונים???
פתרון: רק המשפט הראשון נכון.
מתוך מבחנים לאפלייד מטריאלס – 3
אתה עומד למרגלות גורד שחקים ובו 100 קומות. ברשותך 2 כדורי בדולח. עליך למצוא את מספר הקומה הנמוכה ביותר שאם זורקים ממנה כדור בדולח, הוא נשבר. עליך לעשות זאת במספר הזריקות המינימלי האפשרי.
פתרון: השיטה היא לעשות קפיצות גדולות ואם כדור אחד נשבר אז לבצע קפיצות של 1 בין השלבים עם הכדור השני, בכדי שלא נעלה במס' הזריקות שאנו מבצעים, כל קפיצה גדולה תהיה קטנה ב- 1 מהקפיצה הקודמת. סכום מס' השלבים שמורידים בקפיצה הגדולה צריך להיות בסביבות ה-100 ולכן הקפיצה הראשונה תהיה של 14 שלבים. מס' הזריקות המינימלי הוא 14.
מתוך מבחנים לאפלייד מטריאלס – 2
בחדר סגור יש מקרר. מה יקרה עם טמפרטורת החדר לאורך זמן כאשר פותחים את הדלת של המקרר.
פיתרון: לכאורה טמפ' החדר לא תשתנה כלל כי המקרר מוציא חום מהתא החוצה, ואם הדלת פתוחה הוא לא עושה שום דבר… אך למעשה, מי שלמד תרמודינמיקה למד כי מנוע קרנו בו יש שימוש כאן לעולם אינו בעל יעילות של 100%, ולכן המנוע של המקרר יפלוט יותר חום מאשר הקור מהדלת הפתוחה והחדר יתחמם.
יש לסדר 50 כדורים לבנים ו-50 כדורים אדומים בשני תיבות, כך שהסתברות לבחור כדור אדום מהתיבות תיהיה מקסימלית. כאשר גם התיבה וגם הכדור נבחרים בצורה אקראית.
פיתרון: כדור אחד אדום בקופסא אחת וכל השאר בקופסא השניה כך ההסתברות עולה משמעותית-ראה חישוב:
0.5*(1/1+49/99)
הערות בפורום שלנו
ברשותך שני פתילים. ידוע לך שמן הרגע שהדלקת את קצהו של אחד הפתילים, הוא יבער במשך שעה אחת בדיוק. קצב הבעירה אינו אחיד (כלומר- חצי פתיל לא בהכרח יבער במשך חצי שעה). מדוד שלושת רבעי השעה בעזרת שני הפתילים.
פתרון: נדליק את 2 הקצוות של הפתיל הראשון ועוד קצה אחד של הפתיל השני, כאשר 2 הקצוות של הפתיל הראשון יפגשו סימן שעברה חצי שעה בדיוק, באותו זמן נדליק את קצהו השני של הפתיל השני (שגם אצלו זמן בעירה של חצי שעה עברה. לאחר רבע שעה יפגשו שני הקצוות של הפתיל השני ואז תגמר ¾ שעה.
שאלה בחברת אוקינאה – OIT
יש 12 מטבעות מתוכם נתון שאחד מזויף – לא ידוע אם הוא קל או כבד יותר
לרשותך 3 שקילות כדי למצוא את המזויף
פתרון:
לשקילה הראשונה ניתן ערך של 9 לשניה 3 ולשלישית 1.
כך שעבור צד ימין כבד יותר נוסיף את ערך השקילה ועבור צד שמאל נחסיר את השקילה.
נמספר את המטבעות מ 0 עד 12.
שקילה ראשונה: 5 10 11 12 מול 9 8 7 6.
שקילה שניה : 6 7 11 12 מול 5 4 3 2.
שקילה שלישית: 1 2 8 10 מול 11 7 5 4.
הערך המוחלט של התוצאה היא המטבע המזויף (בדקו וראו).
לדוגמא עבור חמש נקבל 5=9-3-1
מתוך מבחנים בראיון עבודה באפלייד מטריאלס
יש 9 חביות וידוע שאחת החביות כבדה מהשאר, יש שתי שקילות במאזניים בכדי למצוא את החבית הכבדה.
תשובה: משווים בין שתי קבוצות של 3 חביות, ואז בקבוצה הכבדה שוקלים אחת מול אחת.
מתוך ראיון ב"פגסוס טכנולוגיות" – 3
יש שולחן עגול ומטבעות ,כאשר אין משמעות לגודל המטבעות.
במשחק שני שחקנים: אני והמראיין.
המנצח הוא השחקן אשר שם אחרון על השולחן את המטבע, ובשלב זה אין לשחקן האחרון אפשרות לשים מטבע נוסף על השולחן (אסור לשים מטבע על מטבע).
עליך לענות על 2 שאלות והן: מי מתחיל ראשון? ואיפה צריך לשים את המטבע בכל פעם ע"מ לנצח?
תשובה: אני מתחיל ושם את המטבע במרכז השולחן.
לאחר מכן המראיין שם את המטבע היכן שהוא רוצה, לאחר מכן אני שם את המטבע שלי מול המטבע של המראיין וכך הלאה. בסופו של דבר אני אנצח.
ההסבר לכך הוא: לשולחן עגול יש מרכז אחד ויחיד!! ומכאן כל מיקום של מטבע נקבע על פי מיקומו של המטבע הקודם לו.
מתוך ראיון עבודה ב"פגסוס טכנולוגיות" – 2
יש 10 שקים עם 10 מטבעות בכל שק, כאשר ב-9 מהשקים כל המטבעות זהים במשקל נתון
ובשק אחד יש 10 מטבעות במשקל שונה, נתון גם הוא.
לא ניתן לזהות את השק השונה לפי מראהו החיצוני אלא רק לפי שקילה.
השאלה: לרשותך שקילה אחת בלבד! על מנת לומר איזה שק הוא השונה?
התשובה: יש למספר את השקים מ-1 עד 10. לאחר מכן יש להוציא משק מספר אחד מטבע אחד,
משק מספר 2 יש להוציא 2 מטבעות וכך הלאה עד שק עשר שממנו יש להוציא 10 מטבעות.
יש לשקול בשקילה אחת את כל 55 המטבעות שהוצאנו מהשקים.
נניח כי כל מטבע שוקל 10 גרם, במקרה זה היינו מקבלים תוצאת שקילה של 550 גרם.
בכל מקרה נקבל משקל שקטן מזה מכיוון שיש לנו מספר מטבעות במשקל שונה.
ההפרש בין תוצאת השקילה שנבצע לבין 550 גרם יתן את מספר המטבעות בעלות המשקל השונה וזהו בדיוק האינדקס של השק השונה אותו אנו מחפשים.
לסיכום: ההפרש הוא האינדקס של השק השונה!!!
מתוך ראיון ב"פגסוס טכנולוגיות"
עץ גדל כל יום פי 2 מהיום הקודם.
אם תוך 365 יום הוא הגיע לגודלו המקסימלי, באיזה יום הוא היה בחצי מגודלו המקסימלי?
תשובה: ביום ה-364 .
מתוך ראיון באינטל
לפניך 1000 מנורות, לכל מנורה מתג המדליק אותה בלחיצה אחת ומכבה אותה בלחיצה השנייה. בתחילה כל המנורות כבויות. 1000 גמדים שובבים מגיעים למקום ופועלים באופן הבא:
הגמד הראשון עובר ולוחץ על כל המתגים (כלומר: מדליק את כל הנורות).
הגמד השני לוחץ על כל מתג שני (כלומר: על המתגים שהם בעלי מספר זוגי).
הגמד השלישי לוחץ על כל מתג שלישי, וכן הלאה.
אילו נורות יהיו דלוקות לאחר שכל הגמדים סיימו להשתולל?
פתרון: כל גמד יעבור על הנורות שהמס' שלו מחלק את מספר הנורה, לדוגמא את נורה מס' 8 ידליקו ויכבו גמדים 1,2,4,8 ולכן הנורה תהיה מכובה בסוף. הנורות שיהיו דלוקות הן אלו שיש להן שורש שלם: 4,9,16,25….
שאלה שחוזרת בהרבה מקומות בגירסאות שונות
888רנדום לוג'יק
Amdocsאמדוקס
Appleאפל
Applied Materialsאפלייד מטיריאלס
CEVA DSP
-
CEVA DSP – חידות קידוד
-
CEVA DSP – פיתוח
-
CEVA DSP – פיתוח תוכנה
-
CEVA DSP – QA ומולטימדיה
-
CEVA DSP – Logic Design Engineer
-
CEVA DSP – מהנדס וריפיקציה
-
CEVA DSP – מפתח בדיקות אוטומציה
-
CEVA DSP – QA אוטומציה
-
CEVA DSP – קומפיילר
-
CEVA DSP – Debugger Engineer
-
CEVA DSP – צוות Video Codec
-
CEVA DSP – חידות ושאלת אסמבלי
Check Pointצ'ק פוינט
-
יום מבחנים בצ'ק פוינט – קוד
-
יום מבחנים 2020 – עדכון
-
יום מיונים- תיכנות- תאור מפורט
-
שאלות מיום מיון 2020-עדכון
-
2020 Security Analyst
-
משרת QA
-
יום מיון QA
-
יום מיון לבדיקות ותמיכה טכנית
-
למשרת QA
-
JAVA ראיון
-
צ'ק פוינט – C++ UI
-
צ'ק פוינט – C++ UI
-
צ'ק פוינט – QA
-
צ'ק פוינט – Security Analyst
-
צ'ק פוינט – תכנות
-
צ'ק פוינט – תמיכה טכנית
Dalet
Elbitאלביט
exelateאקסלייט
Final
fiverr
Fundtechפנדטק
General ElectricGE
Holaהולה
HP
IBM
Innovidאינוביד
Intelאינטל
Marvell
Mellanoxמלאנוקס
Microsoftמיקרוסופט
Optimal
Philipsפיליפס
Rafaelרפאל
Sandiskסנדיסק
SAPסאפ
Sapiensסאפיאנס
STMSSofTov
Trusteerטרסטיר
Verintורינט
Wixוויקס
Yopto
Zerto
ראיון אישי
שאלות היגיון וכלליות
-
מתוך מבחנים לאפלייד מטריאלס – 12
-
מתוך מבחנים לאפלייד מטריאלס – 11
-
מתוך מבחנים לאפלייד מטריאלס – 10
-
מתוך מבחנים לאפלייד מטריאלס – 9
-
מתוך מבחנים לאפלייד מטריאלס – 8
-
מתוך מבחנים לאפלייד מטריאלס – 7
-
מתוך מבחנים לאפלייד מטריאלס – 6
-
מתוך מבחנים לאפלייד מטריאלס – 5
-
מתוך מבחנים לאפלייד מטריאלס – 4
-
מתוך מבחנים לאפלייד מטריאלס – 3
-
מתוך מבחנים לאפלייד מטריאלס – 2
-
שאלה בחברת אוקינאה – OIT
-
מתוך מבחנים בראיון עבודה באפלייד מטריאלס
-
מתוך ראיון ב"פגסוס טכנולוגיות" – 3
-
מתוך ראיון עבודה ב"פגסוס טכנולוגיות" – 2
-
מתוך ראיון ב"פגסוס טכנולוגיות"
-
מתוך ראיון באינטל
888 - רנדום לוג'יק
NOC Team Member
יום ראיונות ראשון:
1. שאלון פרטים אישיים
2. דינמיקה קבוצתית – אתגר המרשמלו
3. מבחן סגור
Please rate the following tasks by their priority and think how you should handle it.
A. Partner (who in the past had many false alerts) calls and says that players can't register.
B. You get an alert that two servers need to be restarted.
C. Support opened a case about players from one country that cannot register. they only provide 1 example.
D. You got an alert that service crashed on a server.
E. Support calls and says that there are over 50 complaints from members that cannot play on 888casino.
F. You got an email from 3rd party vendor about upcoming maintenance and you need to send formal mail to the partners.
G. You got an alert that the Casino DB is down.
H. You got an email saying there was a version upload to the registration process. You should communicate that to the support in Gibraltar and Antigua.
I. You got an email from internal employee asking to unlock his user.
4. מבחן פתוח – הגדרת מושגים (מותר להשתמש באינטרנט)
High availability
Active directory
Physical server vs. Virtual server
DNS
Test server connection
IIS vs. TOMCAR
HTTP errors 200-500
3 way handshake
Hosts file
HTTP vs. HTTPS
Application 3 layers
5. ראיון אישי
יום ראיונות שני:
1. ראיון עם מנהל NOC
2. מבחן אמינות ממוחשב
3. ראיון עם מנהל משאבי אנוש
Amdocs - אמדוקס
מבחן תכנות 2020 – עדכון
1)ההבדל בי מחלקה אבסטרקטית וממשק.(כמה תשובות נכונות)
-אין הבדל
-באבסטרקט יכול להיות מימוש
-בממשק יש משנים שאינם פינאל סטטיק
-ניתן לרשת רק מחלקה אחת אבסטרקית ולממש כמה ממשקים.
2)ההבדל בין סטרינג,סטרינג באפר,סטרינג בילדר.
-כל פעם שמשנים מחרוזת(סטרינג) נוצרת חדשה.
-הבאפר והבילדר נועדו כדי לעשות מניפולציות על מחרוזות מבלי ליצור מחרוזת חדשה לצורך כך.
-הבאפר הוא סרד סייף.
-כל התשובות נכונות.
3)אם רוצים לעשות מפתח של מפה(קיי של מאפ) בתור אובייקט צריך:
-לממש איקוואלס
-איקוואלס והש קוד
-איקוואלס וטו סטרינג
-כלום
4)פונ' סוואפ עם מחרוזות – האם תעבוד ותחליף (סטרינגס נשלחים ביי ואליו)
5)מה היתרון והחיסרון של אינדקסים בדטה בייס -שאלה פתוחה
6)מחיקת איבר מלינקדליסט כשיש מצביע על הראשון ועל האיבר למחיקה ב אוו של 1. (כתיבת אלגוריתם)
7)בדיקת תקינות של ביטוי עם 3 סוגי סוגרים (כתיבת אלגוריתם)
8)עם איזה מבנה תממשי מילון ולמה זה יותר יעיל לממש עם המבנה הזה. (תשובה פתוחה)
9)סינגלטון בלייזי מוד, מה צריך להוסיף לקוד כדי שזה יהיה סרד סייפ(שאלה פתוחה) (אנוטציה סינכרונייזד, בנאי פרייבט או פרוטקטד, פונ' קלוון שלא מעתיקה)
10)אם יש 2 אובייקים שמאותחלים עם אותם שדות ומפעילים איקוואלס שלא מימשנו אותה, מה יקרה?
point p1(1,2)
,
p2(1,2)
return p1.equals(p2);
-יחזור שקר (זה התשובה כי המימוש הדיפולטי אם לא עושים אוברייד הוא השוואת כתובות )
-יחזור אמת
-טעות קומפילציה
-טעות ריצה
11)מה ההבדל בין לינקד ליסט לאריי ליסט (מה יותר מהיר למחוק בו את האיבר הראשון, חיפוש אובייקט ע"פ אינדקס וע"פ איבר איזה זמן ריצה זה)
12) אם יש רשומות שנשלפות הרבה פעמים מ BD, וזה תהליך יקר, איך תשפרו את זה?
מבחן למתכנתים
נתון עץ בינארי:
צור פונקציה ההופכת את כל הענפים והצמתות (כמו מראה)
תשובה מוצעת:
public void ReverseTree(TreeNode root){
TreeNode tmp = root.leftReference;
root.leftReference = root.rightReference;
root.rightReference = tmp;
if(root.leftReference != null) ReverseTree(root.leftReference);
if(root.rightReference != null) ReverseTree(root.rightReference);
}
העץ בינרי בעצמו יכול להיות NULL, לדעתי שווה גם לבדוק את זה לפני שמתחילים להפוך.
נתון שתי רשימות מקושרות וחד כיווניות אשר מתמזגות בנקודה מסויימת
כתוב פונקציה אשר מחזירה את צומת המפגש
תשובה מוצעת:
public static void main(String[] args) {
LinkedList<Integer> list1 = new LinkedList<Integer>();
LinkedList<Integer> list2 = new LinkedList<Integer>();
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(4);
list1.add(25);
list1.add(34);
list1.add(43);
list1.add(5);
list2.add(-1);
list2.add(-2);
list2.add(-3);
list2.add(4);
list2.add(62);
list2.add(73);
list2.add(4);
list2.add(67);
Iterator<Integer> iter1 = list1.iterator();
Iterator<Integer> iter2 = list2.iterator();
while(iter1.hasNext() ){
while(iter2.hasNext()){
if(iter1.next() == iter2.next())
System.out.println(true);
}
}
נתון מערך של מספרים שלמים
צור פונקציה שמקבלת מערך ומחזירה את סכום הזוגות הגדול ביותר כאשר לזוגות אסור להיות שכנים .
נתון קובייה (כמו הונגרית).
תת קובייה פנימית היא כזאת שאין לה שום פאה חיצונית.
צור נוסחה המחשבת כמה תת קוביות פנימיות יש.
(דוגמא: עבור קובייה הונגרית יש 9*3 תת קוביות ורק אחת פנימית) .
אמדוקס – עצות ממראיין
כאחד שמראיין באמדוקס מועמדים לתכניתי JAVA עם/בלי ניסיון יכול להעיד ששאלות יבשות ב-JAVA לאו דווקא שופכים מספיק ידע כדי להתרשם ממועמד.
כולם יודעים לדקלם כמו תוכים את "מה ההבדל בין interface לבין abstract class"
אבל בשאלה השנייה של "מתי תשתמש בכל אחד מהם?" לא אחת מקבל דממה בתור תשובה.
בגדול – שואל על הרבה נושאים – אבל בשעה של ראיון שמתוכה 5 דקות הקדמה ומבוא, 20 דקות למימוש שאלת קוד ורעיון אלגוריתמאי – נשאר לכל היותר חצי שעה שבמהלכה מנסה לדלות כמה שיותר פרטים על ניסיונו וידיעתו של המרואיין.
בזמן הזה צריך לראות שמועמד יודע מבני נתונים, סיבוכיות, OO, וכמובן JAVA.
ואם מרואיין אם ניסיון – אז בכלל…לצלול לתוך פרוייקטים שעליו המרואיין עבד, לוודא שהוא מבין את הארכיטקטורה של המוצר עליו עבד וב-90% מהמקרים משלב שאלות כלליות לצד שאלות ספציפיות על המוצר, למשל, אם שכבת הכתיבה ל-DB היא hibernate – בין לבין אשאל שאלות על הנושא ואם עבדו עם spring אז אנבור לראות שמבחינת המרואיין זה לא סתם buzzword.
מספר המרואיינים שקיבלתי אשר כתבו spring framework בקו"ח אבל לא ידעו לענות על מה זה IoC מטרידה. באותו אופן אשאל על application servers, אם זה שאלות אדמיניסטרטיביות, ועד לרמת מימוש client המתחבר ב-REMOTE ל-java bean מסויים (שלב-שלב – לא בקוד – אלא בע"פ כדי לוודא הבנה של EJB Container).
בראיונות לא נכנס לנושאים "כבדים" מדי כמו ניהול טרנזקציות – אבל אם מישהו רושם לי שהוא יודע JDBC ושעבד מתוך application server מול DB, שיידע מה זה DATA SOURCE, שיידע מה XA ועוד דוגמאות למכביר.
ולא אחת מגיעים מרואיינים שפשוט חסרי ידע, וחבל. כי זה סה"כ לדאוג לכסות את הידע שצברתי במהלך העבודה/לימודים.
אמדוקס – מתכנת JAVA
1. מה ההבדל העיקרי בין SET ו-LIST?מה השוני ביניהם?מה ההבדל בין HASHTABLE ו-VECTOR מול SET ו LIST?
2.האם משתנה סטטי יכול להיות מבוטל? (can a static method be overridden)
3.מה synchronized ?
3.תממש CONNECTION STRING ב JAVA(תקרא איך לממש את הCONNECTION ב JDBC)?
4 יהיה לך שאלות על TRY/CATCH/FINALLY?
5.יהיה עליך לקרוא פונקציה ולראות מה היא מחזירה .
שאלה 3, המימוש:
public static Connection getConnection(String user, String pass, String server, String port, String sid) {
try {
// Class.forName("oracle.jdbc.driver.OracleDriver");
// Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
// return return DriverManager.getConnection("jdbc:oracle:thin:user/password@host:port/sid");
Class.forName(("oracle.jdbc.driver.OracleDriver"));
return DriverManager.getConnection("jdbc:oracle:thin:" + user + "/" + pass + "@" + server + ":" + port + "/" + sid);
//("jdbc:oracle:thin:load/12345@goliath:1521/BPM");
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
השינוי היחידי הוא , אם אתה עובד עם ORACLE או SQL אתה משנה את ה-JAR
אמדוקס – תוכניתן JAVA מתחיל 2
לכתוב פונקציה רקורסיבית שהופכת עץ בינארי-שמאל הופך לימין וימין לשמאל
נתון מערך בגודל K ובו מספרים מ1-N ומערך עזר בגודל N לכתוב קוד שיסדר את כל המספרים במערך הראשון ללא חזרות ומשמאל לימין(הכוונה שהמערך יהיה ריק מנקודה מסויימת מכיוון שרוב המספרים חזרו על עצמם)-בסיבוכיות של OׂNׁ
וקיבלתי חידה עם שקי מטבעות
ישנם K שקים אחג מהם מכיל 90 גרם במקום 100 גרם ע"י שקילה אחת יש לדעת מהו השק המזוייף
לאחר מכן נכנסתי למנהלת המחלקה בחורה מקסימה ויש לומר מבריקה שביקשה ממני לתכנן מערכת אשר תיתן את הפונקציה של T9 שיש בטלפונים הסלולאריים
ושאלה קשה שהצלחתי חלקית נתון ביטוי לדוגמא 3-4*2^4+(2*1) הביטוי הוא סטרינג
יש לתכנן אלגוריתם אשר יחזיר את התוצאה-הזעתי קשות בשאלה הזאת
מתברר שיש לישתמש ב 2 מחסניות או באחת יש כמה סוגי פתרונות
http://www.shafee.com/past-lectures/The-concept-of-a-datatype.ppt
פתרון השקים:
לשם פשטות נניח שיש 3 שקים,
ניקח את שק מס' 1 + 1/2 משק מספר 2 + 1/3 משק מספר 3 ונשקול ביחד
כעת לפי התוצאה נדע איה שק מכיל 90 גרם.
נניח ששק מס' 1 מכיל 90 גרם אזי החישוב הוא כך:
1*90 + 1/2*100 + 1/3*100
אם שק מס' 2 מכיל 90 גרם אזי החישוב יהיה:
1*100 + 1/2*90 + 1/3*100
אם שק מס' 3 מכיל 90 גרם אזי החישוב יהיה:
1*100 + 1/2*100 + 1/3*90
כך נדע בוודאות איזה שק מכיל 90 גרם.
ניתן להכליל זאת ל-K ע"י כך שפשוט ניקח מכל שק: 1/1 1/2 1/3 1/4 … אחד חלקי K
אמדוקס – C++ ומרכז הערכה
הדינאמיקה הקבוצתית מחולקת לשניים :
1)בחירת מועמדים לקבלה לעבודה
2)בניית גשר.
בגלל שזה חלק פסיכולוגי ויושבים איתכם מנהלי צוותים ומנהלי פרוייקטים , אי אפשר לדעת מה העדפה אישית שלהם ומה דרישות של תפקיד , אליו אתם מגוייסים.
החלק של מועמדים ->
מקבלים תיאור משרה ותיאור של 6 מועמדים , צריך לדרג אותם מ1 עד 6.בהתחלה כל אחד בנפרד ולאחר מכן דירוג משותף של כל הקבוצה שלכם.
לחלק הזה יש 5 דקות אם אני לא טועה , ובסוף צריך להקריא מה הקבוצה בחרה.על כל חברי הקבוצה להסכים לבחירה , אחרת היא תיפסל.חבר בקבוצה יכול להטיל וטו על ההחלטה (הדבר הכי דפוק לעשות) ואז אין החלטה . את החלק הזה עברו אנשים שהשתתפו ב-70% , לא הובילו את הדיון וגם לא שתקו לאורך כל הדיון.צריך לחשוב על אופציה , בה אף אחד בקבוצה לא יסכים אם הבחירה שלכם , ומה עושים במקרה הזה.להזכירכם , המנהלים לעתיד יושבים באותו חדר איתכם , ומקשיבים לכל דבר שנאמר.
החלק של הגשר -> נותנים המון חלקי לגו ומבקשים לבנות גשר (לפי 3 שבועות מימדים היו 10 על 15 , לפני שבוע זה כבר גדל ל-40 על 20 , אז אין לדעת ).לגשר צריכים להיות עמודי תאורה במרחק של 4 ס"מ אחד מהשני , רגליים ואסור שאף חלק בצבע אדום יגע בחלק בצבע כחול(בכל חלקי הגשר) , וכמה שיישאר פחות חלקים מיותרים – ככה יותר טוב.לבניה נתונה חצי שעה , כשבהתחלה צריך להתחלק ל-2 קבוצות ולחלק את הזמן ל
א)תכנון
ב)ביצוע
ג)אינטגרציה
כאשר בכל חלק המדריכה עומדת עם סטופר.
אחרי שלב התכנון שתי הקבוצות לא רשאיות לדבר זו עם זה , אז צריך לתכנן טוב.
אצלינו היה 15 דקות תכנון , 10 דקות ביצוע ו5 דקות אינטגרציה וזה מספיק זמן.
בסוף המדריכה שואלת באקראי לדרג את התנהלות הקבוצה ו\או התנהלות שלכם ומה ציון שהייתם נותנים לגשר.מומלץ לא לחרטט , אם הגשר יצא דפוק – אז לציין את זה .
לפני הדינאמיקות יש גם היכרות אישית :
המדריכה מפזרת המון קלפים עם כל מיני תכונות("לדעת לוותר" , "להוביל" , "לנצח" וכד') וצריך לבחור שניים:
1)תכונה שמאפיינת אותכם הכי טוב אותכם
2)קלף עם תכונה שהייתם רוצים שתהיה לכם.
פה בחלק הזה צריך לחשוב ניטרלי , ולחפש תכונות כמו "להאמין בניסים" , "לדעת להיות לבד" וכד' , אבל זה נתון לבחירה אישית שלכם .כאשר אתם בוחרים קלף תחשבו איך אפשר לעקוץ אותכם עם התכונה הזו (כי זה מה שהמדריכה עושה) .
התשובות ש"עברו" :
התכונה שלי -> לדעת להיות לבד
התכונה שהייתי רוצה שתהיה לי -> להאמין בניסים .
מבחן תכנות
1.א. עבור כל node בעץ תחליף בין בן שמאל לימין
1.ב. תדפיס את העץ לפי גובה כלומר תדפיס את ה שורש, אחר כך תדפיס את הבנים הישירים שלו, אחר כך תדפיס את הבנים הישירים שלהם וכך הלאה
2. בהנתן מערך בגודל N ופונקציית rand כתוב אלגוריתם שיחזיר מערך של N מספרים מ 0 עד N-1 מסודרים בסדר ראנדומלי ולא חוזרים על עצמם.
3.א. כתוב singletone
3.ב. תסנכרן את היצירה שלו
3.ג. תשפר את קוד של היצירה כך שהשהיה ב בלוק synchronized תהיה מנימלית. (תשתמש ב design pattern)
אמדוקס – תוכניתן JAVA מתחיל
שאלה ראשונה: יש תיאור ארוך של מחלקה של לקוחות. שואלים שם איזה שיטות צריך לדרוס. התשובה ממש בגוף המחלקה , יש 2 שיטות שכתוב שם OVERRIDE, פשוט תרשמו אותם.
אחר כך שואלים מה הסכנה ב clone של קוסטומר
אחר כך יש שאלה של מדפיסים משהו למסך ושואלים מה יודפס. (יוצרים שני אובייקטים, אחד עם ערך של 5 ואחד של 10- מכיוון שזה משתנה סטטי אז לשניהם יהיה 10 בסוף.
התשובה היא פעמיים המספר 10 (משהו כזה) מכיוון שזה משתנה סטטי מה שהוגדר שם, וכדי לפתור את הבעיה צריך להפוך אותו ללא סטטי.
אחר כך יש שאלהעל serialize. יש אובייקט שיש בו גם מספר כרטיס אשראי ורוצים להעתיק אותו לקובץ (יענו לעשות סריאלייז) מבלי להעתיק את מספר כרטיס האשראי. שואלים מה הפתרון לכך כי אסור להעתיק מידע מוגן לדיסק. לא ידעתי איך עושים את זה. אולי פשוט להוריד את הנתונים ולכתוב את האובייקט בלי.
אחר כך יש 2 שאלות שקשורות לרשימות. בכל שאלה יש קוד ושואלים מה לא בסדר בקוד ואיך לתקן
אני זוכר שבשאלה הראשונה יש בעיה שלא מנקים את האובייקט ולכן זה יוצר בעיות, צריך לעשות משהו עם clean
בשאלה השנייה אני חושב שאין שום בעיה, אבל אולי אני טועה.
אחר כך יש שאלות על SQL.
שואלים למשל מה זה PRIMARY KEY
מה זה FOREIGN KEY
ועוד כמה דברים ששכחתי.
ואז נותנים תיאור של מכון כושר וצריך לצייר את ה ERD DIAGRAM שלו (גם שאלה ב SQL)
שואלים אחר כך מה זה JDBC
מה זה MVVM
ובסוף יש שאלה הזוייה להפוך קובץ CSV של אקסל לטקסט או לדיסק.. עבודה עם קבצי CSV
זה מה שאני זוכר
אחר כך יש מרכז הערכה:
1. לספר על עצמכם.
2. המאבחנת זורקת קלפים על השולחן ואומרת לכל אחד לבחור קלף עם תכונה שהוא רוצה לשמור לעצמו וקלף עם תכונה שהוא רוצה לשפר
3. המאבחנת נותנת דף עם רשימת מועמדים לקבלה לעבודה. כל אחד צריך לדרג את המועמדים דירוג משלו, ואז הקבוצה צריכה להחליט ביחד על דירוג קבוצתי. מי שהדירוג שלו קרוב לדירוג הקבוצתי מקבל נקודות בונוס
4. צריך להרכיב גשר מלגו בתכנון קבוצתי. משימה ארוכה ולא פשוטה, חשוב לשתף פעולה ולתכנן זמן כמו שצריך.
אחר כך מנפים מועמדים בהתאם לשני השלבים הראשונים ואז שולחים לראיונות
בראיונות זה בעיקר שאלות אישיות איך אתה בעבודת צוות,ספר לי על פרוייקטים שעשית וכו'
אמדוקס – פיתוח תוכנה
הראיון היה מול שני ראשי צוותים.
בהתחלה מדברים איתך ורוצים לדעת מי אתה.
לאחר מכן אתה מקבל דף עם שאלה אחת בכל פעם.
שאלה 1: שאלה פשוטה: צריך לכתוב פונק' שממירה STRING ל – INT. ולאחר מכן, שואלים איך אפשר לטפל בקלט שגוי (EXCEPTION). המשיכו ושאלו קצת על EXCEPTION (מה קורה אם לא נתפס ע"י ה – CATCH).
שאלה 2: צריך לכתוב הגדרה של NODE של עץ בעל ערך INT. לאחר מכן פונקציה רקורסיבית שמחשבת את כל ה – VALUE של העץ. (תנאי עצירה צריך להיות NODE=NULL וזה יחסוך בדיקת תנאים של ענפים ריקים).
שאלה 3: א. נתון ממשק שמכיל ADD, REMOVE, SIZE. צריך לממש את מחלקת מחסנית שמממשת את הממשק (צריך לכתוב את כל ההגדרה, כולל ה – CLASS STUCK IMPLEMENT ——). כדאי להשתמש במבנה הנתונים של רשימה (יותר יעיל מוקטור כי וקטור ממומש ע"י מערך והוספת איבר למערך מלא דורש הקצאת מערך חדש בגודל כפול והעברת הנתונים לשם…)
ב. צריך לדאוג שהמחסנית תהיה מסונכרת לעבודה עם טרדים שונים (צריך להשתמש ב – SYNCHRONIZE פעמיים או שלוש כאשר משתמשים במבנה הנתונים).
ג. קוד המכיל 2 טרדים ורוצים לדעת מה הפלט. תרד ראשון כותב לתוך טבלת האש, שהמפתח שלה הוא האות הראשונה של הקלטים שמסופקים והערך הוא 1). הטרד השני קורא מהטבלה את הערך, מגדיל אותו ב – 1 וכותב אותו בחזרה (דורס את הערך הקודם שהיה בטבלה). בסופו של דבר היה לי פלט של 2 או 3 שורות .
ד. מה יכול להיות בעיה בקוד? DEADLOCK (כל טרד מבצע שני BLOCK בשני מקומות, אבל בסדר הפוך).
שאלה 4: קיים קוד שמכיל פונקציה שמקבלת שני מספרים שלמים ותו (שיכול להיות +-*/). קיים SWITCH על התו שמבצע את הפעולה החשבונית המתאימה. צריך לפתור את השאלה בצורה OO.
ב. איך אפשר להפטר מה – SWITCH? שימוש בטבלת האש: מפתח – תו, ערך – new class().
מבחן שני חלקים
שני חלקים למבחן:
1)מבחן על השפה – המבחן אמריקאי ומורכב מ – 25 שאלות.
2)מבחן בלוגיקה (בסיסי נתונים) – המבחן פתוח ומורכב מ – 3 שאלות.
1) חישוב סיבוכיות זמן ריצה וזיכרון, למה משמש copy constructor, שאלה על תהליכים(אם משתמשים בתהליך למה אמורים לדאוג? הרעבה ודדלוק), פונקציה בונה – מי פועלת ראשונה כשיורשים(נתנו קוד ושאלו לפלט),פונקציה וירטואלית(וגם טהורה), אם כל הפונקציות וירטואליות – האם גם ה distructor חייב להיות כזה, האם swap עם משתנה עזר עדיף על swap דרך ייחוס, מה זה memory leak.
זה מה שאני זוכר.. אם אזכר בעוד שאלות אעלה.
2)נותנים כמה טבלאות והסבר על כל טבלה ומבקשים לחשב את התשלום עבור חודש ספיציפי.
Apple - אפל
Firmware Engineer
הייתי בראיון ב APPLE לא מזמן לתפקיד FW Enigneer.הנה שאלה ששאלו אותי שם.
אני לא עברתי. לא יודע אם אני מצטער על זה או לא…
נתון בניין בן שמונה קומות עם מעלית.
נתונות הפונקציות הבאות.
void EngineUp()
void EngineDown()
void EngineStop()
STATE EngineStateGet()
כאשר STATE הוא ה ENUM הבא
enum STATE{
UP=0,
DOWN,
STOP
};
int EngineGetCurrFloor()
ובנוסף ישנה עוד פסיקת חומרה שקוראת לפונקצייה הבאה בכל פעם שלוחצים על אחד הכפתורים במעלית
void EnignePressedFloor(int floor)
הפוקצייה מקבלת כפרמטר את הקומה שבה נלחץ כפתור המעלית
נתבקשתי לכתוב קוד שיממש אלגוריתם של המעלית?
הייתי צריך להתייחס למבנה הנתונים שבו אני אשתמש. לdesign הכללי של הקוד ולאחר מכן לכתוב את הקוד על דף.
כמו-כן הייתי צריך להתייחס לבעיות RT שיכולות לקרות, וכיצד ניתן לפתור אותם.
בהצלחה!!!
Applied Materials - אפלייד מטיריאלס
ראיון למשרת מהנדס חשמל
בראיון מדברים על אינטרפומטר מייכלסון התאבכות עקיפה NA לייזרים דובר גם על צומת PN על גלאים
למשל גלאי PIN הם מתעסקים במיקרוסקופ אופטי ולא אלקטרוני הייחוד הוא שהאור מגיע מלמטה
כבקשת הלקוח דברנו על מיקוד של אור של לייזר ,עדשות מרכזות, על קוהרנטיות של אור, למה
צריך אינטרפומטר בכלל מה השימוש שלו.
קורסים לדעת :
אופטיקה פיסיקלית
התמרת פורייה
לייזרים
אופטיקה גאומטרית
גלאים
אלקטרוניקה
מל"מ
CEVA DSP
CEVA DSP – חידות קידוד
1. מה הבעיה בקוד הבא:
char *p;
p = 0x10000;
*p = 0x600;
*p = 0x800;
2. נתונה תמונה עם 256X256 פיקסלים ועוד פריים עם 16X16 פיקסלים. צריך למצוא את הפריים הכי קרוב לפריים הנתון בתוך התמונה. ההגדרה של הפריים הכי קרוב הוא זה שסכום הפרשי הפיקסלים בערך מוחלט הוא הנמוך ביותר. צריך להתייחס לתמונה ולפריים כאיזורים רציפים בזיכרון כאשר הפונקציה מקבלת שני מצביעים לשניהם.
CEVA DSP – פיתוח
1. נתון משתנה בעל 8 סיביות, יש לכתוב פונקציה בשפת סי
שתקבל את המשתנה ותחזיר את ההשתקפות של אותו משתנה. דוגמא:
עבור קלט של:
001011001
הפלט יהיה:
100110100
פתרון:
דרך1 :
בעזרת לולאה לאפס כל פעם 7 ביטים ולהשאיר רק 1, כאשר אנחנו כבר יודעים מה ערכו- ליצור משתנה חדש.
דרך 2:
בעזרת מערך קבוע של 256 ערכים, כל פעם שמקבלים משתנה ניגשים למערך שמסודר כך שבמקום ה- X יש השתקפות של X
CEVA DSP – פיתוח תוכנה
שאלה 1:
פונקציה מקבלת מצביע למחרוזת ומספר מסוג INT
על הפונקצייה להמיר את המספר מint לchar תוך כדי התחשבות במספרים שלילים
שאלה 2:
נותנים לך מערך בגודל N
בהתחלה אומרים לך כמה עולה כל פעולה (אונארית /בינארית)
מראים לך קטע קוד
ומבקשים ממך לחשב זמן ריצה.
אח"כ אומרים לך שיש כפל של שני מערכים בגודל N בכל פעם שהפו' נקראת
ובנוסף המערך צריך לזוז ימינה מקום אחד ויש להוסיף איבר חדש משמאל
עליך למצוא דרך לייעול התוכנית
רמז: אפשר להמנע מהזזת כל התאים ימינה פעם אחת ולבצע את זה ב-O(1
CEVA DSP – QA ומולטימדיה
1. נתונה מערכת מולטימדיה שמקבלת שני פרמטרים: א. קבצי אודיו ב. קבצי וידאו.
המערכת מקבלת אך ורק את הפורמטים הנתונים ויכולה לשלב בין שניים (אחד מכל סוג)
למערכת גם מקשי PLAY,REWIND,STOP,SEEK.
תכנן בדיקות למערכת.
פתרון
לנסות ולבנות פתרון שמפורק לראשי פרקים: שלב קבלת הפרמטרים, שלב בדיקה, שלב פלט.
לפרק את הבדיקות בין וידאו לאודיו.
לצורך בדיקת תקינות מלאה, לקחת מערכת שאנחנו יודעים שעובדת ולהשוות מולה את הבדיקה שלנו מבחינת איכותה.
2. שאלת תכנות בשפת C, שכללה ידע בביטים (פעולות MSAKING, OR, AND).
מתכנת שיכור רשם את התוכנית הזאת, עליך להבין מה היא עושה, ואיפה המתכנת טעה.
עליך לכתוב מחדש את הפונקציה.
bool func(int *data, int size, int value)
{
int arr[32];
short index;
for(index = 0; index < size; index++)
arr[index] = data[index];
for(index = 0; index < size; index++)
arr[index] = arr[index] & vlaue;
data = &arr[0];
}
פתרון:
הפונקציה לוקחת כל תו במערך ומבצעת עליו MSAKING בעזרת המשתנה value.
א. short בעייתי.
ב. גלישת זיכרון (מכוון שההקצאה היא רק ל-32 מקומות ועלולים להיות יותר)
ג. הקצאת המערך בתוך הפונקציה לא תקינה כי מערך סטטי מת בסוף הפונקציה ולכן ההשמה בשורה האחרונה היא בעייתית.
ד. ניתן, וצריך לשכתב על המערך הנתון את הפתרון.
CEVA DSP – Logic Design Engineer
בשאלה הראשונה נתנו לי תרשים של כניסות ומוצאים של רכיב מסויים, ושל clock ושאלו אותי מה הרכיב עושה – המוצא היה זהה לכניסה בהפרש של מחזור שעון אחד, לכן זה DFF.
אחר כך נתנו לי את אותה שאלה עם גרפים שונים – הכניסה הייתה מדרגה, והמוצא היה Pulse אחד כשהכניסה עולה ל'1', וPulse נוסף כשהכניסה יורדת חזרה ל"0'. לכן הרכיב הוא גוזר בעלייה וירידה, ואז ביקשו ממני לממש אותו עם לוגיקה. אחר נתנו לי לממש רכיב שגוזר רק בעלייה (אם תבדוק במאגר השאלות של האתר, יש פתרון לזה באחד הקבצים).
אני לא כל כך זוכר את השאלה שאחר כך, אבל זה היה משהו שקשור ברכיבי ארכיטקטורה של מחשב( adder-ים, shift registers וכו')
CEVA DSP – מהנדס וריפיקציה
1. מימוש גוזר סינכרוני וגוזר אסינכרוני ע"י FFים ושערים לוגיים (כאשר נתונה התנהגות הסיגנלים (מוצא, שעון וכניסה)
2. לממש רכיב שמקבל מספר (כתובת) בעל 8 ביטים ועוד מספר size שיכול להיות 1,2,4 בלבד (כמובן בעל 3 ביטים) ומוציא את הכתובת+ size .
ניתן לממש רק ע"י:
– MUXים
– רכיב שיודע להוסיף 1 למספר בעל 8 ביטים בכניסה (Half Adder) . מותר להשתמש בו פעם אחת בלבד.
– חומרה צירופית (OR,NOT,AND וכו')
אולי פשוט ניתן לממש מחבר עם שרשרת של Half Adder כאשר כל Half Adder ממודל ע"י : s=AxorB , c=AB , רק בשני המסכמים (השני והשלישי) ישנה בעיה שיש צורך במידול של full adder (בראשון אין בעיה כי אין עדיין carry , ומהרביעי אין בעיה כי אין כניסה של size ).
את זה אפשר לפתור ע"י : להכניס לכניסה השנייה של ה half adder (הממודל) , xor של ביט ה – size ו ה – carry הקודם (וזה עובד כי רק ביט אחד של ה size הוא 1 ).
זה עובד, אבל אז צריך לגרור את הCarry לכל 8 הביטים, כי בכל מקום שיש Carry מדרגה קודמת וביט נוכחי של הכתובת, עשוי להיווצר Carry חדש. והרי מותר להשתמש ברכיב פעם אחת בלבד..
ואם כבר מממשים F.A. אפשר לעשות את זה כבר עד הסוף רק בעזרת שערים לוגיים, בלי הרכיב המדובר ובלי MUXים. אבל כנראה שגם זו לא הכוונה.
אפשר אולי ע"י מוקס 8X3, של 8 ביט. להשתמש בSIZE בתור SEL.
SEL=0, מעבירים כמות שהוא.
SEL=1, מעבירים '0'&[7:1]
SEL=4, מעבירים "00"&[7:2]
זה בעצם לעשות SHIFT ידני…
לחבר את זה לHA שיבצע INC. ולאחר מכן את התוצאה להעביר שוב בMUX כזה, שיצרף את הביטים "שהזזנו" חזרה לתוצאה.
CEVA DSP – מפתח בדיקות אוטומציה
extern static_array[N]
func(int x)
{
static short array[N]
int x, i
for (i=N;i<1;i–)
array[i-1]=array[i]
array[0]=x
for(i=1;i>N;i++)
value +=(long)array[i]*static array[i]
return value
}
פעולת חיבור/כפל/חיסור עולה 1 (סייקל cycle) פעולת גישה למערך עולה 5 סייקלים
שאלות:
1. כמה כל התכנית עולה? ( פעולות בתוך הלולאה, כמו קידום המשתנה לא עולים כסף)
2. קצר את זמן הריצה בחצי כשלרשותך הפונקציות:
inc_mod(i,n){
while(i<=n)
i++
if i=n
i=0
}
dec_mod(i,n){
while (i>=0)
i–
if i=0
i=n]
}
CEVA DSP – QA אוטומציה
יש מעבד שאינו משתמש בfloat ועל מנת לייצג שברים, הוא משתמש בinteger long המיוצג עם שלמעשה מיוצג בעזרת 4B-32bit.
נגדיר את ביטי הlong באופן הבא:
הביט הMSB נסמנו S -signed
ה8 ביטים הבאים נסמנם E – Exponentially
ו23 ביטים הנותרים נסמנם M -mantissa
הנוסחה הבאה מייצגת את השבר בעזרת ה long:
(1- בחזקת S)כפול( M )כפול(2 בחזקת E)
צריך לרשום את הפונקציה :
unsigned long add(unsigned long float1, unsigned long float2)
שמקבלת שני ערכי long (שהם למעשה שברים) , עושה חיבור שלהם ומחזירה את התוצאה בlong
אולי התכוון ל bit shifting:
2^E=.1 << E
CEVA DSP – קומפיילר
השאלה הראשונה היא לממש פונקציה הממירה
int -> string
שתקרא מהפונקציה הראשית הבאה:
int main(void) {
int x=1234;
char *str = malloc(100);
rev(x,str);
printf("num is %s",str); // Should print 1234
return;
And my solution is (Solved it correctly at home later =\ ):
void rev(int x,char *str){
int j=0;
if (x==0){
str[0]='0' ; str[1]= '\0'; return;
}else if (x<0){
str[0]='-';
j=1;
x = x*(-1);
}
int counter=0;
int temp = x ;
while (temp-(temp/10)*10 >0){
counter++;
temp =temp/10;
}
str[counter+j]='\0';
j = 1-j;
for (;counter>0;counter–){
int t = x-(x/10)*10;
str[counter-j] = '0'+t;
x = x/10;
}
}
CEVA DSP – Debugger Engineer
שאלו 3 שאלות:
1. א – מהם שני סוגי החיפוש בעצים? – לאורך ולרוחב.
ב – נתון שבשביל לממש חיפושים אלה, משתמשים בתור ובמחסנית. באיזה סוג חיפוש משתמשים בתור, ובאיזה למחסנית?
2. השאלה על הכפל, תוך שימוש ב inc, dec, jnz, אשר מופיעה כאן בפוסטים קודמים.
3. נתון הקוד הבא:
קוד: בחר הכל
extern short const_array[2000]
long fun(short x) {
static array[2000];
long res = 0;
for (int i=1999; i>0; i–) array[i] = array[i-1];
array[0] = x;
for (i=0; i<2000, i++) res += array[i]*const_array[i];
return res;
}
כאשר כתיבה למערך לוקחת 5 מחזורי שעון, קריאה והשמה למשתנה 5 מ"ש, וכל פעולה אחרת מ"ש אחד. ללולאת ה for עצמה איך בזבוז מ"ש.
לצורך העניין, סיבוכיות הפונקציה הנ"ל היא 23n+6 (כאשר n מייצג 2000).
המשימה: לצמצם את זמן הריצה.
אני הגעתי ל 18n, אבל המראיין אמר לי שאפשר בסדר גודל של חצי. לא הצלחתי .
המשך –
ל-traversing שהוא depth first (כלומר כל ה pre / post / in orders), צריך להשתמש במחסנית. הרעיון הוא שדוחפים ושולפים נתונים מהמחסנית בהתאם לסוג הסריקהץ
ל-traversing שהוא breadth first, משתמשים בתור (שהוא בעצם FIFO). למה זה היגיוני? תחשבו שהכנסתם לתור את האב, שני בניו, ואז 4 "נכדים". הסריקה צריך להתבצא מהאב -> בנים -> נכדים.
CEVA DSP – צוות Video Codec
תאריך:
1. כתוב תוכנית ב-C שתגיד האם המערכת שאתה עובד בה היא big endian או little endian.
פתרון:
קוד: בחר הכל
int endian()
{
long int *buff;
short int i;
buff = (long*) malloc(sizeof(long));
*buff = 1;
(char) i = *buff;
if (i == 1)
{
return 1;//little
}
else
{
return 0; //big
}
}
2. ברשותך מעבד שתומך בפקודות הבאות:
mac(x,y,z) = x*y+z
H(Rx) = high bits of reg Rx
L(Rx) = low bits of Rx
המעבד יכול לבצע 2 פקודות במחזור.
לרשותך כמה רגיסטרים שתצטרך.
ממש את הפונקציה הבאה:
( ( (a – b)<<2 ) + c – d + 4)>>3
תוך שימוש בפקודות ובקבועי int.
פתרון:
פנים הסוגריים זה קל למימוש. הטריק של החלוקה ב-8 (3<<) הוא להזיז את ה-low bits של פיתרון פנים הסוגרים ב-13 (כלומר כפל ב-2^13) ולקחת את ה-high bits (אין גלישה כי מדובר על חיבור וכפל של int).
אם פותחים את הסוגריים בצורה הבאה למשל:
קוד: בחר הכל
(a – b)*2^15 + (c – d + 4)*2^13
ניתן לממש ב-3 מחזורים:
קוד: בחר הכל
R5 = mac(b, -1, a) || R6 = mac(d, -1, c)
R7 = mac(R5, 2^15, 0) || R8 = mac(R6, 1, 4)
R9 = mac(R8, 2^13, R7)
והתוצאה נמצאת ב-H(R9).
CEVA DSP – חידות ושאלת אסמבלי
נתונים 2 קופסאות 2->1 שמקבלות שתי מספרים ומוציאות את המינימום ואת המקסימום בהתאמה.
בעזרת שתי הקופסאות האילו צריך לממש קופסה של 3->3 שממינת 3 מספרים.
האמת זה שאלה לא קשה.
זה ממש לא בעייה למצוא את המינימום ואת המקסימום.
מה שהסתבכתי זה למצוא את המספר האמצעי. אבל אם חושבים על זה טוב פותרים גם את זה.
שאלה שנייה.
ממש קוד אסמבלי של פונקצייה שכופלת שני מספרים x,y
למשל foo(x,y)w (ה W זה כדי שיהיה כתב ברור )
כאשר נתונים רק 3 פקודות אסמבלי.
inc x
dec x
jnz label.
אילו שני סוגי קופסאות אחד של מינימום ואחת של מקסימום.
אבל מותר להשתמש בכל קוספה כמה פעמים שרוצים.
בעקרון צריך להשתמש ב- 3 לולאות ולייבלים ועם משתנה עזר:
לולאה 1 – עובדת על X
לולאה 2 – עובדת על Y
לולאה 3 – עובדת על Z שמקבלת את הערך המקורי של X
Check Point - צ'ק פוינט
יום מבחנים בצ'ק פוינט – קוד
קודם כל המבחן לא קל בכלל אז אל תזלזלו ותתכוננו חזק , תבואו ערניים ועם סנדביץ טוב ובקבוק מים (עדיף ערק שיהיה בכיף) ואל תיהיו מקובעים בראש מבחינת פתרון (למי שחושב שלפתור את השאלות בבית זה פותר אותו מלהתאמץ).
מי שבאמת מסיים את המבחן שלהם בשלוש שעות תותח ומגיע לו לעבוד שם כי אתה חייב לתקתק את הקוד כמו מכונה , לא כולם מספיקים גם ב 4 שעות והם משוחררים הביתה.
קצת לגבי המבחן :
קודם כל יש לקרוא את ההוראות לכל שאלה באנגלית והזמן רץ גם בזמן הקריאה , ההוראות כתובות שם וכן את הדברים שאתה צריך על מנת לפתור את השאלה , אין טעם לחפש בקוד סתם דברים למעט לגבי הערות מה עושה פונקציה ספציפית שאתה רוצה להשתמש בה.
מי שפתר את השאלות שמופיעות פה ורשם לעצמו הערות יחסוך לו זמן , מה שכן לפתור בבית את השאלות לא מדמה בצורה מלאה את שיטת העבודה שלהם על הפונקציות שאתה צריך לכתוב ולכן תבינו את הבסיס לפתרון ובשטח תבינו מה הם עושים ואיך להתאים את זה (באמת שלא מסובך רק קחו בחשבון עשר דק הבנה של מה בדיוק קורה ולכן ממליץ באמת להתחיל משאלה מספר 1 שהיא יחסית קלילה על מנת להבין את העקרון).
*היתה גישה מאוד מצומצמת לאינטרנט בעיקר על מנת לחפש פונקציה ספציפית בשפה שבה אתם נבחנים , לא הייתי בונה אבל על זה כי תגלו שזה מעכב מאוד אם תנסו לחפש יותר ממשהו אחד.
לגבי השאלות :
1)כמו שכתוב כאן בפורם , לדעת עץ בינארי ממויין ואיך עושים סריקה שלו.
2)שאלת API באמת שלא מסובך , תחפשו איזה פונקציות קיימות לשימוש ומה הם עושות , כמו כן תעברו על הקוד להבין טיפה מה קורה שם.
3)השאלה הקשה ביותר במבחן , תקראו טוב את ההוראות ואז תיגשו למצוא את הבאגים ולתקן , המלצה תעברו שורה שורה בקוד ותבינו מה היא עושה ותחפשו איפה השגיאות הלוגיות (מומלץ לעבוד עם הדיבאגר ולהבין מה קורה שם)
*הערה – היה מישהו שכתב פה כבר שכנראה ההודעות שהוא קיבל היו לא תקינות אז זה לא נכון כנראה שהוא פשוט לא הבין מה צריך לעשות בצורה מלאה ,שלא תתקעו ותחשבו שזה קרה גם לכם ותתיאשו.
4)כמו שכבר אמרתי הם עובדים בצורה מעט שונה מבחינת קוד אז אם אתם מנסים לממש בבית קחו בחשבון שיש להתאים למה שתקבלו בשטח .
*יש שם רמז ברור בקוד לכמות המקסימלתי הניתנת של שולחים בעלי 10% או יותר מהסה"כ אם לא הבנתם עד עכשיו כמה ולמה.
5)היתה לי שאלה נוספת אז קחו בחשבון שזה יכול להיות לכל השפות , אני אישית לא נתקלתי אף פעם בשאלה כזאת , יש שעה לחשוב איך לבצע ולממש (תפתרו בבית לפני דוגמאות ממה שתמצאו על מנת שיעזור לכם בחשיבה).
אל תתבישו לקחת עשר דקות הפסקה לפני החלק הבא לשרותים וכו'.
לגבי החלק של ה לינוקס :
1)באמת שאין צורך להתכונן או להיות בעל ידע מראש ,אני אישית בחיים לא פתחתי לינוקס , הכל כתוב לכם בהוראות פלוס להפעיל מעט את הראש , יש שעה וחצי שזה בהחלט אמור להספיק.
יום מבחנים 2020 – עדכון
הייתי שבוע שעבר במבחנים האלה וזה אכן זהה לכל מה שנכתב כאן:
4 שעות בחינה, כשבשעה הרביעית יורדות כבר נק'.
4 שאלות לממש, הראשונה עץ בינארי, וכ'ו כמו שכבר נכתב.
שום שאלה שם לא היתה ממש קשה, כמו זה שהייתי צריך להתמודד עם להבין קוד קיים ולעבוד עליו.
זה לקח לי המון זמן לקלוט מה מקבלת/מחזירה כל פונק' שהם בנו שם, והיו מקומות שהם בכוונה כתבו בצורה לא מובנת. כמו כן, לדעתי ההוראות מאד לקו בחסר.
השעון שמתקתק מולך גם תורם ללחץ.
לדעתי ההכנה הכי טובה למבחן כזה (בדיעבד)-לבקש מחבר איזה שהוא תרגיל בC שהוא עשה כבר בעבר. לבקש ממנו למחוק 2 מימושים של פונק' ושאתה צריך לממש אותם. משהו כזה.
יום מיונים- תיכנות- תאור מפורט
יש למבחן 3 חלקים: חלק ראשון הכי גדול שבו 4 שאלות תכנותיות והוא נמשך 3-4 שעות, חלק שני של שעה וחצי ובו נדרשים להריץ קצת פקודות בסיסיות של תקשורת בין שתי מכונות לינוקס ובנוסף גם לקמפל ולהתקין קוד תוכנה מוכן, חלק שלישי הוא בן רק חצי שעה והוא מבחן עיצוב גרפי.
חלק א:
ישנה כביכול מערכת שאמורה לבצע 4 פעולות (כל פעולה זה שאלה): פיירוול של מסרים, סינון מסרים עם וירוסים, סינון מסרים עם מילות מוגנות וניטור של תעבורת המסרים.
מקבלים solution מוכן שבתוכו יש פרויקט שבו 4 מחלקות, כל מחלקה מייצגת שאלה נפרדת, בכל מחלקה יש פונקציה או שתיים ריקות או לא תקינות שאותן אתם צריכים למלא/לתקן.
חוץ מהמחלקות האלו ישנן עוד מחלקות נתונים ועוד פרויקטים אבל בהם לא נוגעים.
מחלקה חשובה מאוד היא מחלקת הודעה/מסר (message) שבאה לייצג טיפוס נתונים מסוג הודעה, בטיפוס הזה יש כתובת שולח, כתובת מקבל, תוכן ההודעה (כמחרוזת) ועוד..
בנוסף לאחר שכתבתם את הקוד ישנו טסטר אוטומטי שהוא מריץ הרבה מסרים על המחלקות השונות והוא מדווח אם מה שכתבתם מתפקד כהלכה ואכן המחלקות מבצעות מה שצריך על המסרים ומקטלגות אותן נכון.
שאלה 1 – צריך לכתוב חיפוש בעץ בינארי ממוין (כלומר לכל קודקוד הבנים משמאל קטנים יותר מהקודקוד ומימין גדולים יותר), ישנו עץ בינארי ממוין שמכיל בכל קודקוד כתובת אסורה (נמשל כתובת של ספאם), את העץ בונים בפונקציה אחרת שעוברת על קובץ טקסטואלי וממירה אותו לעץ אבל הקוד הזה לא אמור לעניין אותכם, בנוסף ישנה פונקציה שמקבלת הודעה ובה אתם צריכים לכתוב קוד שבודק שכתובת השולח וכתובת המקבל לא נמצאים בעץ, אם אחד מהם נמצא אז מחזירים enum שמייצג לזרוק את המסר אחרת מחזירים enum לקבל את המסר.
שימו לב שהביצועים מאוד מאוד חשובים בייחוד בשאלה הזאת ולכן הדרך הכי טובה לדעתי לפתור את זה היא לעשות סריקה של העץ באמצעות while ולא רקורסיה! (מי שלא יודע שיחפש בגוגל איך מחפשים ערך באמצעות לולאה בעץ בינארי ממוין ודגש על ממוין!).
כמה דגשים די טריוואלים: שימו לב שצריך לעשות 2 סריקות של העץ (אחת עבור כתובת השולח ושניה עבור המקבל) לכן כמובן שעדיף לכתוב את סריקת העץ כפונקציה נפרדת שמקבלת פרמטר כתובת ולקרוא לפונקציה פשוט פעמיים, דגש שני הוא שאין לאתחל את העץ בתוך הפונקצית טיפול מסרים שאתם כותבים כי אז עבור כל מסר העץ יאותחל מחדש, יש להגיד משתנה private מסוג העץ במחלקה (של השאלה) ובבנאי שלה לאתחל את העץ וכך הוא יאותחל רק פעם אחת.
שאלה 2 – בשאלה זאת נדרשים לסרוק כל מסר ולגלות האם הוא מכיל וירוס, הסריקה מתבצעת באמצעות מחלקה אחרת שנקראת אנטי וירוס שבה לא אמורים לגעת (אבל כן להבין קצת את הקוד שלה), גם כאן יש לממש פונקציית טיפול במסרים כאשר כל מסר נשלח לאובייקט מסוג המחלקה האחרת ויש לו פונקציה שסורקת את המסר ומחזירה האם יש בו וירוס או אין ובהתאם אתם מחזירים את ה – enum המתאים.
כמה דגשים: כמו בשאלה 1 גם כאן יש להגדיר משתנה פרטי מסוג מחלקת אנטי וירוס ולאתחל אותו בבנאי, חשוב לשים לב שהאתחול כולל גם new וגם קריאה לפונקציית setup (פונקציה של המחלקה) שהיא טוענת בסיס נתונים של הוירוסים וכך האובייקט אנטי וירוס מוכן לשימוש, אגב הצורה שבה הסריקה מתבצעת היא באמצעות ביטויים רגולרים אבל זה לא אמור לעניין אותכם, שימו לב שגם בקריאה אח"כ לפונקציית סריקת מסר מלבד המסר יש עוד כמה ערכים בוליאנים ששולחים אליה, יש ערך שנקרא fullscan שהוא צריך להיות false כי אם הוא true אז מה שיקרה זה שמסר שישלח יבדק כנגד כל הבסיס נתונים של הוירוסים שזה מיותר מכיוון שאם הוא false אז הוא סורק רק עד מציאת וירוס ראשון ואז מפסיק וזה ישפר לכם את הביצועים, יש עוד פרמטר (הראשון ביותר) שבכלל אין לו שימוש בתוך האנטי וירוס וסתם כתבו אותו כדי לבלבל, והפרמטר האחרון הוא loadviruses אך הוא יכול להיות true או false זה לא משנה, כי גם ככה בכל קריאה לסריקת מסר יש בדיקה האם הבסיס נתונים כבר נטען קודם ואם כן אז לא טוענים אותו גם האם הפרמטר הזה יהיה true.
שאלה 3 – יש מחלקה שבתוכה יש פונקציה שמקבלת את המסר וקוראת לפונקציות אחרת במטרה לראות האם במסר יש מילים שמורות אסורות, אם כן אז יש להחזיר enum של זריקת המסר אחרת קבלת המסר, הקוד כבר כולו כתוב כולל פונקציית קבלת המסר אבל יש בקוד הזה הרבה באגים ובכלל המצב הראשוני שלו שהוא מתרסק אם מריצים אותו.
כמה דגשים: יש שם בהתחלה משתנה result שאותו מחזירה הפונקציה אך בשני ה – if העיקריים לא מוצב בו הערך ואת זה יש לתקן, יש משתנה messagedata שלא מקבל ערך בהתחלה.
שימו לב שהתיקונים הם אומנם ברובם בפונקציית הקבלת מסר אך יש גם לתקן קצת בפונקציות האחרות, בנוסף בשאלה הזאת מאוד עוזר בסוף להריץ את הטסטר האוטומטי כדי לוודות שכל המסרים קוטלגו כמו שצריך.
שאלה 4 – צריך לכתוב 2 פונקציות, אחת היא של קבלת המסרים והשנייה היא החזרה של כל הכתובות השולחות שמהם נשלחו יותר מ – 10% מהמסרים עד עכשיו.
הדרך לממש את זה היא באמצעות hashtable וביתר פירוט dictionary ב – #C, כל מפתח (key) יהיה בו כתובת שולח מסוימת וכל ערך יהיה כמה מסרים הכתובת הזאת שלחה, כלומר בעת קבלת מסר חדש בפונקציית הקבלת מסרים יש להעלות את המונה של מפתח כתובת השולח ב – 1 (או כמובן אם זו פעם ראשונה אז יש להוסיף מפתח חדש עם הערך 1) בנוסף יש לשמור מונה פשוט גלובלי ברמת המחלקה שכל פעם שמתקבל מסר חדש אז הוא מוגדל ב – 1.
בפונקציית החזרת הכתובות יש פשוט לעשות לולאה שסורקת את כל המפתחות ב – hashtable ועבור כל מפתח בודקת האם הערך שלו לחלק בערך של המונה הכללי גדול שווה מ – 0.1 (כלומר שווה או גדול מ – 10%), אם כן אז מוסיפים אותו לרשימה שאותה בסוף מחזירים בפונקציה.
כמה דגשים בכלל לכל חלק א: חשוב להגן על הקוד כמו נמשל בפונקציית קבלת ההודעות לבדוק שההודעה המתקבלת היא לא null ושהמסר בתוכה לא ריק, כדאי גם להשתמש ב – try catch בייחוד במצבים של נמשל פניה לאנטי וירוס החיצוני בשאלה 2 שם אנחנו לא יודעים איך מימשו אותו.
חלק ב:
בחלק זה בודקים ידיעה והבנה של פקודות תקשורת בסיסיות, קימפול והתקנה בלינוקס, זה נעשה באמצעות מסמך מפורט שבכל שורה אומר תעשו כך ותעשו כך, אתם צריכים לעקוב שורה אחרי שורה במסמך ולבצע בפועל את ההוראות על שתי מכונות וירטואליות של לינוקס שהן באותה הרשת, ברוב ההוראות במסמך גם רשום איזו פקודה יש להקליד, נמשל רשום שיש לבדוק תקשורת על ידי כתיבת ping וכתובת ה – ip של המכונה השניה, אך יש שורות שבהן לא רשומות הפקודות כמו נמשל רושמים שם שיש לקמפל (תוכנה מסוימת שמקודם הורדנו) בדרך הסטנדרטית ואחר כך להתקין אותה אבל לא רושמים איזה פקודות להקליד.
אנסה לפרט מה שאני זוכר שיש לעשות שם: דבר ראשון יש לבדוק כתובות ip של שתי המכונות, אחר כך לעשות פינג מהמכונה הראשונה לעצמה, אחר כך מהראשונה לשניה, להוריד קובץ tar/zip מהמכונה השניה לראשונה באמצעות ftp, הקובץ הוא למעשה התקנה של תוכנה בשם pure ftp, יש לפתוח אותו, לקמפל את התוכן שלו, להתקין את התוכנה, להריץ אותה, לעשות kill לתהליך שלה, לחפש בתוך אחד ה – headers שלה מסר מסוים (welcome to), לפתוח את המסר הזה ולהוסיף לו את המילה my, לקמפל שוב ולהתקין את התוכנה מחדש, לפתוח את התוכנה ולראות שהמסר שהיא מציגה בהתחלה השתנה בהצלחה.
כמה דגשים: כמו שקודם אמרתי רוב הדברים שיש לעשות רשום במסמך איזה פקודות צריך להקליד כך שאין צורך לזכור פקודות בעל פה, כשמחפשים את המסר שיש לשנות אז לחפש רק את המילים "welcome to" ולא את כל המסר (כי זה נראה לי מסר שמשורשר משני מקומות שונים) אם אני זוכר נכון זה נמצא בקובץ messages_en.h, את הקימפול הסטנדרטי אפשר לעשות עם gcc או make אבל אין צורך לשבור את הראש ולמצוא מה צריך לקמפל אלא יש שם קובץ טקסט שנקרא install, פותחים אותו עם עורך טקסט וישר בשורה הראשונה רשומות 3 פקודות שצריך להריץ, מריצים את 3 הפקודות אחת אחרי השניה והן גם מקמפלות וגם מתקינות את התוכנה, כדי להפעיל את התוכנה אני נכנסתי פשוט לתיקיית הקיצורי דרך לתוכנות מותקנות שהיא אם אני זוכר נכון usr/local/sbin (בכל מקרה כאשר מריצים את 3 הפקודות אז רשום לאיפה הוא מתקין אותה).
חלק ג:
טוב האמת שכאן אין לי יותר מדי מה לומר וגם אין כל כך איך להתכונן לזה, מדובר במשימת עיצוב גרפי, אגב אין חובה לעשות את החלק הזה אבל מי שעושה אותו יהיה לו יתרון בקבלה לתפקידים שדורשים יכולת עיצוב ממשקים, במשימה מדברים על מערכת שמשמשת לחיפוש עובדים בחברה, נותנים תמונה שבתוכה יש כביכול תוצאת חיפוש אחת שכוללת תמונה של עובדת, כמה פקדים והרבה מידע עליה שנמצא בדרך כלל כתיבות טקסט, התצוגה הראשונית בתמונה לא נראית טוב ודי מבולגנת, המשימה היא לפתוח את התמונה בשלמותה בצייר ולגזור ממנה חלקים שונים כמו נמשל התיבות טקסט ואותן לארגן בתמונה חדשה (חלון צייר שני) כך שבסופו של דבר תתקבל תמונה סופית שונה שמציגה את העובד ופרטיו בצורה הרבה יותר מאורגנת, יפה ושימושית, ניתן לשנות את הגודל של הפקדים, צבעים ובכלל כל דבר כמעט שאפשר לעשות בצייר.
כמה דגשים: כדי להתכונן לחלק זה אז למי שלא מכיר אולי כדאי באמת לעבוד קצת עם הצייר, לגזור חלקים מתמונה לשנות גדלים וכ"ו, כדאי לעבוד בצייר במוד זום מוגדל (נמשל 200%), כדאי להתחיל מלחשוב על קבוצות פקדים שונות עם מכנה משותף כמו נמשל כל התיבות שמכילות את פרטי הכתובת ואז פשוט לגזור אותן מהתמונה הראשונה ולשים אותן ביחד יפה בשניה, כאמור הכי טוב לגזור כל פעם דברים מהראשונה וכך לאט לאט התמונה הראשונה מתרקונת ונהיה יותר קל להתסכל עליה ולתכנן מה עושים (זו לפחות הדרך שאני מצאתי בשבילי הכי טובה אך כמובן שיש עוד דרכים).
שאלות מיום מיון 2020-עדכון
היום מתחלק לשלושה מבחנים, אני אתמקד במבחן הראשון בלבד.
קצת רקע על המבחן:
– קיימים 4 סעיפים בלתי תלויים אחד בשני.
לאחר השלמת כל סעיף יש להריץ את התוכנית ושם מתקבל משוב
האם הצלחתם או לא. חייבים לסיים את כל הסעיפים על מנת לעבור.
– אורכו 4 שעות (אך נאמר שם כי הזמן המומלץ הוא 3 שעות).
– ניתן להיבחן ב-c/ c++/ c#/ java אך נאמר שם כי מומלץ להיבחן
ב-c או ב-++c מכיוון שכך יפתחו בפניכם יותר משרות.
– ניתן להיעזר באינטרנט אך לא ניתן להיכנס למייל האישי או להוריד קבצים למחשב.
– אחת לכמה זמן מגיע נציג מטעם החברה לעזור אם ישנן שאלות.
– אם סיימתם, יגיע אותו נציג ויבדוק יחד איתכם את פלטי ריצת התוכנית, במידה ואין
שגיאות, תמשיכו למבחן הבא. אחרת, תמשיכו לכיוון היציאה, יש בבניין ליד קפיטריה טובה, אתם מוזמנים להטביע את יגונכם בקפה.
המלצה: המבחן הוא 4 שעות, תבואו מוכנים עם בקבוק מים ומשהו מתוק.
הערה: אני נבחנתי בשפת ++c.
השאלות הן כמו שכבר נכתב כאן בעבר ולכן אחזור בקצרה:
1.1 מימוש פונקציה לחיפוש בינארי בעץ.
חשוב: הפונקציה מקבלת אוביקט מסוג "הודעה" בלבד.
1.2 שימוש ב-API של החברה.
ישנו צמד קבצי h/cpp בהם תמצאו את הפונקציות הרלוונטיות.
לצורך הסעיף הזה אני ממליץ בחום לעבור על התהליך הזה (שימוש ב-API).
1.3 תיקון שגיאות – נתון קובץ cpp אשר מכיל בתוכו שגיאות (תחביר, לוגיקה וכדומה),
יש למצוא את כולן ולתקן אותן.
הערה: לדעתי שווה לדחות את הסעיף הזה לסוף, קצת מייגע.
1.4 נתונה תעבורת הודעות ממען לנמען ויש להחזיר רשימה של כתובות (מען/נמען)
של כל אלה שאחראים ליותר מ-10% מההודעות הללו.
חשוב: הפונקציה מקבלת אוביקט מסוג "הודעה" בלבד.
המבחן נעשה ב-visual studio על פרוייקט קיים שמכיל ארבע פולדרים עיקריים, כל אחד רלוונטי לשאלה אחרת (ומכיל את קבצי ה-c וה-h הרלוונטיים לשאלה). למעשה, אתם מממשים מס' מצומצם של פונקציות בתוך מערכת קיימת.
אין צורך לכתוב קבצים מאפס, בכל שאלה כבר קיים קובץ עבודה מוכן שבו רק צריך לממש פונקציות בהתאם להנחיות המבחן.
מבחינת השאלות עצמן, המבחן נועד לראות בעיקר לבדוק את היכולת שלכם להבין את המערכת ולכתוב עבורה פונקציות, לכן אין יכולת אמיתית לבוא עם פתרון "מוכן" מהבית, אבל בסופו של דבר לא מדובר במבחן מסובך מדי. אני ממליץ לדעת טוב את הסינטקס של השפה שבה אתם בוחרים לעבור את המבחן ולחזור על עקרונות תכנותיים (לבדוק הקצאות זיכרון, חריגה במערכים וכו'). מבחינת רמת הקוד, מדובר בסה"כ בתכנות די בסיסי (אין צורך אמיתי להשתמש בת'רדים למשל).
1. מימוש חיפוש על עץ בינארי: אין מה להסתבך פה, מקבלים קודקוד ואיבר שרוצים למצוא.
2. מימוש ע"י שימוש ב-API חיצוני: כנ"ל, אתם מקבלים API ואת המימוש הלא מתועד שלו וצריכים להבין איך הקוד עובד ולהשתמש בו.
3. תיקון קוד קיים: אתם מקבלים קובץ C מוכן וצריכים לדבג אותו ולתקן את השגיאות בקובץ עצמו כך שיעבוד. עיקר העבודה הייתה סביב עקרונות תכנותיים ב-C (מניפולציות על מערכים וסטרינגים, הקצאות זכרון וכו').
4. בדיקת סטטיסטיקות – אין יותר מדי מה להוסיף למעט העובדה שמספקים לכם מימוש של hashTable שאפשר (ומומלץ) לעבוד איתו.
לכל שאלה יש טסט שאתם יכולים להריץ בכדי לבדוק אם הפתרון שלכם עובד.
חייבים לפתור את כל השאלות כדי לעבור ומוקצות לכך ארבע שעות, אם כי מבחינתם אתם צריכים לפתור הכל בשלוש (כלומר מי שלא פותר בשלוש שעות יכול להמשיך לעבוד עוד שעה, אבל זה מפחית את הסיכויים שלו להמשיך).
אין יותר מדי מה להרחיב על שני המבחנים הבאים:
הראשון הוא מבחן על פקודות shell בסיסיות לינוקס (וההנחיות פחות או יותר אומרות לכם מה לעשות בדיוק, פשוט לעקוב אחריהן) והשני הוא מבחן GUI שבו אתם צריכים לערוך תמונה בצייר וליצור ממנה GUI של תוכנה.
2020 Security Analyst
במבחן שני חלקים – חלק 1 עם שאלות כלליות ממתמטיקה ומד"מח – הסתברות בדידה (קומבינטוריקה), קצת על מבני נתונים בסיסיים, ועוד כל מני כאלו שבגדול לא אמורה להיות בעיה לפתור אותם אם סיימת שנה א'.
בחלק שני עובדים עם הדוחות של WireShark – היכרות של כמה שעות לפני זה אמורה להספיק..
בגדול תצטרך להסיק מסקנות על הלוגים (Logs) של תקשורת (שהם נתונים בפורמט ה-HexEdit ב-WireShark) ולראות בין כמה Logs כאלו איזה מהם שגוי ובמה (כשלפני זה מתארים לך בקצרה מה הפרוטוקול שהשתמשו בו, כלומר איך נראה ה Log – מה מופיע בהתחלה, מה בסוף, איזה בית זה אורך הקלט איזה בית זה עוד משהו.. ככה שלהתמצות ב Hexa יכול לחסוך זמן). וגם ישאלו איזה תוכנית של C (יותר מדויק נותנים תוכנית עם כמה שורות חסרות) יכולה לבדוק האם ה-Log הוא בטוח או יכול לשמש לפרצות (כמובן שיתנו הסבר כלשהו על איזה פרצות יכולות להיות ובגלל מה).
בגדול התוכניות של C הם מאוד קצרות (בערך עשרה שורות) וצריך להשלים בתוכן כמה שורות בודדות.
ככה יתנו לך כ3-4 פרוטוקולים (ולכל אחד כ2-3 Logs) ועל כל אחד מהפרוטוקולים מגוון של שאלות באותו סגנון כפי שתארתי.
כדאי להקשיב לאינטואיציה אם לא מספיק לפתור משהו כי המבחן הוא אמריקאי וחבל לא לענות, אז אם משהו נראה כנכון כדאי לבחור בו.
משרת QA
מה כדאי ללמוד למשרת QA – עברו על המדריך הטכני שלהם איך לחבר ראוטר ולגלוש איתו באינטרנט, לא צריך לקרוא את כולו, גם לא בבחינה אבל צריך לדעת לעשות חיפוש ממוקד בקובץ PDF ענק (משהו כמו 800 עמודים) באמת שלא צריך להתרגש מזה כיוון שיש שם המון תמונות הסברים מאוד מפורטים
נסו למצוא בכוחות עצמכם איך להתחבר לאינטרנט באופן קוי, איך להתחבר לאינטרנט באופן אלחוטי לא מאובטח ואיך להתחבר אלחוטית באופן מאובטח. רמז, לפני שאתם מראים לבוחנים שיש לכם חיבור אלחוטי נתקו את כבל הרשת ובידקו שאתם גולשים, כך גם תוכיחו שהאלחוטי עובד אם ישאלו אתכם על זה
יום מיון QA
שאלות מיום מיון:
חלק 1- מתכנסים בערך 30 איש ועושים לנו מבחן במחשב
המבחן הראשון היה בעצם הגדרות של משולש ושאלות לדוגמא
הגדרות-
במשולש יהיו רק מספרים חיובים
משולש יתאפשר רק אם 2 הצלעות גדולות מהצלע השלישית
יש משולש שווה שוקיים שונה שוקיים ו ישר זווית
וככה עוד הגדרות ומביאים לכם שאלה נגיד
באיזה נתונים המערכת תתן באג? כזה ככה
(1,22,3)
(1,1,1)
(1,2,3)
וכאילו 111 זה הישר זוית כי כל הצלעות שוות 123 זה שונה לעות והראשון לא קשור
אני מקווה שעזרתי להבין בערך
המבחן השני היה על submask וIP למשל שאלו
באיפי כזה 20\192.2.5.0 (אני לא יודעת אם האיפי הזה חוקי זה לצורך הדוגמא לא ממש מבינה בזה)
אז שואלית כמה HOST יש בזה כמה SUBNET אפשר להכניס לכתובת כזאת
ועל הסיביות שאחרי הסלאש
ועל איפי לפי מחלקות ACB
בעקרון רוב השאלות כאלה
אם יש לי מספר ככה וככה כמה סיביות יהיו בו
אם יש לי איפי ממחלקה C איך הSUBNET שלו יראה
225.225.225.0
או
225.6.0.21
כאלה וגםם היה שאלה כמה רשתות יש בכתובת איפי 162.35.2.6 לדוגמא
ואחרי זה מוצאים את כולם ואז המבחן השלישי
מאמר על פייורוואל של צק פוינט ואיך הוא עובד
ואז שאלות על המאמר למשל
מראים לכם ממש תמונה מהגדרת חוק בFIREWALL ואומרים לכם אם במצב שחוק מוגדר ככה
מה לא יתאפשר\ או כן יתאפשר\ או מה יקרה כשננסה להיכנס לדדף HTTP וכאלה
זה היה החלק הקל
אחרי השלב הזה לא המשכתי מתוך ה30 נשארו רק איזה 5 אנשים
לדעתי החלק הכי חשוב זה על כל המספריםם הבינארים 1111.0000.11100 בלה בלה חח שאני לא מבינה בזה כלום
אם אתם באים עם ידע מעמיק בזה תאכלס אפשר לעבור
אני לאבאמת יודעת מה הם חיפשו אנשים בלי ידע עם הרבה ידע או ידע בינוני כי אנשים שהיו איתי היו ממש בקיאים בחומר אז לא באמת יודעת על מה הם בוחנים
אגב מבחן ראשון זה 10-15 שעה
השני שעה
והשלישי שעה
אבל מסיימים אותם הרבה יותר מהר
בהצלחה לכל מי שנבחן
יום מיון לבדיקות ותמיכה טכנית
יום מיונים ל-QA ותמיכה טכנית:
שני מבחנים על מחשב עם שאלות על תקשורת מחשבים: ip, default gate,server עם אינטרנט וכו'.
בחלק השני מקבלים ראוטר וצריך לדעת לקנפג אותו בהתאם להוראות שהם מבקשים. כמדומני שזה היה לשנות את הip לip דינאמי
או משהו בסגנון הזה.
בסוף המבחנים עברו 10 בסך הכל, 5 לתמיכה טכנית ו5 לQA.
נבחן נוסף:
היו 2 מבחנים באנגלית עם זמן ידוע מראש, החלק הראשון היה קל יחסית וכל אחד יכול לעבור אותו, החלק השני כלל טקסט ארוך באנגלית על מעבר תנועות בין ראו טריים. הדוגמאות שהם נתנו לא היו ברורות בכלל, ובתשובות היה נשמה כי יש יותר מתשובה אחת מתאימה. היות ולא ניתן להתכונן לזה מראש, אז מומלץ לקחת זמן ולהתרכז ולנסות להבין את הדוגמאות עד הסוף.
אכן התחילו את היום אני מעריך משהו כמו 40-50 איש ועברו בודדים מאוד.
נבחן נוסף:
המיון מתבצע בכמה שלבים:
בשלב הראשון יש מבחן שמורכב משני חלקים. לכל חלק יש 10 שאלות והכל באנגלית.
חלק הראשון- מתוארת "תוכנה" עם מספר כללים שצריכים להתקיים בה. משתמש אמור להכניס ערכים עבור צלעות למשולש בהתאם לכללים והתוכנה בודקת האם הערכים שהוזנו חוקיים או לא.
לחלק הזה מוקצבת רבע שעה והוא מאוד פשוט.
החלק השני- מסמך של 15 עמודים בערך (כולל השאלות) שכולל חלק לקריאה- רקע והסברים על פיירוול מסויים. השאלות בעצם בודקות אם הבנת את החוקים,הגבלות והרשאות במקרים לדוגמא.
חלק מהשאלות הן על תרשימי זרימה שמציגים את המקרים אחרי שעברו שינויים (ואז צריך להבין מה השינוי ומה המשמעות שלו).
בכל מקרה, גם החלק הזה ממש לא מסובך. לוגיקה פשוטה..
לחלק הזה הוקצבה שעה.
ביום מיון שהייתי כמעט כולם עברו את השלב הזה (יותר מ20 אנשים לדעתי).
בשלב השני- מתחלקים לקבוצות של 4-5.
כל אחד מקבל ראוטר ( check point utm edge) (פיזית), וצריך לחבר אותו להאב, למחשב (אם זה משנה למישהו משהו, מדובר ב XP) ולקנפג אותו בהתאם להוראות (חומרי עזר- PDF של 800 עמודים על הראוטר, דף שמתמצת את התהליך התקנה, 2 דפים של הגדרות מושגים בסיסיים כמו DNS, gateway).
שלב ראשון- לחבר פיזית, להגדיר IP, סיסמא ולבדוק שאכן הצלחת להתחבר לרשת.
שלב שני- להעביר את כל הסיפור לWIFI.
שלב שלישי אני לא זוכרת.
החלק הזה מורכב משלושה שלבים ואורך 85 דקות.
מי שעובר את החלק הזה ממשיך לראיונות בכ"א.
אם יש משהו שאתה יכול להכין את עצמך למיונים זה בעצם לדעת לחבר ולקנפג ראוטר מהתחלה ועד הסוף (מי שלא מנוסה בעניין כדאי מאוד שיתנסה ויתרגל כמה שיותר אחרת חבל על הזמן שלכם. 85 דקות לא יספיקו למי שלא בקיא).
נבחן נוסף:
לגבי החלק הראשון של המבחנים:
המבחן הראשון (של המשולשים) באמת פשוט. רק הלחץ והאנגלית הם אלה שמפריעים.
המבחן השני הוא שבעה עמודים של אנסין ואחכ 10 שאלות.
מסבירים שם על איך מוקצים מספרי IP.
אני מתכון לספרות של הכתובת IP. מה הם מייצגות.
ללמוד את משמעות המחלקות A B C.
להבין מה זה אומר הסלאש שיש לפעמים אחרי כתובות IP.
(X.X.X.X\26)
להבין איך מייצרים כתובת SUBNET מכתובת IP.
בעיקרון להבין טוב טוב מה המספרים של כתובות IP אומרים. זה כל הנושא.
זה קצת קשור למספרי בינארים ופעולות על מספרים בינארים כמו XOR AND OR.
למשרת QA
הראיון הראשון היה טלפוני שבדק נכונות לסוג העבודה וטיפה רקע מקצועי.
הראיון השני היה מול הר״צ והמנהל qa.
בראיון הזה היה בעיקר שיחה על מי אני מה אני למה אני רוצה לעבוד אצלהם ולמה אני מתאים.
חלק שני היה שהם סיפרו על המשרה לעומק אופי המקום וכו.
חלק שלישי היה שאלות מעולם הqa.
בגל שאני באתי מעולם התקשורת לא היו שאלות תוכנה.
השאלה:
נתונה לך מכונת פחיות לפני שחרור ללקוח.
איזה בא בדיקות תגדיר לביצוע לפני שחרור המכונה מהמפעל?
אין תשובה נכונה במאה אחוז, יש להציג עקרון חשיבה שבודק את כל המכלולים בנפרד, את הפונקציונליות של הכל ביחד ומצבי קיצון( לדוגמא מה קורה שמכבים את המכונה באמצע שליפת פחית, או מה קורה שלוחצים על כמה משקעות בו זמנית וכו…)
חלק רביעי שאלות מעולם התוכן שממנו באתי (מאמין שאם הייתי בא מעולם של תוכנה זה היה מגיע מכיוון התוכנה) תקשורת.
שאלה:
מה תפקידו של nativ vlan.
כאשר שני עמדות מחוברות אחת לשני בכבל וכל אחת מוגדרת עם כתובת רשת אחרת.
עמדה א10.10.10.10 255.255.255.0 gw 10.10.10.1
עמדהב 20.20.20.20 25.2555.255.0 gw 20.20.20.1
העם פינג יעבור בין המחשבים?
בתשובה צריך כמובן להגיד גם למה…
מנגנון arp והאופן שבו כרטיס הרשת בעצם עובד ויודע האם הכתובת נמצאת אצלו ברשת או לא.
נ.ב התשובה היא לא.
אחרי זה היה מבחן מעשי
לקחו אותי למעבדות נתנו לי fw לא זוכר את הדגם. ואמרו לי לחבר אותו ככה שיהיה לי פינג שיעבור בין שני עמדות שמחוברות אליו.
אמרתי להם בהתחלה שמעולם לא נגעתי בfw ולכן התרגיל הפשוט.
לזכותי יאמר שהייתה בעיה שגם הרצ לא ידע לפתור ואולי היה לזה שיקול במעבר שלי לשלב הבא.
בשלב שאחריו היה חי ראיון עם המנהל של הקבוצה שהיה בעיקר הכרות יבשה וגם באמת קצת משו כמו חצי שעה ומשם ישר עברנו לhr
JAVA ראיון
המבחן מורכב מ 5 שאלות: Java
בכל שאלה צריך לממש פונקציה:
1. צריך לממש עץ בינארי, שעושה חיפוש בינארי.
2. צריך לממש קריאה לפונקציה שמחזירה Struct * ואז לשלוח לפונקציה אחרת את ה Struct שקיבלנו.
3.צריך לתקן קוד, שלא התקמפל.
4. שאלת אלגוריתם.
5. שאלת נושא.
בעקרון מי שמסיים 4 שאלות Java מתוך 5 – עובר.
צ'ק פוינט – C++ UI
יום מבחנים – הייתי קצת מזמן, אז עוד היה את המבחן של פרוטוקול התקשרות עם A ו-B,
אני יודע שהיום כבר שינו את זה.
אח"כ ראיון ראשון עם ראש צוות –
לספר על עצמי ועל פרוייקט הגמר מהלימודים.
להסביר מה זה פונקציה וירטואלית
איך הייתי מממיין רשימה מקושרת של מחרוזות
איך מממשים פונקצית hash (הסבר כללי לא מימוש)
לממש דרישה מסוימת משני קלאסים כך ש-B יורש מ-A.
אח"כ ראיון שני עם ראש קבוצה –
לממש את הפונקציה atoi ב-C
יש לך זכרון שבנוי מבלוקים של 1K כל אחד, ממש myFree, myMalloc – צריך להחזיק בכל תא בזיכרון את כתובת הזיכרון הפנוי הבא.
צ'ק פוינט – C++ UI
התראיינתי למשרת מפתח UI ב C++
ויחד איתי ביום הגיוס היו עוד איזה 40 איש חלק למשרת ה UI וחלק לUNIX KERNEL
את אלא שנבחנו ל KERNEL שאלו את השאלה שכולם כתבו פה עם הפרוטוקול תקשורת שאני לא חושב שמישהו הצליח לעשות שם (דיברתי עם הרבה אנשים אחרי המבחן).
את המבחן למשרת ה UI נתנו לנו לעצב מסכים לתוכנה שתהיה TASK MANAGER למשימות יומיומיות כמו ב"אוטלוק" ב VISUAL STUDIO 2003 רק את המסכים בלי הקוד,
בנוסף הם ביקשו שנכתוב מדריך למשתמש באנגלית איך להשתמש בתוכנה ומה מייצג כל מסך שעיצבנו.
עיצבתי משהו נחמד שחשבתי שהוא מאוד יפה ונוח אחרי שיומיים קראתי על עיצוב תוכנה ו-GUI.
היה מבחן נוסף של שליטה ב UNIX וב-VMWARE וטיפה תיכנות ב C וסקריפטים, היה צריך לפתוח תקשורת בין 2 מחשבים דרך VMWARE ולעשות פעולות בסיסיות שמוסברות במבחן כמו פינגים ועריכת קבצי C, רצוי לחזור על פקודות UNIX לפני המבחן.
פה הפצצתי כי אחרי כל תרגיל המערכת "מודיעה" אם הצלחת או לא.. אז בוודאות היה מושלם.
צ'ק פוינט – QA
כל המבחנים באנגלית אז כדאי מאוד לדעת אנגלית ברמהה גבוהה.
בשלב הראשון מקבלים 3 מבחנים:
מבחן אחד של רבע שעה שהוא היחיד שאיכשהו קשור ל qa אבל הקשר חלש. מציגים לכם תוכנה שמחשבת האם המשולש הוא שווה שוקיים, שווה צלעות, או שונה צלעות והמשתמש יכול לשים אינפוט של אורכי צלעות שונים. התוכנה כביכול מוציאה פלט מה סוג המשולש לפי הקלט של אורך הצלעות. יש כל מיני תנאים והשאלות שואלות מה בעצם יחשב כבאג בתוכנה (שאלות אמריקאיות).
מבחן נוסף הוא מאמר באנגלית, כ4-5 עמודים שבו מפורטות שיטות שונות לסימון הframes בשכבת הdatalink ( אם אני זוכר נכון bit flag, internet sum). באמצעות השיטות האלה בעצם מזהים האם המידע שהועבר ברשת הוא שלם ותקין. צריך לדעת שפה בינארית וגם שיטות חישוב של שפה בינארית ( חיבור בינארי בעיקר). זה המבחן הקשה ביותר.
והמבחן הנוסף הוא בנושא חוקי פיירוול. מאמר קליל על כיצד מוגדרים חוקים בפירוול.
בשלב השני צריך לדעת לחבר ראוטר,, על זה תוכלו למצוא מידע בפורומים כי זה רץ כבר שנים…
לסיכום, ידע ברשתות כמעט ולא נחוץ פה, ידע בשפה הבינארית נחוץ
צ'ק פוינט – Security Analyst
מבחן אורך כ-3 שעות. יש בו שני חלקים.
בחלק הראשון נשאלות שאלות טכניות כמו העברת בסיסים בינאריים הקסדיצמאליים וצריך לדעת כפל/OR/AND/<</>> יש שאלות הסתברות מאוד פשוטות, שאלה אחת על סיבוכיות קוד, שאלות על פלט קוד C ושאלות מתמטיקה.
החלק השני של המבחן היה לי מאוד קשה, יש להשתמש בתוכנת WIRESHARK ולזהות כל מיני שגיאות מ-4 סוגי פרוטוקולים ולדעת מה ה-OFFSET וצריך להשלים קודים בשפת C.
לפני החלק הראשון מגדירים לכם כמה סימנים ומה הם עושים. & זה כמו שער AND , | זה כמו שער OR , >> מעביר מספר בינארי שמאלה נגיד : 01110111 >>3 אז זה 00001110
שאלה 1:
מה התוצאה של 1+2+3…+200 תשובה : 20100
שאלה 2:
ישנם 10 כדורים בתוך כד , 5 מתוכם לבנים ו-5 שחורים. מה ההסתברות שב-3 הוצאות (ללא החזרה)
לא נוציא כדורים באותו הצבע.
תשובה: 1 – (ההסתברות להוצאת רק לבנים+ההסתברות להוצאת רק שחורים) = 5/6
שאלה 3:
כמה זה 1025 * 100000010
תשובה: אני הפכתי את 1025 לבינארי וכפלתי ביניהם.
שאלה 4:
a[]={0,2,1,3}h
int i;
for(i=0,i<4,i++)h
{
a[i]h=a[a[i]]h
}
כמה שווה בסוף a[2]h
h זה אני שמתי בשביל היישור.
שאלה 5:
יש מגירה שבה 3 גרביים שחורות,4 גרביים לבנות,5 גרביים ירוקות,6 גרביים צהובות,7 גרביים אדומות. אתה מוציא גרביים בחושך ולכן לא רואה את מה שאתה מוציא. מה המספר המינימלי של הוצאות שצריך כדי להוציא זוג תואם.
שאלה 6:
יש יתוש שנוצר בזמן 0. אחרי 2 שניות הוא מתחיל ליצור יתושים כל שנייה.
מה קורה בשנייה 8.5(אחרי 8 שניות)? תשובה:34
שאלה 7:
עוד שאלה על מספרים בינאריים.
דגשים לחלק הראשון של המבחן :
לדעת לחבר מספרים בינאריים, לדעת להפוך בינארי לעשרוני וההיפך.
לעבור על קומבינטוריקה, שפת C , לא משהו היסטרי… אין פוינטרים או דברים כאלה.
החלק השני כולו הוא על תוכנת ה -WIRESHARK
נותנים לכם קבצים שבכל קובץ יש כמה חבילות,פקטס, ע"פ קובץ וורד שיש בו הגדרות מה נחשב התקפה אתם צריכים להסתכל על החבילות ולהגיד איפה לפי ההגדרה יש ניסיון חדירה.
קל מאוד לזהות את החבילות שיש בהן חדירה , אתם תשימו לב שאיפה שיש את הDATA פתאום יש מלא מספרים כמו 4141414141414141414141414141414 , אבל ממש הרבה!
חלק חשוב!!
יש קובץ C שבו יש את הלוגיקה של הגדרת פריצה, אם הפלט הוא 1 אז יש פריצה אם יש 0 אז זה בסדר, אתם צריכים בקובץ הזה להבין על פי ההגדרות שקיבלתם בקובץ הוורד להגיד מה הערכים של המשתנים P,X,Y.
פתרונות מוצעים:
שאלה 4
a[0] = 0
a[1] = 1
a[2] = 1
a[3] = 3
שאלה 5
אני מניח שהגרביים מכל סוג זהים (כלומר אין הבדל בין ימין ושמאל), לכל צריך להסתכל על המקרה הגרוע מכל ובו נצטרך להוציא גרב מכל סוג כלומר 5 ובהוצאה ה6 בהכרח תהיה מצבע שכבר הוצאנו.
צ'ק פוינט – תכנות
מבחן תכנות עם 4 שאלות:
הראשונה- לממש חיפוש רקורסיבי בעץ מיון בינארי (שני בנים לכל צומת, השמאלי קטן יותר מהאבא והימני גדול יותר מהאבא).
השניה- לפי API שהם נותנים לך לדעת איך לקרוא לפונקציה.
השלישית: נתון לך מחסן מילים ואתה צריך באמצעות פונקציות של STRING לוודא שבמחרוזת שנתונה לך לא מופיעה אף אחת מהמילים הנ"ל.
הרביעית: אתה מקבל המון הודעות שנשלחות ממען לנמען, למשל מ 24 ל 36, מ 55 ל 2 וכו', ואתה צריך להחזיר רשימה של הכתובות של כל אלה שאחראים ליותר מ 10% מההודעות.
כל המבחן הוא בעצם STRUCT שמכיל 2 מספרים- כתובת של השולח וכתובת של המקבל (כתובת מיוצגת ב INT) ובנוסף סטרינג של ההודעה שהשולח רוצה להעביר.
ברקורסיה עם העץ הבינארי יש בעצם כתובות שאסור שיעברו ביניהם הודעות. למשל אם בעץ יש את המספר 6 אז אסור שהודעה מ 6 תישלח ואסור ש 6 יקבל הודעות. מה שצריך לעשות זה לחפש אם הכתובת של השולח או הכתובת של המקבל מופיעים בעץ ואם הם מופיעים להחזיר TRUE, אחרת FALSE (או הפוך, יהיה כתוב לך שמה).
בשאלה הרביעים צריך לכתוב פונקציה שלאחר מכן תוכנה של צ'קפוינט מריצה עליהם אלפי קלטים, ולפי התוצאות הם רואים אם צדקת או לא.
לגבי סביבת העבודה: לפי מה שהבנתי לjava זה אקליפס ולכל השאר ויז'ואל סטודיו.
מותר להיעזר באינטרנט בשעת המבחן.
צ'ק פוינט – תמיכה טכנית
שלב ראשון: 10 שאלות אמריקאיות בנושא של Subnetting. השאלות האלה ממש ממש קלות למי שלומד קצת ומתרגל. דוגמאות לשאלות (הכל באנגלית):
1) תמצא Subnet mask לכתובת 192.168.0.1…
2) מה broadcast address של הרשת 192.168.0.1
יש עוד כמה סוגים של שאלות כאלה, ראיתי כבר בפורום פה ששיחזרו כמה שאלות כאלה.
אני למדתי ותרגלתי עם האתר: http://www.subnetting.net/Subnetting.aspx?mode=practice
זה האתר הכי טוב לתרגול וללימוד, השאלות באתר הזה ובמבחן זהות לחלוטין!!!
כשתגיעו לרמה שבה אתם מצליחים לפתור את כל התרגילים באתר בשתי דקות תדעו שאתם מוכנים אש!
אחרי השלב הזה נשרו 3 אנשים ונשארנו 8.
שלב שני: השלב הזה מורכב משני מבחנים מעשיים.
המבחן הראשון: חיבור מחשב למודם ולראוטר.
המבחן הזה הוא החשוב מבין שני המבחנים המעשיים אז תלמדו אותו טוב טוב!
המבחן בנוי משלושה סעיפים:
1) לחבר את המחשב למודם ולראוטר ולבדוק שיש תקשורת דרך הפינג שמביאים לכם.
איך עושים את זה??
צעד 1 – אתם מקבלים חוברת צבעונית עם ארבעה עמודים, תפעלו בדיוק לפי החוברת וסיימתם את הסעיף, אבל אם אתם קוראים את ההוראות האלה אתם בטח לא כאלה מבריקים אז אני אפשט את זה בשבילכם.
צעד 2 – תיקחו שני כבלים מהמתלה, תחברו למחשב שלכם מצד שמאל צד אחד של הכבל ואת הצד השני תחברו לאחת מיציאות ה- LAN של הראוטר (סוג הראוטר הוא edge).
צעד 3 – תחברו את הכבל השני ליציאת ה WAN של הראוטר ואת הצד השני למודם(מודם HP , עם הרבה כניסות).
צעד 4 – תיכנסו להגדרות הרשת שלכם במחשב: , לוח בקרה —> הגדרות רשת —> עכשיו אתם רואים רשת LAN שזה רשת מקומית ורשת WIRELESS , תעשו לחצן ימני על רשת ה-LAN ותבחרו ב-properties—> פה תבחרו TCP/IPv4 ותעשו PROPERTIES—-> תגדירו כמו שמצויר לכם בחוברת שזה אומר שהכל יהיה באוטומטי, אתם לא צריכים להקליד בסעיף הראשון כלום שם.
צעד 5 – תיכנסו להפעלה —> cmd —> ותקלידו ipconfig —> קחו את default gateway ותרשמו בחלון של הדפדפן.
צעד 6 -מבקשים ממכם סיסמא כדי להיכנס להגדרות של הראוטר, שם משתמש : admin,
סיסמא: 1-8. ברכותיי אתם בהגדרות של הראוטר.
צעד 7 – ברגע שנכנסתם לתוך ההגדרות של הראוטר מופיע מולכם איזה מדריך, תמלאו את ההגדרות במדריך לפי מה שכתוב לכם בלוח שבכיתה. הוא מבקש סיסמא שכתובה לכם על הראוטר, כתובת איי פי של הראוטר, מדינה ועוד כמה הגדרות שהתשובות אליהן נמצאות על הלוח.
אם מאיזושהי סיבה סגרתם את המדריך בטעות אתם יכולים לפתוח אותו מחדש דרך : SETUP —ואז SETUP WIZARD וקיבלתם שוב את המדריך.
צעד 8 – סיימתם למלא את ההגדרות במדריך, ברכותיי. תיכנסו שוב למסך השחור
(הפעלה–>cmd)ופה אתם רושמים בדיוק ככה: ping 192.168.30.1 , כתובת האייפי שאתם באמת כותבים פה היא הכתובת שמופיעה על הלוח ליד המילה ping. מה שקורה עכשיו זה שהמחשב מקבל נתונים מאיזושהי כתובת וזה צריך להראות לכם שעברו הנתונים. אחרי שסיימתם את השלב הזה תקראו למדריך שייראה שהצלחתם.
סעיף שני של המבחן:
2) להגדיר את רשת ה – WIFI ויש בונוס אם אתם מאבטחים אותה.
אני ממליץ לכם להסתכל באינטרנט באיזשהו מדריך של הגדרת רשת אלחוטית זה בערך אותו הדבר.
צעד 1 – ללכת ללוח הבקרה —-> רשתות —-> לבחור את הרשת של Wireless —-> לעשות properties—–>ללכת שוב ל – TCP/IPv4 ולעשות properties.
צעד 2 – להכניס את כל הנתונים שעל הלוח ידנית , זה כולל את הכתובת אייפי שנמצאת על הראוטר, מסכה, default getway ועוד כמה שיש לכם אותם כבר על הלוח.
צעד 3 – להיכנס שוב להגדרות של הראוטר ושם אתם צריכים ללכת ל – networks —> my networks ולהתאים את ההגדרות למה שהגדרתם בצעד 2.
זה הכיוון הכללי של סעיף 2 , אל תתפסו אותי בדיוק בדיוק במילה, בשביל זה תקראו מדריך להגדרת רשת אלחוטית והוא בטח ייתן לכם יותר פרטים + תמונות של החלונות.
כמו כן , במדריכים שתמצאו באנטרנט תגלו גם איך לאבטח את הרשת ותקבלו את הבונוס.
אחרי הסעיף הזה תבדקו שה-WIFI עובד על ידי כך שתנתקו את הכבל של המחשב מהיציאה של ה-LAN.
סעיף 3 במבחן: אני לא זוכר את הסעיף הזה, לצערי אני קיבלתי כבל רשת שהיה רופף וזה גרם לי לפשל מאוד בכל המבחן הזה. תנסו לברר את זה איכשהו ממישהו אחר שהיה שם.
אחרי שסיימתם את המבחן הזה , מבקשים ממכם לפתוח note pad ולרשום עשר שורות באנגלית. אתם יכולים לכתוב על כל דבר בחיים שלכם , הם רק רוצים לדעת מה הרמה של האנגלית שלכם, אז אם האנגלית שלכם לא משהו או שאתם מפחדים לעשות שגיאת כתיב תתאמנו על זה.
שני טיפים אישיים: 1. תיקחו כבלים תקינים , כלומר שיש להם את הצ'ופצ'יקים ששומרים אותם בפנים.
2. יש שני שולחנות בכיתת המעבדה ,אחד של 6 מקומות והשני של 2 מקומות, אני ממליץ לכם מאוד לשבת בשולחן של 2 המקומות כי השולחן של ה – 6 מקומות עמוס בחוטים ואנשים יכולים להוציא לך את החוט בטעות שלא לדבר שכולם מלחיצים אותך!
זהו מבחינת המבחן המעשי הראשון.
עכשיו המבחן המעשי השני:
סיימתם את המבחן הראשון , עכשיו אתם יוצאים לאיזו הפסקונת והולכים עם איזה בחור קצת מוזר(אבל גבר) למעבדה הראשונה, זאת שעשיתם בה את המבחן העיוני הראשון.
הקטע של המבחן הזה הוא לראות איך אתם מסתדרים עם משהו שאתם לא מכירים ונתקלים בו בפעם הראשונה.
המבחן הוא על המחשב ומותר להשתמש באנטרנט בשביל לחפש חומר.
בתוך המחשב אתם פותחים איזושהי תוכנה שהבחור המוזר יגיד לכם, הוא יסביר לכם להפעיל את שלושת החלונות של התוכנה. אתם נכנסים לחלון של הראוטר , אל תדאגו הוא יגיד לכם איזה ועליו אתם מבצעים את הכניסה למערכת הלינוקס ועונים על השאלה הראשונה.
ממה שאני זוכר כשאתם מפעילים את המסך הזה הוא מבקש שם משתמש וסיסמא, שם המשתמש הוא admin והסיסמא היא vpn123 , כשאתם מקלידים את הסיסמא אתם לא תראו שכתבתם משהו, אל תדאגו , זה כותב. תלחצו אנטר ואתם עכשיו בתוך הלינוקס.
ברכותיי, אתם כרגע כותבים בתוך טרמינל של לינוקס! לינוקס! לינוקס!
כל מה שהסברתי עכשיו הבחור המוזר יסביר לכם, אבל טוב שתדעו עוד לפני מה צריך לעשות.
ועכשיו לשאלה הראשונה.
השאלה הראשונה מורכבת משלושה סעיפים:
1)get into /var/exam directory.
איך עונים על הסעיף הזה? עושים חיפוש באינטרנט של איך נכנסים לתוך תיקיה בלינוקס ושם אתם תראו איך עושים את זה, אבל מאחר שאתם לא מבריקים אני אסביר לכם, לא בגלל שאני נחמד,אלא בגלל שאני שונא את צ'ק פוינט.
הפקודה הנכונה לשם כך היא cd.
הסינטקס הולך ככה: cd /var/exam יכול להיות שזה גם הולך ככה cd /var/exam/f את ה-f רשמתי רק כדי שה- / יהיה מצד ימין למילה exam , לא כותבים את ה -f.
בכל מקרה, אפשר למצוא את זה פה: http://www.computerhope.com/unix/ucd.htm#03
2) read the text written in the file in that directory
איך עונים על זה?
צעד 1:
אתם כרגע בתיקיה, אתם צריכים לגלות איזה קובץ נמצא בתיקיה הזאת ולגלות מה כתוב בו.
איך מגלים איזה קבצים נמצאים בתיקיה? תחפשו בגוגל כי אני לא אחפש את זה עכשיו במיוחד בשבילכם. מצאתם את שם הקובץ , שם הקובץ במבחן הוא myexam.
צעד 2: בלינוקס אתם צריכים לדעת את סוג הקובץ בשביל להצליח לפתוח אותו, מן הסתם אפשר להבין שזה קובץ text כי אתם צריכים לקרוא מה כתוב בו, אבל ליתר בטחון תחפשו בגוגל איך מגלים סוג של קובץ בתיקיה. הכל נמצא באנטרנט.
צעד 3: גיליתם שסוג הקובץ הוא text ברכותיי! עכשיו אתם צריכים לקרוא ממנו. איך עושים את זה? נכון , מחפשים בגוגל. טוב נו , אני יודע שאתם מוגבלים אז מצאתי את זה בשבילכם.
http://www.computerhope.com/unix/ucat.htm
צעד 4: גיליתם מה כתוב בקובץ , כתוב שם you have passed question 2. לכו תקראו לבחור המוזר שיראה את זה.
סעיף 3 בשאלה הזאת:
3) "create a text file and give it the name: my_exam and write in it :"Good luck
איך עושים את זה? מחפשים בגוגל, טוב נו, בגלל שהגעתם עד לפה אתם כנראה ממש עצלנים ולא מוצלחים אז קבלו את הלינק שיסגור לכם את הפינה:
http://www.if-not-true-then-false.com/2 … ut-editor/
ברכותיי! סיימתם את שאלה מס' 1 בהצלחה! עכשיו לשאלה מספר 2!
רק שתדעו, אף אחד לא הצליח את שאלה 2 , אני הייתי קצת קרוב לפתור אותה.
מביאים לכם דיאגרמה שדומה קצת לתמונה הזאת:http://www.gyre.co.uk/images/broadband_router_1.png
במקום שלושה מחשבים שמחוברים לראוטר, יש שניים, האיי פי של מחשב 1 הוא משהו כמו 172.168.0.1 ושל המחשב השני האיי פי הוא 192.168.0.1 , זה לא בדיוק האיי פי שלהם, אבל הרעיון הוא שהם נמצאים על רשתות שונות והראוטר הוא זה שמצליח לגרום להם לתקשר ביניהם.
לראוטר יש שני חיצים החץ השמאלי מסומן במילה eth0 והחץ הימני (של המחשב הימני) הוא eth1.
עכשיו… זה קטע מסובך לאללה, אבל אני אחסוך לכם קצת זמן. יש פקודה שנקראת sysconfig.
הפקודה נותנת לכם כמה אפשרויות , אתם צריכים להגדיר ראוטר ואז להגדיר את שני המחשבים האחרים(hosts).
Dalet
משרת QA ב DALET
בתחילה היה ראיון עם ראש צוות QA (שכחתי את שמו), לאחר מכן עשיתי מבחן מול מחשב במשך שעה ואז סיימתי ונתנו לי תשובה שלילית כעבור שבוע בערך, אולי יותר.
היו מס' שאלות, ביניהם :
1. 8 מטבעות, אחד מהם קל יותר, מה מינימום השקילות בשביל לגלות את המטבע הקל?
2. נתנו לי גם לכתוב מקרי בדיקה על מעליות (לא זוכר את הפרטים)
3. נתנו חתיכת קוד קטנה (if,else…) ושאלו מה מינימום הבדיקות שצריך.
Elbit - אלביט
אלביט – כללי 2
הייתי באלישרא(חברת בת של אלביט) בראיון למשרת סטודנט פיתוח ומימוש אלגוריתמים ב-C. ראיון ראשון היה ראיון טכני אבל שאלו גם שאלות אישיות תוך כדי. מול ראש צוות, אדם נחמד ומקצועי.
שאלה ראשונה: לכתוב איזושהיא פונקציה ב-C שמקבלת אינדקציה של נגיעה במסך נגיעה(מקבלים קוארדינטות X ו-Y) ותודיע אם הנגיעה היא נגיעה חדשה או לא, כשנגיעה חדשה מוגדרת אינדיקציה במרחק שגדול מ-3 בX או בY מהאינדיקציה הקודמת. סתם פונקציה פשוטה וקצרה אבל לקח הרבה זמן להבין מה בדיוק המשימה, לא היה ברור. אח"כ נשאלתי אם אפשר לייעל או אפילו לקצר מעט את הקוד(כי אצלי היה אפשר ואכן קיצרתי). לשים לב למקרה קצה.
שאלה שנייה: אתה עובד במפעל של צלחות וצריך לבדוק את החוזק של הצלחות. יש בניין של 1000 קומות ואתה צריך לומר ע"י זריקות של הצלחות מהקומות, מאיזה קומה בדיוק הצלחת נשברת. בכל זריקה שבה לא נשברה הצלחת אתה יכול לרדת לקחת אותה ולזרוק שוב.
חלק ראשון- יש לך צלחת אחת בלבד וזריקות ללא הגבלה. מה היית עושה?
חלק שני- יש צלחות בלי הגבלה. מה מספר הזריקות המינימלי למציאת הקומה?
חלק שלישי- כעת יש לך 2 צלחות בלבד. מה מספר הזריקות המינימלי למציאת הקומה?
תוך כדי ובין השאלות הטכניות, נשאלו שאלות כמו: מה אתה רוצה לעשות עוד 5 שנים? איך אתה בלקבל מרות? אם אני אומר שאתה טועה ואתה בטוח בדעתך מה תעשה?
לקראת הסוף המראיין קרא לבוסית שלו להצטרף(כנראה מנהלת המחלקה או משהו כזה). היא שאלה למה בחרת ללמוד את זה, למה אתה חושב שאתה מתאים לתפקיד, עבודות שעבדתי בהם, ועוד..
אלביט – כללי 1
מחולק לשלושה חלקים : ראיון מקצועי \ אישי \ שאלון אישיות +סיווג בטחוני
בראיון המקצועי המראיינת שאלה 3 שאלות יחסית פשוטות עם אלמנט תכנותי בסיסי
1: למיין 4 מספרים מגדול לקטן , ע"י שימוש ב"רכיב" שמקבל שני כניסות ומוציא MIN ו MAX בינייהן
2: שני רכבות שנוחתות עם מצנח מהאויר(שנשאר בנקודת הנחיתה) על אותה מסילה ונעות לאותו כיוון, לשנייהן יש את אותו ציפ מתוכנת. מה יהיה הקוד בציפ שיגרום להן להפגש , יש 4 פקודות : MF – תתקדם צעד אחד קדימה
MB – תתקדם צעד אחד אחורה
IF)P – תנאי שבודק אם הגעת למצנח(
GOTO – קפיצה לאזור אחר בקוד
3: יש מערך בגודל N , יש לבנות פונקציה ( בשפת C ) שמחזירה TRUE עם ערך מסויים מופיע בה. בהתחלה אין דרישה ליעילות – אחרי זה היא מבקשת לשפר את הקוד.
exelate - אקסלייט
יום מיונים וראיונות בחברת אקסלייט
הייתי שם לא מזמן , היא שאלות הבאות : מה פוליפורמיזם ? ירושה ? encapsulation ?
access modifiers in JAVA , default , public , protected , private – לפרט על כל אחד .
שאלת SQL , נתונה טבלה עם שמות של אנשים , תאריך לידה ו שדה מגדר , צריך לספור את כמות הגברים והנשים שנולדו בין תאריכים מסויימים. שאלה בJAVA נתונה תוכנית שמרוקנת מחסנית עם iterator , היה צריך למצוא בה באגים . לכתוב תוכנית שמקבלת מספר N ומחזירה מערך שבו המספרים עד לN בסדר אקראי , בסיבוכיות זמן של N. שאלה על thread עושים על אובייקט wait אבל אף אחד אחר לא עושה Notify . מאוד מומלץ לדעת JAVA , אחרת יהיה קשה מאוד לענות על השאלות כי התוכניות נתונות בJAVA.
חבר נוסף בקהילה הוסיף:
אני יכול לספר לך שפתרון השאלה עם הרשימה שמתרוקנת שזה צריך להוסיף FINALLY אחרי ה TRY CATCH ולרשום בתוכו את שתי השורות האחרונות בבלוק ה TRY שמוחקות את האיבר.
השאלה עם ה THREADS זאת פונקציה ששולפת מ QUEUE איברים , יש שני בלוקים שמתמבצעים בצורה אטומית בתוכה.
אחד שמחכים בו עד שיהיה איברים בכלל ב QUEUE והשני שולף את האיבר , הבעיה היא אם יש יש רק איבר אחד ב QUEUE ו THREAD ראשון נכנס ובדיוק בנקודה שבין שני הבלוקים התרחש CONTEXT SWITCH , ו THREAD שני נכנס ושלף את האיבר ויצא ושוב התרחש CONTEXT SWITCH במקרז הזה ה THREAD הראשון ינסה לשלוף איבר ולא יהיה וידפיס שגיאה..שזה לא יפה.
אני קבלתי ציון B והם צריכים B+ בשביל להמשיך ..וכשאמר לי שקבלת B בקשת לבדוק מול הבודק את השאלה עם ה SQL ויצאתי אכן טועה כי פספסתי נתון , ובטעות שמתי את המבחן בתיק והלכתי הביתה ..עכשיו שמתי לב שהשאלה החמישית קיבלת C למרות שפתרתי אותה שאלה לפני יום המבחן והפתרון שלי נכון 100% ועונה על הדרישות אבל כנראה לא קריא.
המסר הוא שהם חופפים עם הבדיקות..תבקשו הסברים לציון ובהצלחה לכולם.
אני יכול לספר לך שפתרון השאלה עם הרשימה שמתרוקנת שזה צריך להוסיף FINALLY אחרי ה TRY CATCH ולרשום בתוכו את שתי השורות האחרונות בבלוק ה TRY שמוחקות את האיבר.
השאלה עם ה THREADS זאת פונקציה ששולפת מ QUEUE איברים , יש שני בלוקים שמתמבצעים בצורה אטומית בתוכה.
אחד שמחכים בו עד שיהיה איברים בכלל ב QUEUE והשני שולף את האיבר , הבעיה היא אם יש יש רק איבר אחד ב QUEUE ו THREAD ראשון נכנס ובדיוק בנקודה שבין שני הבלוקים התרחש CONTEXT SWITCH , ו THREAD שני נכנס ושלף את האיבר ויצא ושוב התרחש CONTEXT SWITCH במקרז הזה ה THREAD הראשון ינסה לשלוף איבר ולא יהיה וידפיס שגיאה..שזה לא יפה.
אני קבלתי ציון B והם צריכים B+ בשביל להמשיך ..וכשאמר לי שקבלת B בקשת לבדוק מול הבודק את השאלה עם ה SQL ויצאתי אכן טועה כי פספסתי נתון , ובטעות שמתי את המבחן בתיק והלכתי הביתה ..עכשיו שמתי לב שהשאלה החמישית קיבלת C למרות שפתרתי אותה שאלה לפני יום המבחן והפתרון שלי נכון 100% ועונה על הדרישות אבל כנראה לא קריא.
המסר הוא שהם חופפים עם הבדיקות..תבקשו הסברים לציון ובהצלחה לכולם.
Final
שחזור ראיון מלא ב- Final
הייתי שם בראיון לאחרונה, ואני מצטרף לתגובות שהיו כאן קודם, אל תלכו, בזבוז זמן. הבנתי את זה גם מחברים שם אנשי השמה שמכירים את החברה והתיאור שלהם לחברה "קבוצה של סנובים שלא מקבלים אף אחד "
ואכן בזבזתי יומיים .
הייתי בראיון עם HR ,שהמשיך במבחן שעברתי אותו , והגעתי לראיון טכני נוסף שידעתי את התשובות להכל.
יום אחרי קיבלתי מייל שלא ממשיכים איתי את התהליך. לא ברור לי למה.
מפרט את השאלות בכיף, אבל שוב , ממליץ לא לבזבז את הזמן.
מבחן 3 שאלות (דומה למה שפירטו קודם ) של חצי שעה:
1- לכתוב פונקציה שמדפיסה מספר לא שלילי עם פונקציה שכל פעם מדפיסה תו אחד בלבד (אני מימשתי ברקורסיה שכל פעם מחלקת ושולחת שוב+ מדפיסה את השארית )
2- למצוא בעיות בקוד קיים – היתה בעיה שיש השמה למשתנה לוקאלי שבסוף הפונקציה משתחרר.
והיתה בעיה של strcpy לתוך פוינטר שמצביע למערך ריק.
3- לרשום מה יודפס- class שיורש מעוד class , יש לכולם פונקצית קונסטרקטור, דיסטרקטור והדפסה (לא וירטואלי) . השמה בין פוינטר של האבא לפוינטר של הבן (עדין ידפיס את ה פונקציה של האבא כי הפונקציה לא וירטואלית) . יצירה של הבן יוצרת קודם את האבא.
ראיון מקצועי (לא ממש לכתוב קוד, יותר הסבר בעל פה של אלגוריתם):
1. יש שתי רשימות מקושרות , שאולי מתישהו נפגשות לרשימה אחת. איך נדע אם הן נפגשות ?
2. קיבלנו מספר INT , איך נדפיס את הייצוג הבינארי שלו ? (לכתוב פונקציה)
3. יש לי סרבר וקליינט. הקליינט שולח הודעות לסרבר. אם הסרבר מקבל יותר מ5 הודעות ב5 שניות הוא יפסיק להציג את ההודעות . איך נייצג את זה?
יש לי בסרבר מערך של זמנים, כל פעם הזמן האחרון נרשם , ומקדמים פוינטר לזמן הראשון. כל פעם שנקבל הודעה חדשה הסרבר יבדוק אם עברו 5 שניות מהזמן הראשון. אם כן, יציג. אם לא לא יציג. ויוסיף את הזמן החדש למערך במקום הזמן האחרון.
4. היתה עוד שאלה ….. לא זוכר מה היא. אבל בעקרון הבנתי שהם לא תמיד שואלים בדיוק את אותן שאלות וקצת משנים תוך כדי הראיון .
5. לתת דוגמא לבעיה שניתקלתי בה בעבודה . בעיה קצרה של יום יומיים. איך טיפלתי בה.
fiverr
המבחן של fiverr
יש שאלות תכנות לא קשות במיוחד לא זוכר מה היה , היתה שאלת sql , שאלה על כמות מילים במסמך או משהו כזה שאלת קריאת קוד ולהגיד מה לא בסדר. הקוד הוא ברובי.
היו שאלות כלליות על performance ו scaling של backend.
היתה שאלת תכנות לא מסובכת עם פתרון רקורסיבי.
Fundtech - פנדטק
Fundtech – שאלות אלגוריתמיקה ותכנות
בשאלה הראשונה מוצגת מערכת של העברת כספים בין בנקים, המערכת מיועדת לבנקים עצמם והיא מאפשרת לקליינטים שלהם להעביר כספים מחשבון אחד לאחר (בין בנקים שונים). המערכת אמורה לוודא שהפרטים של החשבון המעביר והחשבון אליו מעבירים- debit & צונזר – הודעת זבל נכונים' ושעמלה של 5$ נגבת עבור כל העברה. ישנו תיאור של הדפים באינטרנט אותם הקליינטים עוברים, וגם תיאור קצר של המערכת. המטלה היא לרשום 15 מבחנים המחולקים לפי סוג (או gui או process) ולציין בשביל כל אחד מהסוגים (g\p) מהו המבחן הכי חשוב. זוהי השאלה המרכזית במבחן ואמורים להשקיע בה את מירב הזמן/מאמץ.
בשאלה השנייה יש שני סעיפים- הראשון הוא לתת שתי דוגמאות של כשלים שעלולים להתגלות מתוך הבדיקות שתוארו- דוגמא אחת של כשל חמור מאוד והשנייה של כשל מינורי. בסעיף השני שואלים מה כדאי לעשות במידה ולקוח טוען שהועבר יותר מידי כסף מהחשבון שלו.
בשאלה השלישית נדרשים לרשום תרשים זרימה המתאר את התעדכנות בסיס הנתונים- בכל פעם נכנס מידע חדש של תעריפי שער חוץ- אם התעריפים זהים הם מועתקים על פני העדכון הקודם והוא נמחק, ואם הם שונים צריך להוסיך אותם ל-db אחרי העדכון האחרון. במידה והנתונים לא מצליחים לעלות כראוי צריך לדלג עליהם והודעה נשלחת כי העדכון לא צלח. בכל פעם שמסתיים העדכון המערכת שלוחת קריאה לעדכון הבא, אלא אם זה העדכון האחרון ליום ואז היא אמורה לזהות שנגמרו העדכונים. (יש מצב שהיה עוד משהו אבל אני כבר לא זוכר)
ברביעית ישנם שני סעיפים לכתיבה ב-sql: א- בחירה פשוטה של קטגוריית שמות (מתוך טבלה) המבוססת לפי קריטריון מספרי (גיל) ומוצגת בסדר עולה (order by). ובשנייה צריך למשוך משלוש טבלאות שונות (עם עמודות חופפות בין טבלה א ל-ב ובין טבלה ב ל-ג) קטגוריה שנמצאת בטבלה הראשונה לפי סינון נתונים הנמצאים בטבלה השלישית. משך הבחינה הוא שעה וחצי (לפחות 3/4 שעה רק על השאלה הראשונה) כל המבחן הוא באנגלית (קריאה וכתיבה) והשימוש בטלפון אסור.
Fundtech -מבחן באנגלית
המבחן באנגלית וצריך לענות באנגלית:
שאלה ראשונה: צריך לעשות test case לפחות 15 למערכת שלהם (יש הסבר עליה) ולחלק לפי קטגוריות של gui ושל process
שאלה שנייה: היו שתי סעיפים את הראשונה אני לא זוכר כל כך רק שהיא קשורה למה שרשמת בשאלה 1 ושואלים על זה
סעיף שני היה לקוח a טוען שחויב יותר ממה שהיה צריך איזה בדיקות צריך לעשות (שוב זה קשור למערכת שלהם)
שאלה 3: היה תיאור של איזה תהליך שמעלה קובץ וצריך לעשות לו תרשים זרימה
שאלה 4:sql יש 3 טבאות ושתי סעיפים הראשונה מצא שמות לקוחות שגרים בירושלים והגיל שלהם מתחת ל26 ושהשמות יהיו בסדר ממוין.
והסעיף השני לא זוכר בדיוק רק אני זוכר שצריך לעשות מכפלה קרטזית בין 3 הטבלאות שיש בשאלה.
Fundtech – UI\JAVA
פגישה ראשונה – מבחן תיאורתי
JS – שימוש עם VAR ובלי
כתובת אלגוריתם אשר ממין מערך של 0 ו1 – זורק 1 לסוף ו0 להתחלה. מהי הסיבוכיות.
שאלות על HTML CSS.
כתובת אלגוריתם על רשימה מקושרת שמכניסה איבר לאמצע.
פגישה שניה – מבחן מעשי
שימוש בJQUERY UI
כתובת עמוד בודד אשר התפריט שלו זה טאבים ניתנים לגרירה (סידור מחדש) – לחיצה על כפתור מוסיפ עוד טאב
תחת כל טאב יש עמוד שמכיל טופס הרשמה לעובד המכיל פרטים בסיסים. גם אשראי. בלחיצה על אישור מתקיימת ואלידציה על הנתונים (שימוש בספריה) ומחיקת הטאב. כמובן שאם הואלידציה לא מאושרת מוצגת הודעת חיווי.
להקפיד על CSS נקי, html מסודר, חלוקה בין הקבצים. שימוש בספריות נכונות וממוקמות במקום הנכון בפרוייקט.
Fundtech – פיתוח java/j2ee
מבחן של שעה, שאלות פתוחות וכתיבת קוד ואז ראיון.
דוגמא לשאלה:
public class Sync1 extends Thread{
private int m_value;
public Sync1(int value){
m_value = value;
}
public synchronized void printValue(int iValue){
while(true){
System.out.println(iValue);
}
}
public void run(){
printValue(m_value);
}
}
public class Sync2 extends Thread{
private Sync1 m_sync1;
public Sync2(Sync1 sync1){
m_sync1 = sync1;
}
public void run(){
m_sync1.printValue(2);
}
}
public class ssss {
public static void main(String[] args) {
Sync1 sync11 = new Sync1(1);
sync11.start();
Sync2 sync2 = new Sync2(sync11);
sync2.start();
Sync1 sync12 = new Sync1(3);
sync12.start();
}
}
מה יהיה הפלט?
שאלה נוספת:
נתון מערך בגודל 99
int[99]
יש בו מספרים מ1 עד 100 וחסר מספר אחד בצורה לא מסודרת. יש לכתוב מתודה יעילה שתמצא מה המספר החסר.
Fundtech – בדיקות
השאלות :
1. מערכת שמקבלת X מה – D.B. ואמורה לשלוח Y אל מערכת אחרת שמקושרת אליה, אבל במקום Y מתקבל Z . אילו בדיקות היית מבצע ?
2. נתונה מערכת של קרדיט וחיובים וכדומה ומבוצעים במערכת פעולות שאותם צריך לתאר בתרשים זרימה.
3. שאילתת SQL שמציגה את השם של האדם שיש לו את האייטם הכי גדול בטבלה.
4. נתונה כספת שיכולה לקבל בין 8 ל- 10 ספרות ואותיות . בכל פעם מופיעים תנאים שהכספת מקבלת ואם היא לא מקבלת את מה שהיא אמורה , היא מוציאה הודעת שגיאה על גבי הצג . צריך לרשום T.C. לאותם תנאים : STEP DESCRIPTION , EXPECTED RESULTS , ACTUAL RESULT בטבלה.
Fundtech – משרת QA
4 שאלות:
בשאלה ראשונה שולחים X למערכת 1 היא מעבדת את זה לY ושולחת למערכת 2 והיא גם כן מעבדת ושולחת Z. ואז מישהו אומר שבמקום Z קיבלו משהו אחר וצריך לכתוב שלבים איך מאתרים בעיה.
בשאלה 2 ביקשו לכתוב שאילטה קלה בSQL
בשאלה 3 לכתוב טבלת הרצה (נראה לי ככה זה נרקא) כלומר לכתוב גרף מורכב מIF ופעולות.
ובשאלה 4 יש כספת עם מלא דרישות וצריך לכתוב איזה בדיקות הייתה עושה.
כל המבחן הוא באנגלית וצריך לענות באנגלית.
ראיון שני עם ראש צוות:
1. לספר על עצמך.
2. למה אתה רוצה לעבוד בQA
3. שאילה. קיים רכיב תוכנה שמקבל 3 אותיות ומחזיר אותם בסדר הפוך. מה הייתה עושה עם מתקשר עלך הלוקח ואומר שבמיקום להחזיר אתיות בסדר הפוך, המארכת מחזירה אותם בסדר שונה. למשל קלת ABC, הפלת צריך להיות CBA אבל הוא ACB…
General Electric - GE
בדיקות – QA – משרת סטודנט
הייתי בראיון עבודה למשרת סטודנט QA בGE
1)היה צריך להדפיס ברקורסיה את כל המספרים הראשוניים עד 10001..
צריך להקפיד על יעילות.. וצריך לשים לב למקרי קצה..
2)היה צריך לצייר מעגל בתוך מטרציה של משתנים בוליאנים..
צריך להקפיד על יעילות.. וצריך להקפיד על רציפות.. והכי חשוב לשים לב שערכי המטריצה הם ערכים שלמים למרות שנוסחת המעגל נותנת ערכים לא שלמים… (וצריך לתת לזה מענה)
הכל בשפת C.
פיתוח תוכנה
1.1 מה ההבדל בין וירטואל ללא וירטואל בסי פלוס פלוס, האם יש הבדל , ואם כן, תסבירו, ותתנו דוגמא.
1.2 האם קונסטרקטור יכול להיות וירטואל , אם כן או לא , הסבר ותן דוגמא.
1.3 האם דיסקרטור יכול להיות וירטואל , אם כן או לא, הסבר ותן דוגמא.
2.1 תכתוב הצהרות למחלקה שעושה מחשבון פשוט.(מחשבון פשוט)
2.2 תממש אותן
3.1 נתונה רשימה מקושרת, תהפוך אותה.
4.1 מה זה singleton הסבר ותן דוגמא איך היית ממש את זה.גם במקבץ של השאלות.
5.1 מה זה deadlaod הסבר ותן דוגמא. גם במקבץ.קשור למערכת הפעלה.
6.1 נתונה המחלקה הבאה, היא לא מתקמפלת,
למה?
class a{
public int x=7;
public int y=9;
void f1(){x=24;}
void static f2(){y=35;}
}
6.2 מה היית מסדר כדי שזה יתוקן.
7.1 נתון בית אחד שזה 8 ביטים. תממש פונקציה שבודקת שיש בדיוק 3 ביטים שהם 1.
8.1 בונוס: 107 במקבץ השאלות המפורסמות . נתון חדר בגודל 12X12X30 מטר. הקיר השמאלי ישנו שקע חשמל שנמצא מטר מעל הריצפה, ובאמצע הקיר הימני ישנו שקע חשמל שנמצא מטר מתחת לתקרה. ברור שניתן להעביר כבל באורך 42 מטר בין השקעים, אבל איך ניתן להעביר כבל באורך 40 מטר ביניהם?
Hola - הולה
ראיון דרך Skype
בקשו ממני לממש כל מיני פונקציות במסמך גוגל דוקס. כמו להדפיס מטריצה בצורה ספיראלית, לממש את הפונקציה strcmp ואז לשנות אותה שלא תהייה case sensitive. היה עוד שאלות אבל אני לא זוכר זה היה לפני חצי שנה.
הסבר לצורה ספירלית נגיד וזה מטריצה של 3X3 שכתוב בה מ1 עד 9 לפי הסדר אז שיודפס למך בסדר הבא.
1,2,3,6,9,8,7,4,5
Hola – כללי -2
השאלה הייתה לכתוב פונקציה שמקבלת string שמכיל סוגריים ובודק שהביטוי תקין לדוגמא: (({{[]}})) זה תקין כי עבור כל סוגר פותח יש סוגר שסוגר אותו.
הביטוי ([({))} לדוגמא לא טוב כי המיקום של הסוגר האחרון לא במקום הנכון וחסר סוגר מרובע אחד.
סעיף ב' אותה שאלה רק תוסיף גם את הסוגר | שהוא וההופכי שלו זהים בצורה.
הפתרון הוא להשתמש במחסנית
public static boolean check (String s)
{
Stack<Character> st = new Stack<Character>();
Character old_ch = null,ch =null;
for (int i=0;i<s.length();i++)
{
ch=s.charAt(i);
if (ch=='(' ||ch=='<' ||ch=='[' ||ch=='{' )
st.push(ch);
else{
if (ch==')' ||ch=='>' ||ch==']' ||ch=='}' ){
if (st.isEmpty())
return false;
old_ch =st.pop();
if (old_ch=='(' && ch!=')') return false;
if (old_ch=='[' && ch!=']') return false;
if (old_ch=='{' && ch!='}') return false;
if (old_ch=='<' && ch!='>') return false;
}
}
}
if(!st.empty())
return false;
return true;
Hola – כללי -1
המבחן השני ב-Hola
Hello
Problem
===========
Simplify the implementation below as much as you can.
Even better if you can also improve performance as part of the simplification!
FYI: This code is over 35 lines and over 300 tokens, but it can be written in
5 lines and in less than 60 tokens.
static int func(String s, char a, char b)
{
if (s.isEmpty()) return -1;
char[] strArray = string.toCharArray();
int i=0;
int aIndex=0;
int bIndex=0;
while (aIndex=0 && bIndex==0 && i<strArray.length)
{
if (strArray[i] == a)
aIndex=i;
if (strArray[i] == b)
bIndex=i;
i++;
}
if (aIndex != 0)
{
if (bIndex == 0)
return aIndex;
else
return Math.min(a, b);
}
else
{
if (bIndex != 0)
return bIndex;
else
return -1;
}
}
הפתרון:
static int func(String s, char a, char b)
{
for (int i = 0; i < s.length(); ++i)
{
char ch = s.charAt(i);
if (ch == a || ch == b)
return i;
}
return -1;
}
ראיון שלישי:
הראיון הבא אחריו הוא שיחה בסקייפ עם אחד העובדים שלהם, לי נתנו לממש פונקציה שמשווה בין מחרוזות ללא התייחסות לupper/lower case. מתחילים ממימוש פשוט ומתחילים לייעל אותו- אם זה ע"י הוספת מערך להמרה מאותיות גדולות לקטנות ואם זה בסופו של דבר ע"י loop enrolling כדי לחסוך בפקודות jmp. אני מאמינה שבשלב הזה השאלה לא זהה לכולם, כי בראיון אח"כ שאלו אותי מה הייתה השאלה שקיבלתי.
ראיון רביעי:
הקוד:
void f() {
Deferred d;
d.then(new DeferredCallback(function(){
console.print("first "+ d.value);
return 'b';
}).then(new DeferredCallback(function(){
console.print("last " + d.value);
});
d.foo('a');
}
הפלט הנדרש:
first a
last b
HP
HP – מהנדס תוכנה
עוד שאלות:
איך להדפיס עץ לפי רמות, כלומר- קודם את הרמה הראשונה(שורש), ואז את הרמה השניה(שני בניו של השורש), הרמה השלישית(ארבעת בניהם של שני הבנים של השורש) וכו…
(ניתן לפתור בעזרה מבנה נתונים list)
בנוסף שאלו מה ההבדל בין ת'רד לפרוסס
HP – ראיון למתכנת
ראיון ראשון – פסיכוטכני + אישיות מול מחשב
ראיון שני – טלפוני עם מישהו מהצוות, סוג של מקצועי אבל בקטנה.
ראיון שלישי – מקצועי: שעתיים בערך עם מתכנת
ראין רביעי – גם כן סביב השעה וחצי שעתיים, מקצועי עם ר"צ.
הראיונות המקצועיים:
שאלות על ה heap וה stack, להראות מה קורה בזכרון בקריאה לפונקציות, שאלות על garbage collector – אופן פעולה (חציית הזכרון לשניים והעתקה של עץ הצבעות)
למה אי אפשר לממש garbage collector בעזרת reference count, כלומר למחוק אובייקט רק כשמונה ההצבעות עליו מקבל ערך 0 (אי אפשר כי מה יקרה אם שני אובייקטים יצביעו אחד על השני)…
שאלות design למיניהן: התבקשתי לתכנן משחק של ציור עם כפתורים המייצגים צורות, צריך ללחוץ על הצורה הרצויה ואז על הלוח כדי לצייר את הצורה (או משהו בסגנון). צריך לפרט באילו אובייקטים להשתמש, ירושות (אם יש) ….
כנ"ל רק לממש משחק שחמט.
לכתוב פונקצייה שמקבלת מחרוזת ומחזירה את אורך הפלינדרום הארוך ביותר במחרוזת.
HP – סטודנט ALM
הראיון התחלק ל3 חלקים:
חלק 1 – הסבר על התפקיד, ואז השאלה "ספר לי על עצמך", לאחר מכן מבחן, 2 עמודים משני הצדדים הכוללים שאלות כמו מה ההבדל בין http ל https
מה עושות הפקודות הללו ב Linux
מה זה dns server
ttl
ואז שאילתא בSQL – להגיד מה היא עושה
לאחר מכן מורידים חלק מהשילתא ושואלים למה היא נכשלה
לאחר מכן יש 2 טבלאות ומבקשים ממך לכתוב כמה שאילתות כמו להעתיק את הטבלה לטבלה חדשה
לעשות group by, למצוא את הפעולה שנעשתה ע"י קוד מספר 9 ועוד
אחר כך יש 4 שאלות על XML,חצי מהן זה שאתה יודע לקרוא
החצי השני זה קצת יותר הבנה למשל מה זה \\ בXML
path\\
החלק השני – ראיון באנגלית – ספר לי על עצמך ועל בעיות שהיו לך במהלך התואר ואיך פתרת, משם גלשנו לשיחה על singleton (הובלתי לשם) ועוד דברים
החלק השלישי – שאלות הגיון
הציגו לי את השאלה על הפתילים – למדוד 45 דקות
שאלת הדליים – דלי של 3 ו דלי של 5 ליטר, יש צורך למדוד 4 ליטר
ורשימה מקושרת בעלת 49 איברים שכל איבר מחזיק מספר 1-50 (ללא חזרות), צריך למצוא איבר החסר
אחר כך שאל מה קורה במקרה של שני איברים חסרים ובמקרה של שלושה
ולאחר מכן שאל אותי מה הציפיות שלי מהחברה ולמה אני מתאים ל HP
HP – QA
היו 5 שאלות
2 שאלות על SQL – לכתוב שאילתת SQL לא פשוטה ומידית ושאילתת עדכון
כתיבת פונקציה רוורס לרשימה להשתדל לא משתנה עזר
החלפת משתנים ללא משתנה עזר
שאלת היגיון – הפרש בין מחוגים
HP – אינדיגו – תכנות
ראיון באינדיגו – כשעה וחצי עד שעתיים:
1. כ 20 שאלות אמריקאיות כלליות ב C++ ו MULTI THREADING
2. 2, 3 קטעי קוד ב C++ ו MULTI THREADING , לפענח את התוצאה + למצוא באגים (כמו חסרה נעילה וכו')
3. לכתוב פונקציה קטנה ב ++C שעושה מניפולציה על מילה (חיפוש ביט, היפוך ביטים וכו')
4. נתון תאור של מערכת קטנה ויש לעשות לה תכנון (ב UML או באופן אחר ).
HP – QA
החלק הראשון בא לראות חשיבה בריאה והבנה של מערכת תקשורת, יש שם שאלות כמו איזה בדיקות הייתה עושה למערכת (למשל בדיקת עומסים כדי לראות שהמערכת יודעת לטפל בהרבה משתמשים או בדיקה שהמערכת מאובטחת)אבל שווה בכלל לעבור בקצרה על מודל השכבות (תדע מה זה שרת DNS)
בחלק השני יש שאלה למיין מערך שמורכב מ 0 1 ו 2 למשל { 22112222001201112000}
עוד שאלה על עצים, יש לך ציורים של עצים ואתה צריך לומר לאילו עצים כל ציור מתאים
מה זה tcp/ip
HP – משרת בדיקת ידנית
1. נתון מערך ממויין ופונקציה find שבזמן O(1)i מוצאת בו ערך, ידוע שעל המערך מבצעים הזזה לפי Pivot מסויים שאינו ידוע, ממש פונקציה שתשתמש ב find, ותמצא באותו זמן ערך במערך החדש.
2. ממש פונקציה המאתחלת מערך בערכים 1..n
3. ממש פונקציה המבלגנת את המערך המאותחל באופן רנדומי
4. חידה: ישנם n גמדים ו n נורות, הגמד הראשון מדליק/מכבה כל נורהבקפיצות של 1, השני בקפיצות של 2, כלומר 1,3,5,7,9,.. וכך הלאהאילו נורות ידלקו לאחר שכל הגמדים ביצעו את פעולתם ?
בהנתן K נורות מה המשמעות של כל מספרי הנורות הדולקות בסוף התהליך ?
5. ממש פונקציונליות של עפרון, נתונה טבלה גדולה שאותה צריך למלא בהתייחסות לבדיקות שיש לבצע על העפרון, והפלט הצפוי לאחר כל בדיקה.
HP – כללי
1) סריקת לינק ליסט וזיהוי מעגל
2) כנ"ל אבל עם כאטש של מימוש הגרף ע"י טבלה ולא במימוש המקובל
3) תוכנית שמקבלת פקודה + טייםאוט ומריצה אותה ומחזירה שגיאה למקרה שהפקודה נכשלה או עבר הזמן
4) מימוש OO למערכת חניונים שמקבלת סוג מכונית ומאתרת חניון מתאים לסוג המכונית
HP – כללי
יש לך מערך 3 צבעים לסדר אותם לפי הצבע נמצא באתר הפתרון
איך תייצג מבנה נתונים למפעל שרוצה לשמור את נתוני העובדים שלו, ככה שתוכל להכניס כקלט את האותיות שמתחילים את השם והמערכת תמצא לך את העובדים
(צריך להשתמש בעצים משהו שנקרא יער כול תא בעץ מצביע לעץ חדש של כול האותיות וכך האלה)נגיד בעץ הרא שון השורש יש את כול האותיות וכול אות מצביע לעץ אחר עם כול האותיות.
מה קורה שיש מליוני עובדים איך אפשר לשפר את מבנה הנתונים
שיפור של העץ הוא בהכנסה של השמות לעץ אם נניח אתה מכניס שם: משה
ושאתה נמצא באות מ אין מילים אחרות אז תתן מצביע כבר לשם משה ככה תחסוך צמתים בעצים
היו שאלות מה זה הורשה איך תזהה ומעיין סיפור מעשה ולצייר את המחלקות שלו
שיטות …
תשובה:
יש מערך שמכיל 26 אותיות
מכול אות יש מצביע לעוד מערך של 26 אותיות וככה מכול אות
שאתה בונה את המבנה נתונים
אתה צריך לשים לב לסדר האותיות להגיע למקום הראשון שאין מילה ולעדכן שם את המילה
לדוגמא המילה הראשונה שאני מכניס היא
big
אני מגיע למערך הראשון במקום 1 ורואה שאין למקום הזה תת עץ אז אני שומר את המילה שם
לאחר מכן מגיעה המילה bigest
התוצאה תיהיה שבמערך הראשי במקום 1 ניצור מערך נוסף באותו מערך במקום של האות
i ניצוק שוב מערך חדש ובמקום של האות g במערך החדש נשים את המילה
big
מששיכים למילה החדשה מה שחסר זה
est
תחת האות g ניצור מערך חדש ובתחת האות e במערך החדש נכניס את המילה
bigest
ראיון שני:
ליצור את המחלקות והשיטות של אוניברסיטה מסויימת
יש קטע קוד לדעת מה הוא עושה ( בשאלה זאת יש לשים לב שמשתנה מחלקה שלא מאותחל מקבל את הערך 0 )
ויש קטע קוד לשים לב מה שגוי בו . לעשות CODE REVIEW
הדברים שיש לשים לב . לממש TOSTRING של אובייקט INBOXING ו OUTUBOXING מיותר !
HP – מהנדס תוכנה
1.להפוך רשימה מקושרת
2.לחשב מספר קודקודים בעץ.
3.שאלה על מחוגי שעון , בהינתן שעה ודקה לחשב את הזוית בין המחוגים.
4.בהינתן מספרים מ1..n ועוד מספר אחד שחוזר על עצמו .
להגיד איזה מספר חוזר על עצמו .
5.להפוך מחרוזת.
HP – QA
ראיון ראשון:
נמשך קרוב לשעתיים.
רצו לשמוע על הלימודים ועל הפרוייקט. הרבה חפירה והרבה כתיבה על הלוח.
אח"כ באה שאלה מקצועית אחת:
ציירו לי מחשבון שרץ על אתר כלשהו. למחשבון יש 2 שורות להכנסת משתנים (נגיד x ו- y) , עוד 5 פעולות חשבון (חיבור, חיסור, כפל , חילוק , שווה) ושורה להצגת הפלט.
צריך לחשוב על כל הבדיקות שהיית מבצע על המחשבון הזה. שרצו דגש על בדיקות פוזיטיביות (דברים שהמחשבון אכן אמור לעשות) ובדיקת נגטיביות (דברים שהמחשבון לא אמור לעשות).
ראיון שני:
שוב חפירה על הלימודים והפרוייקט.
2 שאלות:
1. נתון ערך – צריך למיין אותו בצורה הכי יעיללה. כל מימוש של nlogn יהיה טוב נראה לי. מכיוון שהערכים במערך היו נתונים אני הצעתי מיון מנייה שרץ ב- n אבל לא בטוח שהמראיין הבין מה אני רצה ממני (ככה זה נראה לי)
2. מה קורה כאשר מקישים
http://www.google.com – תאר את התהליך עד אשר דף ה-web מגיע חזרה למחשב + ברגע שהוא מגיע איזה בדיקות צריך להריץ.
HP – כללי
ראיון ראשון זה ראיון פסיכומטרי ופסיכולוגי
ראיון שני :עם ראש צוות ,נתן לי דף שיש בו 10 שאלות הקשורות בתחום הרשתות והאינטרנט
כמו למשל מה אתה יודע על פרוטוקול TCP/IP ומה HTTP וURL וROUTING TABLE וDNS<<<<
אחר כך שאלות תוכה כמו
נתון לך מערך בגודל 100 והוא מכיל מסברים מ 1 עד 100 כאשר אין חזרות ,אם אומרים לך שחסר מסבר אז איך אפשר לגלות אותו ,ואם חסרים שני מסברים אז איך אפשר לגלות אותם
שאלה שניה :במינימום שקילות לזהות מטבע מזויף,שאלה זו מןפיעה בקובץ השאלות
שאלה שלישית : נתונה מחרוזת צריך להציע דרך שתאפשר לנו לצמצם את המחרוזת ובחזרה להחזיר אותה למחרוזת המקורית ,המחרוזת יש בה חזרות למשל על מספרים או אותיות
HP – תוכניתן JAVA
1. כפל של X ו Y ללא שימוש בלולאות או כפל
תשובה: רקורסיה
mult(x,y) = x + mult(x,y-1)
2. הדפסה של עץ בינארי (לא מאוזן) ללא רקורסיה
תשובה: שימוש במבנה נתונים
3. נתונים מספר זוגות עם יחס ביניהם.
יש לסדר אותם במבנה נתונים שיענה על השאלה האם X כלשהו גדול מ Y כלשהו
HP – מהנדס פיתוח ב-C++
1. כתוב פונקציה רקורסיבית שמזהה האם סטרינג נתון הוא פולינדרום
2. נתונה פונ'
void f(int i)
switc(i)
case 1:
// code
case 2:
//code
case 3:
//code
הצע שיטה למימוש f ללא תנאים.
3. כתוב פונקציה המקבלת שתי רשימות ומחזירה רשימה חדשה המכילה את החיתוך של הרשימות הנתונות.
IBM
Test at Trusteer/IBM
א. תלמדו טוב טוב על הפונקציות הווירטואליות, לעומק
ב. 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 – מבחן בית
מבחן בית של 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
בראיון של ה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
1. אתה מקבל פוינטר למערך ממוין ואת גודל המערך.
במערך יש מספרים שחוזרים על עצמם מספר פעמים.
אתה צריך להחזיר את המערך הממוין בלי כפילויות.
2. יש מעין מערכת של בנק מה חשוב שיהיה במערכת בזאת.
הוא כיוון לכך שחשוב לדאוג שיהיה mutex ואז דיברנו
על הסנה בmutex שזה dedlock ועל איך אפשר לפתור
את הבעיה.
IBM – כללי 1
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.
Innovid - אינוביד
Innovid – 2020
Question ( I MADE A IMAGE OF A TEST )
DESIGN A WEB CRAWLER (class diagram +pseudo code).
A web crawler starts with a list of URLs to visit , As the crawler visits it identifies all the hyperlink in the page and adds them to the list OF URLs to visit and then recursively visit them
Innovid – כללי 6
1. תעצב שרת של הודעות כמו whatsapp? כאן הם רוצים לראות איך אתה מעצב מערכת. איזה קומפוננטות יהיו בשרת.
2. תכתוב פונקציה שבודקת האם העץ מאוזן/ מלא, כלומר אם יש לכל אב שני בנים וכל העלים באותו הגובה, כאן לא מספיק רק לבדוק ברקורסיה האם שני הבנים קיימים לכל אב אלא צריך לבדוק האם כל העלים באותו הגובה.
3. יש לך k רשימות ממוינות עם מספרים, כתוב פונקציה שבוחרת את הטווח המינמלי האפשרי כך שבטווח זה יהיה לפחות מספר אחד מכל רשימה. לדוגמא:
רשימה 1 – 1 20 21
רשימה 2 – 2 22 24
רשימה 3 – 30 40 50
אז הטווח המינימלי הוא 21-30 כי 21 מופיע ברשימה ה1, 22 ו 24 מופיעים ברשימה ה2 ו30 מופיע ברשימה ה3
4. כתוב פונקציה שמקבלת גבהים ומשקלים של אנשים בצורה (180,85),(190,60),(150,100),…
ומחזירה את האנשים ומספרם של אלו שאפשר לבנות מהם מגדל כך שהחוק הוא שכל בנאדם שמעל לבנאדם אחר הוא גם רזה יותר וגם נמוך יותר מהקודם. זה לא ממויין אז אני מעריך שצריך אולי למיין לפי גבהים ולפי משקלים.
5. שאלת בונוס – תתאר מחלקה שמספקת מנעול רק כאשר אין deadlock.מצאתי את הפיתרון כאן:
http://stackoverflow.com/questions/5171 … -deadlocks
Innovid – כללי 5
היו 5 שאלות חלק יחסית קלות אבל היו כמה די קשות במיוחד השאלת בונוס.
1) קיימת פונקציה שאומרת אם מחרוזת היא תת מחרוזת של מחרוזת אחרת. בהינתן שתי מחרוזות איך ניתן באמצעות קריאה אחת בלבד של הפונקציה הנ"ל לדעת האם מחרוזת אחת היא סיבוב ציקלי של השניה, למשל "יאיר" "ריאי" תתן תשובה חיובית.
פתרון מוצע: כך את המחרוזת יאיר ותבנה ממנה מחרוזת עם כל הסיבובים האפשריים: "יאיריאי".
ואז תבדוק אם ריאי היא תת מחרוזת שלה.
בונוס:
כתוב פונקציה שמקבלת שני מספרים ומחזירה מקסימום שלהם ללא השוואות.
פתרון מוצע:
בהינתן a b
dif = a-b
sign = 1 if dif is negetive 0 if positive (עושים זאת ע"י פעולות bitwise שנuתנות את ביט הסימן של dif)
ולבסוף החזר
a – (a-b)*sign
Innovid – כללי 4
1. נתון מערך בגודל m x n כך ש m,n לא בהכרח שווים . צריך להדפיס את איברי המערך בצורה ספירלית
כלומר אם נתון
1 2 3 4
5 6 7 8
9 10 11 12
תדפיס:
ZZZ 4 3 2 1 5 9 10 11 12 8 7 6 ZZZ
ה- ZZZ זה רק ליישור שורה. 5 לולאות מהגיהינום.
2. יש n איברים ולכל איבר יש ערך. צריך למצוא מבנה נתונים שאיתו אפשר ב o(1) בלבד לעשות את כל הפעולות הבאות:
1. לשנות ערך של איבר
2. להחזיר ערך של איבר
3. לשנות את כל הערכים של כל האיברים (זה כמובן הקושי פה)
פתרון מוצע: http://stackoverflow.com/questions/10005544/interview-qu%D0%B5stion-data-structure-to-set-all-values-in-o1
שאלה שלישית:
צריך לתאר UML של מעלית.
שאלת הגיון:
אתה מחזיק מגילה ובה K משפטים:
רק משפט אחד מהמשפטים שבמגילה זו הוא נכון.
בדיוק שני משפטים מהמשפטים שבמגילה זו הם נכונים.
בדיוק שלושה משפטים מהמשפטים שבמגילה זו הם נכונים.
*
*
*
כל המשפטים במגילה זו הם נכונים.
אילו מהמשפטים במגילה נכונים???
פתרון מוצע: רק המשפט הראשון נכון.
Innovid – כללי 3
נתונה פונקציה – random 5 שמחזירה מספר רנדומלי בין 1 ל 5 ממש את random 7.
תשובה מוצעת:
int randbit( void )
{
while( 1 )
{
int r = rand5();
if( r <= 4 ) return(r & 1);
}
}
int randint( int nbits )
{
int result = 0;
while( nbits– )
{
result = (result<<1) | randbit();
}
return( result );
}
int rand7( void )
{
while( 1 )
{
int r = randint( 3 ) + 1;
if( r <= 7 ) return( r );
}
}
Innovid – Web Developer
1. The 2 Eggs Problem – Building of 100 floors, You need to find the breakable floor. (google it…)
2. NXN pixels picture, each pixel is 4 bit. You need to build a method for rotating the pic in 90 degree.
3. Data structure of UML: create Class Diagram:
a. some Receivers – first answer
b. one Manager – second answer
c. some Directors –third answer.
If Receiver can't take the call , it moves to Manager,
If Manager can't take the call, it moves to Director
4. Bonus:
Data structure of Two Tress:
T1 – Tree with millions of nodes
T2 – Tree with hundreds of nodes
You need to write algorithm which saying wheatear T2 is sub-tree of T1 ?
T2 is sub-tree of T1 if there is a node in T1 that which all his descending exists
Innovid – כללי 2
שאלות גירסא 1:
1.describe using uml or other programming language an elevator
2.יש לך n משפטים
אומרים לך להגיד לכל משפט האם הוא אמת שקר או אי אפשר לדעת
אבל זה שונה מהמגילות
כל משפט נראה כך:
there is exactly one false sentence
there are exactly two false …
there are exacyly n false
3.
תתארי מבנה נתונים שאת יכולה לעשות את כל הפעולות הבאות בo(1)
יש לך
insert(location,value)
reset(value)
pull(index)
חסרה פה שאלה נוספת ושאלת בונוס(לא זוכרת נדמה לי שהן מופיעות בקובץ גם)
גירסא 2:
עמוד 54(1.1):
Implement an algorithm to determine if a string has all unique characters What if you
can not use additional data structures?
עמוד 54 (1.6):
Given an image represented by an NxN matrix, where each pixel in the image is 4
bytes, write a method to rotate the image by 90 degrees Can you do this in place?
לא סגורה על זה אבל נראה לי שהיתה שאלה:Assume you have a method isSubstring which checks if one word is a substring of
another Given two strings, s1 and s2, write code to check if s2 is a rotation of s1 using
only one call to isSubstring (i e , “waterbottle” is a rotation of “erbottlewat”)
(1.8)
עמוד 78 שאלה 2 היתה
שאלת זריקת ה2 ביצים ממגדל היתה
שאלת בונוס :
עמוד 60 שאלה 4.7 (שני עצים)
חלק מהשאלות והפתרונות מופיעים כאן:
http://www.valleytalk.org/wp-content/uploads/2012/10/CrackCode.pdf
Innovid – כללי 1
יש שתי טבלאות, a ו-b, ב-a יש 30 שורות וב-b יש 20. כמה שורות תקבל בתוצאה של
select * from a,b
תשובה מוצעת: 600.
Intel - אינטל
אינטל – ROC
ביום הראשון:
1.מבחן באנגלית – רמה קלה יחסית , טקסט בנושא חיילות בצה"ל כמו שכבר כתבו פה לפני.
2.מבחן טכני אמריקאי כנראה ברמה של שנה ראשונה של הנדסאי חשמל
אין מה להתכונן הם לא מצפים שתצליחו בו יותר מידי (אני ניחשתי הכל ועברתי שלב)
3.מבחנים פסיכוטכניים על מחשב של פילת: מתמטיקה – הסקה מתרשים, עיבוד צורות, נורות ומתגים דלוקים וכבויים ולגלות איזה מתג לא תקין, השוואת מחרוזות ואולי עוד משהו שאני לא זוכר.
יום למחרת כבר הודיעו שעברתי וצריך להגיע למבחנים נוספים עוד יומיים
מה שהיה בשלב השני:
1.דינמיקה קבוצתית
2.מבחן וילון – נמצאים עם צורה מאחורי וילון וצריך להסביר ל-2 מועמדים אחרים איך להרכיב אותה מצורות גיאומטריות שמונחות לפניהם. פעם אתם מאחורי הוילון ופעם או פעמיים אתם בצד שמקבל את ההוראות.
אחרי השלב הזה סיננו חלק מהאנשים, השלב הבא:
חלוקת קשב: מקשיבים באוזניות לתוכנית רדיו ותוך כדי התוכנית יש קול שמקריא תרגילים מתמטים פשוטים יחסית
במקביל לפתרון התרגילים צריך להרכיב צורה מסוימת שמונחת לפניכם מקוביות
בצבעים שונים.
אחרי השלב הזה סיננו עוד אנשים
מי שנשאר מגיע לראיון מול ראש צוות.
ראיון בעיקר אישי בלי שאלות מקצועיות
אולי גם שאלות היגיון תלוי במראיין
לגבי מבחן הרדיו :
שמים לך אוזניות עם מוסיקה וברקע נשאלים תרגילים מטמטיים, פעולות בסיסיות .
אתה אמור להשיב עליהם תוך כדי שאתה מרכיב צורות בקוביות ע"פ דוגמא .
משהוא בסיגנון משחק הטנגם רק עם 9 קוביות בעלות פאות עם צבעים וצורות שונים .
צאו מנקודת הנחה שלא תצליחו ליפתור את כל התרגלים אך יש לומר בצורה ברורה את התרגיל ששמעתם (לדעתי הפיתרון פחות חשוב אפשר להיות קרובים לפיתרון שואלים 5.3 כפול 2 אז למי שאין מחשב בראש יגיד 10.5 או 11) .
לגבי הצורות תנסו לפתור לפחות 4 פאזלים
אינטל – סטודנט להנדסת חשמל ואלקטרוניקה
ראיון ראשון:
שאלה 1:
תחילה שאלו אם אני מכיר את מערכת ההפעלה LINUX ספציפית PERL
לאחר שהשבתי שלא,ביקשו ממני לכתוב סקריפט שמקבל מהמשתמש 3 משתנים בודק אם סכומם מתחלק ב7 ללא שארית אם כן מדפיס BOOM אם לא מדפיס את סכומם,עזר:GOOGLE
שאלה 2:
מערכת תקשורת בין מעבד לזכרון,תחילה לצייר את קווי הכניסה והיציאה בין הרכיבים
לאחר מכן ליצור בשפת C++ תוכנית שתבדוק אם בין קווי הכתובת או המידע יש נתק או קצר,כאשר נתק המוצא בגבוה,כאשר קצר בין הקווים המוצא יורד לנמוך
שאלה 3:
ליצור מערך רנדומלי מהמספרים 1 עד N
ראיון שני:
היו הרבה שאלות אני ארשום את אלו שאני זוכר
שאלה 1:
אתה סוחר שבבעלותו משקל מאזניים וברשותך סדרת משקולות בלתי מוגבלת מ1 קילו עד 40 קילו ברזולוציה של קילו,1,2,3,4…40
אתה שוקל סחורה ברזולוציה של קילו,מהו הסט המינימלי שתדרש לקחת איתך כדי שתוכל לשקול סחורה מ1 ועד 40 קילו בדיוק של קילו.
שאלה 2:
שטוטית קצת,שאלו אם קבל בהגדרתו הוא מעגל פתוח,איך קיים זרם?
שאלה 3:
ליצור בעזרת רכיב ROM 2X4 רכיב הממש and,or,XOR,not(bit wise) בין שני ביטים
שאלה 4:
צור תוכנית בC++ שמקבלת מספר בגודל של עד 7 ביטים ומוציאה את סכום האחדות במספר.
ועוד מלא שאלות קטנות הראיון לא כלל שאלות אישיות לכן הוא היה מפוצץ בהרבה מאוד שאלות קטנות
תשובות:
ראיון ראשון:
שאלה 1:כדי לעשות מה שהם ביקשו צריך דברים בסיסיים
סינטקס בסיסי של תוכנית,אופרטורים,סינטקס קלט ופלט ותנאי הסתעפות.
ברגע שיש לך את כל אלו הפתרון פשוט בכל שפה שהיא.
שאלה 2:
אתה טוען חיצונית לזיכרון בכתובת 0 את הערך FFFF
כדי לבדוק קצר,אתה מריץ את המספרים 1,2,4,8,16,32,64
אם באחד מהם הערך הנשלף הוא FFFF אז יש קצר כי הגעת לכתובת 0 בטעות
כדי לבדוק נתק אתה פשוט מנסה לקרוא מכתובת 0,אם לא קיבלת את FFFF זה אומר שיש נתק והגעת לכתובת אחרת
שאלה 3:
ממלא את המערך בסדר עולה מ1 עד N
לאחר מכן עובר תא תא ועבור כל תא מגריל מספר מ1 עד N בעזרת פונקצית RAND
אתה מבצע החלפה של התא עם התא שהוגרל המספר שלו
ראיון שני:
שאלה 1:
סט מינימלי 1,3,9,27
הטריק הוא לחשוב על הנחת משקולות על שני צדדי המאזניים ובכך לכסות טווח גדול יותר
שאלה 2:
קבל הוא נתק בהגדרתו,התנועה של הזרם היא בעצם תנועה של מטענים מהלוח השלילי לחיובי ובעצם יצירת המטען על השפה של הקבל ובכך לקבל את המתח של המקור עליו,לכן קבל בDC במצב היציב הוא נתק מאחר ויש שיוויון פוטנציאלים עם המקור,במקור AC הקוטביות של הקבל משתנה בהתאם לתדר המקור ולכן יש זרם חילופין.
חפרתי על זה יותר בהקשר של שדות אלקטרומגנטים,כי זה הניתוח הנכון יותר,אבל זה הניתוח המופשט
שאלה 3:
אתה פשוט טוען בROM את הערכים של הפעולות
0001
0111
0110
1100
כאשר and,or,XOR,not(a0
כאשר הכניסות הם קווי הכתובת a0,a1
בכל כתובת בזכרון יש את כל הפעולות לפי הסדר הנ"ל
שאלה 4:
אתה פשוט סוכם את השארית מחלוקה ב2
ולאחר מכן מחלק את המספר ב2
וממשיך ככה עד שהמספר מתאפס
התוצאה היא מספר האחדות.
אינטל – הנדסת תוכנה
בראיון ראשון שאלו אותי:
1. נתונה רשימת קבצים ובכל אחד מהם #include לקבצים אחרים. יש לך פונקציה שבאמצעותה אתה יכול לטעון את כל קבצי ה-include מקובץ נתון. צריך לכתוב פונקציה שטוענת את כל קבצי ה-include בהינתן קובץ source מסויים. יש למנוע כניסה ללואה אינסופית הנגרמת מקריאת מעגלית של include.
פתרון: ע"י רקורסיה
בראיון שני:
1. לממש cashe בגודל n, המבוסס LRU. כל כניסה ל- cashe מורכבת מכתובת ותוכן.
פתרון: hash table: ה-key הוא הכתובת. המיפוי נעשה ע"י פונקציית גיבוב של mod. בכל תא מחזיקים את התוכן שמופה לשם ברשימה משורשרת. חוצמזה מחזיקים רשימה דו-כוונית הממוינת לפי הזמן (ואז בטבלת הגיבוב יש הצבעות גם בין הרשימות השונות שבכל תא).
2. יש מגבלת זכרון של 12 ביט. כל פקודה מורכבת מכתובת ומהוראה.האם אפשר לתמוך בכל הדרישות הבאות:
(פה נותנו לי 4 דרישות שאני לא זוכרת את כולן. דרישה היא מהסגנון: כתובת מורכבת מ-3 ביט והוראה מ-4 ביט).
פתרון: אפשר לתמוך בכולן ובאחרונה רק בחצי מהדרישה (כדי להגיע לזה פשוט צריך להראות להם חישוב של כל האופציות השונות. יש מצב בו שבעקבות 2 דרישות אתם תצטרכו להשתמש ב-11 ביט, אז תשתמשו בביט הנותר כביט מציין, 0- פקודה ראשונה, 1- פקודה שנייה). אח"כ ביקשו ממני להוכיח את זה שא"א לתמוך בכל הדרישות, אז פשוט צריך לחשב את גודל הזיכרון הנדרש כדי לתמוך בכול הדרישות, ומקבלים שזה 12^2 + 8, ובפועל יש רק 12^2 זכרון, ולכן א"א לתמוך בכל הדרישות.
אינטל – Firmware Engineer
שאלות על קורס מערכות הפעלה. איך מסנכרנים תרדים וכד'.
שאלות לגבי שימוש בזכרון – האם כדאי להגדיר זכרון על ה "סטאק" או בצורה דינמית. למה יש יתרון.
יש איזו "קופסא" עם API שנותן כל פעם בייט אחד עם מידע, יש שני ביטים שדולקים בקצה, אחד מציג אם ההודעה הסתיימה, ואחד מציג האם יש עוד מידע. משהו כזה. צריך לכתוב קוד שיטפל בקבל הודעות.
יש מערכת שמדליקים אותה, מעביר נתונים לפירם-וור, וזה לוקח הרבה זמן, איך אפשר ליצור מערכת שמעדכנת רק שינויים.
אינטל – כללי 3
1. SQL: נתונה טבלה CITY)) בעלת שמות ערים (לדוגמא ת"א, חיפה, ירושלים).
קיימת פונקציה שכאשר שולחים לה עיר מוצא ועיר יעד – היא מחזירה את המרחק.
הדרישה לבנות שאילתת SQL אשר מחזירה טבלה בה יש עמודת מוצא, עמודת יעד, ומרחק.
כדוגמא:
מוצא | יעד | מרחק
ירושלים | תל-אביב | 30
פיתרון:
SELECT O.NAME as Orig, D.NAME as Dest
FROM CITY O, CITY D
WHERE (Orig<Dest)
אינטל – כללי 2
שאלות תיכנות משולב עם מבני נתונים
שאלה 1 לגבי מימוש של מילון כלשהו בצורה יעילה
שאלה 2 לגבי ספירה של 4 ביטים כל פעם בבסיס אחר (בסיס 2,3,4 וכו')
אינטל – כללי 1
1. נתונה קופסה הממיינת 2 מספרים – מצד אחד מקבלים 2 מספרים מהצד השני מקבלים את הגדול מבניהם והקטן )
בנה קופסה הממיינת 4 מספרים.
כעת נתון שאחד הקופסאות במערכת שבנית תקולה. התקלה יכולה להיות או שהמוצא הוא כמו הכניסה או שהקופסה הופכת את הסדר (בלי קשר לגודל).
הבא מספר מינימלי של סדרות מספרים שיבדקו האם המערכת מכילה רכיב פגום.
לבדוק אם היא הופכת פשוט תכניס 1234 ממוין
לבדוק אם היא מעבירה בלי למיין תכניס 4321 ממוין הפוך
ולמעשה מספיק להכניס את האופציה השניה בלבד ואם המוצא לא תקין אז בהכרח המערכת תקולה
2. בנה מכונת מצבים המקבלת ביטים (1 או 0, כל פעם נכנס ה-LSB) ומוציאה 1 אם המספר מתחלק בשלוש. תאר בקצרה איך לבנות את המעגל.
כעת רוצים לדעת האם המספר מתחלק ב-12. מה צריך לבדוק.
איך נבדוק האם מספר מתחלק בשלוש אם כל פעם נכנס ה-MSB.
Marvell
Marvell – הנדסאי Layout
Marvell – סטודנט מהנדס אלקטרוניקה 2
1. בחן את פקודת המאקרו הבאה ותגיד אם יש בה בעיות:
#define MULTIPLY(x,y) x*y.
2. נתון בית בעל 8 סיביות מה הדרך להפוך אותו בrealtime כך שמספר הבא:
X7 X6 X5 X4 X3 X2 X1 X0
יהיה כך:
X0 X1 X2 X3 X4 X5 X6 X7
(פתרון: צריך להבין שהבית מייצג מס' בין 0 ל256 ולכן יש לבנות בתוכנה מערך בן 256 תאים שבכל תא נמצא הערך שאמור להתקבל אחרי ההפיכה כך שהמערכת פשוט תקרא את המס' ותתרגם אותו לתא מסויים במערך והוא כבר יתן בדיוק את המס' ההפוך)
3. כעת המס' הנתון הוא בן 32 סיביות ולבנות מערך בגודל של 4 גיגה זה המון זיכרון אז איך אפשר עכשיו לעשות את זה ב realtime?
(פתרון: את המס' הזה נוכל לחלק ל4 מספרים בני 8 סיביות כל אחד ולהכניס אותו למערך שבנינו קודם ורק להחליף את הסדר של המערכים שנשלחו).
Marvell – סטודנט מהנדס אלקטרוניקה 1
1) מערכות ספרתיות:
נתונה מערכת בעלת שתי כניסות, בכניסה 1 ישנו X בעל 4 סיביות ובכניסה 2 ישנו X+2 גם כן בעל 4 סיביות.
המוצא של המערכת הוא X+1 בעל 4 סיביות.
צריך לממש את המערכת הנ"ל מבלי להשתמש במחברים או מחסרים.
פתרון: אם X הוא זוגי אז במוצא ניתן את X כאשר הסיבית הLSB שלו עם NOT.
אם X הוא אי זוגי אז במוצא ניתן את X+2 כאשר הסיבית ה-LSB שלו עם NOT.
מימוש עם MUX כאשר LSB של X היא הכתובת הבוחרת.
2) נתון מערך בגודל N של מספרים אי שליליים.
צריך למצוא 5 מספרים הכי גדולים אבל כך שהם לא יהו שכנים במערך. (כלומר אף זוג מחמשת המספרים האלה לא יכול להיות צמוד במערך המקורי)
הראה דרך פתרון.
פתרון: לוקחים מערך של אינדקסים מ-0 עד N-1 וממינים את המערך המקורי בסדר יורד.
המספר הכי גדול הוא המספר הראשון, ואז לפי זה בודקים את המספר השני במערך הממוין אם הוא השכן של הראשון, אם כן אז מדלגים למספר השלישי ומבצעים את
אותה הבדיקה אם לא אז מצאנו עוד מספר ועוברים למספר השלישי וכך הלאה עד שמגיעים ל5 מספרים הכי גדולים שהם לא שכנים.
3) (סיבוך של 2)
כעת בגלל אילוצי המערכת לא ניתן לרוץ על המערך המקורי יותר מפעם אחת.
השאלה נשארת זהה. רמז: ניתן להשתמש במערך עזר אך אסור להעתיק את כל המערך המקורי למערך עזר (ואז בעצם לפתור כמו מקודם)
פתרון: נקח מערך בגודל של 15 כך שבתא אחד נוכל לשמור גם את הערך של תא מסוים וגם את האינדקס שלו.
נמצא בריצה אחת על כל המערך המקורי 15 מספרים הכי גדולים, נשמור אותם ואת האינדקסים שלהם במערך העזר.
וכעת הגענו למצב שבמקרה הכי גרוע יש לנו 2 שכנים למספר אחד הכי גדול. ובגלל שיש לנו 15 הכי גדול אז נוכל למיין את מערך העזר ולבחןר על בטוח 5 מספרים הכי
גדולים שהם לא שכנים
4) המשך:
מערך עזר יכול להיות יותר קטן מ-15! מהו גודלו המינימלי כך שעדיין יעמוד בדרישות?
פתרון: 13
Marvell – כללי 1
ביקשו שאפרט על פרוייקט שעשיתי.
השאלות שהיו:
1. כתוב פונקציה המקבלת מספר המורכב משמונה ביטים. יש לבדוק האם כמה ביטים דלוקים במספר. לדוג' עבור 01001010 התשובה תהיה 3
2. כתוב פונקציה המקבלת מספר המורכב משמונה ביטים. להחזיר את המספר ההופכי . לדוג' עבור 01001010 התשובה תהיה 01010010
3. יש לתאר מכונת מצבים אשר מקבלת מחרוזת אשר מסתיימת ב "\N" ומורכבת ממספר מילים. המילים מופרדות באמצעות רווח אחד או יותר. יש להחזיר את מספר המילים.
פתרון:
עבור שאלות 1-2: הם רצו לראות שאני משתמש בטבלה צדדית ולא מבצע מכל מיני חישובים מסובכים
Marvell – ואלידציה
לכתוב פונקציה שמקבלת שני מערכים ממויינים ומחזירה מערך גדול ממויין שמכיל את שני הקטנים.
– שאלה מפגרת, אבל אז הם שואלים "בתור איש בדיקות, איך היית בודק את הפונקציה הזאת?"
צריך לראות שהבדיקות שלך מכסות כל שורה בקוד ושאתה מקפיד לבדוק גם מקרי קצה כגון: מערך בגודל 32^2 (גודל של אינט) ושאתה לא מעמיס על הסטאק של הפונקציה שקראת ממנה ועוד…
עוד שאלות ששאלו: 1. אם אני מכיר מעגלים שמעבירים מAC ל DC? איך ממשים אותם? באיזה גובה יהיה ה DC?
2. אם יש מכשיר שמקבל מתח מסויים ומוציא מתח קטן ממנו לעומס, ללא תלות בהתנגדות הכניסה של העומס?
3. יש מכשיר שמקבל 5V ומוציא V10? איך הוא עושה את זה?
Mellanox - מלאנוקס
Mellanox – Firmware
1. ממש פונקציה שמקבלת מספר עשרוני ומדפיסה את ערכו הבינארי.
2. בהינתן רשימה מקושרת עם מצביע לאיבר הראשון בלבד. החזר רשימה שהיא אותה הרשימה שקיבלת רק בסדר הפוך, כלומר אם הסדר היה
head–>11>22>33
אז אחרי הוא יהיה:
head–>33>22>11
אסור להזיז האיברים עצמם, רק מצביעים.
יש לפתור ב-C.
פתרונות מוצעים:
/*
*Q1.Write a function in C for printing to screen the binary value of a given decimal value.
*/
#include <stdio.h>
#include <string.h>
long dec2bin(int dec){
if(dec<0){ printf("MINUS: (-)"); dec=-dec;}
if(dec==0 || dec==1) return (long) dec;
return (long) (10*dec2bin(dec>>1) + (dec & 1));
}
main(){
int arg=-300000;
printf("%ld is the binary value of the decimal number: %d", dec2bin(arg), arg);
}
/*Will result: MINUS: (-)1001001001111100000 is the binary value of the decimal number: -300000*/
/*
*Q2. Reverse a given Linked List. Only pointers changes are allowed.
*/
#include<stdlib.h>
#include<stdio.h>
typedef struct linkList {
int value;
struct linkList * next;
} Node;
void printLinkedlist(Node *head){
printf("\nHead->");
for( ; head; head = head->next)
printf("%d->", head->value);
printf("NULL\n");
}
Node* reversedLink(Node *head){
if( !(head && head->next) ) return head;
Node *reversedhead = reversedLink(head->next);
head->next->next = head;
head->next = NULL;
return reversedhead;
}
void main() {
Node * curr, * head;
int i;
head = NULL;
for(i=1; i<=10; i++, head=curr)
*(curr = (Node *) malloc(sizeof(Node))) = (Node) {i, head};
printf("\nBefore:");
printLinkedlist(head);
printf("\nAfter:");
printLinkedlist( (head = reversedLink(head)) );
}
/*Will result:
Before:
Head->10->9->8->7->6->5->4->3->2->1->NULL
After:
Head->1->2->3->4->5->6->7->8->9->10->NULL*/
Mellanox – חידות הגיון ותכנות
ראיון מחולק לשלושה חלקים:
1) שני מראיינים שואלים שאלות עליך.
2) אחד מהם מספר על החברה.
3) חלק שלישי זה שאלה לוגית ושאלת קוד:
1) שאלה לוגית:
יש שלושה כדים אשר מכילים שני כדורים. צבעי הכדורים יכולים להיות:
אדום אדום
אדום שחור
שחור שחור
כדים הנ"ל אם תויות אשר כיתוב עליהם משקר.
כד ראשון:
כיתוב על התוית – אדום אדום
כד שני:
אדום שחור
כד שלישי:
שחור שחור
צריך למצוא מינימום הוצאות כדי לדעת איזה כדורים נמצאים בכדים בוודאות.
פתרון:
יש שלוש פתרונות לתרגיל הזה וצריך להציג אותם וכמובן להסביר למה בחרתם בפתרון הזה, מה המינימום ההוצאות בכל פתרון.
פתרון ראשון:
נניח הוצאנו כדור אדום מכד ראשון:
בכד ראשון יהיה אדום שחור
בכד שני – שחור שחור
בכד שלישי – אדום אדום
אם הוצאנו מכד ראשון כדור שחור:
כד ראשון – שחור שחור
כד שני – אדום אדום
כד שלישי – אדום שחור
זאת אומרת במקרה הזה יהיה שני הוצאות כדי לדעת איזה כדורים יש בשאר הכדים וזה סיכוי של 50 על 50.
פתרון שני:
דומה לפתרון הראשון רק פה אנחנו צריכים הוצאה אחד. וזה סיכון 50 על 50.
פתרון שלישי (פתרון הנכון):
אנחנו נוציא כדור אדום מכד שני ולכן:
כד שני – אדום אדום
כד ראשון – שחור שחור
כד שלישי – אדום שחור.
המלצות:
תחשבו על תרגילי לוגיקה היטב, על תמהרו (מה שעשיתי), זה לא אמור לקחת יותר מ-5-10 דקות.
2) שאלה על קוד:
נתונה הגדרה של הפונקציה הבאה –
char *str pbreak(str1*, str2*);
ומספר דוגמאות לקריאת פונקציה –
str1 = 'Hello Mellanox!';
str2 = '123!';
str2 = '123';
str2 = 'olle';
עליכם להסביר מה מקבלת ומחזירה פונקיה ומה תהיה ב-str2 לאחר שפונקיה תסיים לעבוד.
גם כן צריך להסביר כל שלב שאתם עושים.
אחרי זה מבקשים לכתוב פונקציה זו ב-C או ב-Python בכמה שפחות שורות קוד.
צריך גם להסביר סיבוכיות למקרים ספיציפיים שיכולים לשאול.
Mellanox – INFORMATIONS SYSTEM ENGINEER
1. כתוב פונקציה המזהה אם מספר הוא פולינדרום
2. שאלה ידועה על איך מזהים את המספר החסר במערך מספרים מ 1 עד N וגם אם חסרים 2 מספרים
Mellanox – BOARD DESIGN
נתונים שני סוגי רכיבים עם שתי כניסות ויציאה אחת שזו טבלת האמת שלהם.
יש ליצור מרכיבי איי ו- בי שער קסור
A1 A2 F B1 B2 F X1 X2 F-XOR
0 0 0 0 0 Z 0 0 0
0 1 Z 0 1 Z 0 1 1
1 0 Z 1 0 Z 1 0 1
1 1 Z 1 1 1 1 1 0
Mellanox – Design Verification Engineer
שאלה 1:
נתון רכיב עם 3 כניסות ו-2 יציאות.
הרכיב מוציא מספר 'אחדים' שיש בכניסה.
למשל, עבור כניסות 001, 010, 100 – ביציאה יהיה 01 ('אחד' אחד)
עבור כניסות 011, 101, 110 – ביציאה יהיה 10 (שני 'אחדים')
עבור כניסה 111 – ביציאה 11 (שלושה 'אחדים')
מהרכיבים כנ"ל בלבד תבנה רכיב עם 7 כניסות ו-3 יציאות
פתרון:
ישנם סה"כ 4 רכיבים:
שני רכיבים (רכיב1 ורכיב 2) מקבלים כניסות X1-X6
מוצא שלהם זה Y1-Y4
רכיב 3 מקבל כניסות : Y2, Y4 ו-X7
מוצא של רכיב 3: Z3, Z4
רכיב 4 מקבל כניסות: Y1, Y3 ו-Z3
מוצא של רכיב 4: Z1, Z2
מוצא של הרכיב היעד: Z1, Z2 ו-Z4
שאלה 2:
ישנם 25 סוסים.
מהו מספר מרוצים הקטן ביותר הנדרש כדי לבחור 3 סוסים המהירים ביותר.
בכל מירוץ יכולים להשתתף עד 5 סוסים.
תשובה: 7 מירוצים.
פתרון:
שלב 1: מריצים 5 מרוצים עם כל הסוסים הניתנים (נמספר מירוצים מ-1 עד 5)
בגמר המירוצים כל סוס מקבל מספר אישי: 'מקום' – 'מספר מירוץ'
למשל שלושה מנצחים במירוץ 4 יהיו: 4-1, 4-2, 4-3
מסקנת ביניים: עקרונית אותנו מעניינים 3 סוסים המנצחים בכל מירוץ – סה"כ 15 סוסים.
שלב 2: מכניסים למירוץ 6 את חמישה הסוסים המנצחים בכל מירוץ (סוסים 1-1, 2-1, 3-1, 4-1, 5-1)
המנצח במירוץ 6 הוא המהיר בין כל ה-25 – המקום הראשון המוחלט.
ועכשיו הסופר טריק – לבחור מי ישתתף במירוץ השביעי והאחרון שייקבע את מקום השני והשלישי.
שלב 3:
נניח המנצח הגדול (במירוץ 6) הוא במקור המנצח במירוץ 4 (4-1 == 6-1).
כלומר המנצח הגדול ניצח את סוסים: 1-1, 2-1, 3-1, 5-1
ברור לגמרי שסוס 2-1 מהיר יותר מסוס 2-2.
וסוס 2-2 מהיר יותר מסוס 2-3.
כלומר סוס 2-3 יכול לזכות לכל היותר במקום רביעי כי 4-1, 2-1 ו-2-2 בוודאות מהירים ממנו.
לכן 2-3 לא ממשיך תחרות.
באותו אופן יורדים מתחרות סוסים 1-3, 3-3, 5-3
סוס 4-3 עדיין לא יורד מתחרות ונחשב למועמד כי ייתכן וכל הסוסים הכי מהירים היו במירוץ 4.
עכשיו נתבונן בסוס 6-2 – סוס במקום השני במירוץ 6.
בזמנו סוס 6-2 היה המנצח במירוץ שלו. נניח זה סוס 5-1 (5-1 == 6-2)
סוס 5-1 הפסיד לסוס 4-1, אבל ניצח את 1-1, 2-1, 3-1
מה עכשיו ניתן להגיד למשל על סוס 3-2?
שישנם לפחות שלושה סוסים מהירים ממנו: 4-1, 5-1, 3-1
כלומר סוס 3-2 יורד מתחרות כמו גם סוסים 1-2, 2-2.
נניח סוס 6-3 == 3-1.
מכאן סוסים 1-1, 2-1 שהפסידו בגדול במירוץ 6 לא ישתתפו גם
נותרנו עם 5 מועמדים למירוץ 7 ואחרון: 5-1 (6-2), 3-1 (6-3), 5-2, 4-2, 4-3
שניים הראשונים במירוץ 7 יתמפו למקומות שני ושלישי בהתאם בתחרות הכללית.
Mellanox – סטודנט בצוות layout דיגיטאלי ב-backend
בראיון הראשון שאלו על הפרוייקט שעשיתי, על התוכנות שהשתמשתי (vistuoso).
ביקושו ממני לצייר סכמה של שער nand, טבלת אמת שלו ואז את ה-layout שלו.
ביקשו ממני להסביר מה השיקולים שעל פיהם ציירתי את הlayout, איך משפיע חיבור metal כזה או אחר (התשובה היא על ההשהייה מכיוון שככל שהמתח ארוך יותר ההתנגדות גדולה יותר וזה משפיע על ההשהייה של המוצא)
בנוסף שאלו שאלת הגיון:
נתונים שנים חוטים שכל אחד בוער דקה. איך ניתן למדוד 15 שניות.
הפתרון הוא שמדליקים חוט אחד משני הצדדים ואת החוט השני בצד אחד, כשהחוט הראשון נשרף עברה חצי דקה. כלומר החוט השני יכול לבעור עוד 30 שניות לכן נדליק גם את צידו השני והוא ישרף תוך 15 שניות.
בראיון השני שוב שאלו על layout של nand , ביקשו לצייר, להסביר את השיקולים של קביעת גדלי הטרנזיסטורים, שאלו על גודל של טרנזיסטור שקול של שני טרנזיסטורים בטור ובמקביל,
והרבה חפירות על ה-layout.
אחרי זה נתנו לי מעגל עם גשר דיודות כך שמשמאלו יש מקור מתח V1 שהוא 5 וולט, מימינו יש מקור מתח V2 שמשתנה בין 0 ל 5 וולט, למעלה יש מקור זרם I1 ולמטה מקור זרם I2 (הייתי מעלה שרטוט אבל אני לא יכול לצרף קובץ להודעה)
שאלו אותי מה יהיה הזרם על מקור המתח V2 (הימני) כתלות במתח של אותו מקור המתח V2.
Mellanox – DFT
1. שאלו על הפרויקט שעשיתי , צריך לדעת אותו טוב .
2. נתנו לי שאלה בתכנות לבנות פונקציה שמקבלת מספר ובודקת האם הוא פולינדרום(מימוש הפונקציה היה ב C אבל תכלס זה לא היה משנה לו באיזה שפה גם פסודו-קוד היה בסדר(שאלתי אותו) )
3. שאלת הגיון של מינימום מקסימום: ישנה קופסה שמקבלת 2 מספרים והפלט שלה הוא שני מספרים כאשר האחד הוא המקסימום והשני המינימום. ביקשו ממני לממש קופסה שמקבלת 4 מספרים וממיינת אותם(המימוש בעזרת הקופסא של שני המספרים), לאחר שפותרים את השאלה ביקשו לממש קופסא של 6 מספרים.
Mellanox – חידות הגיון
1. בטורניר משתתפות 100 קבוצות. קבוצה שמפסידה יוצאת והמנצחת משחקת מול השניה. כמה טורנירים יהיו?
2. חיבור נקודות: 5 קבוצות של 3 נקודות, יש לחבר בין הקווים כך שלא יחתכו זה את זה.
3. ריבוע המורכב מ – 9 נקודות (3 למעלה, 3 באמצע ו -3 למטה) – יש לחבר ביניהם בקו אחד.
Mellanox – מפתח Back End
1. יש לצייר layout של טרניסטור.
2. מעבר בין תצוגת רוטון לפולי – למה שקול מקור המתח המחבר אותם?
3. מעגל המחובר לארבעה נגדים בצורת מעוין. מה הnתח בין שתי נקודות?
4. להסביר איך נראית דיודה אידאלית (ציור IV).
5. מכונת מצבים – יש להסביר מה היא עושה.
Microsoft - מיקרוסופט
מיקרוסופט – כללי 2
1. פונקציה וירטואלית ואבסטרקטית, עם מחלקת אב ומחלקה יורשת.
2. אלגוריתמים
3. מבני נתונים.
מיקרוסופט – כללי 1
1. להוריד אותיות כפולות ממחרוזת: להפוך ABBC ל ABC
2. לשנות את מחלקת String Builder בכך שתאפשר ToString() ב 0 של 1
3. אלגוריתמם למרחקים קצרים (נו באמת, מי זוכר)
4. סידרת פיבונאצי, ולעשות לזה אופטימיזציה
הקוד עבור הסרת תווים כפולים ממחרוזת בO(N):
void delRep(string &s) {
int j=1, i=0;
while(s[i] != '\0' && s[j] != '\0') {
while(s[j]==s[i]) {
j++;
}
s[i+1] = s[j];
i++;
j++;
}
s[i+1]='\0';
}
מיקרוסופט – ראיון לקבוצת ה TELECOM
שלוש שאלות:
1. לממש STRLEN ואח"כ להציע רעיון להצגת מחרוזת באופן שונה כך שנוכל לדעת את האורך ב(1)O.(כאשר הCHAR הראשון יכיל את האורך).
2.השאלה המפורסמת עם המילון בפלאפון ואיך זה עובד\ מבנה נתונים מתאים(עץ)
3.לממש MALLOC וFREE כאשר ההבדל זה שכל הקצאה\שחרור יהיו באורך 10 בתים.(לחלק את מרחב הזיכרון לכתובות בקפיצות של 10 ולהכניס למחסנית משותפת).
Optimal
ראיון באופטימל עם מחשב מהבית
בהתחלה זה כמה שאלות של מבני נתונים
1.לחקות מבנה של הצעת שמות בטלפון (כמו הטלפונים הישנים) כלומר 323 יציע DAD..
2. נותנים לך תוכנה כתובה ואתה צריך לשנות אותה באופן הכי טוב שאתה יכול.. OOP ,PATERNS, וכו'
לגבי ריאיון ראשון שיש באמצעות מבחן מחשב מהבית:
22 שאלות אמריקאיות, יש 30 דקות. שאלות קלות אבל חלקן מתייחס למשהו מאד נקודתי אז או שאתה יודע
או שלא או שאתה מנחש
גם שאלות מחשבה וגם ידע. c#, xml, OO
מיהרתי לסיים אותו, אבל בדיעבד הייתי צריך צריך למדוד זמן ולבדוק דברים שלא הייתי בטוח לגביהם און ליין (:
אני ממש לא בעד חברות שמתחילות עם מבחן מבלי לדבר איתך, כנראה כתוצאה מטראומת צ'קפויינט. זה היה ריאיון ראשון שלי אי פעם והצלחתי להעביר בסביבות ה-1000 מקרי בדיקה ורק אחד לא עבר ובגלל זה לא העבירו אותי.
Philips - פיליפס
Philips – כללי 2
1)נתון אוסף של n מקטעים [a_i,b_i] צריך למצוא מקטע בה יש מקסימום חיתוכים של מקטעים נתונים ולהחזיר את המספר הזה .למשל [0,5],[0,1],[2,4],[3,5] אז מקטע בה יש הכי הרבה חיתוכים היא [3,4] שם יש 3 ,ז.א. פונק' תחזיר 3.
2)לעשות design של חיפוש מילה במערכת קבצים.
3)מה זה abstract class vs. interface
4)לעשות design של מערכת לפתרון puzzle
5)איך לכתוב קוד שיגיד האת מערכת big-endian או little-endian?
6)בהינתן מערך לא ממוין של מספרים שלמים ומספר sum יש למצוא בסיבוכיות מינימלית כל הזוגות מספרים במערך שסכומם שווה לsum
7)איך להפוך רשימה מקושרת?
8)איך בהכי מעט זכרון לעשות mask לסדרה של voxels?
9)הבדל בין תהליך וחוט?
Philips – כללי 1
Philips – סטודנט Software
הראיון הראשון הוא פחות משעה, שואלים שתסביר קצת על עצמך ועל מה שעשית ושאלת חידה אחת שצריך לממש:
נתונות 2 רשימות מקושרות וידוע שבשלב כלשהו הן מתחברות לרשימה אחת. המשימה היא למצא את הנקודה של החיבור.
פתרון:
צריך לשים לב שלעבור צומת-צומת במקביל על 2 הרשימות ולבדוק אם הן מצביעות לאותו מקום יעבוד רק אם שתי הרשימות באותו אורך.
אז מה שאפשר לעשות זה לחשב את האורכים של שתי הרשימות אם הן באותו אורך- סיימנו. ואחרת לצמצם את ההתחלה של הארוכה יותר עד האורך של הקצרה ואז לעשות כמו קודם.
וקצת שאלות כלליות על OOP.
ראיון שני:
אין שאלות שצריך לממש רק שאלות על תכנון של מערכות בOO, בודקים בעיקר איך אתה חושב
Rafael - רפאל
Rafael – מחלקת צב"דים
1. יש לך רכיב min_max שמקבל שתי כניסות ומחזיר ברגל אחת את המקס ובשניה את המינ'. אתה צריך לבנות רכיב שמורכב רק מרכיבי min_max שמקבל ארבע כניסות ומחזיר אותן ממוינות לפי הסדר.
2. ביקשו ממני לבנות בדיקה שתוכל לקבוע בוודאות אילו מתוך הרכיבים בתוך הקופסא השחורה (ישנם 5 min_max) תקולים ע"י שינוי כניסות ובדיקת מוצאים.
3. שאלו על מספר צירופים אפשריים של המערכת.
4. אח"כ ביקשו לממש את כל זה בשפת C, כלומר לכתוב פונקציית ,min_max חשוב היה מה היא מקבלת ומחזירה כי פונקציה לא יכולה להחזיר שני ערכים, אז אמרתי שאני אקבל מערך שני שני ערכים ואשנה את הסדר של הערכים כך שהראשון יהיה הגדול והשני הקטן.
Sandisk - סנדיסק
Sandisk – וריפיקציה
נתון רכיב בעל 2 כניסות: טמפרטורת הסביבה ו טמפרטורת סף שנקבעת על ידי המשתמש
ו 2 יציאות: אם
Tin>Tsaf —-> output :H=0,L=1;
Tin<Tsaf—–> output :H=1,L=0;
Tin=Tsaf —-> output :H=0,L=0;
יש לכתוב פונקציה ב C, בעלת 4 משתנים:Tin,Tsaf,H,L, (כתיבה ל Tin, Tsaf- כותבת לרכיב, קריאה מ H,L- קוראת מהרכיב.) הפונקציה צריכה לבדוק כמה שיותר אפשרויות ולהחזיר אמת או שקר לגבי נכונות הרכיב.
Sandisk – QA + פיתוח כלי בדיקה
חלק א :
you have following routines:
1.bool SingleWrite(start sector,sector count,pattern)- write a single sector
2.bool SingleRead(start sector,sector count)- read a single sector
3.bool MultipleWrite(start sector,sector count,pattern)- write a miltiple sectors
4.bool MultipleRead(start sector,sector count)- read a miltiple sectors
*each of the above routines true or false result
*sector size is 512 bytes
*memory device starts from sector 0, the last sector is equal to max device capacity in sectors
*sector count – quantity of write/read sectors
pattern-written data
Questions:
write a pseudo-code that performs the following operations on 8GB memory device:
1.write the entire media using SingleWrite with pattern OA.
2.write the entire media with SingleRead
3.write the entire media using MultipleWrite with chunk size of 64 sectors , pattern FF.
4.write the entire media with MultipleRead with chunk size of 64 sectors
חלק ב:
יש לך כרטיס זכרון, צריך לנסות לשבור את אבטחה של הכרטיס כאשר מחיקה/שמירה/קריאה של הכרטיס protected
פתרון מוצע:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PrepForSandisk1
{
class Program
{
static void Main(string[] args)
{
int[] myArray = { 7, 2, 5, 10, 3 };
int[] sortedArray = ArraySorter<int>(myArray);
string a = "abc_y_x";
string b = "bac_x_y";
Console.WriteLine(SameChars(a, b));
}
// 1. Write a method which receive an array and sort it in descending order.
static T[] ArraySorter<T>(T[] arrayToSort)
{
return arrayToSort.OrderByDescending(c => c).ToArray<T>();
}
// 2. How syntax of class which inherits from another class look like?
class A { };
class B : A { };
// 3. How you tell a program to wait for 1 second?
static void TellProgramToSleep(int seconds)
{
System.Threading.Thread.Sleep(seconds);
}
// 4. Is it possible to implement “Bungie sort” algorithm in order of n*log(n)?
// Never heard of bungie sort
// 5. Is it possible to create a WCF service and WCF data service in one model (Yes, No, Maybe)?
// 6. When do you use Thread.Keep?
// Never, such function does not exist
// 7. Have you read “C# fundamentals” by..?
// No, read several others
// 8. Do basicHttpBinding supports HTTPS (Yes, No, Maybe)?
// Yes
// 9. Can System.Array contain multiple data types, if so, write the code?
// Yes, 9.1 Array of objects
// 9.2 Array of Interfaces where each cell contains a different instance of the object
// 9.3 Array of parent classes where each cell may contain a different instance of that object
// 10. What is WPF trigger and what types of trigger exist?
// List of setters that are executed based on provided conditions (http://wpftutorial.net/Triggers.html)
// 11. What is the difference between managed and unmanaged code?
// Unmanaged is compiled to native machine code (CPU instructions) and is run by the CPU
// Managed code passes through two step compilation process before it becomes machine code
// it is compiled into IL and then by the JIT to machine instruction – so its also compiled into machine code.
// Before running this machine code the CPU loads the CLR code which provides a set of libraries for the application to use
// 12. What is the difference between Stuct and Class?
// struct is a value type, class is not – this means that….
// 13. How can you call unmanaged code from c#?
// example: [DllImport("kernel32.dll")]
// static extern int GetDriveType(string lpRootPathName);
// 14. Are you familiar with DevExpress?
// yes
// 15. Write a program which restarts the system
// 15.1 use console: System.Diagnostics.Process.Start("ShutDown", "-r"); //restart
// 16. Describe a three tier model.
// talk about MVC
// 17. What is the difference between int and long data types?
// int 32 bit, long 64
// 18. How you deny inheritance from a class?
// use the "sealed" accessor
// 19. What keyword you’ll use to query unique entries from SQL? (UNIQUE, DISTINCT, TOP, NONE OF THE ABOVE)
// DISTINCT
// 20. What is/are the protocol/s that WCF service will response with, when using webHttpBining (json, binary, xml, all of them)
// all of them
// 21. What Debug.Assert() do?
// If a condition is fulfilled, popup a messagebox that allows you to stop debugging
// Technical Interview Questions
// Logic question:
//Class Dict
//- Bool Insert(string x)
//- Bool Check(string y)
// For ex. we insert strings: “abc_x_y”, “y_x_bac” which considered equal strings
// How you’ll implement the Check method? (Found a solution using .Net Dictionary but asked to find other solution or implement the Dictionary itself)
// Answer:
static private bool SameChars(String firstStr, String secondStr)
{
char[] first = firstStr.ToArray();
char[] second = secondStr.ToArray();
Array.Sort(first);
Array.Sort(second);
bool res = first.Equals(second);
bool equals = first.SequenceEqual(second);
return res;
}
// Write a program that invokes a process, like notepad.exe opening text file.
static private void InvokeNotePad()
{
Process notePad = new Process();
notePad.StartInfo.FileName = "notepad.exe";
notePad.StartInfo.Arguments = "ProcessStart.cs";
notePad.Start();
}
// How to debug native code marshaled from .NET in VS?
//
// Have you developed multi-threaded applications?
// Yes
// Do know what Telerik is?
// Yes, company for .NET controls, like DevX
}
}
SAP - סאפ
JAVA/J2EE developer
ב-SAP (ליד צומת רעננה צפון) למבחן ב-JAVA/J2EE ראיון קצר עם ראש צוות ואז עבודה מול מחשב, בערך שעתיים, לפתח אפליקצית WEBB קטנה מאפס. יש גישה לאינטרנט צריך להתקין את כל הכלים (טומקאט, אקליפס היה רק התקנות על המחשב) אפשר להשתמש באיזה פלטפורמה שרוצים (ספרינג, סטראטס,JSP, לכתוב בעצמך…).
האפליקציה הייתה צריכה לנהל מאגר טלפונים, ללא שימוש ב-DB או JDBC (ז"א שמירה ב-SESSION).
צריכה לתמוך בהוספה, מחיקה, הצגה של הרשימה ומיון הרשימה (יש לכתוב קומפרטורים).
צריך להשתמש ב-SERVLETS עם REQUEST DISPATCHER וזה מספיק ת'כלס.
ראיון ב SAP למשרת פיתוח
המבחן ארך כ 3 שעות.
הוא לא היה קשה במיוחד אם כי לא באתי מוכן אליו.
החלק הראשון כלל כמה הגדרות של מושגים בתכנות מונחה עצמים:
פולימורפיזים, הורשה, "שיטת בניה" ועוד… אני לא זוכר… היו 4 מושגים. זה לא היה קשה במיוחד.
לאחר מכן היה סיפור כלשהו על מחסנים ו containers כאשר במחסן יכול יותר מ container אחד ולכל אחד מספר זיהוי משלו.
אני ממש לא זוכר את פרטי הסיפור, אבל נדרשים לתכנן טבלאות SQL ובנוסף לכתוב כמה שאילתות.
לאחר מכן ישנן כמה שאלות כלליות ב SQL, (אמריקאיות).
מאחר ו SQL לא היה הצד החזק שלי, טיפה התקשתי בשלב זה.
לאחר מכן היתה שאלה בתכנות מונחה עצמים (מותר לכתוב באיזו שפה שרוצים) משהו עם יינות וקבלות/דו"חות אני לא ממש, זוכר. זה לא היה קשה.
לבסוף, היתה שאלה של לכתוב אלגוריתם שאמור להחזיר האם ביטוי רגולרי כלשהו הוא חוקי או לא, למשל
2+1*(x-2) ==> חוקי לצורך העניין לעומת,
(+((1)+2 ==> לא חוקי.
שאלה דיי פשוטה, לטעמי.
Software developer – Student
ראיון ב-SAP ברעננה לתפקיד: Software developer (Student) – End User Experience Job .
היה אמור להיות ראיון של חצי שעה ולאחריו מבחנים של שלוש וחצי שעות.
בפועל, לא היה ראיון כי הבחור שמראיין לא היה במשרד באותו יום, ולכן עשיתי רק מבחנים. המבחן היה ממוחשב ולא היה 3 וחצי שעות בסוף- אלא שעתיים. מותר היה להשתמש בגוגל, לקמפל ולהריץ כמה שפעמים שאתה רוצה, ולהשתמש באיזה ספריות שבא לך.במבחן עצמו- היית צריך לממש סודוקו. נתנו לך מעין שלד למימוש שמכיל את ה-class-ים הבאים ב-java בצד השרת:
Game, Cell, Board (ואולי שכחתי עוד אחד).
ואת הקבצים הבאים בצד הלקוח:
game.js, cell.js, board.js + קובץ אחד של CSS ועוד קובץ של html שאת שמם אני לא זוכר.סביבת העבודה הייתה אקליפס. בעיקרון, במצב ההתחלתי כשאתה מריץ את התוכנית שלהם- אתה כן רואה לוח וכן רואה מספרים, אבל למשל אין בדיקת חוקיות ואין בדיקה אם ניצחת וכל מיני דברים בסגנון- אלה דברים שאתה צריך לממש. אתה צריך להספיק לממש כמה שיותר במגבלות הזמן שנותנים לך.
חברת SAP לתפקיד מפתח בשפת GO
להלן שאלות מתרגיל על מחשב מחברת SAP לתפקיד מפתח ענן ( Cloud Foundry ) על שפת GO.
ראיון נערך במרץ 2020
- עליך ללמוד את שפת GO דרך Go Lang tutorial לבד בבית ובזמנך הפנוי
https://tour.golang.org/welcome/1
(דורש בערך 3-6 שעות אם עושים את כל התרגילים )
- ללמוד מעט על Code Foundry באתר שלהם רק כדי להבין בכללי את הקונספט וכמה פקודות בסיסיות מה CLI שלהם
- זה התרגיל על המחשב שעושים בחברה עצמה :https://github.com/sapmulticloud/candidate-examבהצלחה
Sapiens - סאפיאנס
Sapiens – כללי 2
המבחן מחולק לשלושה חלקים:
חלק א': מבחן ERD הנושא הוא מוכר פלאפל, שמוכר כל מנת פלאפל ב 15 ש"ח, המורכבת מכמויות שונות של מזון כמו עגבניה 30 ג' מלפפון 40 ג' ועוד…
בנוסף יש לו הוצאות – עובדים, מים, חשמל ארנונה ועוד.
צריך לצייר תרשים ERD המתאר את כל הטבלאות הנצרכות כדי לקבל לבסוף איזון בין ההוצאות להכנסות.
יש להתייחס לשינויים כמו הוספת מנה לתפריט, עובד חדש, עליית מחיר הירקות.
חלק ב': מבחן ב sql הפותח בשאלות אמריקאיות, ממש פשוטות, מי שמצליח לענות נכונה על השאלות האמריקאיות באתר זה : http://webmaster.org.il/quizz/sql יקבל את כל הנקודות בחלק זה.
החלק השני קצת יותר מורכב בו אתה מקבל את הטבלאות ותוצאה של שאילתה, ועליך לכתוב את השאילתה שנותנת את התוצאה הזאת, יש ללמוד היטב קשרים בין טבלאות, גם בזמן שאין קשר בין שני הטבלאות.
חלק ג': ראיון.
Sapiens – כללי 1
בראיון הראשון, יש מבחן אמריקאי מאוד קליל על java וsql, דברים בסיסיים.
שאלות לדוגמא:
1. יוצרים שני סטרינגים ב-MAIN ומעבירים אותם לפונקציה שמחליפה ביניהם. לאחר מכן, ה-MAIN מדפיסה את הראשון ואת השני. הם שואלים מה יודפס?
2. יוצרים class אב וclass בן כאשר ה-main נמצא באב והוא יוצר אובייקט מסוג בן וקורא לפונקציה שנמצאת גם באב וגם בבן. באב הוא מדפיס סטרינג מסוים, בבן הוא קורא ל-super ואח"כ מדפיס סטרינג משלו. הם שואלים מה יודפס?
3. יוצרים אוסף (collection) עם מערך של int. מריצים הדפסה על אובייקט האוסף (ולא על המערך שבאוסף) באמצעות לולאת for ושואלים מה יודפס?
4. יוצרים hash set מוסיפים לו איברים. רצים על האיברים בו באמצעות לולאת for ושואלים מה יודפס? (ממה שאני יודע אין סדר לאיברים ב-hash set אז האיברים לא יודפסו לפי סדר הוספתם)
5. מה יותר טוב iterator או ListIterator כאשר אחת התשובות היתה שאין כזה דבר ListIterator ואני חושב שהיא הנכונה.
6. איך עדיף לממש thread? להרחיב את ה-class של thread או לממש את ה-interface של runnable?
7. במידה ויצרתם keys משלכם עבור hashmap. איזה פונקציה תצטרכו לממש? (תשובות אפשריות: clone(), hash() ועוד שתי תשובות)
8. איזו מילה ב-sql מאפשרת לבצע חיבור בין נתונים מבוקשים מ-2 או יותר טבלאות? (התשובות האפשריות: join, full join, union ועוד כמה לא קשורים)
9+10. שתי שאלות שאילתות די פשוטות. תחזרו על having ו-group by ו-distinct.
11. מה זה stored procedures ומה זה trigger?
אחרי זה יש ראיון קצר שבו אתה מסביר בעיקר על הפרוייקטים שלך ודברים שלא הצלחת במבחן.
ראיון שני הוא כבר קצת יותר קשה, אתה מקבל מערכת שאמורה לעשות משהו, כמו למשל הזמנות כרטיסים לחו"ל, ולבנות לזה database ולאחר מכן לעשות את הארכיטקטורה של זה ב java.
STMS - SofTov - סופטוב
STMS – כללי 2
מבחן ראשון על נייר,אחרי זה ראיון עם ראש צוות וHR
3 עקרונות של OOP
לכתוב מחלקת בן למחלקה אבסטרקתית שנתונה,יש רק פונקציה וירטואלית טהורה אחת שצריך לממש במחלקת בן.
שאלת SQL עם שתי טבלאות ומה תוצאה לאחר LEFT JOIN,RIGHT JOIN,INNER JOIN
נתון קוד של דיזיין פאטרן-צריך לגלות מהו(סינגלטון),שואלים אם יש בעיה עם ריצה של כמה שרדים עליו וצריך לפתור אותה.
נתון קוד של מחלקת אב ובן ושואלים איך בן מרחיב את אב ויש שם שגיאות שצריך למצוא,
יש RETURN לפני שורת קוד שצריך לבצע.
אין איתחול של פויינטר.
יש בעיית I++ במקום ++I במחסנית ואותו דבר עם –I
STMS – כללי 1
1. לרשום 3 עקרונות של OOP
2. מה זה COPY CONSTRACTOR
3. מה זה INLINE FUNCTION ומה ההבדל בינו לבין MACRO
4. מה זה virtual distractor
5. מה זה memory leak ותן דוגמא
6. לכתוב תוכנית אשר ממירה מספר בינארי למספר דצימלי
7. נתונים פרמטרים עבור 2 CLASSים (classאבא – 2 משתני private: m_number,m_ name, 3 פונקציות וירטואליות set(int num), set(int num, string name), getnum(){return m_number;} ופונקציה וירטואלית טהורה אחת clear() אשר מאפסת את m_number, m_name . classבן- משתנה private אחד, פונקציה setאחת אשר דורסת את אחת הפונקציות set הוירטואליות של האבא שהמימוש שלה צריך להיות m_number = m_number+1; , שזה בעצם שימוש במשתנה private שמוגדר בclass האבא (צריך למצוא לזה פיתרון). לכל הנתונים הנ"ל צריך לכתוב תוכנית שאחד יורש את השני.
8. נתונות 2 טבלאות, צריך לעשות להן INNER JOIN, LEFT JOIN, RIGHT JOIN
9. נתון קוד אשר צריך לזהות באיזה דיזיין פאטרן משתמשים שם (סינגלטון), ושואלים מה צריך להוסיף לקוד על מנת שהוא יוכל לעבוד גם בmulti-threading
10. נתון קוד אשר משתמש בTEMPLATES– ובהורשה. צריך לזהות שגיאות:
a. יש 2 פונקציות שלא כתוב בהם את שם הפרמטר שהן מקבלות, למשל – int Set (T& )
b. יש בעיה עם ++ ועם — , למשל זה כתוב בקוד כך: num[++ptr]
c. אין איתחול של פוינטר
d. יש בפונקציה האחרונה שורת return לפני שורה שצריך לבצע.
e. שואלים על הקוד הזה איך ובמה הבן מרחיב את האב.
f. ומה הייתם עושים על מנת שהקוד לא יחזור על עצמו (ישנה פוקציה בבן שדורסת פונקציה באבא ושממומשת כמו הפונקציה באבא רק עם תוספת של שורה אחת- איך הייתם מונעים את זה)
Trusteer - טרסטיר
Trusteer – כללי 1
המבחן/ראיון ראשון בTrusteer והמבחן/ראיון שני בPAYPAL הם על אותו העיקרון.
נותנים רשימה של התחברויות/סשנים/תשלומים שנעשו ויש להניח איזה מהרשומות היא הונאה.
על מנת להבין את הנתונים ולענות על השאלות יש להבין בנושאים הבאים:
-איזה מידע אתה מספק לPAYPAL או לבנק כשאתה נרשם
-איזה מידע אתה מספק כשאתה מתחבר (באופן פסיבי או אקטיבי)
-מה הIP אומר עלייך ואיך ניתן לזייף אותו
-מה כתובת המייל שבחרת לך (או שקבלת) יכולה לספר עלייך
-המפרט של המחשב ממנו התחברת (שפה,מערכת הפעלה וכו) מה ניתן לשנות בקלות ומה לא
ובאופן כללי לקרוא כול מה שאפשר על סוגי הונאות ואופן הביצוע שלהם (גנבת זהות/גנבת סיסמה/פישינג).
Trusteer – Malware Analyst
ראיון א'
פגישה ה-CTO עמית קליין ועם ראש צוות ה- Malware
הראיון היה אישי בלבד וללא היבטים מקצועיים כלל, עברנו באופן יסודי על קורות החיים שלי ונשאלתי שאלות מתוכן על מנת להכיר אותי בתור אדם. הראיון היה באווירה חברותית ונעימה, דגש מיוחד בהסברים שלהם היה בעובדה שהמשרה אינה משרת פיתוח כלל.
בתום הראיון אמרו לי שעברתי לשלב הבא, ראיון כוח אדם.
ראיון ב'
ראיון כוח אדם עם מישהי בשם ריבי, גם במקרה זה הראיון היינו אישי, בראיון נשאלתי לגבי צפיות השכר שלי, חבר נוסף שלי היה בתהליך איתם ולו נתנו מבחן אמינות. להלן חלק משאלות מבחן האמינות שמתקיים מול מחשב :
הגעתי לשמה ויש מבחן של 20 דקות ששאולים אותך,
כמה אחוז מהחברים שלך מעשנים סמים?
כמה סמים כבדים?
האם אתה שותה ?
האם אתה בחובות ?
האם אי פעם גנבת מהמעסיק?
האם אתה חושב שאם המעסיק מתנהג לא יפה זה מותר לגנוב?
האם אי פעם תוכנה שלא ברשיון ?
סיפורים
מישהו היה לוקח מהקופה כסף אחרי הסגירה והיה תמיד מחזיר אחרי הפתיחה, במשך 20 שנה, פתאום הוא נתפס. האם אתה מסכים שצריך לפטר אותו?
האם לא היית לוקח בן אדם שהיה בכלא למקום עבודה ?
חלק מהשאלות חוזרות במדויק, חלק בערך, 4 שניות לשאלה.
אם היית יכול לגנוב בלי להתפס, מה היית עושה ?
אם היית גונב ואף אחד לא היה נפגע, האם היית עושה את זה?
האם אי פעם הצעת למישהו סכום כספי שיתן לך שירות יותר טוב, או מתנה ?
אם אנשים היו יודעים שהם לא נתפסים בפשע, האם היו מבצעים אותו יותר?
האם חוסר הענישה מגבירה את הפשיעה?
ספר לי עצמך
מאיזה תחום אתה מגיע?
מה אתה אוהב?
מה אתה פחות אוהב?
מה אתה רוצה?
מה אתה מחפש?
איפה עבדת?
למה עזבת את המקום? לעבור למרכז / לא לעבור למרכז?
40 דקות כל הסיפור
הייתה שאלה, האם אי פעם אחרת לראיון עבודה?
כאמור חלק זה לא היה לי באופן אישי וכתוב על סמך עדות של חבר.
חלק ג'
לפני ההגעה שלחו לי רשימת נושאים ללמידה אישית, מצורף בקובץ.
הראיון כלל בעיה מחיי היום יום בלבד והיא כדלקמן :
" הגעת ליום עבודה בטרסיר והגיע אליך לקוח שמספר לך שמשהו באתר של הבנק שלו, Bank Of America נראה לו חשוד היום ועזב את המקום, ברשותף מחשב נייד אישי שלך וכן מחשב שולחני של הלקוח. עליך להסביר את הפעולות שאתה עושה על מנת להבין את מקור הבעיה ובמידת האפשר להציע דרך פתרון. אתה אמור להציע את הפתרונות מתוך סט הנושאים שקיבלת ללמוד."
Verint - ורינט
Verint – QA
מבחן קצר שבא לבדוק את הידע שלך במתודולוגיות בדיקות ואת הראיה המערכתית לזיהוי וכתיבת באגים .
המערכת שהם מתארים שם היא כזאת :
יש לך מידע שנשלח שהוא או מסוג SMS או מסוג EMAIL המערכת יודעת לאבחן בין 2 המקרים ולפיכך לשלוח אותם לטבלה הנכונה להלן ה DataBase Server .
סדר הפעולות שהמידע מועבר הוא :
1.Raw Data
2.Filtering Server – Email\SMS
3.Decrypt Server
4.DataBase Server
5.Client SQL Query Screen .
הלקוח יכול לשלוף מידע ע"י שאילתות משרת ה Database עי שעה ותאריך.
1.עליך לבנות מסמך בדיקות
2.עליך להבין כמובן את המערכת ולתאר אותה לבוחן …
זהו +-
3.יש עוד כמה שאלות שטויות על מה קורה אם …
Verint – פיתוח
שאלה ראשונה:
סעיף 1 ,בהינתן מספר unsinged int צריך למצוא את מספר הביטים הדלוקים , נגיד אם אתה מקבל את המספר 2 אתה מחזיר 1 , אם אתה מקבל 3 אתה מחזיר 2 , וכו׳ אין הגבלה על זמן ריצה , מותר להשתמש לכל היותר ב 4 משתנים .
סעיף ב , צריך למצוא את אותו הדבר רק עכשיו זמן ריצה ב o(1) ואין מגבלה על מקום בזיכרון .
סעיף ג , בכמה זכרון השתמשת בסעיף קודם ?
תנסה להקטין אותו ל O(M/c) כך ש M סה״כ מקום בסעיף קודם ו c זה מספר קבוע . וכמובן זמן ריצה נשאר o(1)
שאלה 2 :
תממש את הפונקציות enqueue ,dequeue של טור בעזרת מחסנית (יש מבחנים שמבקשים 2 מחסניות) ולא מבנה נתונים אחר .
שאלה 3 : תממש מבנה נתונים שמחזיק מספר בצורת FIFO ותממש את הפונקציות void init ( int capacity) שמאתחלת את מבני הנתונים , את set(int i) מכניסה למבנה שלך , ו get() מחזירה מספר , אם הגעת לסוף מחזירים -1 , ו size() מחזירה את גודל המבנה .
סעיף ב , הקוד של הסעיף הקודם מריצים אותו יותר מ ת׳ריד אחד , תדאג שהקוד שלך מסונכרן
Verint – מפתח ב-#C
מבחן בכתב (שעה וחצי), 5 שאלות.
1. נותנים לך ארגומנט הבנוי מסוגריים מהסוגים הבאים: (){}[]. צריך לזהות מתי ארגומנט לא חוקי. דוגמה לארגומנט חוקי: ( [ ]{ } ). דוגמה לארגומנט לא חוקי: ({)}
2. נתונה רשימה מקושרת. N חוליות. לכל חוליה יש ערך שלם (int) ואת ה-next שלה ברשימה. צריך להוריד את חוליה X (לדוגמה) מהרשימה. יש לך את הפוינטר ל-head, ל-end ול-X. אסור שזמן הריצה יהיה O(n)
3. קיימת מטריצה בגודל nXm יש לתת אלגוריתם שעבור כל ערך 0 בתא מסוים (לדוגמה: תא [i,j]) כל הערכים באותה שורה (i) ועמודה (j) יאופסו גם הם. זמן ריצה O(n*m)
4. הם מתארים תוכנה ומבקשים לצייר דיאגרמת קלאסים שלה
5. שאלת קוד ב-#C. צריך לתקן טעויות.
את התשובות ניתן לכתוב בפסאודו-קוד. אין דרישה לכתיבה ב-#C
תשובות מוצעות:
שאלה 1:
קלאסית, משתמשים במחסנית.
אפשר לראות רעיון לפתרון כאן:
http://www.java2s.com/Code/Java/Collections-Data-Structure/BracketChecker.htm
שאלה 2:
שאלה נפוצה, הרעיון בה הוא להעתיק לאיבר הנוכחי את התוכן והלינק של האיבר הבא, ובעצם למחוק את האיבר הבא (שאת התוכן שלו העתקת לנוכחי X וכך התוכן אותו ביקש ממך למחוק נמחק). התשובה שכבר נכתבה בדיון נכונה, צריך רק להתייחס למקרה קצה בוא X וא האיבר האחרון (גם צויין בתגובה אחרת).
שאלה 3:
נראה לי הצלחתי לחשוב על פתרון:
קצת קשה להסביר במילים, אבל העקרון כזה – בונים שני מערכי עזר בגודל n ו-m, אחד מיועד לציר X ושני לציר Y.
פעם אחת סורק את המטריצה, שומרים באיזה קואורדינה בX ו-Y יש 0 (נניח 2 מערכים ושומרים באינדקס המתאים) זה יוצא mxn.
לאחר מכן רץ עוד פעם על המטריצה מההתחלה, ומשווה כל תא מול האינדקס המתאים במערכים, לבדוק אם יש 0. אם יש, משווה את התא ל-0.
Wix - וויקס
WIX kickstart – יום מיונים
יום מיונים:
עם אינטרנט פתוח ויכלת לעשות את התרגיל באיזה שפה שתרצה.
היה צריך לרשום קוד שמדמה X עיגול ואתה בעצם משחק נגד האנשים שאיתך ביום מיון.
אם לא קיים P כזה יש להחזיר -1שאלה שלישית: נתונים שני ישרים במישור (כל קו ע"י שתי 2 נקודות של התחלה וסוף הישר כלומר סה"כ הפונקציה מקבלת 4 נקודות במישור כל נקודה כידוע מיוצגת ע"י שני מספרים X Y ) צריך להחזיר האם הישרים נחתכים (בתוך התחום של הישרים כלומר בין הנקודות של הישרים)שאלה רביעית : כתוב הסבר שלם על על רשת ולינקים תכלס הבעיה פשוטה ממש נתון מערך של INT ויש להחזיר את הסכום .של שני המספרים הקטנים ביותר
: נקודה חשובה
:הם שמים דגש על קוד קריא ונכון יותר מפתרון הבעיה עצמה
יש מצב שלא תפתרו את כל השאלות אבל מה שפתרתם יהיה קוד יפה
ותמשיכו הלאה, אבל אם פתרתם הכל טוב אבל בצורה מגעילה לא תמשיכו
Wix – פיתוח
ראיון ראשון בוויקס:
שני סוגים של שאלות:
שאלות לוגיקה – כגון – תאר איך למיין רשימה מקושרת או דברים כאלה)
שאלות buzz words כמו אם אני מכיר מה זה פרוטוקול REST או NoSQL נראה שהם מעויינים להתפתח בכיוונים האלה (הם אמרו לי שיש להם משהו כמו 50 מליון טרנזקציות מול המסד נתונים שלהם והם כמראה שוקלים לעבור ל NoSql)
ראיון שני בוויקס:
הראיון השני בוויקס היה לפתח קוד במקום (נתנו לי מחשב נייד שלהם עם IDE ןעם גישה לאינטרנט)
הבעיה – נתון עץ btree כלומר לכל איבר בעץ יש 0-2 בנים לצד ימין וצד שמאל
לכל איבר יש משתנה class member אחד מטיפוס String
וכמובן יש לו הצבעות לאיבר ימין ושמאל
צריך לעשות סריאליזציה ודה-סריאליזציה לעץ
התשובה היא שצריך לכל איבר לכתוב את הרמה שלו בעץ (נגיד שהשורש הוא 0 אז הבנים שלו יהיו רמה 1 וכן הלאה)
בנוסף צריך לכתוב אם הוא ימין או שמאל
המחרוזת בסוף תיראה כך
1#R#value;
התו ; משמש מפריד בין איברים
התו # משמש מפריד בין מאפיינים של איבר
צריך לרשום גם בנים שלא קיימים ז"א לכל עלה בעץ יהיו שני בנים NULL
בנוסף הם הוסיפו בעיה של הצבעה סיבובית כלומר איבר הוא בן של אחד מהצאצאים שלו (לא בהכרח בן) כדי לפתור את זה צריך
1) כל איבר מקבל "זיהוי" משלו שנרשם יחד איתו (למשל מספר רץ)
1) לנהל רשימה של כל האיברים שעברו סריאליזציה
2) בכל פעם שמוסיפים איבר קודם כל בודקים מול הרשימה ואם הוא קיים אז כותבים את "זיהוי" שלו במקום הvalue
ואת כל זה הם מצפים שיקודדו להם בשעה או פחות.
Yopto
Yopto – QA Engineer
ראיון ראשון: שאלת הגיון, שאלות SQL משלבות group, count distinct, שאלת בדיקות איך היית בודק מוצר X נגיד דלת.
ראיון שני: 2 שאלות הגיון.
זה מה שהיה לי לפחות. מקום סטארטאפי, אם כי לא הכי התחברתי לאווירה, קצת אנמי קטן ורגוע בשבילי.
שאלת הגיון: יש 25 סוסים. הסוסים רצים במסלול (שאלתי האם זה מסלול מעגלי, והמראיין ענה שכן) ואתה צריך לבדוק מי 3 הסוסים הכי מהירים. לרשותך שעון זמן אבל ללא זיכרון, כלומר אתה יכול לדעת מי חצה את קו הסיום ראשון שני שלישי וכו' אבל לא לשמור את המידע, אחרי כמה שאלות לבוחן כמו האם הסוסים מתעייפים אז התשובה שלו הייתה שלא.
בעיקרון הפתרון הוא להריץ כל פעם 5 סוסים, לבדוק מי ה-3 הכי מהירים בכל מחזור, להשאיר אותם רצים במסלול (מעגלי הרי) ואז להריץ עוד 2 סוסים, להשוות, ככה שמסיימים את כל ה-25 סוסים. בצורה כזו אתה יכול לבדוק מי ה-3 סוסים הכי מהירים מתוך ה-25.
Zerto
שחזור ראיון מלא בזרטו
רשמתי את כל מה שזכרתי מייד לאחר הראיון ואני מביא אותו כאן:
במבחן נאמר לך כי החברה שלך מפתחת מערכת לניהול סקרים שונים. המערכת מקבלת קבוצה של סקרים PollResponses, מזהה איזה לקוח מילא כל סקר ושומרת אותם. המערכת יודעת גם להציג את התוצאות הסופיות של הסקרים שהתקבלו עד כה. לקוחות יכולים לבקש את תוצאות הסקרים על ידי שליחה של PollSummaryRequest לשרת.
בקשות מתקבלות על ידי שכבת התקשורת Communicator
שמכניס את כל הבקשות לתור. כל PollResponse שהיא תשובה על סקר עוברת authentication כדי לוודא ששולח הסקר מורשה ואז מוסיפה את תוצאות מילוי הסקר שלו לאחרות, אחרת היא מסומנת כמזוייפת ונשמרת בצד לצרכי לוג.
אפשר לבקש את תוצאות הסקרים מה- PollServer, יש שני סוגים של בקשות:
בקשה לרשימת בקשות שה-authentication שלהן נכשל.
בקשה לסיכום התוצאות לכל אחת מהשאלות – סיכום ואחוזים.
המטרה:
לקרוא את הקוד ולרשום איך בפועל מתנהגת האפליקציה
שלב שני:
לעשות קוד ריויו ולזהות בעיות בקוד. לתת לכל בעיה עדיפות ולהציע שיפורים.
שלב שלישי:
להציע שיפורים להתנהגות השרת ולממש אותם יחד עם unit tests.
מפתח C# מתחיל
הראיון די נחמד. הקוד כתוב ב C#, הוא לא מאוד מורכב טכנולוגית. נראה שעקרונות תכנות יותר מעניינים אותם מאשר לסבך את הראיון.
הראיון מתחלק לשלושה חלקים – צריך להבין את הקוד, למצוא בו באגים (ויש לא מעט) ואז לכתוב קצת קוד שמתקן חלק
מהבעיות.
לא התרשמתי שהקוד מתוחכם במיוחד, מי שכתב אותו כנראה לא מהמבריקים וגם המראיין לא עשה עליי רושם של איש טכני. כנראה שהוא פשוט עושה את המבחן הזה להמון אנשים ומכיר את התשובות אבל אם לוקחים אותו לנושאים אחרים הוא הולך לאיבוד.
מהמעט שאני זוכר היו שם בעיות של כמות הנכנסים לתור שגדולה מכמות השולפים מהתור ואולי בעיה של סנכרון טרדים. צריך להכיר producer consumer ברמה הבסיסית ביותר.
המראיין שלי התלהב משום מה דווקא משטויות. למשל, הוא מאוד מתלהב כשעושים refactoring לקוד, משנים קצת את המבנה ומוסיפים unit testing. מאוד מצא חן בעיניו שדיברתי על integration testing ועל איך הייתי משפר את הקוד ברמת הדיזיין כדי שיהיה קריא יותר.
עברתי את הראיון מזמן והעדפתי לעבוד במקום אחר עם מנהל קצת יותר חזק טכנית.
סה"כ הייתה לי תחושה טובה במקום, אווירה נעימה והאנשים נחמדים. ממליץ לאנשים חדשים או עם מעט ניסיון.
התפקיד הוא תפקיד מפתח צעיר למרות שהם טוענים אחרת. הראיון הוא פשוט ברמה הטכנית ורמת המראיינים היא ברצפה. הם מכירים כמה עקרונות מאוד בסיסיים בתיכנות ובתרגיל אולם כשהוצג בפניהם קונספט חדש של דוט נט 4.5 שני המראיינים (שניהם ראשי צוותים שם ) הסתכלו דקות ארוכות במסך ולא הבינו מה עשיתי. הרמה שם היא נמוכה ,זה שיש משרד מפואר לא אומר שהתפקיד הוא טוב. מחפשים ראש קטן שיקודד בסי שארפ ברמה בסיסית,לא חשוב להם דיזיין או יכולות חזקות.
אין מה לעשות חזרה על התרגיל או להתחכם ממילא המראיינים לא יבינו בעצמם מה עשית.
למי שבכל זאת מתעקש כדאי לעשות חזרה על אובייקט בשם BlockingCollection ועל יכולות ה Producer Consumer שלו
למרות שכאמור, המראיין בעצמו כלל לא היה מודע שאפשר לפתור ככה את התרגיל.
Zerto – משרת QA
ראיון למשרת QA – הם מציירים לך מערכת שמצד אחד יש 3 מחשבים, שלושתם מחוברים דרך SWITCH לSTORAGE אחד גדול שואלים מה היתרונות ומה החסרונות.
מציירים עוד מערכת המציגה גיבוי בשתי תצורות – כלומר במקביל לSTORAGE הפיזי בחברה ישנו עוד STORAGE בחברת גיבוי דרך האינטרנט.
אחת סינכרונית עם ACK ובאפר, ואחת א-סינכרונית ושואלים מה היתרונות ומה החסרונות של כל אחת.
מציירם את אחת המערכות מקודם (את הסינכרונית) -שואלים אותך מה הבעיות שיכולות להיות ואיך אתה יכול לאתר את הבעיות.
בשאלה האחרונה אומרים שיש בעיית אינטרנט, ואתה צריך עכשיו למצוא פיתרון זמני לגיבוי, אז תגיד שאתה צריך באפר באורך של מספר הכתובות. וכל פעם כאשר יהיה שינוי בSTORAGE הפיזי שלנו, נסמן את כתובתו בבאפר שלנו ע"י ביט '1', וככה כשהרשת תחזור נוכל לדעת מה צריך להעביר לענן.
תלמד איך בנוי STORAGE (חלוקה לבייטים, ולכל בייט יש כתובת) תדע שמספר הכתובות בSTORAGE הוא סופי ותציג להם את הפיתרון של הbit map.
ראיון אישי
דע את "האויב" – איך לראיין מועמדים – מתוך הדרכה בנושא ראיון מועמדים
מטרת ההדרכה
מטרת ההדרכה הינה להקנות למנהלות/ים מיומנויות בסיסיות בניהול ראיון עם מועמדים, על מנת לייעל את תהליך המיון והגיוס בחברה.
בסוף ההדרכה, המודרכים יוכלו:
• להתכונן לראיון
• לפתוח את הראיון וליצור תנאים מתאימים להמשכו
• לנהל חקירה מקצועית על מנת לאמוד את כישוריו ויכולותיו של המועמד
• לאמוד אספקטים באישיות המרואיין בעלי השלכה על אישיותו המקצועית
• לסיים ראיון
• לחוות דעה לגבי התאמתו או אי התאמתו של המועמד לתפקיד / לצוות/ לחברה.
• להיזהר מהטיות אשר עלולות להשפיע על שיקול הדעת וההחלטה
מתודולוגיה
ההדרכה מורכבת מחלק תיאורתי קצר על כל אחד משלבי הראיון, וסימולציות שבעקבותיהן יתקיים דיון על הדברים אשר נעשו נכון בסימולציה, והדברים אשר טעונים שיפור.
• התכוננות לראיון
• פתיחת הראיון – הסבר תיאורתי
סימולציה + דיון ומשוב
• חקירה מקצועית – הסבר תיאורתי
סימולציה + דיון ומשוב
• דיאגנוזה אישיותית – הסבר תיאורתי
סימולציה + דיון ומשוב
• סגירת הראיון – הסבר תיאורתי
סימולציה + דיון ומשוב
• הערכת התאמת המרואיין לתפקיד / לצוות / לחברה.
תוכן ההדרכה
הכנה לקראת הראיון:
לפני הראיון, יש לקרוא שוב את תיאור התפקיד, על מנת שלכל אורך הראיון יעמוד תיאור התפקיד בבסיס בחינת המועמד ועל מנת להימנע מהטיות.
יש להכין כלי כתיבה ולכתוב הערות לכל אורך הראיון! לא ניתן לזכור מהלך ראיון שלם, וכאשר באים לכתוב חוות דעת, צריך לחזור לקטעים מהראיון.
שלבי הראיון:
פתיחה
פתיחת הראיון – חימום, יצירת אווירה נוחה, הסרת מגננות מצד המרואיין
"מסגור" הראיון: הסבר על מה עומד לקרות במהלך הפגישה: ראיון, תיאור התפקיד, תיאור החברה, אפשרות לשאול שאלות על מנת שהמועמד ידע למה לצפות ושידע לשמור שאלות לסוף הפגישה.
"מסגור" תהליך המיון בחברה: ראיון מקצועי, ראיון משאבי אנוש, בדיקת ממליצים, ראיון מנכ"ל – על מנת שהמועמד יידע למה לצפות בתהליך המיון בחברה.
בירור פרטים:שאלת שאלות הבהרה כלליות על מנת לקבל תמונה ברורה של קורות החיים, ולהשלים פרטים חסרים / לברר פרטים שקיימת לגביהם חוסר וודאות.
חשוב מאוד לא לספק פרטים על התפקיד, על מנת שהמועמד לא יתאים את תשובותיו לתיאור התפקיד.
מוקשים: יש להיזהר מגלישה לשיחת רעים ולסיים את חלק הפתיחה תוך מספר דקות. יש להיזהר משבירת המסגרת אשר הוגדרה, לא לתת למרואיין להשתלט על הראיון ולפקס את המרואיין על דברים שהמראיין מעוניין לשמוע. יש לזכור כי רושם ראשוני עלול להטעות לעיתים.
חקירה מקצועית
הראיון המקצועי אמור לבדוק את הידע המקצועי והיכולות המקצועיות של העובד. לכן, יש לבחור נושא / פרוייקט שגם המראיין מגלה בו בקיאות וידע ולחקור אותו עד לרמת חוסר הידיעה של המרואיין.
לעולם אין להניח הנחות!! יש לשאול את השאלות אשר נראות טריביאליות ביותר. תפקיד של תועמלן בחברה אחת אינו דומה לתפקיד התועמלן בחברה אחרת.
מוקשים: מרואיין משתלט על השיחה / מטה אותה כרצונו, מחשבות המראיין משתלטות עליו והוא אינו מקשיב באופן פעיל, המראיין מתכונן לשאלה הבאה לפי שאלה מוכנה ואינו מקשיב לתשובות המרואיין, המראיין חושב כי הוא מכיר את החברה / התפקיד ואינו טורח לברר את הפרטים עם המרואיין לעומק.
דיאגנוזה אישיותית / התנהגותית
שאלות סגורות – מהן? מתי להשתמש בהן?
שאלות פתוחות – מהן? מתי להשתמש בהן? כאשר שואלים שאלות פתוחות, יש להקשיב היטב למרואיין, ולדלות מתוך דבריו את השאלה הבאה.
דוגמאות לשימוש בשאלות שונות לבירור מידע רצוי.
מה רוצים לברר?- מוטיבציה, יכולות מקצועיות בכלל ויכולות מכירה בפרט, יכולת ניהול מו"מ, עניין בעבודה, איבוד עניין בעבודה, התמודדות עם לקוחות, יחס לעמיתים ויכולת עבודה בצוות, יחסי אנוש, יחס למנהל וסגנון ניהולי מועדף, התמודדות עם כשלון, תחרותיות, לקיחת סיכונים, אתיקה מקצועית, חוזקות, חולשות, שאיפות לעתיד.
איך לברר זאת? – שימוש בשאלות פתוחות על מנת לתת למרואיין מרחב ולאפשר לו להרחיב. בניית "בנק" של שאלות אפשריות אשר ישמשו את המודרכים בעתיד.
מוקשים: הזדהות יתר עם המרואיין, הסתפקות בתשובות מתחמקות / שטחיות, חוסר הקשבה, שאלות מוכנות מראש ו"פספוס" מידע חשוב, מרואיין אשר "משתלט" על השיחה ולוקח אותו למקומות שנראים לו.
סגירת הראיון
1. הצגת החברה – על פי הרמה הרצויה. כאשר ברור כי המרואיין כלל אינו מתאים, הצגת החברה תיעשה באופן מתומצת. כאשר המרואיין מתאים לתפקיד ולחברה, תוצג החברה בצורה מפורטת תוך הדגשת יתרונותיה.
2. הצגת התפקיד – חשוב להציג את התפקיד רק בתום הראיון, על מנת שלא ליצור מצב שהמרואיין יתאים את תשובותיו לתיאור התפקיד.
3. שאלת שאלות – בשלב זה יכול המרואיין לשאול שאלות נוספות אם יש לו.
4. סגירת הראיון עם מועד אפשרי לחזרה למראויין עם תשובה.
מוקשים: רושם אחרון מטעה, שאלות "מכשילות"מצד המרואיין.
הערכת התאמת המועמד
עם סיום הראיון, ברצוננו להעריך את התאמת המרואיין לתפקיד, לצוות, למנהל ולחברה.
יש לזכור כי ישנן שגיאות העלולות להשפיע על חוות הדעת שלנו ועל התרשמותנו מהמועמד כמו: רושם ראשוני/אחרון מטעה, תכונות מרשימות אשר צובעות את התמונה כולה בצבעים מטעים, אפקט היחסיות (מיקום המרואיין בתוך שרשרת של מרואיינים) ועוד.
1. ההתאמה לתפקיד יכולה להיבדק מול תיאור התפקיד המפורט. האם המועמד עונה על כל הקריטריונים אשר הועמדו לצורך התאמה לתפקיד? מהי רמת ההשקעה הנדרשת מהחברה על מנת שהמועמד יגיע לתפוקות ראויות? האם היא כדאית? האם ישנם מועמדים טובים יותר ומתאימים יותר לתפקיד?
2. ההתאמה לצוות ולמנהל צריכה להבחן על פי השאלות הבאות: האם המועמד ישתלב בצוות? מה תהייה תרומתו לצוות? האם המועמד עלול להזיק לצוות? האם סגנון הניהול של מנהל הצוות מתאים למועמד זה? האם מנהל הצוות יוכל להתמודד עם מועמד זה?
3. ההתאמה לחברה צריכה להיבחן על פי השאלות הבאות: האם המועמד מתאים לאופי החברה? לתרבות הארגונית שלה? האם יעמוד בדרישות העבודה של החברה? האם יוכל להשתלב חברתית? האם המועמד יכול לעבוד על פי סגנון העבודה ונוהלי העבודה הנהוגים ומקובלים בחברה?
כאשר כותבים סיכום ראיון, יש לשבת עם קורות החיים, והרשימות אשר נרשמו במהלך הראיון. רצוי שלא לכתוב סיכום ראיון מיד, אלא כעבור כיום, על מנת שהדברים "ישקעו" ויעובדו.
בסיכום הראיון יש לכתוב בקצרה תיאור של השכלת וניסיון המועמד, תכונות אופי בולטות, ידע וניסיון בולטים ואת ההתרשמות הכללית. בסוף סיכום הראיון רצוי לחוות דיעה לגבי מידת ההתאמה של המועמד. במידה ונותרו שאלות פתוחות רצוי לרשום אותן כמו: "יש לי ספק באשר ל…"; "אבקש לברר בראיון משאבי אנוש את יכולת המועמד ל…"; על מנת שמהמראיינים הבאים יוכלו להתעכב על פרטים אלה, לנסות לברר אותם ולהוסיף מידע.
טיפים לדינאמיקה קבוצתית
1. לדבר עם שאר המועמדים לפני שמתחילים, ללמוד כמה מהשמות שלהם, ולהשתמש בהם בדיון.
2. להיות נורא נחמד ופתוח לרעיונות של כולם, גם אם הרעיונות שלהם לא משהו. הרי המשימות שמקבלים בדינמיקה קבוצתית בין כה וכה אידיוטיות, והמטרה לא לבצע אותן על הצד הטוב ביותר (או לנצח את הקבוצה השנייה בתחרות בניית מגדל אייפל מקשיות), אלא לעבוד באינטראקציה טובה עם השאר.
3. בדרך כלל במהלך הדינמיקה הקבוצתית יש לבחור רעיון אחד תוך פרק זמן קצוב, מומלץ מאוד להיות זה שממליץ על הכנסת קריטריון קשיח כלשהו ולפיו לבחור. לדוגמא: יש את הסיפור על קבוצת אנשים שנשלחים להציל את האנושות בכוכב מרוחק וצריך לדון ולבחור מהקבוצה את האנשים הכי מתאימים, קריטריון שאפשר להציע- ניתן לבחור זוגות שיתאימו.
4. לא להיות זה שיושב בצד ושותק.
5. לא להיות זה שמחלק הוראות גם, כמובן.
6. להקשיב להצעות של אחרים, ומידי פעם לומר, "משה הציע כך וכך, מה דעתכם? אני תומך ברעיון שלו."
7. להגיע לפשרות.
8. לא לתאר את הלקוח באופן שלילי, אפילו לא בצחוק.
9. לא להשוויץ הרבה מאוד בידע הטכני. אני באתי בלי שום רקע טכני רישמי וקיבלו אותי, בעוד שהיו הרבה מועמדים עם תעודות ששלחו הביתה. אם הגעת לשלב הדינמיקה הקבוצתית, דהיינו שעברת את המבחנים הטכניים בכתב ממילא. אחד שהגדיש את הסאה אפילו סיפר מול כיתה שהוא האקר שחזר למוטב. הבוחנים נטלו עט פיילוט ועשו קו גדול מאוד על השם שלו.
10. לא לצעוק כדי להתגבר על הרעש, גם אם כולם מדברים ביחד בבת אחת וזה מעצבן. אתה עלול להיראות כמו זה שמחלק הוראות.
11. מעבר לתוכן הדברים, נבחנים המשתתפים גם על סגנון ותרבות הדיון שלהם. כדאי לשמור על "רוח חברית" ולא לקטוע מועמדים אחרים.
12. פעמים רבות תישאל בסיום המשימה ע"י הבוחנים "איך היה" תתבקש לחוות את דעתך על הדיון, האם הסכמת עם ההחלטות שהתקבלו וכד’. חשוב שתדע לנמק בצורה ברורה את בחירתך, גם אם לא הסכמת" זה בסדר" רק חשוב שתסביר כי למרות שלא הסכמת ברור לך שמדובר בקבוצה וצריכים להגיע להכרעה וכיוב’.
תשובות לשאלות בראיון אישי
1) מה יגידו הממליצים עליך?
אשמח אם תיפנו אליהם, אני בטוח שיגידו עלי רק דברים טובים.
* הערה: לתת עד 3 ממליצים, לבקש שהות של יום-יומיים ע"מ לעדכן את רשימת הממליצים.
2) איך אתה בעבודת צוות?
טוב מאוד בעבודת צוות ,אך יודע לעבוד היטב גם בעבודה אישית.
3) איך הסתדרת עם הבוס שלך?
הסתדרתי מצוין, הוא סמך עלי ובטח בי ואני עליו.
* הערה: חובה להראות הערכה מקצועית הדדית.
4) איך אתה מקבל ביקורת?
יודע לקבל ביקורת, עדיף שתיהיה ביקורת בונה וכך אדע לשפר את מה שטעון שיפור, אם הביקורת לא בונה אני מנסה למקד אותה כך שתיהיה בונה.
5) מה קורה כאשר יש חילוקי דעות עם הבוס/ראש צוות?
מנסים להגיע להסכמה, אך אם לא מגיעים אליה, הבוס הוא זה שקובע והוא המחליט.
6) מה אתה לא אוהב בעבודתך?
לא אוהב שלא עומדים בלוח זמנים , בכל מקרה לא נתקע עם הבעיה, ממשיך הלאה ופותר אותה בצורה הטובה ביותר.
7) מה אתה מחפש?
אני מחפש מקום עבודה להביא לידי ביטוי את הידע,ההכשרה,המוטיבציה והיכולות שלי.
היה רצוי בתפקיד מאתגר,מעניין ובסביבת עבודה נעימה שאוכל להתפתח בה ולהתקדם בה.
8) מה אתה מצפה?
אותה התשובה כמו בשאלה הקודמת. (שאלה 7)
9) במה אתה טוב?
עושה כל דבר על הצד הטוב ביותר,שאיפה למצוינות,טיפוס יוזם עם מוטיבציה גבוהה,כושר התמדה ויחסי אנוש טובים.
10) מה התכונות השליליות שלך/חסרונות שלך?
יש לומר דבר המתפרש גם כשלילי וגם כחיובי.
11) איך אתה רואה את עצמך בעוד 5 שנים?
אני באתי לקבל את התפקיד הזה. אני אעשה אותו על הצד הטוב ביותר ובעוד שנתיים-שלוש נשב כאן ונדבר על התפקיד שלי בעוד 5 שנים.
12) למה אתה מתאים לתפקיד יותר ממועמדים אחרים?
אני לא מכיר את המועמדים האחרים ולכן אני לא אתייחס אליהם. אני יכול להגיד על עצמי שאני מביא איתי את הידע,ההכשרה,היכולת,המוטיבציה והכישורים ע"מ להתמודד בהצלחה עם התפקיד.
13) מה צפיות השכר שלך?
טיפ חשוב : בראיונות מתקדמים כשמציעים לך את המשרה – לעולם אל תהיה זה שאומר את הסכום ראשון ! זכור – במשא ומתן הצד שנוקב בסכום תמיד יהיה חלש יותר !
אם זה ראיון ראשוני לענות לפי הסדר:
א) קרוב לוודאי שתשלמו לי את השכר המקובל לתפקיד,להשכלתי.
ב) אם עדיין מתעקשים על סכום, לנקוב בשכר שהוא בטווח של פלוס-מינוס 20%
לדוגמא: 8000-12000 ₪ .
ג) אם עדיין מתעקשים על סכום אז לומר את השכר המינימלי שעבורו היית מוכן לעבוד, לדוגמא: 8000 ₪ ברוטו. כמובן שאסור להגיד סכום נמוך מדי…כמובן שזה תלוי גם בסוג הראיון-אם זה ראיון ראשוני או ראיון יותר מתקדם שבו יש הסוברים שעדיף להיות חוצפן ולהגיד דווקא סכום יותר גבוה.
ועוד טיפ לסיום- מממישהו שראיין עשרות מועמדים בחברת הייטק:
"אני יכול לגלות סוד- אף אחד מהמראיינים לא באמת יודע מה לעשות עם התשובות שתינתינה לשאלות הללו. אלו שאלות שהם למדו באיזה כנס (כמו שאני למדתי) ונראות מתוחכמות לאללה. מה שקובע בראיון הוא ה"הלו אפקט", הרזומה המקצועי וחשוב לא פחות הביטחון העצמי של המרואין ! "
אגב הטיפ הנ"ל לא תקף בכל המקרים מכיוון שכמובן יש אנשי משאבי אנוש אשר לא רק מבינים את התשובות אלא גם יודעים לנתח את משמעותן ולעשות אינטגרציה בין דברים שונים שנאמרו במהלך הראיון ולהסיק מהם מסקנות.
שאלות היגיון וכלליות
מתוך מבחנים לאפלייד מטריאלס – 12
יש 3 קערות שבהן ישנן גולות לבנות, שחורות או מעורב. על כל קערה רשום פתק:
שחור, לבן , מעורב
נתון שאף אחד מהפתקים לא נכון
בכמה שליפות של כדורים תוכלו לדעת באיזו קערה נמצא כל צבע?
פתרון: שליפה אחת בלבד מהקערה שכתוב עליה מעורב תספיק, מכיוון שבטוח יש שם צבע מסוים ואז נדביק עליה את פתק הצבע שיש בה. נשארנו עם 2 קערות עם פתק שיקרי ולכן ניתן לדעת מה כל אחד.
יום אחד התגלגלה שמועה לאוזנו של ראש שבט אינדיאני קטן,שיש מספר נשים בוגדות.
ראש הכפר כינס את כל הגברים, וסיפר להם על כך-עוד הוא הוסיף שכל אחד מהגברים יודע מי כל הנשים הבוגדות מלבד אישתו! ראש השבט קבע שכל מי שמגלה שאשתו בוגדת בו, חייב להרוג אותה עם כדור בראש ב-12 בלילה בדיוק.
בלילה הראשון לא קרה כלום – רק בלילה הרביעי נשמעו יריות.
כמה נשים בוגדות היו בכפר?
פתרון:
אישה בוגדנית אחת תתגלה בלילה הראשון היות ובעלה יודע שיש בוגדת והיות והוא לא מכיר אותה אז זו אשתו.
שתי נשים בוגדניות תתגלנה בלילה השני, כל אחד מהבעלים מכיר אישה בוגדת אחת- היות ובלילה הראשון לא התרחש כלום אז כל אחד מהם מבין שיש בוגדת שניה שהם לא מכירים והבוגדת השניה היא אשתו של כל אחד מהם.
וכן הלאה והלאה : 3 נשים בלילה ה-3 וכו' .
מתוך מבחנים לאפלייד מטריאלס – 11
כמה פעמים ניפגשים מחוגי השעון ביממה אחת (מחוג הדקות ומחוג השעות), מה ההסבר?
פתרון:
התוצאה צריכה להיות זוגית מכיוון שלאחר 12 שעות מתחיל סבב חדש הזהה לחלוטין לראשון
ב-12 שעות הם נפגשים 11 פעמים, ב-12 השעות הבאות- עוד 11 פעמים.
ולכן בסך הכל 22 פעמים.
טייס נוחת נחיתת אונס בשטח אויב, בלב שדה מוקשים. מכשירי הניווט שלו ניזוקו בנחיתה, והוא יודע רק שהגבול נמצא במרחק קילומטר אחד בדיוק, אך אינו יודע באיזה כיוון.
כיצד יוכל הטייס למצוא את הגבול תוך סיכון מינימלי? (מצא את המסלול הקצר ביותר שעל הטייס ללכת בו, על מנת להבטיח שימצא את הגבול)
מתוך מבחנים לאפלייד מטריאלס – 10
לפניך לוח שח-מט (8×8 בצבעים שחור ולבן) שנוסרו ממנו שתי המשבצות השחורות בפינות המנוגדות. האם ניתן לכסות את הלוח באבני דומינו שכל אחת מהן היא בגודל שתי משבצות של הלוח (כלומר- בגודל 1×2)?
פתרון: כל אבן דומינו מכסה שני ריבועים אחד שחור ואחד לבן, כיוון שהורידו שתי משבצות מאותו הצבע לא ניתן יהיה לכסות את המשטח כולו באבני דומינו.
מתוך מבחנים לאפלייד מטריאלס – 9
אתה נמצא באי בודד ואתה בונה שעון חול ושעון מטוטלת. איך תדע מי מדוייק יותר? איך בודקים דיוק של שעון?
פתרון: בונים מספר שעונים ומפעילים אותם ביחד ובודקים אותם אחרי פרק זמן מסויים ומשווים את התוצאות.
השעונים לא יראו בדיוק בדיוק את אותה שעה כי לכל אחד תהיה את הסטייה שלו. אופן פילוג הסטיות – המרחק בין הזמנים שהשעונים השונים מראים מהווה אינדיקציה לדיוקם.
מתוך מבחנים לאפלייד מטריאלס – 8
קיבלת ליום הולדתך שטיח בדוגמת פרה בצבעים שחור ולבן, וסט של עפרונות באורכים שונים. ברצונך להניח את אחד העפרונות על השטיח, כך ששני קצותיו מונחים על אותו צבע.
א. הוכח כי ניתן לעשות זאת עם עיפרון בכל אורך הקטן ממש מאורך השטיח.
ב. הוכח זאת למקרה בו לשטיח שלושה צבעים.
פתרון:
א. נבנה מכל עיפרון שהוא משולש שווה צלעות, כולו יכנס בשטיח כי השטיח גדול מאד יחסית לעיפרון, חייב יהיה להיות שלשתיים מקצוות המשולש אותו הצבע.
ב. נבנה ריבוע שצלעו שווה לאחד העפרונות ונחפש עיפרון בגודל אחר שאורכו יהיה שווה לאלכסון הריבוע, אם נמצא כזה עיפרון מובטח שנמצא עיפרון ששני קצותיו באותו הצבע
מתוך מבחנים לאפלייד מטריאלס – 7
הגעת לאי בודד ובו שני שבטים, האחד של דוברי אמת מושבעים והשני של שקרנים פתולוגיים. לפניך שלושה ילידים, ואתה פונה לראשון מביניהם ושואל אותו לאיזה מן השבטים הוא שייך. למרבה הצער, אתה לא מבין את תשובתו כיוון שבדיוק אתמול הוא עשה פירסינג בלשון. היליד השני חש לעזרתך ואומר: "הוא אמר שהוא שקרן", ואילו היליד השלישי טוען: "אל תאמין לשני, הוא משקר!".
לאיזה שבט משתייך היליד הראשון?
פתרון: היליד הראשון בטוח אמר שהוא דובר אמת – גם אם הוא שקרן ןגם אם הוא דובר אמת. לכן השני שקרן והראשון דובר אמת.
מתוך מבחנים לאפלייד מטריאלס – 6
לחברת אייר-טראנס מטוס ובו 100 מקומות מסומנים. לכל נוסע כרטיס ובו מספר המושב שלו. הדיילת מעלה את הנוסעים למטוס בזה אחר זה, לפי סדר הישיבה המסומן על גבי הכרטיסים.
הנוסע הראשון, ישראל ישראלי, עולה למטוס ומתיישב באחד המושבים באופן אקראי. הנוסע השני עולה למטוס ופועל באופן הבא: אם מושב מספר 2 פנוי, הוא יושב בו, אחרת הוא יושב באחד מהמושבים הפנויים באופן אקראי.
שאר הנוסעים פועלים באופן דומה לזה של נוסע מספר 2.
מה ההסתברות לכך שהנוסע המחזיק בכרטיס מספר 100 ישב במקומו?
פתרון: אם נחשב את ההסתברות ל- 2,3,4 אנשים נראה שהסיכוי שהאחרון ישב במקומו הוא ½ כנראה שזה המצב גם לאיש ה- 100.
מתוך מבחנים לאפלייד מטריאלס – 5
ברשותך כוס שבסיסה בעל קוטר קטן מזה של שפתה. כיצד תדע, בעזרת הכוס בלבד, אם הכוס מלאה בדיוק עד חצי נפחה?
פתרון: נסגור את הפתח העליון נסובב את הכוס כך שפתחה יהי מאונך לרצפה ונראה שהמים מגיעים לאמצע הכוס.
מתוך מבחנים לאפלייד מטריאלס – 4
אתה מחזיק מגילה ובה K משפטים:
רק משפט אחד מהמשפטים שבמגילה זו הוא נכון.
בדיוק שני משפטים מהמשפטים שבמגילה זו הם נכונים.
בדיוק שלושה משפטים מהמשפטים שבמגילה זו הם נכונים.
*
*
*
כל המשפטים במגילה זו הם נכונים.
אילו מהמשפטים במגילה נכונים???
פתרון: רק המשפט הראשון נכון.
מתוך מבחנים לאפלייד מטריאלס – 3
אתה עומד למרגלות גורד שחקים ובו 100 קומות. ברשותך 2 כדורי בדולח. עליך למצוא את מספר הקומה הנמוכה ביותר שאם זורקים ממנה כדור בדולח, הוא נשבר. עליך לעשות זאת במספר הזריקות המינימלי האפשרי.
פתרון: השיטה היא לעשות קפיצות גדולות ואם כדור אחד נשבר אז לבצע קפיצות של 1 בין השלבים עם הכדור השני, בכדי שלא נעלה במס' הזריקות שאנו מבצעים, כל קפיצה גדולה תהיה קטנה ב- 1 מהקפיצה הקודמת. סכום מס' השלבים שמורידים בקפיצה הגדולה צריך להיות בסביבות ה-100 ולכן הקפיצה הראשונה תהיה של 14 שלבים. מס' הזריקות המינימלי הוא 14.
מתוך מבחנים לאפלייד מטריאלס – 2
בחדר סגור יש מקרר. מה יקרה עם טמפרטורת החדר לאורך זמן כאשר פותחים את הדלת של המקרר.
פיתרון: לכאורה טמפ' החדר לא תשתנה כלל כי המקרר מוציא חום מהתא החוצה, ואם הדלת פתוחה הוא לא עושה שום דבר… אך למעשה, מי שלמד תרמודינמיקה למד כי מנוע קרנו בו יש שימוש כאן לעולם אינו בעל יעילות של 100%, ולכן המנוע של המקרר יפלוט יותר חום מאשר הקור מהדלת הפתוחה והחדר יתחמם.
יש לסדר 50 כדורים לבנים ו-50 כדורים אדומים בשני תיבות, כך שהסתברות לבחור כדור אדום מהתיבות תיהיה מקסימלית. כאשר גם התיבה וגם הכדור נבחרים בצורה אקראית.
פיתרון: כדור אחד אדום בקופסא אחת וכל השאר בקופסא השניה כך ההסתברות עולה משמעותית-ראה חישוב:
0.5*(1/1+49/99)
הערות בפורום שלנו
ברשותך שני פתילים. ידוע לך שמן הרגע שהדלקת את קצהו של אחד הפתילים, הוא יבער במשך שעה אחת בדיוק. קצב הבעירה אינו אחיד (כלומר- חצי פתיל לא בהכרח יבער במשך חצי שעה). מדוד שלושת רבעי השעה בעזרת שני הפתילים.
פתרון: נדליק את 2 הקצוות של הפתיל הראשון ועוד קצה אחד של הפתיל השני, כאשר 2 הקצוות של הפתיל הראשון יפגשו סימן שעברה חצי שעה בדיוק, באותו זמן נדליק את קצהו השני של הפתיל השני (שגם אצלו זמן בעירה של חצי שעה עברה. לאחר רבע שעה יפגשו שני הקצוות של הפתיל השני ואז תגמר ¾ שעה.
שאלה בחברת אוקינאה – OIT
יש 12 מטבעות מתוכם נתון שאחד מזויף – לא ידוע אם הוא קל או כבד יותר
לרשותך 3 שקילות כדי למצוא את המזויף
פתרון:
לשקילה הראשונה ניתן ערך של 9 לשניה 3 ולשלישית 1.
כך שעבור צד ימין כבד יותר נוסיף את ערך השקילה ועבור צד שמאל נחסיר את השקילה.
נמספר את המטבעות מ 0 עד 12.
שקילה ראשונה: 5 10 11 12 מול 9 8 7 6.
שקילה שניה : 6 7 11 12 מול 5 4 3 2.
שקילה שלישית: 1 2 8 10 מול 11 7 5 4.
הערך המוחלט של התוצאה היא המטבע המזויף (בדקו וראו).
לדוגמא עבור חמש נקבל 5=9-3-1
מתוך מבחנים בראיון עבודה באפלייד מטריאלס
יש 9 חביות וידוע שאחת החביות כבדה מהשאר, יש שתי שקילות במאזניים בכדי למצוא את החבית הכבדה.
תשובה: משווים בין שתי קבוצות של 3 חביות, ואז בקבוצה הכבדה שוקלים אחת מול אחת.
מתוך ראיון ב"פגסוס טכנולוגיות" – 3
יש שולחן עגול ומטבעות ,כאשר אין משמעות לגודל המטבעות.
במשחק שני שחקנים: אני והמראיין.
המנצח הוא השחקן אשר שם אחרון על השולחן את המטבע, ובשלב זה אין לשחקן האחרון אפשרות לשים מטבע נוסף על השולחן (אסור לשים מטבע על מטבע).
עליך לענות על 2 שאלות והן: מי מתחיל ראשון? ואיפה צריך לשים את המטבע בכל פעם ע"מ לנצח?
תשובה: אני מתחיל ושם את המטבע במרכז השולחן.
לאחר מכן המראיין שם את המטבע היכן שהוא רוצה, לאחר מכן אני שם את המטבע שלי מול המטבע של המראיין וכך הלאה. בסופו של דבר אני אנצח.
ההסבר לכך הוא: לשולחן עגול יש מרכז אחד ויחיד!! ומכאן כל מיקום של מטבע נקבע על פי מיקומו של המטבע הקודם לו.
מתוך ראיון עבודה ב"פגסוס טכנולוגיות" – 2
יש 10 שקים עם 10 מטבעות בכל שק, כאשר ב-9 מהשקים כל המטבעות זהים במשקל נתון
ובשק אחד יש 10 מטבעות במשקל שונה, נתון גם הוא.
לא ניתן לזהות את השק השונה לפי מראהו החיצוני אלא רק לפי שקילה.
השאלה: לרשותך שקילה אחת בלבד! על מנת לומר איזה שק הוא השונה?
התשובה: יש למספר את השקים מ-1 עד 10. לאחר מכן יש להוציא משק מספר אחד מטבע אחד,
משק מספר 2 יש להוציא 2 מטבעות וכך הלאה עד שק עשר שממנו יש להוציא 10 מטבעות.
יש לשקול בשקילה אחת את כל 55 המטבעות שהוצאנו מהשקים.
נניח כי כל מטבע שוקל 10 גרם, במקרה זה היינו מקבלים תוצאת שקילה של 550 גרם.
בכל מקרה נקבל משקל שקטן מזה מכיוון שיש לנו מספר מטבעות במשקל שונה.
ההפרש בין תוצאת השקילה שנבצע לבין 550 גרם יתן את מספר המטבעות בעלות המשקל השונה וזהו בדיוק האינדקס של השק השונה אותו אנו מחפשים.
לסיכום: ההפרש הוא האינדקס של השק השונה!!!
מתוך ראיון ב"פגסוס טכנולוגיות"
עץ גדל כל יום פי 2 מהיום הקודם.
אם תוך 365 יום הוא הגיע לגודלו המקסימלי, באיזה יום הוא היה בחצי מגודלו המקסימלי?
תשובה: ביום ה-364 .
מתוך ראיון באינטל
לפניך 1000 מנורות, לכל מנורה מתג המדליק אותה בלחיצה אחת ומכבה אותה בלחיצה השנייה. בתחילה כל המנורות כבויות. 1000 גמדים שובבים מגיעים למקום ופועלים באופן הבא:
הגמד הראשון עובר ולוחץ על כל המתגים (כלומר: מדליק את כל הנורות).
הגמד השני לוחץ על כל מתג שני (כלומר: על המתגים שהם בעלי מספר זוגי).
הגמד השלישי לוחץ על כל מתג שלישי, וכן הלאה.
אילו נורות יהיו דלוקות לאחר שכל הגמדים סיימו להשתולל?
פתרון: כל גמד יעבור על הנורות שהמס' שלו מחלק את מספר הנורה, לדוגמא את נורה מס' 8 ידליקו ויכבו גמדים 1,2,4,8 ולכן הנורה תהיה מכובה בסוף. הנורות שיהיו דלוקות הן אלו שיש להן שורש שלם: 4,9,16,25….
שאלה שחוזרת בהרבה מקומות בגירסאות שונות