הייתי בראיון אחד, הסבירו הרבה על החברה ואז שאלו שאלת קוד מקצועית, נתנו לי לנסות לבד ואז פתרנו ביחד
שאלות מתוך הראיון
שתי מחרוזות נניח a וb.
השאלה היא למצוא את האינדקס הראשון בb שעד אליו כל תווי a מוכלים בתת המחרוזת.
לממש בc.
לדוגמה:
a = abbcs
b = gabkcfdstyz
הפונקציה תחזיר 7.
תשובות
הוסף תשובה
|
לצפיה בתשובות
נובמבר 2023
הפתרון הוא לממש טבלת גיבוב בc, 26 ביטים מאופסים כשכל ביט מייצג את אחת האותיות האנגליות.
עוברים על a ומעדכנים 1 בכל ביט שמתאים לתו שעברנו עליו, שומרים בקאונטר כמה עדכונים כאלה עשינו, זה מספר האותיות השונות בa נקרא לזה x.
עוברים על b ובכל תו בודקים אם מסומן 1 בטבלה אם כן מאפסים ומורידים אחד מהקאונטר x.
כשx==0 סיימנו, מחזירים את האינדקס אליו הגענו בb.
עו
ראיון ראשון:
שאלה ראשונה:
לרשותך שתי פונקציות של מערכת ההפעלה:
void * malloc_OS (size_t size);
void free_OS (void *, size_t size);
כתוב לכל פונקציה, פונקציה לוקלית מקבילה, כך שהתוכנה שלך תקצה את הזיכרון ע"י מצביע לכתובת זיכרון ותהווה מערכת בקרה לניהול הזיכרון. אם אין מספיק זיכרון מבוקש, הפונקציה תחזיר NULL. כמו כן יש לנהל גם את מחיקת הזיכרון לפי מצביע.
// Return the first show of a char from string x in string y
char * subchar(char * y, char * x)
{
int allChars[256] = {0};
char * yTmp = y;
char * xTmp = x;
while (*yTmp)
{
allChars[*yTmp] = 1;
yTmp++;
}
for (int i=0; i<256; i++)
printf("%d", allChars[i]);
yTmp = y;
while (*xTmp)
{
if (allChars[*xTmp] == 1)
{
while (*yTmp)
{
if(*yTmp == *xTmp)
return yTmp;
yTmp++;
}
}
xTmp++;
}
return NULL;
}
ראיון שני:
נמיין את התור הראשי לתתי תורים, כך שלכל שרת יהיה תור רק של הטסקים מהסוג שלו.
ראיון ראשון עם שני עובדים בצוות.
ראיון שני עם ראש צוות.
ראיון HR.
לאחר ראיון HR אמור להיות ראיון עם המנכ"ל/סמנכ"ל.
אני עברתי את שני הראיונות הראשונים. לא עברתי את ראיון ה-HR למרות שהלך טוב - כנראה בגלל שאין לי רכב ואני לא מחוסן, הדגישו על שני הדברים האלה בכל שלושת הראיונות.
שאלות מתוך הראיון
ראיון ראשון:
שאלה על עבודה עם malloc ומימוש malloc אחר עם תכונות מסוימות.
שאלת המשך לשאלה הראשונה.
שאלה על איך לזהות שמחרוזת אחת מוכלת במחרוזת שניה.
(צריך לממש ב-C בשתי השאלות).
האם אתה מחוסן(קורונה), האם יש לך רכב.
ראיון שני: שאלות על קורות החיים שלי ושאלות המשך על פרטים שהופיעו בקורות חיים שלי.
האם יש לך רכב.
ראיון שלישי:
למה לדעתך אתה מתאים לחברה יותר מעובדים אחרים, למה אתה רוצה לעבוד בחברה הזאת ספציפית.
האם אתה מחוסן, האם יש לך רכב.
פנייה דרך חברת כ"א, שיחת טלפון נעימה מאוד עם מנהלת המשרד וזימון לראיון פרונטלי.
שאלות מתוך הראיון
נשאלו מגוון שאלות לא חוקיות ולא רלוונטיות לתפקיד כגון בת כמה אני, האם אני נשואה או אם יש לי ילדים, מה עשיתי בצבא וכו'. שאלות שכנראה גברים לא היו נשאלים עליהם. מהלך הראיון היה מאוד אגרסיבי ולא נעים, המראיין שואל שאלה וקוטע באמצע התשובה כדי לשאול שאלה רנדומלית אחרת כאילו הוא כלל לא מקשיב לתשובה. שאלות עתיקות כאילו נלקחו מראיון משנות ה-90. הרגשה של סביבה גברית רעילה. מלבד מנהלת המשרד לא נתקלתי באישה אחת שעובדת שם.
הייתי שם בשני ראיונות, לא עברתי את הראיון השני. מאחל לכם הצלחה.
שאלות מתוך הראיון
שאלה מתוך ראיון ראשון :
יש לך זיכרון שמחולק לבלוקים בגודל 4KB.
הוא מתחלק כך: זיכרון שהגישה אליו איטית יחסית, בגודל n בלוקים, וזיכרון מהיר יותר בגודל m בלוקים.
מתקיים ש n גדול בהרבה מm.
הזיכרון בגודל m צריך לתפקד כcache.
ממש שתי פונקציות שאלה החתימות שלהן :
read(uint_64* addr)
write(uint_64* addr, uint_64* data)
מתוך הראיון השני :
דיבר איתי על מה זה process, על page tables, איך נוצרים page table ואיך מתבצעת גישה לזיכרון על ידי המעבד.
שווה לחזור על חומר ממערכות הפעלה.
דיברנו על מה עשיתי בעבודה הקודמת.
שאלה 1:
נתונים שתי מחרוזות a,b. החזר אמת אם כל האותיות בa מופיעות בb, וfalse אחרת.
שאלה 2:
איך תממש את מבנה נתונים שהוא סוג של מערך, עם הapi הבא :
set(index,data) - write this data in this index
get(index) - return the data in this index
reset(data) - put data in all the indexes
(תשובה לשאלה 2 זו ניתן למצוא פה באתר, בשאלות מראיונות ב- אינפינידט, בתשובה שכתבתי שם ב18.1.2018)
בהצלחה אנשים.
תשובות
הוסף תשובה
|
לצפיה בתשובות
פברואר 2018
לשאלה מהראיון הראשון :
טוב, צריך לממש cache LRU. בגדול צריך לתחזק שני מבני נתונים כדי לממש את הcache כמו שצריך, אחד זה רשימה מקושרת דו כיוונית , בכל איבר ברשימה הזו יש כתובת של בלוק בcache. בכל רגע, בראש הרשימה תהיה הכתובת קאש האחרונה שניגשו אליה, ובסוף הרשימה (שאליה נחזיק מצביע tail) תהיה הכתובת שניגשנו אליה הכי מזמן.
כשהקאש יהיה מלא, נכניס את המידע החדש מהזיכרון האיטי לכתובת שנמצאת בtail של הרשימה, ונשים את הtail לתחילת הרשימה, ונעדכן את הtail לאיבר הקודם.
המבני נתונים השני יהיה map שממפה בין כתובת בזיכרון האיטי לnode ברשימת הlru. אם עבור כתובת מסוימת בזיכרון האיטי אין מיפוי לnode מסויים, זה אומר שהתוכן של הכתובת הזאת לא נמצאת בcache.
לפי מה שאני זוכר, שני המבני נתונים האלה מספיקים בשביל לנהל כמו שצריך את הcache.