יש מערך עם המספרים 1,2,3(כל מספר כמה פעמיים או שאין בכלל). אני צריך למיין את המערך כך שכל ה3 מצד שמאל וכל ה1 מצד ימין בסיבוכיות הנמוכה ביותר. אסור להקצות עוד מערך.
1 כתיבת קוד לחיפוש בינארי
2 ספירת מספר ביטים של 1 במשתנה long
3 נתון מערך ענק של מחרוזות וצריך לעבור בלולאה על המערך עד למציאת מחרוזת מסוימת. בקוד רגיל יש פעמיים if כל איטרציה, השוואת מחרוזת ותנאי סיום. איך אפשר לשפר?
ריאיון ראשון אישי - מקצועי, ריאיון שני מקצועי, ריאיון שלישי hr
שאלות מתוך הראיון
לתאר פרוייקט שעשיתי, לספר על באגים שהיו לי שאלת ood משחק קלפים (צריך לחלק), נכנסו גם למימש, לעשות reverse לsingle linked list, איטרטיבי ורקורסיבי. שאלות על מולטיטרדינג, איך לממש q עבור producer - consumer
הגעתי רק לשלב הראיון הטלפוני, אותו לצערי לא עברתי.
שאלות מתוך הראיון
1. מה ההבדלים בין רשימה לבין מערך
2. אם יש רשימה שאמורים להיות בה 100 מספרים, אבל חסר מספר אחד. כיצד ניתן ב O(1) לדעת מה המספר החסר
תשובות
הוסף תשובה
|
לצפיה בתשובות
דצמבר 2016
לגבי ההבדלים נראה לי שבסוף הם ניסו לכוון שההבדל המשמעותי הוא בזמן הריצה
מאי 2017
אין סיכוי שאפשר לגלות בo1 מי חסר, אולי on וגם, חסרים פרטים בשאלה הזאת!
יולי 2017
מה יש לכם ! אם מספר קבוע של איברים אז בהכרח זה O(1) חחחחח אז לעבור על הכל
פברואר 2018
התשובה של 2:(השאלה היא כשכל מספר חוזר פעם אחת)
נסכום את כל האיברים בפעם הראשונה. בפעם השניה נסכום בfor כמה זה 1+2+3+...+100. ואז נחסר את הסכומים ונגלה את המספר החסר.
תחילה מציגים את החברה ואחרי זה מבקשים שתספר על עצמך.
אחר כך שאלות מקוצועיות בC.
שאלות מתוך הראיון
כתוב פונקציה שמקבלת byte וסופרת את מספר הביטים
תשובות
הוסף תשובה
|
לצפיה בתשובות
דצמבר 2016
יש את הפיתרון הבנאלי עם לולאה בגודל 8, שיפט לימין, בדיקת הביט ועדכון counter.
יש פיתרון נוסף יותר מתוחכם: מחסירים 1 מהבייט שמקבלים ועושים and של התוצאה הנוכחית עם הערך הקודם של הבייט. ממשיכים כך עד שהבייט שווה לאפס. מספר הפעמים שעושים זאת שקול למספר הביטים הדלוקים.
הפיתרון הכי יעיל, במידה ואין בעיה של זיכרון, הוא לעשות פונקציית אתחול שמאתחלת מערך בגודל 255 באופן הבא: כל ערך במערך מייצג את מספר הביטים הדלוקים של האינדקס שלו במערך. (למשל באינדקס 7 במערך יהיה את המספר 3)