התפקיד Software Verification Engineer Student - DOCA
הופניתי על ידי עובד חברה, שתי ראיונות טכניים ואז ריאיון HR, לא עברתי את הריאיון הראשון.
הריאיון בTeams שעתיים כמעט עם הפסקה קצרה באמצע, היו שני מראיינים, אחד חבר צוות צעיר ואחד יותר ותיק. האווירה הייתה קלילה.
תחילה הייתי צריכה להציג את עצמי, ואז שאלו שאלות שקשורות לקורות חיים שלי ולניסיון הדל שיש לי. אחרי זה כמה שאלות תאורתיות שקשורות לתפקיד (בעיקר תקשורת) ולחומר שלמדתי בתואר. ואחרי זה שתי שאלות קוד פשוטות. לא נתנו לי בחירה בשפה, שאלה אחת בפייתון ואחת בJava.
שאלות מתוך הראיון
שאלה 1:
Python question:
Find all unique elements
listLang = [CPP, PYTHON, JAVA, JAVA, CPP]
שאלה 2:
Public int foo(List nums){
Int x = -1;
Int y = -1;
For(Integer num : nums){
If(x < num){
Y = x;
X = num;
}
Return y;
{
מה הקוד עושה/אמור לעשות?
מה הבעיה ואיך אפשר לתקן אותה? (אמרו שאת זה שאלו מסקרנות ושלא היו חייבים לשאול)
תשובות
הוסף תשובה
|
לצפיה בתשובות
אפריל 2022
תשובה לשאלה ראשונה: כיוונו שאשתמש בSet.
תשובה לשאלה השנייה: אמור למצוא את המקסימום השני. הבעיה היא בif, לא בטוחה איך לתקן.
מאי 2022
מה קורה כשיש איבר יחיד
ספטמבר 2023
יש בעיה עם מערכים שליליים או עם מערך שבו שני האיברים הכי גדולים זהים ואז y לא יתעדכן להיות גם המקסימלי.בif צריך להיות >=
דצמבר 2023
בשני יש בעיה ב למשל ]3,1,2]
דצמבר 2023
שאלה 2: החתימה של הפונקציה היא void אבל היא מחזירה y.
יש לך רכיב עם 4 כניסות שמוציא אחד אם יש לו 2 כניסות ומעלה שהן אחד. תבנה ממנו רכיב שמוציא 1 אם:
- יש לו יותר מכניסה אחת שהיא '1'
- יש לו יותר מ3 כניסות שהן '1'
תשובות
הוסף תשובה
|
לצפיה בתשובות
נובמבר 2022
1) 5 רכביבם
2) 7 רכיבים
הערה: לעשות טבלת אמת ולשים במפת קרנו יעזור לפתרון אבל לא חובה
נובמבר 2023
אני לא בטוח אם השאלה נוסחה כראוי אז אענה על כל האופציות:
נסמן כניסות כ-A,B,C,D
- אם יש לו לפחות כניסה אחת שהיא '1': [3 רכיבים]
רכיב אחד מקבל 2 כניסות שהן A ושתיים שהן B (דולק אם לפחות אחת היא 1)
רכיב שני מקבל 2 כניסות שהן C ושתיים שהן D (דולק אם לפחות אחת היא 1)
רכיב שלישי שמקבל 2 כניסות מרכיב אחד ושתי כניסות מרכיב שני (דולק אם אחד מהרכיבים דולק, כלומר דולק אם לפחות אחת הכניסות היא 1)
- אם יש לו יותר מכניסה אחת שהיא '1': [רכיב אחד]
זה פשוט הרכיב הנתון (שדולק עם לפחות 2)
- אם יש לו לפחות 3 כניסות שהן '1': [5 רכיבים]
רכיב אחד שמקבל A,B ו2 אפסים (דולק רק אם שניהם 1)
רכיב שני שמקבל B,C ו2 אפסים (דולק רק אם שניהם 1)
רכיב שלישי שמקבל C,D ו2 אפסים (דולק רק אם שניהם 1)
רכיב רביעי שמקבל D,A ו2 אפסים (דולק רק אם שניהם 1)
רכיב חמישי שמקבל את המוצאים של 4 הרכיבים הקודמים (דולק רק אם לפחות 2 רכיבים דלקו, כלומר דולק רק אם לפחות 3 כניסות היו 1)
- אם יש לו יותר מ3 כניסות שהן '1': [3 רכיבים]
רכיב אחד שמקבל A,B ו2 אפסים (דולק רק אם שניהם 1)
רכיב שני שמקבל C,D ו2 אפסים (דולק רק אם שניהם 1)
רכיב שלישי שמקבל את מוצאי 2 הרכיבים הקודמים ו2 אפסים (דולק רק אם 2 הרכיבים הקודמים דלקו, כלומר דולק רק אם 4 כניסות הן 1)
1. יש 2 רשימות מקושרות. לבדוק האם יש איבר משותף. למצוא אותו לכתוב קוד. בסיבוכיות זמן ומקום מינימאליות.
2. לבנות class לשמירת נתונים בצורה key->value. עם מתודות set,get,reset. reset אמור להגדיר כל האיברים לאותו ערך תוך О(1). גם set,get אמורים לעבוד בО(1). מתודה init(n) בO(n)
תשובות
הוסף תשובה
|
לצפיה בתשובות
מרץ 2022
יש להגדיר משתנים כמו timestamp ו-default_value. כל פעם כשמוסיפים איבר חדש יש לקדם את timestamp ולשמור את ערכו יחד עם האיבר. ב-reset יש לשנות default_value ולשמור timestamp שלו, זה O(1). ב-get יש לבדוק timestamp של איבר, להשוות אותו עם timestamp של default_value ולהחזיר את החדש יותר.