Learn from real interview experiences shared by the community
You can search for a specific company, or by a title
שלום יש לי השבוע ראיון בחברת CEVA למשרת מהנדס video embedded software מישהו התראין למשרה כזו בCEVA או למשרה כזאת בכלל? אילו סוגי שאלות יכולים לשאול שמה? תודה
יש לך ניסיון בתחום הEMBEDDED?
היי יעקב, תוכל לפרט מה היה לך בראיון ? תודה!
היי הייתי בראיון ב ceva לא התקבלתי. השאלות הם כלהלן. נתונים 2 קופסאות 2->1 שמקבלות שתי מספרים ומוציאות את המינימום ואת המקסימום בהתאמה. בעזרת שתי הקופסאות האילו צריך לממש קופסה של 3->3 שממינת 3 מספרים. האמת זה שאלה לא קשה. זה ממש לא בעייה למצוא את המינימום ואת המקסימום. מה שהסתבכתי זה למצוא את המספר האמצעי. אבל אם חושבים על זה טוב פותרים גם את זה. שאלה שנייה. ממש קוד אסמבלי של פונקצייה שכופלת שני מספרים x,y למשל foo(x,y)w (ה W זה כדי שיהיה כתב ברור ) כאשר נתונים רק 3 פקודות אסמבלי. inc x dec x jnz label. יש שמה קצת טריקים, הוא עזר לי בזה קצת. אתם מוזמנים להציע פתרון. אם תסתבכו אני ארשום לכם את הפתרון.
אלו שאלות שחוזרות על עצמן. לא נורא בפעם הבאה תגיע יותר מוכן.
איך באמת מממשים קופסה שממיינת 3 מספרים עם רק שתי קופסאות שממינות 2?
נראה לי שהוא התכוון עם 3 קופסאות למיין 3 מספרים זה אפשרי
אוקי אולי שכחתי לי להגיד אבל אילו שני סוגי קופסאות אחד של מינימום ואחת של מקסימום. אבל מותר להשתמש בכל קוספה כמה פעמים שרוצים. סורי, חשבתי שזה ברור.
בעקרון צריך להשתמש ב- 3 לולאות ולייבלים ועם משתנה עזר: לולאה 1 - עובדת על X לולאה 2 - עובדת על Y לולאה 3 - עובדת על Z שמקבלת את הערך המקורי של X
קודם כל תודה יעקב, הייתי בראיון בחברה הזאת, שאלוהרבה על הפרויקט שלי, הציג לי 4 שאלות אחת אחרי השניה, השתיים הראשונות היו כמו שיעקב רשם עם רכיבי MIN ו-MAX הייתי צריך למצוא את המספר האמצעי מבין 3 מספרים (הפתרון שלי היה עם 4 ואני די בטוח שזה המינימום). אח"כ הוא הציג את השאלה עם הכפל וגם כאן זה שאלה די פשוטה אני יכול לרשום את הקוד אם תהיה דרישה.. השאלה השלישית הייתה כזאת, נתונה הנוסחה הבאה וכל משתנה הוא רגיסטר בעל 8 ביט, צריך למצוא כמה ביטים צריך בשביל שבתוצאה לא יהיה OVERFLOW (((a-b)>>3) + c-d+4)<<2 << זה שיפט שמאלה ו- >> ימינה התשובה היא 13 ביטים. שאלה הבאה ממשיכה את דרכה של השאלה הזאת והפעם יש לנו פעולה שנקראת MAC והיא עושה את הדבר הבא ומחזירה מספר בעל 32 ביט בסופה. אפשר לגשת לרגיסטר או ל-16 ביטי LSB או ל- 16 ביטי MSB r1=MAC(a,b,c)=a*b + c אפשר לבצע 2 MAC בכל סייקל. המטרה לחשב את הביטוי מהשאלה הקודמת בעזרת MAC. הדרישה פה בסופו של דבר שזה יתבצע ב2.5 סייקלים וזה הפתרון שנתתי (עומד במבחן הזה) כל 2 שורות זה סייקל בלתי תלוי. r1=mac(b,-1,a) r2=mac(d,-1,c) r3=mac(r1,2^3,r2) r4=mac(r3,1,4) r5=mac(r4,2^13,0) התוצאה תימצא ב16 ביטי MSB של R5 אחרי הוא דיבר על החברה בזריזות וכששאלתי אותו לגבי תשובות לראיון הוא אמר שהם "יגיעו מתישהו".
קודם כל תודה יעקב, הייתי בראיון בחברה הזאת, שאלוהרבה על הפרויקט שלי, הציג לי 4 שאלות אחת אחרי השניה, השתיים הראשונות היו כמו שיעקב רשם עם רכיבי MIN ו-MAX הייתי צריך למצוא את המספר האמצעי מבין 3 מספרים (הפתרון שלי היה עם 4 ואני די בטוח שזה המינימום). אח"כ הוא הציג את השאלה עם הכפל וגם כאן זה שאלה די פשוטה אני יכול לרשום את הקוד אם תהיה דרישה.. השאלה השלישית הייתה כזאת, נתונה הנוסחה הבאה וכל משתנה הוא רגיסטר בעל 8 ביט, צריך למצוא כמה ביטים צריך בשביל שבתוצאה לא יהיה OVERFLOW (((a-b)>>3) + c-d+4)<<2 << זה שיפט שמאלה ו- >> ימינה התשובה היא 13 ביטים. שאלה הבאה ממשיכה את דרכה של השאלה הזאת והפעם יש לנו פעולה שנקראת MAC והיא עושה את הדבר הבא ומחזירה מספר בעל 32 ביט בסופה. אפשר לגשת לרגיסטר או ל-16 ביטי LSB או ל- 16 ביטי MSB r1=MAC(a,b,c)=a*b + c אפשר לבצע 2 MAC בכל סייקל. המטרה לחשב את הביטוי מהשאלה הקודמת בעזרת MAC. הדרישה פה בסופו של דבר שזה יתבצע ב2.5 סייקלים וזה הפתרון שנתתי (עומד במבחן הזה) כל 2 שורות זה סייקל בלתי תלוי. r1=mac(b,-1,a) r2=mac(d,-1,c) r3=mac(r1,2^3,r2) r4=mac(r3,1,4) r5=mac(r4,2^13,0) התוצאה תימצא ב16 ביטי MSB של R5 אחרי הוא דיבר על החברה בזריזות וכששאלתי אותו לגבי תשובות לראיון הוא אמר שהם "יגיעו מתישהו". אתה יכול בבקשה לפתור את השאלה עם המקסימום מינימום ? לא מצליח לפתור ב4 קופסאות בלבד ! אולי התכוונת ל 4 קופסאות של מינימום ? ולא התיחסת למספר קופסאות המקסימום ?
מישהו היה בראיון שני למשרת מהנדס ורפיקציה במחלקת vlsi? תוכל לפרט מה השאלות ששאלו אותך
לאחד שיודע. אני שמח שעזרתי לך. נראה שהלך לך ממש טוב בראיון. המראיין שלי דוווקא לא היה נראה לי מתנשא. אותי הוא שאל רק את שתי השאלות שרשמתי ונראה שממך הוא היה ממש מרוצה ושאל אותך הרבה שאלות. האם הם חזרו אליך עם תשובה חיובית? בשאלה של הכפל, יש שמה איזה טריק שצריך לפתור. כי אני למשל ממשתי פקודת ADD X,Y ובעזרתו ממשתי לולאה שסוכמת לתוך משתנה Z את X . והיא עושה את זה Y פעמים. הבעייה היא ואני לא שמתי לב לזה שכל פעם שאני מבצע בלולאה ADD Z,X המשתנה X מתאפס ולכן באיטרציה הבאה כשנבצע שוב ADD Z,X לא נבצע כלום כי X הוא בעצם 0. איך אתה התמודדת עם זה?
לא עברתי... // r1,r2 the numbers, r3 temp, r4 the result set_r3: inc r3 jnz set_r3 set_r4: inc r4 jnz set_r4 add_1: inc r3 inc r4 dec r1 jnz add_1 dec r2 jnz add_2 end add_2: inc r1 inc r4 dec r3 jnz add_2 dec r2 jnz add_1 end
CEVA Interview1 Summary Attached reconstruction of full interview at CEVA-DSP CEVA – Verification Engineer Interview held on: 3.12.2010 Position: Verification Engineer-Graduate
CEVA – צוות 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 – צוות 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). בכל הפתרונות (וכנראה בהצבת הבעיה יש באג) - אחרי הזזה ב-3 ימינה והזזה ב-2 שמאלה 2lsb של (a-b) שנחספים ב-2lsb של H(R) צריכים להיות 0. אבל הם ביטים של(a-b). לכן צריך 4,5 סייקלים. R1 = MAC(b,-1,a) //a-b R2 = MAC(d,-1,c) //c-d R3 = MAC(R2,2^3,R1) //(a-b)+(c-d)*2^3 R4 = MAC(R3,2^13,0) //(a-b)*2^13+(c-d)*2^16 R5 = MAC(H(R4),2^2,0) //final result with 2lsb of (a-b) in H(R5) R6 = MAC(L(R4),2^2,0) //2lsb of (a-b) in H(R6) R7 = MAC(R6,-1,R5) // final result with 2lsb of (a-b) subtracted
היי, הייתי בראיון שם ושאלו אותי את השאלות הבאות: 1. מה הבעיה בקוד הבא: char *p; p = 0x10000; *p = 0x600; *p = 0x800; 2. נתונה תמונה עם 256X256 פיקסלים ועוד פריים עם 16X16 פיקסלים. צריך למצוא את הפריים הכי קרוב לפריים הנתון בתוך התמונה. ההגדרה של הפריים הכי קרוב הוא זה שסכום הפרשי הפיקסלים בערך מוחלט הוא הנמוך ביותר. צריך להתייחס לתמונה ולפריים כאיזורים רציפים בזיכרון כאשר הפונקציה מקבלת שני מצביעים לשניהם. בהצלחה ואם למישהו יש שאלות על הפתרונות הוא מוזמן.
הייתי החודש בראיון בחברה זו למשרת 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, אבל המראיין אמר לי שאפשר בסדר גודל של חצי. לא הצלחתי . בהצלחה למי שמתראיין, ואשמח לדעת אם למישהו יש תשובה לשאלה 3.
הייתי החודש בראיון בחברה זו למשרת 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, אבל המראיין אמר לי שאפשר בסדר גודל של חצי. לא הצלחתי . בהצלחה למי שמתראיין, ואשמח לדעת אם למישהו יש תשובה לשאלה 3. נראה לי שעוד לא ענו על זה כאן, אז אשתדל לענות. ל-traversing שהוא depth first (כלומר כל ה pre / post / in orders), צריך להשתמש במחסנית. הרעיון הוא שדוחפים ושולפים נתונים מהמחסנית בהתאם לסוג הסריקהץ ל-traversing שהוא breadth first, משתמשים בתור (שהוא בעצם FIFO). למה זה היגיוני? תחשבו שהכנסתם לתור את האב, שני בניו, ואז 4 "נכדים". הסריקה צריך להתבצא מהאב -> בנים -> נכדים.
מקום מאוד מעניין, הטכנולוגיות נשמעות פיצוץ. אבל... באותו היום המזכירה מתקשרת ומודיעה ש"סליחה - חדשות לא טובות". למרות שהראיון הלך בסדר גמור לדעתי. בהצלחה לכולם
אם עדיין רלוונטי. אז אפשר להשתמש במערך מעגלי. כלומר, לשמור int סטטי ובו המיקום שבו מתחיל המערך, ולעדכן אותו בהתאם, וכך אפשר לוותר על הלולאה הראשונה של ההזזה... פשוט מוחקים את האיבר האחרון ומעדכנים את האינדקס בו מתחיל המערך.
היי יש לי ראיון לתפקיד QA ואני בוגרת מדעי המחשב למישהו יש מושג מה שואלים רוב השאלות שראיתי הם מתאימות יותר לחשמל
יש לך שתי משתנים a b בכל אחד יש ערך ליצור שבמשתנה c יהיה c=a*b (אפשר להיעזר בכמה משתני עזר שאת רוצה) את יכולה להשתמש רק בפקודות מיקרו שהם +1 -1 JNZ halt JNZ בודק את השורה שלמעלה ויכול לקפוץ לאיזה לייבל שבא לך תהני!!
שלמה אני ממש מודה שענית לי אבל הראיון שלוש שעות ורק שאלה אחת והאמת שהשאלה הזאת כבר כתובה בפורמים יש אולי עוד שאלות שידוע לך? אני מקווה שתענה לי עד מחר ואם לאהתודה מראש ובהצלחה לי
שלמה אני ממש מודה שענית לי אבל הראיון שלוש שעות ורק שאלה אחת והאמת שהשאלה הזאת כבר כתובה בפורמים יש אולי עוד שאלות שידוע לך? אני מקווה שתענה לי עד מחר ואם לאהתודה מראש ובהצלחה לי היי יש לי ברקוב ראיון שם למשרה QA. איך היה לך בראיון,אילו שאלות היו? תודה מראש.
נראה לי שהוא התכוון שכדי למצוא את האמצעי דרושות 4 קופסאות. הצלחתי ב-4 קופסאות לממש את האמצעי. אם מוסיפים עוד 2 קופסאות - יש לי את הקטן והגדול. אין מצב שהוא הצליח ב-4 קופסאות לפתור את הכל ... יש 3 מוצאים, וזה אומר שיש לפחות 3 קופסאות שונות, רק בשביל המוצא. אז מה, 3 קופסאות בשביל 3 מוצאים ורק עוד קופסא אחת נוספת ? לא הגיוני ...
האם הם מקבלים בוגרים ?
היי לכולם. הייתי לא מזמן בראיון ב CEVA למשרת QA.השאלה שהם נותנים זאת שאלת assembly (למממש a=x*y ).השאלה מופיע בפוסטים קודמים.רק רציתי להוסיף שהם גם שואלים באזה תנאים הפיתרון לא עובד. אז כאשר X או Y שווים ל 0 הפיתרון לא עובד. ובנוסף עם X ו Y מספרים שלמים ומאוד גדולים יכולה להיות בעית overflow. בהצלחה לכולם...
היי סיוון את יכולה לפרט עוד על הראיון שלך בסיווה? הוא היה מקצועי? או גם אישי? איזה עוד שאלות שאלו אותך?
הייתה לי את השאלה עם המערכים. לפני שנתיים ולא התקבלתי (כנראה בגלל שאיחרתי לראיון לטענת המזכירה שם) הפתרון באמת מעגלי בעזרת פוינטרים דוחפים את האיברים החדשים מימין למערך לכיוון שמאל. ובכך חוסכים הזזות שהם 10n (קריאה+השמה) אני פתרתי את השאלה והגעתי ל-12n על הכפל אי אפשר לוותר כי ישנן הזזות ציקליות עם כפלים שלא ניתן לחשב מראש!! הייתה לי עוד שאלה קלה לממש את פו' העברה מint לchar הבנתי אח"כ שהמראיין אריק חרץ את גורלי מראש בגלל האיחור. רק חבל שהוא בזבז לי את הזמן בהצלחה שם
היי שי. הראיון היה גם מקצועי ו גם אישי. בהתחלה הם מספרים על החברה ועל המשרה ואחרי זה אתה מספר. אותי הם שאלו על לימודים,ניסיון תעוסקתי ... ואחרי זה נתנו שאלת לי אסמבלי. בהצלחה!
לא הצלחתי להבין שני דברים בנוגע לביטוי : (((a-b)>>3) + c-d+4)<<2 1. אני הגעתי ל -12 ביטים בשביל שלא יהיה overflow. עבור 3<<(a-b) - צריך 8 ביטים, למרות שעושים shift שמאלה, במידה והספרה הימנית ביותר היא 1, הביטים ש"יבואו" במקומו יהיו גם כן אחדות ולכן צריך 8 ביטים. עבור c-d+4 - צריך 9 ביטים (כשהולך על הצד הבטוח). עבור שני הביטויים הנ"ל - צריך 10 ביטים (כשהולך על הצד הבטוח). ולבסוף עבור ביצוע השיפט ימינה (של שני ביטים) - צריך עוד 2 ביטים. כלומר סה"כ 12. מאיפה בא הביט הנוסף?? 2. לגבי ביצוע הפעולות MAC, לא הבנתי איך הגיעו לביטוי מהביטוי שנמצא למעלה: (a – b)*2^15 + (c – d + 4)*2^13 אשמח אם משהו יראה את הדרך בא הוא פתח את הסוגריים
היי יש לי ראיון למשרת QA ופיתוח אוטומציה השבוע גם ב CEVA מישהו זוכר עוד שאלות רלוונטיות למשרה חוץ מהמישוש של הכפל באסמבלי? הראיון הוא בכתב או פנים אל פנים ? כמה זמן ? ... כל מידע יתקבל בברכה.
הראיון הוא פנים מול פנים ואז משאירים אותך עם השאלה לכ-20 דקות ונותנים לך הזדמנות לענות עליה בלי לחץ ואז חוזר המראיין ומדברים על השאלה.
וחוץ מהשאלה על הכפל באסמבלי ? ( דרך אגב יש פתרון לזה שאפשר לראות? ) יש עוד שאלות או רק אחת ? הוא שואל משהו על OOP או שפת C ?
ממה שאני יודע לא מדברים איתך על שפת c. לא חשוב להם שתדע את השפה. רוצים בעיקר לראות את דרך החשיבה וההגיון שלך. נותנים לך לדוגמא קוד בשפת c (אם אתה לא מבין את הsyntax יסבירו לך מה שדרוש) ומבקשים ממך שתנתח את הקוד מבחינת מה הוא עושה, זמני ריצה, יעילות והכל.
תודה רבה על התגובה המהירה.... אז איך כדי להתכונן לרעיון? ואם נתנו גם לך את השאלה עם הכפל באמסבלי ?( יש למישהו פתרון ? )
היי דניאל, היית שם מאז שכתבת את ההודעה? אשמח לשמוע מה שאלו (בעיקר לגבי שאלות מקצועיות...) תודה!
יש לי ראיון שני למשרת C++ Automation Engineer. בראיון הראשון ביקשו ממני לממש itoa ושאלת optimization שבדיעבד ראיתי שפורסמה פה. מישהו יודע לגבי שאלות נוספות שיכולים לשאול אותי בראיון הבא? תודה
היי חברה, מישהו היה ב CEVA לאחורונה ויכול לשתף?
מישהו היה שם למשרת פיתוח debugger?
מישהו היה שם למשרת פיתוח debugger? תמר, היית בראיון? אשמח אם תשתפי..
טוב אז היום הייתי בראיון.. השאלה הראשונה היא לממש פונקציה הממירה 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' ; str= '\0'; return; }else if (x<0){ str='-'; j=1; x = x*(-1); } int counter=0; int temp = x ; while (temp-(temp/10)*10 >0){ counter++; temp =temp/10; } str='\0'; j = 1-j; for (;counter>0;counter--){ int t = x-(x/10)*10; str = '0'+t; x = x/10; } }
רק רוצה להוסיף שזה היה למשרת קומפיילר
מממ... ומה היו שאר השאלות?
אפשר בבקשה עוד מידע על השאלות למשרת קומפלציה?
היי, הייתי היום בראיון בceva למשרה 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 ביקשתי שיתנו לי את התשובה לשאלה אך המראיין לא הסכים לתת לי. אשמח אם מישהו יוכל לפתור אותה, תודה.
היי, הייתי היום בראיון בceva למשרה 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 ביקשתי שיתנו לי את התשובה לשאלה אך המראיין לא הסכים לתת לי. אשמח אם מישהו יוכל לפתור אותה, תודה. אורחת, ממה שהצלחתי להבין זה שהמספרי float בעצם מחושבים לפי שיטת הנקודה הצפה, וכל מה שדרשו ממך לעשות זה לכתוב פונק' שמחברת בין 2 מספרים לפי שיטת הנקודה הצפה ולהחזיר את הערך החדש?
היי, הייתי היום בראיון בceva למשרה 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 )השורה האחרונה הפוכה(
היי ציקו, אין לי מושג מה זה שיטת הנקודה הצפה, אבל כן ביקשו ממני לכתוב פונקציה שמקבלת שני שברים שמחושבים לפי השיטה שכתבתי למעלה ומחברת ביניהם ומחזירה את המספר החדש מחושב לפי אותה שיטה. אי אפשר להשתמש בfloat, רק בlong. אשמח אם תכתוב לי פה את הפתרון ציקו. תודה,
היי ציקו, אין לי מושג מה זה שיטת הנקודה הצפה, אבל כן ביקשו ממני לכתוב פונקציה שמקבלת שני שברים שמחושבים לפי השיטה שכתבתי למעלה ומחברת ביניהם ומחזירה את המספר החדש מחושב לפי אותה שיטה. אי אפשר להשתמש בfloat, רק בlong. אשמח אם תכתוב לי פה את הפתרון ציקו. תודה, שלום שוב אורחת:), שיטת הנקודה הצפה זה בידיוק כמו שרשמת למעלה (ייצוג במחשב של מספרים/שברים מאוד גדולים או מאוד קטנים.. אפשר להתייחס לזה כאל מימוש חומרתי של float/double). לביצוע חיבור/חיסור בין 2 מספרים, חייבים קודם כל לדאוג שהאקספוננטים יהיו זהים (ז"א, אם יש 2 מספרים שאחד עם אקספוננט 2 והשני עם אקספוננט 3, אז להחסיר מהמספר עם אקספוננט 3 אחד ולהעביר את הספרה שלו למנטיסה (בבינארי זו בעצם הכפלה ב-2 אני חושב.. אבל צריך לחשוב על זה קצת יותר לעומק). אשתדל לכתוב מחר פתרון לשאלה הזאת...
היי צ'יקו, מה אתה לומד? ומאיפה ידעת שזה נקרא "שיטת הנקודה הצפה"? אני לומדת מדעי המחשב ושם לא מלמדים את זה.. ומהקורות חיים שלי ניתן לראות שאין לי שום ניסיון בתחום אז אין לי מושג איך הם חשבו שאני אמורה לדעת את זה.. מבאס שפוסלים מועמד לפי שאלה אחת. אבל לא נורא, הכל לטובה:)
באמת שאלה מוגזמת! לומדים את זה בדרך כלל בקורס "מערכות סיפרתיות" או "אלקטרוניקה סיפרתית" אני למדתי את זה אבל בחיים לא הייתי כותב להם את הקוד...לא זוכר בכלל
יש עדכון של שאולות מראיון? אך הולך שם? ראיון בכתיב?
הי, מישהו יכול לפרט מה שואלים בראיון שני? תודה
הי, מישהו יכול לפרט מה שואלים בראיון שני? תודה את יכולה לעגיד מה היה בראיון ראשון?
לגבי הראיון הראשון, פשוט תעשה חיפוש בקבוצה הזאת של המילה CEVA ותמצא את כל השאלות האפשריות ששאלו.. לא חידשו כמעט מהפעמים הקודמות.
לגבי הראיון הראשון, פשוט תעשה חיפוש בקבוצה הזאת של המילה CEVA ותמצא את כל השאלות האפשריות ששאלו.. לא חידשו כמעט מהפעמים הקודמות. מצדיק, אין מה לחדש
לגבי הראיון הראשון, פשוט תעשה חיפוש בקבוצה הזאת של המילה CEVA ותמצא את כל השאלות האפשריות ששאלו.. לא חידשו כמעט מהפעמים הקודמות. ובראיון השני ?
משהו היה שם לאחרונה?
התראיינתי לפני כמה ימים בCEVA למשרת מהנדס אוטומציה. בקיצור הראיון היה שעתיים ,5 דקות ראשונות הוא פירט על התפקיד\הצוות\החברה ואז נתן לי את השאלה לבנות קוד אסמבלי שיממש A*B=C ע"י הפקודות INC-העאלת הערך השמור ברגיסטר באחד DEC-הפחתת ערך השמור ברגיסטר באחד JNZ-קפיצה לנקודה מסוימת בקוד (LABEL) כל עוד הפעולה האחרונה שנעשתה בסמוך לשורת קוד זו לא שווה אפס. HALT-עצירת הקוד לגמרי. ניתן להשתמש בכמה רגיסטרים שרוצים(עדיפות לכמה שפחות...) וערכי כל הרגיסטרים מאותחלים לאפס. לא ראיתי שמישהו טרח לרשום קוד אז..... הצעת פתרון: (תשובה לשאלה של המראיין לגבי מקרי קצה) בהתחלה צריך לדאוג שאם יש מקרה בו A=0 או B=0 נדלג על כל הקוד משום שאז בלאו הכי שמור אפס ברגיסטר C. ראשית נבדוק האם יש באחד מהם אפס: * INC D //will be explained at INC A DEC A JNZ LABEL1 //if A=0 -> A+1-1=0 then we will exit the program and c=0 if not it will jump to label1 // HALT LABEL1 INC B DEC B JNZ LABEL2 //same concept as above for register B HALT DEC B LABEL2 INC B// In this loop register B gain again the value it lost at Label3 loop DEC D//*the first time the program runs the value of D decreases to minus 1 that //why we need to give it initial value of 1 by increasing its value by 1 JNZ LABEL2 LABEL3 INC C INC D//each time this inner loop works ,the value of B goes to zero for that problem DEC B//-the register D is gaining the value of B JNZ LABEL3//Inner loop-runs on B DEC A JNZ LABEL2//outer loop-runs on A HALT אחר כך הוא ביקש ממני לפתח את האלגוריתם למשוואה |C=|A-B אני אעלה את זה בהזדמנות כי זה ארוך לפוסט אחד.... ובקשר לשאלה של הקופסאות MIN וMAX שהייתה בעבר (לא שהיה לי אותה אבל...על כל מקרה) הצעת פתרון: נניח וישנם 3 משתנים X,Y,Z למספר הגבוה מהשלושה צריך לממש: MAX(Z , MAX(X,Y)) למספר הנמוך מהשלושה צריך לממש: MIN(Z , MIN(X,Y)) למספר האמצעי: MAX( MIN(Z , MAX(X,Y)) , MIN(Y,MAX(X,Z))
שלום פינץ תודה רבה על הצעת הפיתרון מעולה אך אני חושב שיש אולי טעות טנה בוד הבא LABEL1 INC B DEC B JNZ LABEL2 //same concept as above for register B HALT אתה צריך ללכת ישירות ל LABEL3 ולא 2 אתה לא צריך בשלב ההתחלתי ש B ייטען בחזרה אתה טוען אותו אחרי שתבציע את LABEL3 תודה רבה
הצעת פתרון ל |C=|A-B INC A DEC A JNZ LABEL0 INC B DEC B JNZ LABEL6 HALT LABEL6 INC C DEC B JNZ LABEL6 HALT LABEL0 INC B DEC B JNZ LABEL1 LABEL7 INC C DEC A JNZ LABEL7 HALT LABEL1 DEC A JNZ LABEL3 LABEL5 DEC B LABEL2 INC C DEC B JNZ LABEL2 HALT LABEL3 DEC B JNZ LABEL1 LABEL4 INC C DEC A JNZ LABEL4 HALT run on it with truth table it should cover all the cases....... Good-luck!
אהלן חברים, מישהו התראיין לאחרונה למשרת מפתח אוטומציה ויכול לחלוק מה היה לו? תודה חברים!
התראיינתי לפני כמה ימים בCEVA למשרת מהנדס אוטומציה. בקיצור הראיון היה שעתיים ,5 דקות ראשונות הוא פירט על התפקיד\הצוות\החברה ואז נתן לי את השאלה לבנות קוד אסמבלי שיממש A*B=C ע"י הפקודות INC-העאלת הערך השמור ברגיסטר באחד DEC-הפחתת ערך השמור ברגיסטר באחד JNZ-קפיצה לנקודה מסוימת בקוד (LABEL) כל עוד הפעולה האחרונה שנעשתה בסמוך לשורת קוד זו לא שווה אפס. HALT-עצירת הקוד לגמרי. ניתן להשתמש בכמה רגיסטרים שרוצים(עדיפות לכמה שפחות...) וערכי כל הרגיסטרים מאותחלים לאפס. לא ראיתי שמישהו טרח לרשום קוד אז..... הצעת פתרון: (תשובה לשאלה של המראיין לגבי מקרי קצה) בהתחלה צריך לדאוג שאם יש מקרה בו A=0 או B=0 נדלג על כל הקוד משום שאז בלאו הכי שמור אפס ברגיסטר C. ראשית נבדוק האם יש באחד מהם אפס: * INC D //will be explained at INC A DEC A JNZ LABEL1 //if A=0 -> A+1-1=0 then we will exit the program and c=0 if not it will jump to label1 // HALT LABEL1 INC B DEC B JNZ LABEL2 //same concept as above for register B HALT DEC B LABEL2 INC B// In this loop register B gain again the value it lost at Label3 loop DEC D//*the first time the program runs the value of D decreases to minus 1 that //why we need to give it initial value of 1 by increasing its value by 1 JNZ LABEL2 LABEL3 INC C INC D//each time this inner loop works ,the value of B goes to zero for that problem DEC B//-the register D is gaining the value of B JNZ LABEL3//Inner loop-runs on B DEC A JNZ LABEL2//outer loop-runs on A HALT אחר כך הוא ביקש ממני לפתח את האלגוריתם למשוואה |C=|A-B אני אעלה את זה בהזדמנות כי זה ארוך לפוסט אחד.... ובקשר לשאלה של הקופסאות MIN וMAX שהייתה בעבר (לא שהיה לי אותה אבל...על כל מקרה) הצעת פתרון: נניח וישנם 3 משתנים X,Y,Z למספר הגבוה מהשלושה צריך לממש: MAX(Z , MAX(X,Y)) למספר הנמוך מהשלושה צריך לממש: MIN(Z , MIN(X,Y)) למספר האמצעי: MAX( MIN(Z , MAX(X,Y)) , MIN(Y,MAX(X,Z)) פינץ' היקר תודה רבה על כל המידע. אשמח אם תוכל בבקשה לענות לי האם מדובר במשרת Automation engineer? האם הצלחת לעבור את הראיון? אודה על תשובתך.
שלום מישהו היה לאחרונה בריאיון למשרת VLSI? יכול לספר על סוג השאלות? תודה רבה
היי אבי. אתה יכול לספר קצת על הראיון?
יש לי תשובה קצת יותר פשוטה ל C = |A-B| w ( להתעלם מה-w): LABEL 3 DEC A JNZ LABEL 1 LABEL 2 INC C DEC B JNZ LABEL 2 DEC C HALT LABEL 1 DEC B JNZ LABEL 3 LABEL 4 INC C DEC A JNZ LABEL 4 HALT הרעיון הוא להוריד מ2 המספרים עד שבאחד הגעת לאפס, ומה שנשאר במספר השני זה התשובה פחות או יותר.
לא עובד כאשר B הינו מספר שלילי. לדוגמא A=5, B = -3. לפי הקוד נחסיר משניהם אחד עד שאחד מהם יהיה 0 לכן A=0, B = -8. לאחר מכן נוסיף לC אחד עד ש-B יהיה 0 (מ-B נחסיר 1 כל פעם) ונגיע ללופ אינסופי. יש לי תשובה קצת יותר פשוטה ל C = |A-B| w ( להתעלם מה-w): LABEL 3 DEC A JNZ LABEL 1 LABEL 2 INC C DEC B JNZ LABEL 2 DEC C HALT LABEL 1 DEC B JNZ LABEL 3 LABEL 4 INC C DEC A JNZ LABEL 4 HALT הרעיון הוא להוריד מ2 המספרים עד שבאחד הגעת לאפס, ומה שנשאר במספר השני זה התשובה פחות או יותר.
היי מישהו היה לאחרונה בראיון לחברת CEVA לתפקיד IT support specialist ויכול לתרום קצת ממהלך הראיון ומהשאלות שם? תודה
משהו היה בראיון ב CEVA למשרת פיתוח אוטומציה ויכול לכתוב שאלות?
היי חחחח, יש לי בשבוע הבא.. מתי יש לך?
היי חחחח, יש לי בשבוע הבא.. מתי יש לך? היי , תוכל בבקשה לעדכן לגבי שאלות? האם יש מישהוא שעשה ראיון לאחרונה ב CEVA? במיוחד בתקופת הקורונה ומרחוק?