התהליך כולל שלושה ראיונות בתחילה מבחן בתכנות,
ראיון עם ראש צוות ואז ראיון עם מנהל המחלקה .
שאלות מתוך הראיון
int findMinPath(vector > &V, int r, int c) {
int R = V.size();
int C = V[0].size();
if (r >= R || c >= C) return 100000000; // Infinity
if (r == R - 1 && c == C - 1) return 0;
return V[r][c] + min(findMinPath(V, r + 1, c), findMinPath(V, r, c + 1));
}
אני יודעת שיש שני שלבים, לא עברתי את השני. אז לא יודעת בסך הכל כמה תהליכים יש
שאלות מתוך הראיון
First Interview:
1- design patterns, adapter design pattern
2- given Lock class, implement readWrite lock
3- height of binary tree, write code
Second Interview:
1- Design pattern, implement logger interface
2- small logic question, given two arrays find if you have two elements with sum k
תשובות
הוסף תשובה
|
לצפיה בתשובות
דצמבר 2020
לעשות ערימת מקסימום ממערך אחד, וערימת מינימום ממערך שני.עלות ON
בכל פעם להסתכל על הסכום של ה2 שבראש הערימה.
אם זה שווה K מצויין.
אם זה קטן מK אז נוציא את זה שעליון בערימת מינימום ונבדוק כעת שוב מה הסכום
אם זה גדול מK אז נוציא את זה שעליון בערימת מקסימום ונבדוק שוב מה הסכום.
עלות במקרה הגרוע O N LOGN
אפשר גם במקום ערימות פשוט למיין את 2 המערכים בעעלות n log n ועלות ההרצה של בדיקת הסכומים תיהיה N
בכל מקרה הזמן הכי טוב שמצאתי זה NlogN
נובמבר 2021
הרעיון לדעתי הוא להשתמש בטבלת גיבוב עם פונקציה של k פחות המספר במערך הראשון, לעבור כך על כל המערך ה1. ובמערך השני נפעיל את פונצקית הזהות בטבלת הגיבוב, אם תיהיה התנגשות(כלומר כבר הכנסנו ערך במעבר הקודם) זה סימן שיש 2 מספרים שסכומם k