Learn from real interview experiences shared by the community
You can search for a specific company, or by a title
שלום חבר'ה יש לי יום רביעי מבחנים בצ'ק פיונט. אני יודע שיש שלושה ימים (היא שאלה איזה יום נוח לי). מדובר על משרת סטודנט ושיש שלושה מבחנים. הראשון ב-c\c++ עוד אחד שבודק איך אני מתמודד עם חומר חדש ועוד משהו שאני לא זוכר. יש למישהו מושג מה הולך להיות לי? אשמח לכל טיפ. (זה פעם ראשונה שאני עושה מבחנים כאלה) תודה!
שלום, גם לי יש מבחן זהה לשלך... אני זוכר שהחלק השלישי זה לבנות user interface. אני מקווה שימצאו אנשים שידעו וישתפו אותנו במה בדיוק כולל המבחן שלהם.
היא בעקרון שלחה לי במייל את סדר היום: "היום מורכב משלושה מבחנים: הראשון הוא מבחן תכנות, שניתן לעשות אותו בשפת C/C++. המבחן השני הוא מבחן שבודק יכולות טכניות (אין צורך להתכונן אליו). והמבחן השלישי הוא מבחן שבודק התאמה למשרות אפליקטיביות יותר, הוא לא מבחן תכנותי, וגם לא חובה. למעשה רק המבחן הראשון הוא מבחן תכנות". השאלה מה יש במבחן הראשון
נדחה לי למחר. מישהו עשה???
אני אמור לעשות את המבחנים ביום שני הבא מישהו זוכר מה היה במבחן בשפת C?
יש לי ישר אחרי פסח את אותו המבחן בדיוק בצ'ק פוינט. בבקשה תנדבו פרטים על מה המבחן ומה שואלים....
יתנו לך לממש פרוטוקול תקשורת בין קליינט לסרבר (A ו B) כלומר מכינים לך את הבסיס ואתה ממש פונקציה שמטפלת במצבי הפרוטוקול. הפונקציה מקבלת איזהשהוא מצביע לstruct של מבנה הודעות שהם יצרו. לפרוטוקול יש 5 מצבים ועליך להחזיק משתנה ששומר על מצב הפרוטוקול בכל זמן נתון. ישנן הודעות שצריכות לעבור בין A ו - B. הפונקציה מקבלת את ההודעה ובמידה ותחילת ההודעה מתאימה ממשיכים למצב הבא. (בודקים התאמת מחרוזות פשוט עם ()strncmp וכאלו) ההודעות יכולות להתקבל ויכולות להיכשל. משהו כזה. זה תרגיל די ארוך, הם מקציבים לו 4 שעות. בד"כ אנשים מגיעים אחרי שהם פתרו את התרגיל בבית ומסיימים קודם
צירפתי את הטבל בחלקים Direction state A TO B 1 B TO A 2 A TO B 3 A TO B 3 B TO A 4 B TO A 5 text OPEN_CONNECTION OPEN_CONNECTION_ACKED One of: LIST LIFT GEAR SAVE SAVEALL … EXIT The previous state match name twice Always a total of two spaces( small letters and numbers can also be included {a..z, 0..9}) EXIT_ACKED New state 2 3 4 5 3 1 example OPEN_CONNECTION OPEN_CONNECTION_ACKED LIST EXIT LIST LIST Or: LIST abcpr5s5svw LIST EXIT_ACKED
אם מחברים את כל החלקים יוצאת הטבלה בשלמותה פשוט לא הצלחתי להדביק אותה באופן יותר מסודר...
כאשר התקבלה תגובה נכונה שמתאימה במצבה להגדרת הפרוטוקול הפונקציה תחזיר RET_VALID ובמידה ולא הפונקציה תחזיר RET_INVALID ותחזור למצב ההתחלתי שהוא מצב 1
היי, תודה על התגובה ! לפי מה שהבנתי מהכתוב הטבלה נתונה בתרגיל. אתה יכול לתת דוגמא למימוש שכתבת ב-C או ++C ? תודה רבה !
זה בגדול, הייתי שם ממש מזמן וזאת גרסא שמצאתי, היא לא גמורה אבל אולי תבינו את העיקרון. בהצלחה!! // checkpoint.cpp : Defines the entry point for the console application. // #include <string.h> //#include "stdafx.h" #define OPEN_CONNECTION_LEN sizeof("OPEN-CONNECTION") #define OPEN_CONNECTION_ACKED_LEN sizeof("OPEN CONNECTION ACKED") #define LIST_LEN sizeof("LIST") #define LISTALL_LEN sizeof("LISTALL") #define VALID 0 #define NOT_VALID 1 int state3_func(int *state, struct TestUnit *test_unit, int stringSize, char *lastCommand){ if (test_unit->dir == 1){ switch (test_unit->text1){ case 'L': switch(test_unit->text1){ case 'S': //LIST or LISTALL if(stringSize==LIST_LEN){ if(strncmp(test_unit->text1,"LIST",stringSize)==0){ strncpy(lastCommand,"LIST", LIST_LEN); *state= 4; return VALID; } } else if(stringSize==LISTALL_LEN){ if(strncmp(test_unit->text1,"LISTALL",stringSize)==0){ strncpy(lastCommand,"LISTALL", LISTALL_LEN); *state= 4; return VALID; } } } break; case 'F': // LIFT break; } break; case 'G': break; case 'S': break; case 'E'://return to state =5 if exit break; } } *state = 1; return NOT_VALID; } state4_func(int *state,struct TestUnit *test_unit, int strSize, char *lastComend){ int lastCommandSize= strlen(*lastComend); if (lastCommandSize*2+2 <= strSize) { if(strncmp(lastComend, testUnit->text1, lastCommandSize)==0){ if(testUnit->text1==' '){ int i = 1; while ((testUnit->text1>= '0' && testUnit->text1<='9' ) ||(testUnit->text1>= 'a' && testUnit->text1<='z' )) { i++; } if(testUnit->text1==' '){ if((lastCommandSize*2+1+i)==strSize){ if(strncmp(lastComend, testUnit->text1, lastCommandSize)==0){ *state = 3; return VALID; } } } } } *state =1; return NOT_VALID; } int do_test(struct TestUnit *test_unit){ int static state=1; static char lastComend; int strSize = strlen(test_unit->text1); switch(state){ case 1: if( test_unit->dir == 0){ if(strSize == OPEN_CONNECTION_LEN){ if (strnmp("OPEN-CONNECTION",test_unit->text1, OPEN_CONNECTION_LEN)==0){ state = 2; return VALID; } } } return NOT_VALID; case 2: if( test_unit->dir == 1){ if(strSize == OPEN_CONNECTION_ACKED_LEN){ if (strnmp("OPEN_CONNECTION_ACKED_LEN",test_unit->text1, OPEN_CONNECTION_ACKED_LEN)==0){ state = 3; return VALID; } } } state = 1; return NOT_VALID; case 3: return state3_func(&state, test_unit, strSize, lastComend); break; case 4: return state4_func(&state, test_unit, strSize, lastComend); break; case 5: break; } }
איפה מצאת את זה ?? יש סוגר מסולסל מיותר בפונקציה state3_func . למי שייכים הקייסים הלא ממומשים לסוויץ' החיצוני או הפנימי ? תודה רבה !!!
F לפנימי השאר לחיצוני. יש פה עוד הרבה לממש וצריך קצת זמן להבין את זה. איפה מצאת את זה ?? תודה רבה !!!
למישהו יש את הקוד מסודר בשביל להעלות אותו לכאן. את הקוד של הראיון עבודה בצ'ק פויינט???
הפוסט לא מעודכן. לצ'ק פוינט יש מבחן חדש
ילדה, אפשר עדכון אם כך?
מצטרף לבקשה, יש לי יום ראיונות כזה בראשון הקרוב... בתודה מראש לעוזרים
שלום לכולם , יש יום מבחנים בצ'ק פוינט בשבוע הקרוב האם יש למישהו מושג איזה שאלות הם שואלים במבחן תכנותי ? ועל צריך לשים דגש בהכנות ל יום המבחן הנ''ל
מבחן תכנות עם 4 שאלות: הראשונה- לממש חיפוש רקורסיבי בעץ מיון בינארי (שני בנים לכל צומת, השמאלי קטן יותר מהאבא והימני גדול יותר מהאבא). השניה- לפי API שהם נותנים לך לדעת איך לקרוא לפונקציה. השלישית: נתון לך מחסן מילים ואתה צריך באמצעות פונקציות של STRING לוודא שבמחרוזת שנתונה לך לא מופיעה אף אחת מהמילים הנ"ל. הרביעית: אתה מקבל המון הודעות שנשלחות ממען לנמען, למשל מ 24 ל 36, מ 55 ל 2 וכו', ואתה צריך להחזיר רשימה של הכתובות של כל אלה שאחראים ליותר מ 10% מההודעות. בהצלחה.
מבחן תכנות עם 4 שאלות: הראשונה- לממש חיפוש רקורסיבי בעץ מיון בינארי (שני בנים לכל צומת, השמאלי קטן יותר מהאבא והימני גדול יותר מהאבא). השניה- לפי API שהם נותנים לך לדעת איך לקרוא לפונקציה. השלישית: נתון לך מחסן מילים ואתה צריך באמצעות פונקציות של STRING לוודא שבמחרוזת שנתונה לך לא מופיעה אף אחת מהמילים הנ"ל. הרביעית: אתה מקבל המון הודעות שנשלחות ממען לנמען, למשל מ 24 ל 36, מ 55 ל 2 וכו', ואתה צריך להחזיר רשימה של הכתובות של כל אלה שאחראים ליותר מ 10% מההודעות. בהצלחה. מישהו שהיה שם לאחרונה יודע האם השאלה של חיפוש מילה ב-string מתוך מחסן מילים עדיין נשאלת? ואם כן האם מותר להשתמש בכל פונקציה שאני רוצה מספריית string.h ? תודה רבה!
תודה על התגובה ובאיזה שפת תכנות הם מעדיפים , כי לפי משאמרו לי יש בחירה די גדולה
קאלוק , תודה רבה!!!!! עוד כמה דברים: 1. מהי סביבת העבודה עבור java ? האם מדובר באקליפס? 2. לגבי השאלה עם הרקורסיה בעץ הבינארי... מה עלינו להחזיר בדיוק ? אינדקס מסויים? 3. לגביהשאלה הרביעית: איזה מבנה נתונים ההודעות מועברות ? כלומר איך אנו רואים את ההודעות ? האם רק על ידי קריאה לפונקציה שאנחנו נכתוב? מקווה שהייתי מובנת בשאלות ושלא הגזמתי בשאלות ותודה רבה שוב פעם!
עד כמה שידוע לי הם מעדיפים C ו C++ (מן הסתם עדיף להיבחן ב C++ זה יחסוך לכם זמן). לא נבחנתי בג'אווה אז אני לא בטוח מהי סביבת העבודה... כל המבחן הוא בעצם STRUCT שמכיל 2 מספרים- כתובת של השולח וכתובת של המקבל (כתובת מיוצגת ב INT) ובנוסף סטרינג של ההודעה שהשולח רוצה להעביר. ברקורסיה עם העץ הבינארי יש בעצם כתובות שאסור שיעברו ביניהם הודעות. למשל אם בעץ יש את המספר 6 אז אסור שהודעה מ 6 תישלח ואסור ש 6 יקבל הודעות. מה שצריך לעשות זה לחפש אם הכתובת של השולח או הכתובת של המקבל מופיעים בעץ ואם הם מופיעים להחזיר TRUE, אחרת FALSE (או הפוך, יהיה כתוב לך שמה). בשאלה הרביעים צריך לכתוב פונקציה שלאחר מכן תוכנה של צ'קפוינט מריצה עליהם אלפי קלטים, ולפי התוצאות הם רואים אם צדקת או לא. בהצלחה
הי קאלוק, (או כל אחד אחר שהיה וזוכר) אפשר בבקשה לפרט יותר אודות המבחן. בנוסף למיטב ידיעתי אפשר לעשות אותו ב- C,CPP,C# ו- JAVA איזה IDE הם נותנים לך?
ושאלה קטנה נוספת האם יש גישה לאינטרנט בזמן המיבחן או גישה לחומר עזר כלשהו לפי שפת תכנות שנבחרה תודה
לגבי סביבת העבודה: לפי מה שהבנתי לjava זה אקליפס ולכל השאר ויז'ואל סטודיו. מותר להיעזר באינטרנט בשעת המבחן.
ערב טוב מישהו יכול להגיד מה מכיל בתוכו מבחן טכני שבא אחראי מבחן תכנותי
מישהו יכול להסביר לי בבקשה מה זה החלק השני : "לפי API שהם נותנים לך לדעת איך לקרוא לפונקציה."?
אם למשל אני נבחן ב C#
היי קאלוק , האמת שהמבחן נשמע דיי פשוט , מה שמפחיד אותי יותר הוא : חיפוש מילה בטקסט : יש להם הגבלה על הזמן ריצה ? אני בניתי סימולציה של המבחן בצ'ק פויינט (מימוש של עץ בינארי , חיפוש בעץ בינארי , חיפוש מילה בסטרינג ומי מן התחנות מחזיקות יותר מ10 אחוז של ההודעות - בדיוק לפי ההוראות שלך , כמובן שאת שאלה 2 , שאלת ה API לא יכלתי לממש) . הייתי במבחן שלהם בעבר ולא עברתי את החלק הראשון בגלל שלא התכוננתי מספיק טוב כנראה . השאלה שלי בעצם היא ככה : האם חיפוש מילה בסטרינג עם strtok יכול לסגור לי את הפינה ? אתה יכול להגיד לי מה הם ההגדות (מהו בעצם מבנה הסטרינג ?) האם כשאני עושה סטטיסטיקה של מי מהתחנות מחזיק יותר מעשר אחוז אני יכול לשאר שמספר התחנות הוא נניח בין 1 ל 100 ואז עפ"י זה להחזיק מערך - ? או שאני לא יודע מהם מספרי התחנות ? כלומר מספר התחנות נע בין 1 ל אינסוף .. ממש אשמח לתשובה , יש לי ראיון עבודה שם ביום חמישי .
היי יונתן , לי יש מבחן שם מחר, אמרו לי שיש שלושה שלבים כאשר השלב השלישי הוא רשות. השלב הראשון תכנותי והשני למידה של סביבת העבודה. מכיון שהיית כבר בעבר במחן שלהם יש לך טיפים שאתה יכול לתת לי איך להתכונן? אני לא יודע מה יש לי כל כך להתכונן למבחן תכננותי......תודה!
היי כולם. יש לי בקרוב יום ראיונות. אני מחפש מידע הכי רלוונטי שאפשר. מבטיח אחרי הריאיון לעשות פוסט מפורט עם המידע שלי, תרומה בחזרה לאנשים שכן תורמים, וגם לכל השאר (: מיסטר, אני מבין שהיה לך שם ראיונות היום - תוכל בבקשה לפרט (בפוסט או בפרטי) מה שאלו עד כמה שאתה זוכר ויכול? אודה לך מקרב לב
לזה שהיה אמור להבחן השבוע...אתה יכול בבקשה לעדכן מה היה? הם נשארו עם הנוסח של ה-4 שאלות או חזרו לשאלה על הפרוטוקול תקשורת? אשמח לפרטים אני אמור להבחן שם גם אם אעבור ראיון, תודה!!!
אגב, זה נכון שיש להם עדיפות לC/C++ או סתם שטות שאנשים אומרים?
נשארו עם השאלה עם ה-4 חלקים כמו שקאלוק פירט. עדיפות לC ול C++ באמת שאין מה להתכונן המבחן ברמה בסיסית, יש הוראות ברורות ומהנדס מטעמם שעונה לשאלות
תודה רבה מיסטר על התגובה הם ממש הצהירו שיש עדיפות לC++?
הייתי ביום המבחנים. למרות שהעיסוק שלי בשנים האחרונות היה רק ב-C#, החלטתי כבר מראש שאת המבחן אני עושה ב-c. ואכן, כשבאתי אליהם הבחור שם הצהיר "יש לנו פחות משרות JAVA או C#. אנחנו עובדים יותר לואו-לבל שזה c וגם (לעיתים?) c++. ככה שתקחו את זה בחשבון. אבל קודם כל שהתוכנית תעבוד (ובצורה יעילה). אם באתם במטרה לעשות את זה בג'אווה או c# ואתם חושבים שלמשל ב-c לא תצליחו אז תעשו בשפה הנוחה לכם, כי חשוב שתצליחו לבצע את המשימה על פני לבחור שפה שלא תצליחו בה. המבחן הוא 4 שעות. על מנת לעבור יש לעשות 3 מתוך 4 משימות במבחן הראשון. אם סיימתם לפני, תודיעו לי בטלפון. בהמשך (שזה בערך בשעה 13:00) אני אבוא עם סנדוויצ'ים, שאת חלקם אני אוכל לבד בדרך אל החדר שלכם ואז לא תבינו למה אין מספיק סנדוויצ'ים לכל הנבחנים)." אז, כאמור, עשיתי את המבחן הראשון ב- c. עשיתי 3 מתוך 4. עשיתי את משימות 1,2,4 די מהר, ואז אלוהים יודע איך (כנראה בגלל חוסר ריכוז), בזבזתי את כל הזמן בשביל לייעל את משימה 4 כי היא מחייבת יעול, והיו לי באגים לוגיים בניסיונות יעול ובסוף כשנגמר הזמן חזרתי לקוד המקורי הלא-מיועל. עברתי למבחן השני. עבודה מול לינוקס. שזה ללכת לפי הוראות ולאחר ביצוע מספר הוראות להגיד מה הפלט. ככה מספר פעמים... כמו שכבר בטח אמרו כאן, אין צורך בהכרות עם מערכת הפעלה זו, אבל מי שיש לו ידע מוקדם יתפור את המשימה הזאת. הצלחתי גם במשימה הזאת. הבעיה היא שלא חזרו אלי... אני יודע שכל אלה שפרשו בזמן המבחן קיבלו הודעה באימייל ממש מהר ש"מצטערים, אין לנו משרות בשבילך". אבל אני כאחד שעבר את שני המבחנים, לא קיבלתי הודעה, עד שבערך שבוע-שבועיים אחרי שלחתי להם הודעה ושאלתי מה קורה... אמרה לי "בלה בלה בלה יאדה יאדה יאדה, שבו את המבחן התכנותי לא עברת". כמו שאמרתי, עברתי את המבחן התכנותי, אבל כנראה בגלל הגורם החשוב שזה יעילות (במשימה 4), נפלתי.
היי אורח, תודה על שיתוף המידע. מישהו יודע אם העץ הבינארי בשאלה 1 הוא ממויין? צריך לממש לו מיון?
בנוסף, מישהו יודע האם בSTRING צריך לחפש רק מילים נפרדות, או צריך לחפש גם בתוך מילה (למשל את המילה water במילה watermelon, סתם דוגמא).
חברוקי או כל מי שהיה לאחרונה ביום המבחנים - האם תוכלו לפרט את השאלות שנשאלתם? התיאור של קאלוק היה לא מספיק מפורט וקצת לוקה בחסר... המון תודה!
עוד שאלה - ידוע לכם אם מאפשרים לעבוד עם הgcc?
התיאור של קאלוק ראוי. מעבר לזה אני מציע ידיעה טובה של השפה שבה נבחנים (יש עדיפות לC מעל לכל האחרות לפי מה שאני הבנתי), חייבים לסיים הכל (למרות שהם בכל מקרה מעבירים לשלב הלינוקס) אחרת אין הרבה סיכוי לא לקבל "אין לנו משרות" במייל אח"כ.
תודה חברוקי על התשובה. מה היתה סביבת העבודה ל-C? האם 4 השאלות מבוססות על מבנה נתונים עץ בינארי או שרק הראשונה (לא הצלחתי להבין את זה מקאלוק)? תוכל לכתוב בלשונך את ארבעת השאלות? עוד ניסוח יכול להאיר עיניים על פרטים שלא הובנו בראשון המון תודה!
שלום לכולם, יש לי מבחן בקרוב למשמרת SECURITY ANALYST לסטודנטים, יש מבחן נאמר בשפת C מישהו יודע עליו משהו? אשמח מאוד לתגובות.
חברוקי או כל מי שהיה לאחרונה, אשמח לתגובה!
יוקנת, להלן בקצרה התרגילים: הקדמה: בכל התרגילים (אולי חוץ מבשלישי שאותו לא עשיתי) יש לך פונקציה אחת (או שלושה, כבר לא זוכר) ריקה ואת צריכה למלא אותה. הפונקציה הזאת היא חלק ממנגנון מוכן. לצורך כך שהמנגנון יעבוד את צריכה למלא את הפונקציה בצורה הנכונה לפי הדרישה. 1. הפונקציה הריקה היא חלק ממנגנון בדיקת האם ה-source ip או ה- destination ip (של ההודעה שהתקבלה כפרמטר של הפונקציה) נמצאים ב"רשימה שחורה" נתונה (ה"רשימה השחורה" היא במבנה של עץ בינארי). את (אם באמת את נקבה ולא איזה בחור שסתם מתבדח עם השם "יוקנת" מ"ארץ נהדרת") אמורה לדעת איך להתקדם בעץ. אם אחד ה-ip-ים נמצא בעץ אז הפונקציה מחזירה ערך enum (שאומרת שמצאנו ב"רשימה השחורה"), אחרת................. 2. נותנים לך ספרייה עם פונקציות להקצאת אנטי וירוס ושימוש בו... אז בפונקציה הריקה הראשונה את צריכה להקצות את האנטי וירוס (בין היתר זה לטעון את רשימת הוירוסים), בפונקציה הריקה המרכזית את מריצה את האנטי וירוס על ההודעה שהתקבלה כפרמטר, ובפונקציה השלישית הריקה את משחררת את ההקצאה (בעזרת פונקציה מהספרייה אם אני זוכר נכון). 3. למצוא באגים נראה לי. 4. מוניטורינג - הפונקציה הראשית בונה מערך של ה-source ip-ים שראינו אותם בלפחות 10 אחוז מההודעות שהגיעו (גם כאן הפונקציה הריקה המרכזית מקבלת כפרמטר הודעה). יש צורך להשתמש ב-האשטייבל (הם נותנים ספרייה עם פונקציות עבור הקצאה ושימוש בו - אם אתה יודע לקרוא אנגלית בסיסית ויש לך טיפת יכול למידה עצמית אתה אמור לדעת איך להשתמש בזה, אחרת באמת לא מגיע לך להתקבל לעבודה).
רוב תודות יוחנן. האם עברת את הראיון?
אתם כאלו פטאתים,אתם מתמיינים למחלקת ה R&D של החברה שזה אומר שאתם צריכים לפתח מוצרים ולתקן באגים במוצרים קיימים מה אתם בדיוק תעשו במצב של עבודה אמיתית אם מבחן פשוט שיש לכם בו סביבת עבודה נורמלית + אינטרנט אתם לא מסוגלים לעשות ? ונניח והצלחתם להשיג את המבחן ולפתור אותו אח"כ יש ראיונות עם ראשי צוותים מה תעשו אז ?
נתמודד.
ררר, למה המרמור? בתואר שלך לא למדת למבחן בעזרת מבחנים קודמים כדי שתהיה היכרות עם סגנון השאלות? אז למה פה זה שונה?
לגבי מציאת מילים מתוך string - האם הכוונה למילה שלימה מתוך ה string או גם חלקי מילה צריך למצוא?
מישהו יכול לרשום את התשובות של השלב הראשון ב C?
מסכים שיש פה שאלות קיטבג ברמות מדהימות. אנשים תיארו את כל השלבים ואם יאמרו לכם יותר לא תדעו להתמודד עם המבחן כי "גילו לכם", אתם מכשילים את עצמכם בכח.
אף פעם לא התמודדתי עם עצים בינארים ב C. מישהו יכול לתת לינק לשאלה דומה? (לא חייב אותה שאלה בדיוק, רק דוגמאות לעצים בינארים ו C)
מייק, אתה לא חייב לכתוב ב-C. בכל מקרה, תנסה להתאמן בלממש עץ פשוט עם כל הפונקציות הרלוונטיות, כולל FIND הדרושה במבחן. אם אתה מסתבך מן הסתם יש מלא רפרנסים של זה ברחבי הרשת... ולכל המרגיזים שמתלוננים כאן על השאלות - אם אתם כאן כנראה שעוד לא צלחתם ראיון עבודה, אז את העצות והתוכחות שלכם תשמרו לאחרי שזה יקרה.
מישהו יכול להסביר מה הכוונה בשאלה השניה "לדעת איך לקרוא לפונקציה" ? ובקשר לשאלה השלישית, אני פשוט צריך להשוות בין המילים לסטרינג ולבדוק או זה יותר מסובך מזה?
מי שיכול לעזור בכתיבת שאלות בצורה ברורה יותר או פתרון אני אשמח לפצות אותו בתשלום 50 דולר בפאי פל
נראה לי שיותר חכם יהיה להשקיע את הכסף בשוחד לבוחנים, לא ?
עשיתי ראיונות בכמה מקומות עבודה, החלק התכנות הוא פחות קריטי. מגיעים אחרי מבחן 3 שעות לשאלות אישיות ומרגישים גמורים. אני מעדיף לעזור לי ולשאר אנשים כאן, למכור יותר את עצמם. כי את העבודה לומדים בכמה שבועות, ואם צריך לומדים בבית. אני אשמח לשמח משהו ב50 דולר שיעשה קופה בפוקר אם ירצה עם הכסף:) לפחות יצא לו משהו מהבחינה:) וכמבון יעזור לנו
חוץ מזה אם משהו יכול לארגן שאלות ברורות, ההודי שלי יפתור את זה בכמה דקות:)
שמישהו ירשום שאלות ברורות שאפשר לפתור בבית לפני שניגשים למבחן. שמישהו יהיה נחמד לשם שינוי
אני גם אשמח לקצת עזרה.. יש לי את המבחן מחר ואני פוחדת לא להצליח
אני גם אשמח לקצת עזרה.. יש לי את המבחן מחר ואני פוחדת לא להצליח הי עדינה! המבחן שלי ממש השבוע, ואני מבינה ששלך היה ממש עכשיו... יש סיכוי לעזרה כלשהי לגבי המבחן הראשון? נואשת...
מי שהצליח להרכיב את השאלות אני מאד מאד מבקש לפרסם.
אתה רציני? מה קשור שאלות אישיות? יום מבחנים הוא רק למבחנים והראיון בזמן אחר.
מישהו יכול לעזור עם שאלות מדוייקות?
שלום לכולם, זה פוסט קצת ארוך, אבל מדוייק ככל האפשר לגבי יום המבחנים. קצת סבלנות, לדעתי המידע יכול רק לעזור. תהנו. אני רוצה לציין שאני מפרסם את המידע הזה כדי לתת הזדמנות שווה לכל אלה שלא יודעים לקראת מה הם מגיעים. יחד עם זאת, המבחן עדיין יפתיע אתכם ועדיין ידרוש מכם להזיז את הגלגלים בראש. בנוסף, לאחר יום המבחנים הזה ישנם ראיונות עם ראשי המחלקות, שם כל מי "ששרד" את היום הזה יידרש לתת את הדין ולהראות מה הוא שווה. בכל מקרה, עלו והצליחו. היום מתחלק לשלושה מבחנים, אני אתמקד במבחן הראשון בלבד. קצת רקע על המבחן: - קיימים 4 סעיפים בלתי תלויים אחד בשני. לאחר השלמת כל סעיף יש להריץ את התוכנית ושם מתקבל משוב האם הצלחתם או לא. חייבים לסיים את כל הסעיפים על מנת לעבור. - אורכו 4 שעות (אך נאמר שם כי הזמן המומלץ הוא 3 שעות). - ניתן להיבחן ב-c/ c++/ c#/ java אך נאמר שם כי מומלץ להיבחן ב-c או ב-++c מכיוון שכך יפתחו בפניכם יותר משרות. - ניתן להיעזר באינטרנט אך לא ניתן להיכנס למייל האישי או להוריד קבצים למחשב. - אחת לכמה זמן מגיע נציג מטעם החברה לעזור אם ישנן שאלות. - אם סיימתם, יגיע אותו נציג ויבדוק יחד איתכם את פלטי ריצת התוכנית, במידה ואין שגיאות, תמשיכו למבחן הבא. אחרת, תמשיכו לכיוון היציאה, יש בבניין ליד קפיטריה טובה, אתם מוזמנים להטביע את יגונכם בקפה. המלצה: המבחן הוא 4 שעות, תבואו מוכנים עם בקבוק מים ומשהו מתוק. הערה: אני נבחנתי בשפת ++c. השאלות הן כמו שכבר נכתב כאן בעבר ולכן אחזור בקצרה: 1.1 מימוש פונקציה לחיפוש בינארי בעץ. חשוב: הפונקציה מקבלת אוביקט מסוג "הודעה" בלבד. 1.2 שימוש ב-API של החברה. ישנו צמד קבצי h/cpp בהם תמצאו את הפונקציות הרלוונטיות. לצורך הסעיף הזה אני ממליץ בחום לעבור על התהליך הזה (שימוש ב-API). 1.3 תיקון שגיאות - נתון קובץ cpp אשר מכיל בתוכו שגיאות (תחביר, לוגיקה וכדומה), יש למצוא את כולן ולתקן אותן. הערה: לדעתי שווה לדחות את הסעיף הזה לסוף, קצת מייגע. 1.4 נתונה תעבורת הודעות ממען לנמען ויש להחזיר רשימה של כתובות (מען/נמען) של כל אלה שאחראים ליותר מ-10% מההודעות הללו. חשוב: הפונקציה מקבלת אוביקט מסוג "הודעה" בלבד. זהו זה ולא אחרת. בהצלחה לכל המתמודדים!
שלום לכולם, זה פוסט קצת ארוך, אבל מדוייק ככל האפשר לגבי יום המבחנים. קצת סבלנות, לדעתי המידע יכול רק לעזור. תהנו. אני רוצה לציין שאני מפרסם את המידע הזה כדי לתת הזדמנות שווה לכל אלה שלא יודעים לקראת מה הם מגיעים. יחד עם זאת, המבחן עדיין יפתיע אתכם ועדיין ידרוש מכם להזיז את הגלגלים בראש. בנוסף, לאחר יום המבחנים הזה ישנם ראיונות עם ראשי המחלקות, שם כל מי "ששרד" את היום הזה יידרש לתת את הדין ולהראות מה הוא שווה. בכל מקרה, עלו והצליחו. היום מתחלק לשלושה מבחנים, אני אתמקד במבחן הראשון בלבד. קצת רקע על המבחן: - קיימים 4 סעיפים בלתי תלויים אחד בשני. לאחר השלמת כל סעיף יש להריץ את התוכנית ושם מתקבל משוב האם הצלחתם או לא. חייבים לסיים את כל הסעיפים על מנת לעבור. - אורכו 4 שעות (אך נאמר שם כי הזמן המומלץ הוא 3 שעות). - ניתן להיבחן ב-c/ c++/ c#/ java אך נאמר שם כי מומלץ להיבחן ב-c או ב-++c מכיוון שכך יפתחו בפניכם יותר משרות. - ניתן להיעזר באינטרנט אך לא ניתן להיכנס למייל האישי או להוריד קבצים למחשב. - אחת לכמה זמן מגיע נציג מטעם החברה לעזור אם ישנן שאלות. - אם סיימתם, יגיע אותו נציג ויבדוק יחד איתכם את פלטי ריצת התוכנית, במידה ואין שגיאות, תמשיכו למבחן הבא. אחרת, תמשיכו לכיוון היציאה, יש בבניין ליד קפיטריה טובה, אתם מוזמנים להטביע את יגונכם בקפה. המלצה: המבחן הוא 4 שעות, תבואו מוכנים עם בקבוק מים ומשהו מתוק. הערה: אני נבחנתי בשפת ++c. השאלות הן כמו שכבר נכתב כאן בעבר ולכן אחזור בקצרה: 1.1 מימוש פונקציה לחיפוש בינארי בעץ. חשוב: הפונקציה מקבלת אוביקט מסוג "הודעה" בלבד. 1.2 שימוש ב-API של החברה. ישנו צמד קבצי h/cpp בהם תמצאו את הפונקציות הרלוונטיות. לצורך הסעיף הזה אני ממליץ בחום לעבור על התהליך הזה (שימוש ב-API). 1.3 תיקון שגיאות - נתון קובץ cpp אשר מכיל בתוכו שגיאות (תחביר, לוגיקה וכדומה), יש למצוא את כולן ולתקן אותן. הערה: לדעתי שווה לדחות את הסעיף הזה לסוף, קצת מייגע. 1.4 נתונה תעבורת הודעות ממען לנמען ויש להחזיר רשימה של כתובות (מען/נמען) של כל אלה שאחראים ליותר מ-10% מההודעות הללו. חשוב: הפונקציה מקבלת אוביקט מסוג "הודעה" בלבד. זהו זה ולא אחרת. בהצלחה לכל המתמודדים! קיא בורד אני מזה אשמח לדבר איתך בטלפון , אם אין לך בעיה כמובן , תשלח פה סימן חיובי ואני ישלח לך את המספר שלי או להפך איך שנוח לך ! תודה!!
תוכלו לשתף את השאלות בפירוט יותר (בפוסטים הקודמים הכל באמת מובלגן ולא יציב) אם לא זוכרים את השאלות אולי את התשובות, אנסה לפענח מה שעשיתם
התשובות באמת יכולות לעזור. תודה
לא אמרו שצריך רק 3 סעיפים מתוך 4 כדי לעבור?
קיא בורד, רשמת "1.1 מימוש פונקציה לחיפוש בינארי בעץ. חשוב: הפונקציה מקבלת אוביקט מסוג "הודעה" בלבד." אז איך אני מגדיר את ה NODE ההתחלתי? פשוט משהו כמו node=root ?
יש לי שאלה לגבי השאלה השלישית. אמרתם שנתון קובץ C או CPP שצריך למצוא ולתקן בו שגיאות. זאת אומרת אנחנו צריכים לפתוח אותו עם FOPEN ולהפוך את כל הקובץ לסטרינג ואחרי התיקונים ליצור קובץ חדש? תודה לעוזרים
בהמשך למה שכבר נכתב (כולל מה שפרסם קיא בורד, תיאור די מדוייק), רק רוצה להוסיף כמה נקודות שאולי יעזרו לאנשים בהתבסס על הנסיון שלי ביום המבחנים (שפת C) : המבחן נעשה ב-visual studio על פרוייקט קיים שמכיל ארבע פולדרים עיקריים, כל אחד רלוונטי לשאלה אחרת (ומכיל את קבצי ה-c וה-h הרלוונטיים לשאלה). למעשה, אתם מממשים מס' מצומצם של פונקציות בתוך מערכת קיימת. אין צורך לכתוב קבצים מאפס, בכל שאלה כבר קיים קובץ עבודה מוכן שבו רק צריך לממש פונקציות בהתאם להנחיות המבחן. מבחינת השאלות עצמן, המבחן נועד לראות בעיקר לבדוק את היכולת שלכם להבין את המערכת ולכתוב עבורה פונקציות, לכן אין יכולת אמיתית לבוא עם פתרון "מוכן" מהבית, אבל בסופו של דבר לא מדובר במבחן מסובך מדי. אני ממליץ לדעת טוב את הסינטקס של השפה שבה אתם בוחרים לעבור את המבחן ולחזור על עקרונות תכנותיים (לבדוק הקצאות זיכרון, חריגה במערכים וכו'). מבחינת רמת הקוד, מדובר בסה"כ בתכנות די בסיסי (אין צורך אמיתי להשתמש בת'רדים למשל). 1. מימוש חיפוש על עץ בינארי: אין מה להסתבך פה, מקבלים קודקוד ואיבר שרוצים למצוא. 2. מימוש ע"י שימוש ב-API חיצוני: כנ"ל, אתם מקבלים API ואת המימוש הלא מתועד שלו וצריכים להבין איך הקוד עובד ולהשתמש בו. 3. תיקון קוד קיים: אתם מקבלים קובץ C מוכן וצריכים לדבג אותו ולתקן את השגיאות בקובץ עצמו כך שיעבוד. עיקר העבודה הייתה סביב עקרונות תכנותיים ב-C (מניפולציות על מערכים וסטרינגים, הקצאות זכרון וכו'). 4. בדיקת סטטיסטיקות - אין יותר מדי מה להוסיף למעט העובדה שמספקים לכם מימוש של hashTable שאפשר (ומומלץ) לעבוד איתו. לכל שאלה יש טסט שאתם יכולים להריץ בכדי לבדוק אם הפתרון שלכם עובד. חייבים לפתור את כל השאלות כדי לעבור ומוקצות לכך ארבע שעות, אם כי מבחינתם אתם צריכים לפתור הכל בשלוש (כלומר מי שלא פותר בשלוש שעות יכול להמשיך לעבוד עוד שעה, אבל זה מפחית את הסיכויים שלו להמשיך). אין יותר מדי מה להרחיב על שני המבחנים הבאים: הראשון הוא מבחן על פקודות shell בסיסיות לינוקס (וההנחיות פחות או יותר אומרות לכם מה לעשות בדיוק, פשוט לעקוב אחריהן) והשני הוא מבחן GUI שבו אתם צריכים לערוך תמונה בצייר וליצור ממנה GUI של תוכנה. השנקל שלי
חסוס, בשאלה 3, אנחנו פשוט מקבלים קובץ C עם תוכנית שאמורה לעבודה ואנחנו מתקנים שגיאות שנעשו שם בכוונה? (לדוגמא ; מיותרים, חריגה ממערכים וכו'? זה לא עבודה עם סטרינגים והשוואות?)
רציתי גם לשאול, האם יש הרבה שימוש בפויינטרים? לדוגמא בשאלה 2 של ה API ? תודה
בדיוק, מקבלים קובץ C עם תוכנה שאמורה לעבוד אבל יש בה באגים. הבאגים הם יותר רציניים מ-; מיותרים אלא ברמה של בדיקת הקצאות זכרון, חריגה ממערכים, שגיאות לוגיקה וכו'. בעקרון הקוד עצמו מבצע השוואות על סטרינגים. יש שימוש בפויינטרים, אבל לא משהו חריג או מסובך. רוב הפויינטרים הם הודעות שהמערכת כולה עובדת איתן (ובשאלה 2 למשל אתה פשוט מעביר את הפויינטרים לפונקציות ה-API כנדרש).
איך מוצאים אחוזים בתוך HASH ? נשמע לי קשה
משהו הולך לפרסם שאלות ברורות יותר או תשובות?
אפשר להוסיף קצת יותר פירוט על החלק הרביעי במבחן הראשון, בו צריך למצוא את ה10%? וגם על המבחן של ה ui, מה בדיוק צריך לעשות שם? והאם השאלות האלה בכלל רלוונטיות נכון לעכשיו.. תודה
הי, יש מצב לשמוע איזה שאלות יש במבחנים של 4 שעות ? אותם שאלות כמו שפירסמתם ? אם כן, פשוט אפשר להעתיק מהאינטרנט חיפוש בעץ בינארי לא ? איך עושים את הAPI בC ? יש למישהו לינק שיכול לעזור ? מה הבאגים שמצאתם בשאלה 3 ? ומה יש בשאלה 4 ? תודה לכל העונים....
תגיד לי אתה לא יודע לעשות חיפוש בעץ איך לעזאזל סיימת לימודים ?
למגיב האחרון אור89 הערה מגעילה מעניין אותי מה "תותח" כמוך עושה בחיים אל תשכח את השיר : "איך שגלגל מסתובב לו בפעם הבאה שתיהיה למטה אהה ולשאלתך אני עם עבודה עם ניסיון של למעלה מ10 שנים אבל אוהב לקרוא על שאלות וראיונות ממקומות אחרים שיהיה לך בהצלחה או שלא ...
מי שלא יודע לחפש בעץ בינארי לא הסיק כלום ולא הבין כלום מהתואר שלו שכנראה עשה באוניברסיטת ביר זית או לטביה,אם אתה לא מסכים איתי כנראה שאתה לא מבין עד כמה זה טריוויאלי לחפש בעץ זה משהו הכי בסיסי שיש ומי שלא יודע את זה אין מקומו בחברת תוכנה כלשהיא.
שאלה למי שעשה את המבחן בC++ אם אני כותב בC++ כמה טוב צריך לדעת OOP ? אני לא זוכר ברמה גבוהה
מישהו יכול לפרט קצת יותר (ב-JAVA אם אפשר) לגבי השלבים השני והשלישי? איך מוצג ה-API? האם יש משהו מעבר? על איזה סוג של באגים מדובר? טיפים יתקבלו בברכה
למי שכבר עשה את המבחן, אתם זוכרים מה היה זמן הריצה הכולל שלכם? לי יצא 2300~ בJAVA כאשר הרוב מזה זה החלק השני מעניין אותי איפה אני עומד מבחינת הזמן
האם המבחנים בג'אווה זהים לאלה ב-C? אם כן, באיזה מובן בודקים יעילות? כיצד ניתן לקצר זמני ריצה של השאלה על 10%, ושאלה על המחרוזות?
מה שלוכם לכולם...היום הייתי במבחן מיון בצ'ק פוינט. אז ככה.. יש עשרה שאלות על איזה תוכנה של משולשים הכל מוסבר לפני המבחן. ממש קל ופשוט להבנה. אחרי זה יש עשרה שאלות ב-SUBNETTING. חייב לדעת היטב הנושא הזה על בוריה כדי לעבור בהצלחה!!!!! . כמובן כל השאלות הם באנגלית. מבחן טכני מורכב בהגדרת נתב+ אלחוטי וכמה דברים מאוד פשוטים... בהצלחה לכולם!!!
אתה עשית מבחנים ל- QA ? כי מה שרשמת הוא שונה ממה שנאמר פה בפורום..
שים לב לנושא שהוא כתב: QA+TS
טוב אני כבר הרבה זמן משתמש בפורום הזה ונהנה מכל מה שאנשים מעלים לכאן והיות ואני גם מתעב תאגידים גדולים אז החלטתי להעלות כאן את המבחן (הראשון) המפורט של check point. הייתי שם ממש לא מזמן ויש לי את כל השאלות די טריות בראש, אגב אני בחרתי לממש ב - #C (אבל אלו אותן שאלות בכל השפות). כמו שציינו קודם יש למבחן 3 חלקים: חלק ראשון הכי גדול שבו 4 שאלות תכנותיות והוא נמשך 3-4 שעות, חלק שני של שעה וחצי ובו נדרשים להריץ קצת פקודות בסיסיות של תקשורת בין שתי מכונות לינוקס ובנוסף גם לקמפל ולהתקין קוד תוכנה מוכן, חלק שלישי הוא בן רק חצי שעה והוא מבחן עיצוב גרפי. חלק א: ישנה כביכול מערכת שאמורה לבצע 4 פעולות (כל פעולה זה שאלה): פיירוול של מסרים, סינון מסרים עם וירוסים, סינון מסרים עם מילות מוגנות וניטור של תעבורת המסרים. מקבלים solution מוכן שבתוכו יש פרויקט שבו 4 מחלקות, כל מחלקה מייצגת שאלה נפרדת, בכל מחלקה יש פונקציה או שתיים ריקות או לא תקינות שאותן אתם צריכים למלא/לתקן. חוץ מהמחלקות האלו ישנן עוד מחלקות נתונים ועוד פרויקטים אבל בהם לא נוגעים. מחלקה חשובה מאוד היא מחלקת הודעה/מסר (message) שבאה לייצג טיפוס נתונים מסוג הודעה, בטיפוס הזה יש כתובת שולח, כתובת מקבל, תוכן ההודעה (כמחרוזת) ועוד.. בנוסף לאחר שכתבתם את הקוד ישנו טסטר אוטומטי שהוא מריץ הרבה מסרים על המחלקות השונות והוא מדווח אם מה שכתבתם מתפקד כהלכה ואכן המחלקות מבצעות מה שצריך על המסרים ומקטלגות אותן נכון. שאלה 1 - צריך לכתוב חיפוש בעץ בינארי ממוין (כלומר לכל קודקוד הבנים משמאל קטנים יותר מהקודקוד ומימין גדולים יותר), ישנו עץ בינארי ממוין שמכיל בכל קודקוד כתובת אסורה (נמשל כתובת של ספאם), את העץ בונים בפונקציה אחרת שעוברת על קובץ טקסטואלי וממירה אותו לעץ אבל הקוד הזה לא אמור לעניין אותכם, בנוסף ישנה פונקציה שמקבלת הודעה ובה אתם צריכים לכתוב קוד שבודק שכתובת השולח וכתובת המקבל לא נמצאים בעץ, אם אחד מהם נמצא אז מחזירים enum שמייצג לזרוק את המסר אחרת מחזירים enum לקבל את המסר. שימו לב שהביצועים מאוד מאוד חשובים בייחוד בשאלה הזאת ולכן הדרך הכי טובה לדעתי לפתור את זה היא לעשות סריקה של העץ באמצעות while ולא רקורסיה! (מי שלא יודע שיחפש בגוגל איך מחפשים ערך באמצעות לולאה בעץ בינארי ממוין ודגש על ממוין!). כמה דגשים די טריוואלים: שימו לב שצריך לעשות 2 סריקות של העץ (אחת עבור כתובת השולח ושניה עבור המקבל) לכן כמובן שעדיף לכתוב את סריקת העץ כפונקציה נפרדת שמקבלת פרמטר כתובת ולקרוא לפונקציה פשוט פעמיים, דגש שני הוא שאין לאתחל את העץ בתוך הפונקצית טיפול מסרים שאתם כותבים כי אז עבור כל מסר העץ יאותחל מחדש, יש להגיד משתנה private מסוג העץ במחלקה (של השאלה) ובבנאי שלה לאתחל את העץ וכך הוא יאותחל רק פעם אחת. שאלה 2 - בשאלה זאת נדרשים לסרוק כל מסר ולגלות האם הוא מכיל וירוס, הסריקה מתבצעת באמצעות מחלקה אחרת שנקראת אנטי וירוס שבה לא אמורים לגעת (אבל כן להבין קצת את הקוד שלה), גם כאן יש לממש פונקציית טיפול במסרים כאשר כל מסר נשלח לאובייקט מסוג המחלקה האחרת ויש לו פונקציה שסורקת את המסר ומחזירה האם יש בו וירוס או אין ובהתאם אתם מחזירים את ה - enum המתאים. כמה דגשים: כמו בשאלה 1 גם כאן יש להגדיר משתנה פרטי מסוג מחלקת אנטי וירוס ולאתחל אותו בבנאי, חשוב לשים לב שהאתחול כולל גם new וגם קריאה לפונקציית setup (פונקציה של המחלקה) שהיא טוענת בסיס נתונים של הוירוסים וכך האובייקט אנטי וירוס מוכן לשימוש, אגב הצורה שבה הסריקה מתבצעת היא באמצעות ביטויים רגולרים אבל זה לא אמור לעניין אותכם, שימו לב שגם בקריאה אח"כ לפונקציית סריקת מסר מלבד המסר יש עוד כמה ערכים בוליאנים ששולחים אליה, יש ערך שנקרא fullscan שהוא צריך להיות false כי אם הוא true אז מה שיקרה זה שמסר שישלח יבדק כנגד כל הבסיס נתונים של הוירוסים שזה מיותר מכיוון שאם הוא false אז הוא סורק רק עד מציאת וירוס ראשון ואז מפסיק וזה ישפר לכם את הביצועים, יש עוד פרמטר (הראשון ביותר) שבכלל אין לו שימוש בתוך האנטי וירוס וסתם כתבו אותו כדי לבלבל, והפרמטר האחרון הוא loadviruses אך הוא יכול להיות true או false זה לא משנה, כי גם ככה בכל קריאה לסריקת מסר יש בדיקה האם הבסיס נתונים כבר נטען קודם ואם כן אז לא טוענים אותו גם האם הפרמטר הזה יהיה true. שאלה 3 - יש מחלקה שבתוכה יש פונקציה שמקבלת את המסר וקוראת לפונקציות אחרת במטרה לראות האם במסר יש מילים שמורות אסורות, אם כן אז יש להחזיר enum של זריקת המסר אחרת קבלת המסר, הקוד כבר כולו כתוב כולל פונקציית קבלת המסר אבל יש בקוד הזה הרבה באגים ובכלל המצב הראשוני שלו שהוא מתרסק אם מריצים אותו. כמה דגשים: יש שם בהתחלה משתנה result שאותו מחזירה הפונקציה אך בשני ה - if העיקריים לא מוצב בו הערך ואת זה יש לתקן, יש משתנה messagedata שלא מקבל ערך בהתחלה. שימו לב שהתיקונים הם אומנם ברובם בפונקציית הקבלת מסר אך יש גם לתקן קצת בפונקציות האחרות, בנוסף בשאלה הזאת מאוד עוזר בסוף להריץ את הטסטר האוטומטי כדי לוודות שכל המסרים קוטלגו כמו שצריך. שאלה 4 - צריך לכתוב 2 פונקציות, אחת היא של קבלת המסרים והשנייה היא החזרה של כל הכתובות השולחות שמהם נשלחו יותר מ - 10% מהמסרים עד עכשיו. הדרך לממש את זה היא באמצעות hashtable וביתר פירוט dictionary ב - #C, כל מפתח (key) יהיה בו כתובת שולח מסוימת וכל ערך יהיה כמה מסרים הכתובת הזאת שלחה, כלומר בעת קבלת מסר חדש בפונקציית הקבלת מסרים יש להעלות את המונה של מפתח כתובת השולח ב - 1 (או כמובן אם זו פעם ראשונה אז יש להוסיף מפתח חדש עם הערך 1) בנוסף יש לשמור מונה פשוט גלובלי ברמת המחלקה שכל פעם שמתקבל מסר חדש אז הוא מוגדל ב - 1. בפונקציית החזרת הכתובות יש פשוט לעשות לולאה שסורקת את כל המפתחות ב - hashtable ועבור כל מפתח בודקת האם הערך שלו לחלק בערך של המונה הכללי גדול שווה מ - 0.1 (כלומר שווה או גדול מ - 10%), אם כן אז מוסיפים אותו לרשימה שאותה בסוף מחזירים בפונקציה. כמה דגשים בכלל לכל חלק א: חשוב להגן על הקוד כמו נמשל בפונקציית קבלת ההודעות לבדוק שההודעה המתקבלת היא לא null ושהמסר בתוכה לא ריק, כדאי גם להשתמש ב - try catch בייחוד במצבים של נמשל פניה לאנטי וירוס החיצוני בשאלה 2 שם אנחנו לא יודעים איך מימשו אותו. חלק ב: בחלק זה בודקים ידיעה והבנה של פקודות תקשורת בסיסיות, קימפול והתקנה בלינוקס, זה נעשה באמצעות מסמך מפורט שבכל שורה אומר תעשו כך ותעשו כך, אתם צריכים לעקוב שורה אחרי שורה במסמך ולבצע בפועל את ההוראות על שתי מכונות וירטואליות של לינוקס שהן באותה הרשת, ברוב ההוראות במסמך גם רשום איזו פקודה יש להקליד, נמשל רשום שיש לבדוק תקשורת על ידי כתיבת ping וכתובת ה - ip של המכונה השניה, אך יש שורות שבהן לא רשומות הפקודות כמו נמשל רושמים שם שיש לקמפל (תוכנה מסוימת שמקודם הורדנו) בדרך הסטנדרטית ואחר כך להתקין אותה אבל לא רושמים איזה פקודות להקליד. אנסה לפרט מה שאני זוכר שיש לעשות שם: דבר ראשון יש לבדוק כתובות ip של שתי המכונות, אחר כך לעשות פינג מהמכונה הראשונה לעצמה, אחר כך מהראשונה לשניה, להוריד קובץ tar/zip מהמכונה השניה לראשונה באמצעות ftp, הקובץ הוא למעשה התקנה של תוכנה בשם pure ftp, יש לפתוח אותו, לקמפל את התוכן שלו, להתקין את התוכנה, להריץ אותה, לעשות kill לתהליך שלה, לחפש בתוך אחד ה - headers שלה מסר מסוים (welcome to), לפתוח את המסר הזה ולהוסיף לו את המילה my, לקמפל שוב ולהתקין את התוכנה מחדש, לפתוח את התוכנה ולראות שהמסר שהיא מציגה בהתחלה השתנה בהצלחה. כמה דגשים: כמו שקודם אמרתי רוב הדברים שיש לעשות רשום במסמך איזה פקודות צריך להקליד כך שאין צורך לזכור פקודות בעל פה, כשמחפשים את המסר שיש לשנות אז לחפש רק את המילים "welcome to" ולא את כל המסר (כי זה נראה לי מסר שמשורשר משני מקומות שונים) אם אני זוכר נכון זה נמצא בקובץ messages_en.h, את הקימפול הסטנדרטי אפשר לעשות עם gcc או make אבל אין צורך לשבור את הראש ולמצוא מה צריך לקמפל אלא יש שם קובץ טקסט שנקרא install, פותחים אותו עם עורך טקסט וישר בשורה הראשונה רשומות 3 פקודות שצריך להריץ, מריצים את 3 הפקודות אחת אחרי השניה והן גם מקמפלות וגם מתקינות את התוכנה, כדי להפעיל את התוכנה אני נכנסתי פשוט לתיקיית הקיצורי דרך לתוכנות מותקנות שהיא אם אני זוכר נכון usr/local/sbin (בכל מקרה כאשר מריצים את 3 הפקודות אז רשום לאיפה הוא מתקין אותה). חלק ג: טוב האמת שכאן אין לי יותר מדי מה לומר וגם אין כל כך איך להתכונן לזה, מדובר במשימת עיצוב גרפי, אגב אין חובה לעשות את החלק הזה אבל מי שעושה אותו יהיה לו יתרון בקבלה לתפקידים שדורשים יכולת עיצוב ממשקים, במשימה מדברים על מערכת שמשמשת לחיפוש עובדים בחברה, נותנים תמונה שבתוכה יש כביכול תוצאת חיפוש אחת שכוללת תמונה של עובדת, כמה פקדים והרבה מידע עליה שנמצא בדרך כלל כתיבות טקסט, התצוגה הראשונית בתמונה לא נראית טוב ודי מבולגנת, המשימה היא לפתוח את התמונה בשלמותה בצייר ולגזור ממנה חלקים שונים כמו נמשל התיבות טקסט ואותן לארגן בתמונה חדשה (חלון צייר שני) כך שבסופו של דבר תתקבל תמונה סופית שונה שמציגה את העובד ופרטיו בצורה הרבה יותר מאורגנת, יפה ושימושית, ניתן לשנות את הגודל של הפקדים, צבעים ובכלל כל דבר כמעט שאפשר לעשות בצייר. כמה דגשים: כדי להתכונן לחלק זה אז למי שלא מכיר אולי כדאי באמת לעבוד קצת עם הצייר, לגזור חלקים מתמונה לשנות גדלים וכ"ו, כדאי לעבוד בצייר במוד זום מוגדל (נמשל 200%), כדאי להתחיל מלחשוב על קבוצות פקדים שונות עם מכנה משותף כמו נמשל כל התיבות שמכילות את פרטי הכתובת ואז פשוט לגזור אותן מהתמונה הראשונה ולשים אותן ביחד יפה בשניה, כאמור הכי טוב לגזור כל פעם דברים מהראשונה וכך לאט לאט התמונה הראשונה מתרקונת ונהיה יותר קל להתסכל עליה ולתכנן מה עושים (זו לפחות הדרך שאני מצאתי בשבילי הכי טובה אך כמובן שיש עוד דרכים). אה ודבר אחרון לסיום נזכרתי במשהו מצחיק, בסוף המבחן הבוחן ניגש לכל אחד ואז שואל אותו האם הוא ראה את המבחן הזה בעבר, מה בדיוק הוא מצפה שיענו לו??? ובכלל נראה לי שכמעט כולם ראו את המבחן הזה בעבר.. בהצלחה ודיר בלק אם מישהו מספר משהו/נותן רמז על המבחן הזה אחרת פשוט צ'ק פוינט ימצאו את מה שרשמתי כאן וישנו את המבחן..
טוב אני כבר הרבה זמן משתמש בפורום הזה ונהנה מכל מה שאנשים מעלים לכאן והיות ואני גם מתעב תאגידים גדולים אז החלטתי להעלות כאן את המבחן (הראשון) המפורט של check point. הייתי שם ממש לא מזמן ויש לי את כל השאלות די טריות בראש, אגב אני בחרתי לממש ב - #C (אבל אלו אותן שאלות בכל השפות). כמו שציינו קודם יש למבחן 3 חלקים: חלק ראשון הכי גדול שבו 4 שאלות תכנותיות והוא נמשך 3-4 שעות, חלק שני של שעה וחצי ובו נדרשים להריץ קצת פקודות בסיסיות של תקשורת בין שתי מכונות לינוקס ובנוסף גם לקמפל ולהתקין קוד תוכנה מוכן, חלק שלישי הוא בן רק חצי שעה והוא מבחן עיצוב גרפי. חלק א: ישנה כביכול מערכת שאמורה לבצע 4 פעולות (כל פעולה זה שאלה): פיירוול של מסרים, סינון מסרים עם וירוסים, סינון מסרים עם מילות מוגנות וניטור של תעבורת המסרים. מקבלים solution מוכן שבתוכו יש פרויקט שבו 4 מחלקות, כל מחלקה מייצגת שאלה נפרדת, בכל מחלקה יש פונקציה או שתיים ריקות או לא תקינות שאותן אתם צריכים למלא/לתקן. חוץ מהמחלקות האלו ישנן עוד מחלקות נתונים ועוד פרויקטים אבל בהם לא נוגעים. מחלקה חשובה מאוד היא מחלקת הודעה/מסר (message) שבאה לייצג טיפוס נתונים מסוג הודעה, בטיפוס הזה יש כתובת שולח, כתובת מקבל, תוכן ההודעה (כמחרוזת) ועוד.. בנוסף לאחר שכתבתם את הקוד ישנו טסטר אוטומטי שהוא מריץ הרבה מסרים על המחלקות השונות והוא מדווח אם מה שכתבתם מתפקד כהלכה ואכן המחלקות מבצעות מה שצריך על המסרים ומקטלגות אותן נכון. שאלה 1 - צריך לכתוב חיפוש בעץ בינארי ממוין (כלומר לכל קודקוד הבנים משמאל קטנים יותר מהקודקוד ומימין גדולים יותר), ישנו עץ בינארי ממוין שמכיל בכל קודקוד כתובת אסורה (נמשל כתובת של ספאם), את העץ בונים בפונקציה אחרת שעוברת על קובץ טקסטואלי וממירה אותו לעץ אבל הקוד הזה לא אמור לעניין אותכם, בנוסף ישנה פונקציה שמקבלת הודעה ובה אתם צריכים לכתוב קוד שבודק שכתובת השולח וכתובת המקבל לא נמצאים בעץ, אם אחד מהם נמצא אז מחזירים enum שמייצג לזרוק את המסר אחרת מחזירים enum לקבל את המסר. שימו לב שהביצועים מאוד מאוד חשובים בייחוד בשאלה הזאת ולכן הדרך הכי טובה לדעתי לפתור את זה היא לעשות סריקה של העץ באמצעות while ולא רקורסיה! (מי שלא יודע שיחפש בגוגל איך מחפשים ערך באמצעות לולאה בעץ בינארי ממוין ודגש על ממוין!). כמה דגשים די טריוואלים: שימו לב שצריך לעשות 2 סריקות של העץ (אחת עבור כתובת השולח ושניה עבור המקבל) לכן כמובן שעדיף לכתוב את סריקת העץ כפונקציה נפרדת שמקבלת פרמטר כתובת ולקרוא לפונקציה פשוט פעמיים, דגש שני הוא שאין לאתחל את העץ בתוך הפונקצית טיפול מסרים שאתם כותבים כי אז עבור כל מסר העץ יאותחל מחדש, יש להגיד משתנה private מסוג העץ במחלקה (של השאלה) ובבנאי שלה לאתחל את העץ וכך הוא יאותחל רק פעם אחת. שאלה 2 - בשאלה זאת נדרשים לסרוק כל מסר ולגלות האם הוא מכיל וירוס, הסריקה מתבצעת באמצעות מחלקה אחרת שנקראת אנטי וירוס שבה לא אמורים לגעת (אבל כן להבין קצת את הקוד שלה), גם כאן יש לממש פונקציית טיפול במסרים כאשר כל מסר נשלח לאובייקט מסוג המחלקה האחרת ויש לו פונקציה שסורקת את המסר ומחזירה האם יש בו וירוס או אין ובהתאם אתם מחזירים את ה - enum המתאים. כמה דגשים: כמו בשאלה 1 גם כאן יש להגדיר משתנה פרטי מסוג מחלקת אנטי וירוס ולאתחל אותו בבנאי, חשוב לשים לב שהאתחול כולל גם new וגם קריאה לפונקציית setup (פונקציה של המחלקה) שהיא טוענת בסיס נתונים של הוירוסים וכך האובייקט אנטי וירוס מוכן לשימוש, אגב הצורה שבה הסריקה מתבצעת היא באמצעות ביטויים רגולרים אבל זה לא אמור לעניין אותכם, שימו לב שגם בקריאה אח"כ לפונקציית סריקת מסר מלבד המסר יש עוד כמה ערכים בוליאנים ששולחים אליה, יש ערך שנקרא fullscan שהוא צריך להיות false כי אם הוא true אז מה שיקרה זה שמסר שישלח יבדק כנגד כל הבסיס נתונים של הוירוסים שזה מיותר מכיוון שאם הוא false אז הוא סורק רק עד מציאת וירוס ראשון ואז מפסיק וזה ישפר לכם את הביצועים, יש עוד פרמטר (הראשון ביותר) שבכלל אין לו שימוש בתוך האנטי וירוס וסתם כתבו אותו כדי לבלבל, והפרמטר האחרון הוא loadviruses אך הוא יכול להיות true או false זה לא משנה, כי גם ככה בכל קריאה לסריקת מסר יש בדיקה האם הבסיס נתונים כבר נטען קודם ואם כן אז לא טוענים אותו גם האם הפרמטר הזה יהיה true. שאלה 3 - יש מחלקה שבתוכה יש פונקציה שמקבלת את המסר וקוראת לפונקציות אחרת במטרה לראות האם במסר יש מילים שמורות אסורות, אם כן אז יש להחזיר enum של זריקת המסר אחרת קבלת המסר, הקוד כבר כולו כתוב כולל פונקציית קבלת המסר אבל יש בקוד הזה הרבה באגים ובכלל המצב הראשוני שלו שהוא מתרסק אם מריצים אותו. כמה דגשים: יש שם בהתחלה משתנה result שאותו מחזירה הפונקציה אך בשני ה - if העיקריים לא מוצב בו הערך ואת זה יש לתקן, יש משתנה messagedata שלא מקבל ערך בהתחלה. שימו לב שהתיקונים הם אומנם ברובם בפונקציית הקבלת מסר אך יש גם לתקן קצת בפונקציות האחרות, בנוסף בשאלה הזאת מאוד עוזר בסוף להריץ את הטסטר האוטומטי כדי לוודות שכל המסרים קוטלגו כמו שצריך. שאלה 4 - צריך לכתוב 2 פונקציות, אחת היא של קבלת המסרים והשנייה היא החזרה של כל הכתובות השולחות שמהם נשלחו יותר מ - 10% מהמסרים עד עכשיו. הדרך לממש את זה היא באמצעות hashtable וביתר פירוט dictionary ב - #C, כל מפתח (key) יהיה בו כתובת שולח מסוימת וכל ערך יהיה כמה מסרים הכתובת הזאת שלחה, כלומר בעת קבלת מסר חדש בפונקציית הקבלת מסרים יש להעלות את המונה של מפתח כתובת השולח ב - 1 (או כמובן אם זו פעם ראשונה אז יש להוסיף מפתח חדש עם הערך 1) בנוסף יש לשמור מונה פשוט גלובלי ברמת המחלקה שכל פעם שמתקבל מסר חדש אז הוא מוגדל ב - 1. בפונקציית החזרת הכתובות יש פשוט לעשות לולאה שסורקת את כל המפתחות ב - hashtable ועבור כל מפתח בודקת האם הערך שלו לחלק בערך של המונה הכללי גדול שווה מ - 0.1 (כלומר שווה או גדול מ - 10%), אם כן אז מוסיפים אותו לרשימה שאותה בסוף מחזירים בפונקציה. כמה דגשים בכלל לכל חלק א: חשוב להגן על הקוד כמו נמשל בפונקציית קבלת ההודעות לבדוק שההודעה המתקבלת היא לא null ושהמסר בתוכה לא ריק, כדאי גם להשתמש ב - try catch בייחוד במצבים של נמשל פניה לאנטי וירוס החיצוני בשאלה 2 שם אנחנו לא יודעים איך מימשו אותו. חלק ב: בחלק זה בודקים ידיעה והבנה של פקודות תקשורת בסיסיות, קימפול והתקנה בלינוקס, זה נעשה באמצעות מסמך מפורט שבכל שורה אומר תעשו כך ותעשו כך, אתם צריכים לעקוב שורה אחרי שורה במסמך ולבצע בפועל את ההוראות על שתי מכונות וירטואליות של לינוקס שהן באותה הרשת, ברוב ההוראות במסמך גם רשום איזו פקודה יש להקליד, נמשל רשום שיש לבדוק תקשורת על ידי כתיבת ping וכתובת ה - ip של המכונה השניה, אך יש שורות שבהן לא רשומות הפקודות כמו נמשל רושמים שם שיש לקמפל (תוכנה מסוימת שמקודם הורדנו) בדרך הסטנדרטית ואחר כך להתקין אותה אבל לא רושמים איזה פקודות להקליד. אנסה לפרט מה שאני זוכר שיש לעשות שם: דבר ראשון יש לבדוק כתובות ip של שתי המכונות, אחר כך לעשות פינג מהמכונה הראשונה לעצמה, אחר כך מהראשונה לשניה, להוריד קובץ tar/zip מהמכונה השניה לראשונה באמצעות ftp, הקובץ הוא למעשה התקנה של תוכנה בשם pure ftp, יש לפתוח אותו, לקמפל את התוכן שלו, להתקין את התוכנה, להריץ אותה, לעשות kill לתהליך שלה, לחפש בתוך אחד ה - headers שלה מסר מסוים (welcome to), לפתוח את המסר הזה ולהוסיף לו את המילה my, לקמפל שוב ולהתקין את התוכנה מחדש, לפתוח את התוכנה ולראות שהמסר שהיא מציגה בהתחלה השתנה בהצלחה. כמה דגשים: כמו שקודם אמרתי רוב הדברים שיש לעשות רשום במסמך איזה פקודות צריך להקליד כך שאין צורך לזכור פקודות בעל פה, כשמחפשים את המסר שיש לשנות אז לחפש רק את המילים "welcome to" ולא את כל המסר (כי זה נראה לי מסר שמשורשר משני מקומות שונים) אם אני זוכר נכון זה נמצא בקובץ messages_en.h, את הקימפול הסטנדרטי אפשר לעשות עם gcc או make אבל אין צורך לשבור את הראש ולמצוא מה צריך לקמפל אלא יש שם קובץ טקסט שנקרא install, פותחים אותו עם עורך טקסט וישר בשורה הראשונה רשומות 3 פקודות שצריך להריץ, מריצים את 3 הפקודות אחת אחרי השניה והן גם מקמפלות וגם מתקינות את התוכנה, כדי להפעיל את התוכנה אני נכנסתי פשוט לתיקיית הקיצורי דרך לתוכנות מותקנות שהיא אם אני זוכר נכון usr/local/sbin (בכל מקרה כאשר מריצים את 3 הפקודות אז רשום לאיפה הוא מתקין אותה). חלק ג: טוב האמת שכאן אין לי יותר מדי מה לומר וגם אין כל כך איך להתכונן לזה, מדובר במשימת עיצוב גרפי, אגב אין חובה לעשות את החלק הזה אבל מי שעושה אותו יהיה לו יתרון בקבלה לתפקידים שדורשים יכולת עיצוב ממשקים, במשימה מדברים על מערכת שמשמשת לחיפוש עובדים בחברה, נותנים תמונה שבתוכה יש כביכול תוצאת חיפוש אחת שכוללת תמונה של עובדת, כמה פקדים והרבה מידע עליה שנמצא בדרך כלל כתיבות טקסט, התצוגה הראשונית בתמונה לא נראית טוב ודי מבולגנת, המשימה היא לפתוח את התמונה בשלמותה בצייר ולגזור ממנה חלקים שונים כמו נמשל התיבות טקסט ואותן לארגן בתמונה חדשה (חלון צייר שני) כך שבסופו של דבר תתקבל תמונה סופית שונה שמציגה את העובד ופרטיו בצורה הרבה יותר מאורגנת, יפה ושימושית, ניתן לשנות את הגודל של הפקדים, צבעים ובכלל כל דבר כמעט שאפשר לעשות בצייר. כמה דגשים: כדי להתכונן לחלק זה אז למי שלא מכיר אולי כדאי באמת לעבוד קצת עם הצייר, לגזור חלקים מתמונה לשנות גדלים וכ"ו, כדאי לעבוד בצייר במוד זום מוגדל (נמשל 200%), כדאי להתחיל מלחשוב על קבוצות פקדים שונות עם מכנה משותף כמו נמשל כל התיבות שמכילות את פרטי הכתובת ואז פשוט לגזור אותן מהתמונה הראשונה ולשים אותן ביחד יפה בשניה, כאמור הכי טוב לגזור כל פעם דברים מהראשונה וכך לאט לאט התמונה הראשונה מתרקונת ונהיה יותר קל להתסכל עליה ולתכנן מה עושים (זו לפחות הדרך שאני מצאתי בשבילי הכי טובה אך כמובן שיש עוד דרכים). אה ודבר אחרון לסיום נזכרתי במשהו מצחיק, בסוף המבחן הבוחן ניגש לכל אחד ואז שואל אותו האם הוא ראה את המבחן הזה בעבר, מה בדיוק הוא מצפה שיענו לו??? ובכלל נראה לי שכמעט כולם ראו את המבחן הזה בעבר.. בהצלחה ודיר בלק אם מישהו מספר משהו/נותן רמז על המבחן הזה אחרת פשוט צ'ק פוינט ימצאו את מה שרשמתי כאן וישנו את המבחן.. יש למשהו תובנות נוספות???? (קטע קוד כתוב .... או שיכול להוסיף )
טוב אני כבר הרבה זמן משתמש בפורום הזה ונהנה מכל מה שאנשים מעלים לכאן והיות ואני גם מתעב תאגידים גדולים אז החלטתי להעלות כאן את המבחן (הראשון) המפורט של check point. הייתי שם ממש לא מזמן ויש לי את כל השאלות די טריות בראש, אגב אני בחרתי לממש ב - #C (אבל אלו אותן שאלות בכל השפות). כמו שציינו קודם יש למבחן 3 חלקים: חלק ראשון הכי גדול שבו 4 שאלות תכנותיות והוא נמשך 3-4 שעות, חלק שני של שעה וחצי ובו נדרשים להריץ קצת פקודות בסיסיות של תקשורת בין שתי מכונות לינוקס ובנוסף גם לקמפל ולהתקין קוד תוכנה מוכן, חלק שלישי הוא בן רק חצי שעה והוא מבחן עיצוב גרפי. חלק א: ישנה כביכול מערכת שאמורה לבצע 4 פעולות (כל פעולה זה שאלה): פיירוול של מסרים, סינון מסרים עם וירוסים, סינון מסרים עם מילות מוגנות וניטור של תעבורת המסרים. מקבלים solution מוכן שבתוכו יש פרויקט שבו 4 מחלקות, כל מחלקה מייצגת שאלה נפרדת, בכל מחלקה יש פונקציה או שתיים ריקות או לא תקינות שאותן אתם צריכים למלא/לתקן. חוץ מהמחלקות האלו ישנן עוד מחלקות נתונים ועוד פרויקטים אבל בהם לא נוגעים. מחלקה חשובה מאוד היא מחלקת הודעה/מסר (message) שבאה לייצג טיפוס נתונים מסוג הודעה, בטיפוס הזה יש כתובת שולח, כתובת מקבל, תוכן ההודעה (כמחרוזת) ועוד.. בנוסף לאחר שכתבתם את הקוד ישנו טסטר אוטומטי שהוא מריץ הרבה מסרים על המחלקות השונות והוא מדווח אם מה שכתבתם מתפקד כהלכה ואכן המחלקות מבצעות מה שצריך על המסרים ומקטלגות אותן נכון. שאלה 1 - צריך לכתוב חיפוש בעץ בינארי ממוין (כלומר לכל קודקוד הבנים משמאל קטנים יותר מהקודקוד ומימין גדולים יותר), ישנו עץ בינארי ממוין שמכיל בכל קודקוד כתובת אסורה (נמשל כתובת של ספאם), את העץ בונים בפונקציה אחרת שעוברת על קובץ טקסטואלי וממירה אותו לעץ אבל הקוד הזה לא אמור לעניין אותכם, בנוסף ישנה פונקציה שמקבלת הודעה ובה אתם צריכים לכתוב קוד שבודק שכתובת השולח וכתובת המקבל לא נמצאים בעץ, אם אחד מהם נמצא אז מחזירים enum שמייצג לזרוק את המסר אחרת מחזירים enum לקבל את המסר. שימו לב שהביצועים מאוד מאוד חשובים בייחוד בשאלה הזאת ולכן הדרך הכי טובה לדעתי לפתור את זה היא לעשות סריקה של העץ באמצעות while ולא רקורסיה! (מי שלא יודע שיחפש בגוגל איך מחפשים ערך באמצעות לולאה בעץ בינארי ממוין ודגש על ממוין!). כמה דגשים די טריוואלים: שימו לב שצריך לעשות 2 סריקות של העץ (אחת עבור כתובת השולח ושניה עבור המקבל) לכן כמובן שעדיף לכתוב את סריקת העץ כפונקציה נפרדת שמקבלת פרמטר כתובת ולקרוא לפונקציה פשוט פעמיים, דגש שני הוא שאין לאתחל את העץ בתוך הפונקצית טיפול מסרים שאתם כותבים כי אז עבור כל מסר העץ יאותחל מחדש, יש להגיד משתנה private מסוג העץ במחלקה (של השאלה) ובבנאי שלה לאתחל את העץ וכך הוא יאותחל רק פעם אחת. שאלה 2 - בשאלה זאת נדרשים לסרוק כל מסר ולגלות האם הוא מכיל וירוס, הסריקה מתבצעת באמצעות מחלקה אחרת שנקראת אנטי וירוס שבה לא אמורים לגעת (אבל כן להבין קצת את הקוד שלה), גם כאן יש לממש פונקציית טיפול במסרים כאשר כל מסר נשלח לאובייקט מסוג המחלקה האחרת ויש לו פונקציה שסורקת את המסר ומחזירה האם יש בו וירוס או אין ובהתאם אתם מחזירים את ה - enum המתאים. כמה דגשים: כמו בשאלה 1 גם כאן יש להגדיר משתנה פרטי מסוג מחלקת אנטי וירוס ולאתחל אותו בבנאי, חשוב לשים לב שהאתחול כולל גם new וגם קריאה לפונקציית setup (פונקציה של המחלקה) שהיא טוענת בסיס נתונים של הוירוסים וכך האובייקט אנטי וירוס מוכן לשימוש, אגב הצורה שבה הסריקה מתבצעת היא באמצעות ביטויים רגולרים אבל זה לא אמור לעניין אותכם, שימו לב שגם בקריאה אח"כ לפונקציית סריקת מסר מלבד המסר יש עוד כמה ערכים בוליאנים ששולחים אליה, יש ערך שנקרא fullscan שהוא צריך להיות false כי אם הוא true אז מה שיקרה זה שמסר שישלח יבדק כנגד כל הבסיס נתונים של הוירוסים שזה מיותר מכיוון שאם הוא false אז הוא סורק רק עד מציאת וירוס ראשון ואז מפסיק וזה ישפר לכם את הביצועים, יש עוד פרמטר (הראשון ביותר) שבכלל אין לו שימוש בתוך האנטי וירוס וסתם כתבו אותו כדי לבלבל, והפרמטר האחרון הוא loadviruses אך הוא יכול להיות true או false זה לא משנה, כי גם ככה בכל קריאה לסריקת מסר יש בדיקה האם הבסיס נתונים כבר נטען קודם ואם כן אז לא טוענים אותו גם האם הפרמטר הזה יהיה true. שאלה 3 - יש מחלקה שבתוכה יש פונקציה שמקבלת את המסר וקוראת לפונקציות אחרת במטרה לראות האם במסר יש מילים שמורות אסורות, אם כן אז יש להחזיר enum של זריקת המסר אחרת קבלת המסר, הקוד כבר כולו כתוב כולל פונקציית קבלת המסר אבל יש בקוד הזה הרבה באגים ובכלל המצב הראשוני שלו שהוא מתרסק אם מריצים אותו. כמה דגשים: יש שם בהתחלה משתנה result שאותו מחזירה הפונקציה אך בשני ה - if העיקריים לא מוצב בו הערך ואת זה יש לתקן, יש משתנה messagedata שלא מקבל ערך בהתחלה. שימו לב שהתיקונים הם אומנם ברובם בפונקציית הקבלת מסר אך יש גם לתקן קצת בפונקציות האחרות, בנוסף בשאלה הזאת מאוד עוזר בסוף להריץ את הטסטר האוטומטי כדי לוודות שכל המסרים קוטלגו כמו שצריך. שאלה 4 - צריך לכתוב 2 פונקציות, אחת היא של קבלת המסרים והשנייה היא החזרה של כל הכתובות השולחות שמהם נשלחו יותר מ - 10% מהמסרים עד עכשיו. הדרך לממש את זה היא באמצעות hashtable וביתר פירוט dictionary ב - #C, כל מפתח (key) יהיה בו כתובת שולח מסוימת וכל ערך יהיה כמה מסרים הכתובת הזאת שלחה, כלומר בעת קבלת מסר חדש בפונקציית הקבלת מסרים יש להעלות את המונה של מפתח כתובת השולח ב - 1 (או כמובן אם זו פעם ראשונה אז יש להוסיף מפתח חדש עם הערך 1) בנוסף יש לשמור מונה פשוט גלובלי ברמת המחלקה שכל פעם שמתקבל מסר חדש אז הוא מוגדל ב - 1. בפונקציית החזרת הכתובות יש פשוט לעשות לולאה שסורקת את כל המפתחות ב - hashtable ועבור כל מפתח בודקת האם הערך שלו לחלק בערך של המונה הכללי גדול שווה מ - 0.1 (כלומר שווה או גדול מ - 10%), אם כן אז מוסיפים אותו לרשימה שאותה בסוף מחזירים בפונקציה. כמה דגשים בכלל לכל חלק א: חשוב להגן על הקוד כמו נמשל בפונקציית קבלת ההודעות לבדוק שההודעה המתקבלת היא לא null ושהמסר בתוכה לא ריק, כדאי גם להשתמש ב - try catch בייחוד במצבים של נמשל פניה לאנטי וירוס החיצוני בשאלה 2 שם אנחנו לא יודעים איך מימשו אותו. חלק ב: בחלק זה בודקים ידיעה והבנה של פקודות תקשורת בסיסיות, קימפול והתקנה בלינוקס, זה נעשה באמצעות מסמך מפורט שבכל שורה אומר תעשו כך ותעשו כך, אתם צריכים לעקוב שורה אחרי שורה במסמך ולבצע בפועל את ההוראות על שתי מכונות וירטואליות של לינוקס שהן באותה הרשת, ברוב ההוראות במסמך גם רשום איזו פקודה יש להקליד, נמשל רשום שיש לבדוק תקשורת על ידי כתיבת ping וכתובת ה - ip של המכונה השניה, אך יש שורות שבהן לא רשומות הפקודות כמו נמשל רושמים שם שיש לקמפל (תוכנה מסוימת שמקודם הורדנו) בדרך הסטנדרטית ואחר כך להתקין אותה אבל לא רושמים איזה פקודות להקליד. אנסה לפרט מה שאני זוכר שיש לעשות שם: דבר ראשון יש לבדוק כתובות ip של שתי המכונות, אחר כך לעשות פינג מהמכונה הראשונה לעצמה, אחר כך מהראשונה לשניה, להוריד קובץ tar/zip מהמכונה השניה לראשונה באמצעות ftp, הקובץ הוא למעשה התקנה של תוכנה בשם pure ftp, יש לפתוח אותו, לקמפל את התוכן שלו, להתקין את התוכנה, להריץ אותה, לעשות kill לתהליך שלה, לחפש בתוך אחד ה - headers שלה מסר מסוים (welcome to), לפתוח את המסר הזה ולהוסיף לו את המילה my, לקמפל שוב ולהתקין את התוכנה מחדש, לפתוח את התוכנה ולראות שהמסר שהיא מציגה בהתחלה השתנה בהצלחה. כמה דגשים: כמו שקודם אמרתי רוב הדברים שיש לעשות רשום במסמך איזה פקודות צריך להקליד כך שאין צורך לזכור פקודות בעל פה, כשמחפשים את המסר שיש לשנות אז לחפש רק את המילים "welcome to" ולא את כל המסר (כי זה נראה לי מסר שמשורשר משני מקומות שונים) אם אני זוכר נכון זה נמצא בקובץ messages_en.h, את הקימפול הסטנדרטי אפשר לעשות עם gcc או make אבל אין צורך לשבור את הראש ולמצוא מה צריך לקמפל אלא יש שם קובץ טקסט שנקרא install, פותחים אותו עם עורך טקסט וישר בשורה הראשונה רשומות 3 פקודות שצריך להריץ, מריצים את 3 הפקודות אחת אחרי השניה והן גם מקמפלות וגם מתקינות את התוכנה, כדי להפעיל את התוכנה אני נכנסתי פשוט לתיקיית הקיצורי דרך לתוכנות מותקנות שהיא אם אני זוכר נכון usr/local/sbin (בכל מקרה כאשר מריצים את 3 הפקודות אז רשום לאיפה הוא מתקין אותה). חלק ג: טוב האמת שכאן אין לי יותר מדי מה לומר וגם אין כל כך איך להתכונן לזה, מדובר במשימת עיצוב גרפי, אגב אין חובה לעשות את החלק הזה אבל מי שעושה אותו יהיה לו יתרון בקבלה לתפקידים שדורשים יכולת עיצוב ממשקים, במשימה מדברים על מערכת שמשמשת לחיפוש עובדים בחברה, נותנים תמונה שבתוכה יש כביכול תוצאת חיפוש אחת שכוללת תמונה של עובדת, כמה פקדים והרבה מידע עליה שנמצא בדרך כלל כתיבות טקסט, התצוגה הראשונית בתמונה לא נראית טוב ודי מבולגנת, המשימה היא לפתוח את התמונה בשלמותה בצייר ולגזור ממנה חלקים שונים כמו נמשל התיבות טקסט ואותן לארגן בתמונה חדשה (חלון צייר שני) כך שבסופו של דבר תתקבל תמונה סופית שונה שמציגה את העובד ופרטיו בצורה הרבה יותר מאורגנת, יפה ושימושית, ניתן לשנות את הגודל של הפקדים, צבעים ובכלל כל דבר כמעט שאפשר לעשות בצייר. כמה דגשים: כדי להתכונן לחלק זה אז למי שלא מכיר אולי כדאי באמת לעבוד קצת עם הצייר, לגזור חלקים מתמונה לשנות גדלים וכ"ו, כדאי לעבוד בצייר במוד זום מוגדל (נמשל 200%), כדאי להתחיל מלחשוב על קבוצות פקדים שונות עם מכנה משותף כמו נמשל כל התיבות שמכילות את פרטי הכתובת ואז פשוט לגזור אותן מהתמונה הראשונה ולשים אותן ביחד יפה בשניה, כאמור הכי טוב לגזור כל פעם דברים מהראשונה וכך לאט לאט התמונה הראשונה מתרקונת ונהיה יותר קל להתסכל עליה ולתכנן מה עושים (זו לפחות הדרך שאני מצאתי בשבילי הכי טובה אך כמובן שיש עוד דרכים). אה ודבר אחרון לסיום נזכרתי במשהו מצחיק, בסוף המבחן הבוחן ניגש לכל אחד ואז שואל אותו האם הוא ראה את המבחן הזה בעבר, מה בדיוק הוא מצפה שיענו לו??? ובכלל נראה לי שכמעט כולם ראו את המבחן הזה בעבר.. בהצלחה ודיר בלק אם מישהו מספר משהו/נותן רמז על המבחן הזה אחרת פשוט צ'ק פוינט ימצאו את מה שרשמתי כאן וישנו את המבחן.. אני מימשתי את השאלה ה-4 באמצע' מערך של 10 איברים ופשוט לשמור את האיברים עם ה-traffic הכי גדול במערך. הרעיון הוא שאם רוצים את ה-hosts עם לפחות 10% traffic אז כל ה-hosts יהיו בהכרח במערך. אבל לקח לי מלא זמן להגיע לרעיון הזה ולקמפל את זה. איזה שעתיים או יותר רק לתרגיל הזה. יצא לי מהירות ביצוע מטורפת(של איזה 200ms או משהו כזה) ובקושי בסוף סיימתי את המבחנים בגלל התרגיל הזה אבל לא יודע.. ביינתים מחכה לתשובה.
טוב אני כבר הרבה זמן משתמש בפורום הזה ונהנה מכל מה שאנשים מעלים לכאן והיות ואני גם מתעב תאגידים גדולים אז החלטתי להעלות כאן את המבחן (הראשון) המפורט של check point. הייתי שם ממש לא מזמן ויש לי את כל השאלות די טריות בראש, אגב אני בחרתי לממש ב - #C (אבל אלו אותן שאלות בכל השפות). כמו שציינו קודם יש למבחן 3 חלקים: חלק ראשון הכי גדול שבו 4 שאלות תכנותיות והוא נמשך 3-4 שעות, חלק שני של שעה וחצי ובו נדרשים להריץ קצת פקודות בסיסיות של תקשורת בין שתי מכונות לינוקס ובנוסף גם לקמפל ולהתקין קוד תוכנה מוכן, חלק שלישי הוא בן רק חצי שעה והוא מבחן עיצוב גרפי. חלק א: ישנה כביכול מערכת שאמורה לבצע 4 פעולות (כל פעולה זה שאלה): פיירוול של מסרים, סינון מסרים עם וירוסים, סינון מסרים עם מילות מוגנות וניטור של תעבורת המסרים. מקבלים solution מוכן שבתוכו יש פרויקט שבו 4 מחלקות, כל מחלקה מייצגת שאלה נפרדת, בכל מחלקה יש פונקציה או שתיים ריקות או לא תקינות שאותן אתם צריכים למלא/לתקן. חוץ מהמחלקות האלו ישנן עוד מחלקות נתונים ועוד פרויקטים אבל בהם לא נוגעים. מחלקה חשובה מאוד היא מחלקת הודעה/מסר (message) שבאה לייצג טיפוס נתונים מסוג הודעה, בטיפוס הזה יש כתובת שולח, כתובת מקבל, תוכן ההודעה (כמחרוזת) ועוד.. בנוסף לאחר שכתבתם את הקוד ישנו טסטר אוטומטי שהוא מריץ הרבה מסרים על המחלקות השונות והוא מדווח אם מה שכתבתם מתפקד כהלכה ואכן המחלקות מבצעות מה שצריך על המסרים ומקטלגות אותן נכון. שאלה 1 - צריך לכתוב חיפוש בעץ בינארי ממוין (כלומר לכל קודקוד הבנים משמאל קטנים יותר מהקודקוד ומימין גדולים יותר), ישנו עץ בינארי ממוין שמכיל בכל קודקוד כתובת אסורה (נמשל כתובת של ספאם), את העץ בונים בפונקציה אחרת שעוברת על קובץ טקסטואלי וממירה אותו לעץ אבל הקוד הזה לא אמור לעניין אותכם, בנוסף ישנה פונקציה שמקבלת הודעה ובה אתם צריכים לכתוב קוד שבודק שכתובת השולח וכתובת המקבל לא נמצאים בעץ, אם אחד מהם נמצא אז מחזירים enum שמייצג לזרוק את המסר אחרת מחזירים enum לקבל את המסר. שימו לב שהביצועים מאוד מאוד חשובים בייחוד בשאלה הזאת ולכן הדרך הכי טובה לדעתי לפתור את זה היא לעשות סריקה של העץ באמצעות while ולא רקורסיה! (מי שלא יודע שיחפש בגוגל איך מחפשים ערך באמצעות לולאה בעץ בינארי ממוין ודגש על ממוין!). כמה דגשים די טריוואלים: שימו לב שצריך לעשות 2 סריקות של העץ (אחת עבור כתובת השולח ושניה עבור המקבל) לכן כמובן שעדיף לכתוב את סריקת העץ כפונקציה נפרדת שמקבלת פרמטר כתובת ולקרוא לפונקציה פשוט פעמיים, דגש שני הוא שאין לאתחל את העץ בתוך הפונקצית טיפול מסרים שאתם כותבים כי אז עבור כל מסר העץ יאותחל מחדש, יש להגיד משתנה private מסוג העץ במחלקה (של השאלה) ובבנאי שלה לאתחל את העץ וכך הוא יאותחל רק פעם אחת. שאלה 2 - בשאלה זאת נדרשים לסרוק כל מסר ולגלות האם הוא מכיל וירוס, הסריקה מתבצעת באמצעות מחלקה אחרת שנקראת אנטי וירוס שבה לא אמורים לגעת (אבל כן להבין קצת את הקוד שלה), גם כאן יש לממש פונקציית טיפול במסרים כאשר כל מסר נשלח לאובייקט מסוג המחלקה האחרת ויש לו פונקציה שסורקת את המסר ומחזירה האם יש בו וירוס או אין ובהתאם אתם מחזירים את ה - enum המתאים. כמה דגשים: כמו בשאלה 1 גם כאן יש להגדיר משתנה פרטי מסוג מחלקת אנטי וירוס ולאתחל אותו בבנאי, חשוב לשים לב שהאתחול כולל גם new וגם קריאה לפונקציית setup (פונקציה של המחלקה) שהיא טוענת בסיס נתונים של הוירוסים וכך האובייקט אנטי וירוס מוכן לשימוש, אגב הצורה שבה הסריקה מתבצעת היא באמצעות ביטויים רגולרים אבל זה לא אמור לעניין אותכם, שימו לב שגם בקריאה אח"כ לפונקציית סריקת מסר מלבד המסר יש עוד כמה ערכים בוליאנים ששולחים אליה, יש ערך שנקרא fullscan שהוא צריך להיות false כי אם הוא true אז מה שיקרה זה שמסר שישלח יבדק כנגד כל הבסיס נתונים של הוירוסים שזה מיותר מכיוון שאם הוא false אז הוא סורק רק עד מציאת וירוס ראשון ואז מפסיק וזה ישפר לכם את הביצועים, יש עוד פרמטר (הראשון ביותר) שבכלל אין לו שימוש בתוך האנטי וירוס וסתם כתבו אותו כדי לבלבל, והפרמטר האחרון הוא loadviruses אך הוא יכול להיות true או false זה לא משנה, כי גם ככה בכל קריאה לסריקת מסר יש בדיקה האם הבסיס נתונים כבר נטען קודם ואם כן אז לא טוענים אותו גם האם הפרמטר הזה יהיה true. שאלה 3 - יש מחלקה שבתוכה יש פונקציה שמקבלת את המסר וקוראת לפונקציות אחרת במטרה לראות האם במסר יש מילים שמורות אסורות, אם כן אז יש להחזיר enum של זריקת המסר אחרת קבלת המסר, הקוד כבר כולו כתוב כולל פונקציית קבלת המסר אבל יש בקוד הזה הרבה באגים ובכלל המצב הראשוני שלו שהוא מתרסק אם מריצים אותו. כמה דגשים: יש שם בהתחלה משתנה result שאותו מחזירה הפונקציה אך בשני ה - if העיקריים לא מוצב בו הערך ואת זה יש לתקן, יש משתנה messagedata שלא מקבל ערך בהתחלה. שימו לב שהתיקונים הם אומנם ברובם בפונקציית הקבלת מסר אך יש גם לתקן קצת בפונקציות האחרות, בנוסף בשאלה הזאת מאוד עוזר בסוף להריץ את הטסטר האוטומטי כדי לוודות שכל המסרים קוטלגו כמו שצריך. שאלה 4 - צריך לכתוב 2 פונקציות, אחת היא של קבלת המסרים והשנייה היא החזרה של כל הכתובות השולחות שמהם נשלחו יותר מ - 10% מהמסרים עד עכשיו. הדרך לממש את זה היא באמצעות hashtable וביתר פירוט dictionary ב - #C, כל מפתח (key) יהיה בו כתובת שולח מסוימת וכל ערך יהיה כמה מסרים הכתובת הזאת שלחה, כלומר בעת קבלת מסר חדש בפונקציית הקבלת מסרים יש להעלות את המונה של מפתח כתובת השולח ב - 1 (או כמובן אם זו פעם ראשונה אז יש להוסיף מפתח חדש עם הערך 1) בנוסף יש לשמור מונה פשוט גלובלי ברמת המחלקה שכל פעם שמתקבל מסר חדש אז הוא מוגדל ב - 1. בפונקציית החזרת הכתובות יש פשוט לעשות לולאה שסורקת את כל המפתחות ב - hashtable ועבור כל מפתח בודקת האם הערך שלו לחלק בערך של המונה הכללי גדול שווה מ - 0.1 (כלומר שווה או גדול מ - 10%), אם כן אז מוסיפים אותו לרשימה שאותה בסוף מחזירים בפונקציה. כמה דגשים בכלל לכל חלק א: חשוב להגן על הקוד כמו נמשל בפונקציית קבלת ההודעות לבדוק שההודעה המתקבלת היא לא null ושהמסר בתוכה לא ריק, כדאי גם להשתמש ב - try catch בייחוד במצבים של נמשל פניה לאנטי וירוס החיצוני בשאלה 2 שם אנחנו לא יודעים איך מימשו אותו. חלק ב: בחלק זה בודקים ידיעה והבנה של פקודות תקשורת בסיסיות, קימפול והתקנה בלינוקס, זה נעשה באמצעות מסמך מפורט שבכל שורה אומר תעשו כך ותעשו כך, אתם צריכים לעקוב שורה אחרי שורה במסמך ולבצע בפועל את ההוראות על שתי מכונות וירטואליות של לינוקס שהן באותה הרשת, ברוב ההוראות במסמך גם רשום איזו פקודה יש להקליד, נמשל רשום שיש לבדוק תקשורת על ידי כתיבת ping וכתובת ה - ip של המכונה השניה, אך יש שורות שבהן לא רשומות הפקודות כמו נמשל רושמים שם שיש לקמפל (תוכנה מסוימת שמקודם הורדנו) בדרך הסטנדרטית ואחר כך להתקין אותה אבל לא רושמים איזה פקודות להקליד. אנסה לפרט מה שאני זוכר שיש לעשות שם: דבר ראשון יש לבדוק כתובות ip של שתי המכונות, אחר כך לעשות פינג מהמכונה הראשונה לעצמה, אחר כך מהראשונה לשניה, להוריד קובץ tar/zip מהמכונה השניה לראשונה באמצעות ftp, הקובץ הוא למעשה התקנה של תוכנה בשם pure ftp, יש לפתוח אותו, לקמפל את התוכן שלו, להתקין את התוכנה, להריץ אותה, לעשות kill לתהליך שלה, לחפש בתוך אחד ה - headers שלה מסר מסוים (welcome to), לפתוח את המסר הזה ולהוסיף לו את המילה my, לקמפל שוב ולהתקין את התוכנה מחדש, לפתוח את התוכנה ולראות שהמסר שהיא מציגה בהתחלה השתנה בהצלחה. כמה דגשים: כמו שקודם אמרתי רוב הדברים שיש לעשות רשום במסמך איזה פקודות צריך להקליד כך שאין צורך לזכור פקודות בעל פה, כשמחפשים את המסר שיש לשנות אז לחפש רק את המילים "welcome to" ולא את כל המסר (כי זה נראה לי מסר שמשורשר משני מקומות שונים) אם אני זוכר נכון זה נמצא בקובץ messages_en.h, את הקימפול הסטנדרטי אפשר לעשות עם gcc או make אבל אין צורך לשבור את הראש ולמצוא מה צריך לקמפל אלא יש שם קובץ טקסט שנקרא install, פותחים אותו עם עורך טקסט וישר בשורה הראשונה רשומות 3 פקודות שצריך להריץ, מריצים את 3 הפקודות אחת אחרי השניה והן גם מקמפלות וגם מתקינות את התוכנה, כדי להפעיל את התוכנה אני נכנסתי פשוט לתיקיית הקיצורי דרך לתוכנות מותקנות שהיא אם אני זוכר נכון usr/local/sbin (בכל מקרה כאשר מריצים את 3 הפקודות אז רשום לאיפה הוא מתקין אותה). חלק ג: טוב האמת שכאן אין לי יותר מדי מה לומר וגם אין כל כך איך להתכונן לזה, מדובר במשימת עיצוב גרפי, אגב אין חובה לעשות את החלק הזה אבל מי שעושה אותו יהיה לו יתרון בקבלה לתפקידים שדורשים יכולת עיצוב ממשקים, במשימה מדברים על מערכת שמשמשת לחיפוש עובדים בחברה, נותנים תמונה שבתוכה יש כביכול תוצאת חיפוש אחת שכוללת תמונה של עובדת, כמה פקדים והרבה מידע עליה שנמצא בדרך כלל כתיבות טקסט, התצוגה הראשונית בתמונה לא נראית טוב ודי מבולגנת, המשימה היא לפתוח את התמונה בשלמותה בצייר ולגזור ממנה חלקים שונים כמו נמשל התיבות טקסט ואותן לארגן בתמונה חדשה (חלון צייר שני) כך שבסופו של דבר תתקבל תמונה סופית שונה שמציגה את העובד ופרטיו בצורה הרבה יותר מאורגנת, יפה ושימושית, ניתן לשנות את הגודל של הפקדים, צבעים ובכלל כל דבר כמעט שאפשר לעשות בצייר. כמה דגשים: כדי להתכונן לחלק זה אז למי שלא מכיר אולי כדאי באמת לעבוד קצת עם הצייר, לגזור חלקים מתמונה לשנות גדלים וכ"ו, כדאי לעבוד בצייר במוד זום מוגדל (נמשל 200%), כדאי להתחיל מלחשוב על קבוצות פקדים שונות עם מכנה משותף כמו נמשל כל התיבות שמכילות את פרטי הכתובת ואז פשוט לגזור אותן מהתמונה הראשונה ולשים אותן ביחד יפה בשניה, כאמור הכי טוב לגזור כל פעם דברים מהראשונה וכך לאט לאט התמונה הראשונה מתרקונת ונהיה יותר קל להתסכל עליה ולתכנן מה עושים (זו לפחות הדרך שאני מצאתי בשבילי הכי טובה אך כמובן שיש עוד דרכים). אה ודבר אחרון לסיום נזכרתי במשהו מצחיק, בסוף המבחן הבוחן ניגש לכל אחד ואז שואל אותו האם הוא ראה את המבחן הזה בעבר, מה בדיוק הוא מצפה שיענו לו??? ובכלל נראה לי שכמעט כולם ראו את המבחן הזה בעבר.. בהצלחה ודיר בלק אם מישהו מספר משהו/נותן רמז על המבחן הזה אחרת פשוט צ'ק פוינט ימצאו את מה שרשמתי כאן וישנו את המבחן.. אם מממשים את שאלה 4, ב C, באיזה מבנה נתונים כדאי להשתמש?
האם המבחן עדיין עדכני?
טוב אני כבר הרבה זמן משתמש בפורום הזה ונהנה מכל מה שאנשים מעלים לכאן והיות ואני גם מתעב תאגידים גדולים אז החלטתי להעלות כאן את המבחן (הראשון) המפורט של check point. הייתי שם ממש לא מזמן ויש לי את כל השאלות די טריות בראש, אגב אני בחרתי לממש ב - #C (אבל אלו אותן שאלות בכל השפות). כמו שציינו קודם יש למבחן 3 חלקים: חלק ראשון הכי גדול שבו 4 שאלות תכנותיות והוא נמשך 3-4 שעות, חלק שני של שעה וחצי ובו נדרשים להריץ קצת פקודות בסיסיות של תקשורת בין שתי מכונות לינוקס ובנוסף גם לקמפל ולהתקין קוד תוכנה מוכן, חלק שלישי הוא בן רק חצי שעה והוא מבחן עיצוב גרפי. חלק א: ישנה כביכול מערכת שאמורה לבצע 4 פעולות (כל פעולה זה שאלה): פיירוול של מסרים, סינון מסרים עם וירוסים, סינון מסרים עם מילות מוגנות וניטור של תעבורת המסרים. מקבלים solution מוכן שבתוכו יש פרויקט שבו 4 מחלקות, כל מחלקה מייצגת שאלה נפרדת, בכל מחלקה יש פונקציה או שתיים ריקות או לא תקינות שאותן אתם צריכים למלא/לתקן. חוץ מהמחלקות האלו ישנן עוד מחלקות נתונים ועוד פרויקטים אבל בהם לא נוגעים. מחלקה חשובה מאוד היא מחלקת הודעה/מסר (message) שבאה לייצג טיפוס נתונים מסוג הודעה, בטיפוס הזה יש כתובת שולח, כתובת מקבל, תוכן ההודעה (כמחרוזת) ועוד.. בנוסף לאחר שכתבתם את הקוד ישנו טסטר אוטומטי שהוא מריץ הרבה מסרים על המחלקות השונות והוא מדווח אם מה שכתבתם מתפקד כהלכה ואכן המחלקות מבצעות מה שצריך על המסרים ומקטלגות אותן נכון. שאלה 1 - צריך לכתוב חיפוש בעץ בינארי ממוין (כלומר לכל קודקוד הבנים משמאל קטנים יותר מהקודקוד ומימין גדולים יותר), ישנו עץ בינארי ממוין שמכיל בכל קודקוד כתובת אסורה (נמשל כתובת של ספאם), את העץ בונים בפונקציה אחרת שעוברת על קובץ טקסטואלי וממירה אותו לעץ אבל הקוד הזה לא אמור לעניין אותכם, בנוסף ישנה פונקציה שמקבלת הודעה ובה אתם צריכים לכתוב קוד שבודק שכתובת השולח וכתובת המקבל לא נמצאים בעץ, אם אחד מהם נמצא אז מחזירים enum שמייצג לזרוק את המסר אחרת מחזירים enum לקבל את המסר. שימו לב שהביצועים מאוד מאוד חשובים בייחוד בשאלה הזאת ולכן הדרך הכי טובה לדעתי לפתור את זה היא לעשות סריקה של העץ באמצעות while ולא רקורסיה! (מי שלא יודע שיחפש בגוגל איך מחפשים ערך באמצעות לולאה בעץ בינארי ממוין ודגש על ממוין!). כמה דגשים די טריוואלים: שימו לב שצריך לעשות 2 סריקות של העץ (אחת עבור כתובת השולח ושניה עבור המקבל) לכן כמובן שעדיף לכתוב את סריקת העץ כפונקציה נפרדת שמקבלת פרמטר כתובת ולקרוא לפונקציה פשוט פעמיים, דגש שני הוא שאין לאתחל את העץ בתוך הפונקצית טיפול מסרים שאתם כותבים כי אז עבור כל מסר העץ יאותחל מחדש, יש להגיד משתנה private מסוג העץ במחלקה (של השאלה) ובבנאי שלה לאתחל את העץ וכך הוא יאותחל רק פעם אחת. שאלה 2 - בשאלה זאת נדרשים לסרוק כל מסר ולגלות האם הוא מכיל וירוס, הסריקה מתבצעת באמצעות מחלקה אחרת שנקראת אנטי וירוס שבה לא אמורים לגעת (אבל כן להבין קצת את הקוד שלה), גם כאן יש לממש פונקציית טיפול במסרים כאשר כל מסר נשלח לאובייקט מסוג המחלקה האחרת ויש לו פונקציה שסורקת את המסר ומחזירה האם יש בו וירוס או אין ובהתאם אתם מחזירים את ה - enum המתאים. כמה דגשים: כמו בשאלה 1 גם כאן יש להגדיר משתנה פרטי מסוג מחלקת אנטי וירוס ולאתחל אותו בבנאי, חשוב לשים לב שהאתחול כולל גם new וגם קריאה לפונקציית setup (פונקציה של המחלקה) שהיא טוענת בסיס נתונים של הוירוסים וכך האובייקט אנטי וירוס מוכן לשימוש, אגב הצורה שבה הסריקה מתבצעת היא באמצעות ביטויים רגולרים אבל זה לא אמור לעניין אותכם, שימו לב שגם בקריאה אח"כ לפונקציית סריקת מסר מלבד המסר יש עוד כמה ערכים בוליאנים ששולחים אליה, יש ערך שנקרא fullscan שהוא צריך להיות false כי אם הוא true אז מה שיקרה זה שמסר שישלח יבדק כנגד כל הבסיס נתונים של הוירוסים שזה מיותר מכיוון שאם הוא false אז הוא סורק רק עד מציאת וירוס ראשון ואז מפסיק וזה ישפר לכם את הביצועים, יש עוד פרמטר (הראשון ביותר) שבכלל אין לו שימוש בתוך האנטי וירוס וסתם כתבו אותו כדי לבלבל, והפרמטר האחרון הוא loadviruses אך הוא יכול להיות true או false זה לא משנה, כי גם ככה בכל קריאה לסריקת מסר יש בדיקה האם הבסיס נתונים כבר נטען קודם ואם כן אז לא טוענים אותו גם האם הפרמטר הזה יהיה true. שאלה 3 - יש מחלקה שבתוכה יש פונקציה שמקבלת את המסר וקוראת לפונקציות אחרת במטרה לראות האם במסר יש מילים שמורות אסורות, אם כן אז יש להחזיר enum של זריקת המסר אחרת קבלת המסר, הקוד כבר כולו כתוב כולל פונקציית קבלת המסר אבל יש בקוד הזה הרבה באגים ובכלל המצב הראשוני שלו שהוא מתרסק אם מריצים אותו. כמה דגשים: יש שם בהתחלה משתנה result שאותו מחזירה הפונקציה אך בשני ה - if העיקריים לא מוצב בו הערך ואת זה יש לתקן, יש משתנה messagedata שלא מקבל ערך בהתחלה. שימו לב שהתיקונים הם אומנם ברובם בפונקציית הקבלת מסר אך יש גם לתקן קצת בפונקציות האחרות, בנוסף בשאלה הזאת מאוד עוזר בסוף להריץ את הטסטר האוטומטי כדי לוודות שכל המסרים קוטלגו כמו שצריך. שאלה 4 - צריך לכתוב 2 פונקציות, אחת היא של קבלת המסרים והשנייה היא החזרה של כל הכתובות השולחות שמהם נשלחו יותר מ - 10% מהמסרים עד עכשיו. הדרך לממש את זה היא באמצעות hashtable וביתר פירוט dictionary ב - #C, כל מפתח (key) יהיה בו כתובת שולח מסוימת וכל ערך יהיה כמה מסרים הכתובת הזאת שלחה, כלומר בעת קבלת מסר חדש בפונקציית הקבלת מסרים יש להעלות את המונה של מפתח כתובת השולח ב - 1 (או כמובן אם זו פעם ראשונה אז יש להוסיף מפתח חדש עם הערך 1) בנוסף יש לשמור מונה פשוט גלובלי ברמת המחלקה שכל פעם שמתקבל מסר חדש אז הוא מוגדל ב - 1. בפונקציית החזרת הכתובות יש פשוט לעשות לולאה שסורקת את כל המפתחות ב - hashtable ועבור כל מפתח בודקת האם הערך שלו לחלק בערך של המונה הכללי גדול שווה מ - 0.1 (כלומר שווה או גדול מ - 10%), אם כן אז מוסיפים אותו לרשימה שאותה בסוף מחזירים בפונקציה. כמה דגשים בכלל לכל חלק א: חשוב להגן על הקוד כמו נמשל בפונקציית קבלת ההודעות לבדוק שההודעה המתקבלת היא לא null ושהמסר בתוכה לא ריק, כדאי גם להשתמש ב - try catch בייחוד במצבים של נמשל פניה לאנטי וירוס החיצוני בשאלה 2 שם אנחנו לא יודעים איך מימשו אותו. חלק ב: בחלק זה בודקים ידיעה והבנה של פקודות תקשורת בסיסיות, קימפול והתקנה בלינוקס, זה נעשה באמצעות מסמך מפורט שבכל שורה אומר תעשו כך ותעשו כך, אתם צריכים לעקוב שורה אחרי שורה במסמך ולבצע בפועל את ההוראות על שתי מכונות וירטואליות של לינוקס שהן באותה הרשת, ברוב ההוראות במסמך גם רשום איזו פקודה יש להקליד, נמשל רשום שיש לבדוק תקשורת על ידי כתיבת ping וכתובת ה - ip של המכונה השניה, אך יש שורות שבהן לא רשומות הפקודות כמו נמשל רושמים שם שיש לקמפל (תוכנה מסוימת שמקודם הורדנו) בדרך הסטנדרטית ואחר כך להתקין אותה אבל לא רושמים איזה פקודות להקליד. אנסה לפרט מה שאני זוכר שיש לעשות שם: דבר ראשון יש לבדוק כתובות ip של שתי המכונות, אחר כך לעשות פינג מהמכונה הראשונה לעצמה, אחר כך מהראשונה לשניה, להוריד קובץ tar/zip מהמכונה השניה לראשונה באמצעות ftp, הקובץ הוא למעשה התקנה של תוכנה בשם pure ftp, יש לפתוח אותו, לקמפל את התוכן שלו, להתקין את התוכנה, להריץ אותה, לעשות kill לתהליך שלה, לחפש בתוך אחד ה - headers שלה מסר מסוים (welcome to), לפתוח את המסר הזה ולהוסיף לו את המילה my, לקמפל שוב ולהתקין את התוכנה מחדש, לפתוח את התוכנה ולראות שהמסר שהיא מציגה בהתחלה השתנה בהצלחה. כמה דגשים: כמו שקודם אמרתי רוב הדברים שיש לעשות רשום במסמך איזה פקודות צריך להקליד כך שאין צורך לזכור פקודות בעל פה, כשמחפשים את המסר שיש לשנות אז לחפש רק את המילים "welcome to" ולא את כל המסר (כי זה נראה לי מסר שמשורשר משני מקומות שונים) אם אני זוכר נכון זה נמצא בקובץ messages_en.h, את הקימפול הסטנדרטי אפשר לעשות עם gcc או make אבל אין צורך לשבור את הראש ולמצוא מה צריך לקמפל אלא יש שם קובץ טקסט שנקרא install, פותחים אותו עם עורך טקסט וישר בשורה הראשונה רשומות 3 פקודות שצריך להריץ, מריצים את 3 הפקודות אחת אחרי השניה והן גם מקמפלות וגם מתקינות את התוכנה, כדי להפעיל את התוכנה אני נכנסתי פשוט לתיקיית הקיצורי דרך לתוכנות מותקנות שהיא אם אני זוכר נכון usr/local/sbin (בכל מקרה כאשר מריצים את 3 הפקודות אז רשום לאיפה הוא מתקין אותה). חלק ג: טוב האמת שכאן אין לי יותר מדי מה לומר וגם אין כל כך איך להתכונן לזה, מדובר במשימת עיצוב גרפי, אגב אין חובה לעשות את החלק הזה אבל מי שעושה אותו יהיה לו יתרון בקבלה לתפקידים שדורשים יכולת עיצוב ממשקים, במשימה מדברים על מערכת שמשמשת לחיפוש עובדים בחברה, נותנים תמונה שבתוכה יש כביכול תוצאת חיפוש אחת שכוללת תמונה של עובדת, כמה פקדים והרבה מידע עליה שנמצא בדרך כלל כתיבות טקסט, התצוגה הראשונית בתמונה לא נראית טוב ודי מבולגנת, המשימה היא לפתוח את התמונה בשלמותה בצייר ולגזור ממנה חלקים שונים כמו נמשל התיבות טקסט ואותן לארגן בתמונה חדשה (חלון צייר שני) כך שבסופו של דבר תתקבל תמונה סופית שונה שמציגה את העובד ופרטיו בצורה הרבה יותר מאורגנת, יפה ושימושית, ניתן לשנות את הגודל של הפקדים, צבעים ובכלל כל דבר כמעט שאפשר לעשות בצייר. כמה דגשים: כדי להתכונן לחלק זה אז למי שלא מכיר אולי כדאי באמת לעבוד קצת עם הצייר, לגזור חלקים מתמונה לשנות גדלים וכ"ו, כדאי לעבוד בצייר במוד זום מוגדל (נמשל 200%), כדאי להתחיל מלחשוב על קבוצות פקדים שונות עם מכנה משותף כמו נמשל כל התיבות שמכילות את פרטי הכתובת ואז פשוט לגזור אותן מהתמונה הראשונה ולשים אותן ביחד יפה בשניה, כאמור הכי טוב לגזור כל פעם דברים מהראשונה וכך לאט לאט התמונה הראשונה מתרקונת ונהיה יותר קל להתסכל עליה ולתכנן מה עושים (זו לפחות הדרך שאני מצאתי בשבילי הכי טובה אך כמובן שיש עוד דרכים). אה ודבר אחרון לסיום נזכרתי במשהו מצחיק, בסוף המבחן הבוחן ניגש לכל אחד ואז שואל אותו האם הוא ראה את המבחן הזה בעבר, מה בדיוק הוא מצפה שיענו לו??? ובכלל נראה לי שכמעט כולם ראו את המבחן הזה בעבר.. בהצלחה ודיר בלק אם מישהו מספר משהו/נותן רמז על המבחן הזה אחרת פשוט צ'ק פוינט ימצאו את מה שרשמתי כאן וישנו את המבחן.. האם צריך לבנות hashtable מ-0? או להשתמש במבנה נתונים קיים?
שלום לכם, זימנו אותי למבחני QA בצ׳ק פוינט, ואמרו לי שהתכנים שיהיו במבחן הם: subneting, מבחן שבודק הבנה לוגית ומבחן שמודד יכולות טכניות. האם מישהו מכיר את המבחן ויכול לתת לי אינפורמציה מפורטת יותר? אולי דוגמאות קונקרטיות לשאלות? אני מאוד אשמח לעזרה ....
שלום- אני מוזמן בקרוב לראיון בחברה למשרת תכנות: מישהו יודע האם השאלות הם עדיין 4 השאלות כמו שאמרו ? או חזרו למימוש הפרוטוקול שהיה לפני כמה שנים? או שונה למשהו אחר ? תודה.
אותם שאלות. תקרא מה שכתבו בשרשור.. הבליידים האלו.. אכן בהצלחה
אפשר שיחזור של המבחן ב Java ? אשמח מאוד...
תודה,יש כאן אנשים בסדר גמור...
שלום לכולם, הייתי שם לפני שבוע וחצי, והמבחן מורכב מאותם השאלות. לא הצלחתי לסיים בזמן את השאלה השלישית - עם הקוד שצריך לדבג. מלבד מה שכתבו בהודעות הקודמות לגבי שאלה זו, באג נוסף הוא אורך המסר שלא תקין בכל המקרים. במצב המקורי, יש פונקציה שאליה מכניסים את האורך הרצוי, והיא אמורה להחזיר את המסר. האורך מחושב באמצעות חיבור וחיסור של כמה גדלים (לדוג' אורך הודעה כולל - אורך מילת פתיחה - אורך מילת סיום = אורך מסר רלוונטי). החיבור והחיסור לא נכון בכל המקרים. אני ממליץ לבצע אותו בנפרד לפני הקריאה לפונקציה (לדוג' len1 = messageLength - header1 - header 2 + etc), להריץ בדיבגר שורה שורה ולבדוק שהמספר שמתקבל הגיוני. (אני בזבזתי יותר מדי זמן עד שגיליתי את הבעיה הזו). לדעתי זו השאלה שצורכת הכי הרבה זמן, בפרט אם מתכוננים מראש לשאלות האחרות על פי מה שכתבו בשרשור הזה. בהצלחה!
בהצלחה יקר. תוכל בבקשה להסביר יותר בקשר לבאג שמצאת? וכן מישו שעשה את המבחן ב c++ מאיזה טיפוס תוכן ההודעה? char* או string?
היי, עשיתי אומנם את המבחן ב-C אבל אני אנסה לעזור... הבאג הזה לא כזה קשה, פשוט צריך לחשב נכון. בפונקציה הזאת צריכים להפריד את המחרוזות שמופיעות אחרי המילה Subject: ואחרי Body: אבל החישוב שהם עושים שם לחישוב הפויינטרים שמצביעים על המחרוזות האלה ועל הגודל שצריך להקצות להן הוא לא טוב. מה שאני עשיתי זה כתבתי לי על דף Subject:hello Body:world ועשיתי חישובים איך מגיעים ל-hello ולגודל שלו, וכנל ל-world ושיניתי את הקוד לפי זה אני משערת שב-C++ יש שם קטע דומה... לא יכולה לעזור לגבי השאלה השניה כי ב-C יש רק *Char
אחת אחת יקרה... ממה שהבנתי מתשובתך: כל המסר כולל ה subject וה body נמצא באותו מחרוזת. ומה שתפקיד הקוד לבצע הוא לחשב את כמות התווים שאחרי ה body? והטעות בחישוב נמצאת במקום אחד? בנוסף אם תוכלי בבקשה לכתוב עוד באגים שגילית אודה לך מאוד. ברכות יחולו על ראשך!
מטרת הקוד היא למצוא מילים מסוימות שבאות אחרי הsubject או הbody והטעות בקוד היא בחישוב של המקום שממנו מחפשים ,(אם אני זוכר נכון עוד טעות שיש שם -צריך לבדוק שהמצביע לsubject נמצא לפני המצביע לbody ) מישהו יודע מתי יש שם יום מבחנים לא לפיתוח אלא משרות אחרות ??
אני אנסה, קודם הקדמה קטנה... השאלה של התיקון קוד היא למעשה חלק (שמה זה נקרא "בלייד") שבודק אם בהודעה מסויימת קיימות כל מיני מילים שמורות. יש ניתוח נפרד להודעות SMTP וניתוח נפרד ל-FTP\HTTP. הניתוח של SMTP בודק רק הודעות מהתבנית *Subject:*Body אחרת הוא יבצע בדיקה של כל המחרוזת (כמו שעושים בפרוטוקולים FTP\HTTP). את הבדיקה הוא עושה בנפרד למחרוזת שמופיעה אחרי המילה :Subject ולמחרוזת שאחרי :Body למשל בדוגמא שכתבתי מקודם הוא ייקח את התת מחרוזת hello ויחפש בתוכה מילים שמורות ואחכ ייקח את התת מחרוזת world ואותו כנל עכשיו יש שם 4 פונקציות עיקריות: פונקציה ראשית לטיפול בהודעות (מחזירה Accept\drop) פונקציה לטיפול בהודעות SMTP (כנל) פונקציה לטיפול בהודעות FTP\HTTP (כנל) ופונקציה שמקבלת מחרוזת ובודקת אם קיימת בה מילה שמורה (בוליאנית) צריך לטפל בבאגים ב-2 פונקציות העליונות בתחתונות לא זכור לי שהיו באגים בפונקציה הראשית: * יש משתנה לא מאותחל שעליו מבצעים את כל הבדיקות ובגלל זה התוכנית מתרסקת בפעם הראשונה * הודעות ריקות צריך ישר לקבל ללא בדיקת מחרוזות בטעות עשו שם דרופ (הם ממש כותבים את זה בהערה, אבל עושים בקוד הפוך) * ב-switch יש רק פונקציות אך לא מתייחסים לערך המוחזר שלהן. צריך או להוסיף שם return, או להחזיר את הערך המוחזר למשתנה ולעשות break. בפונקציה שמטפלת ב-SMTP: * החישוב של הפויינטרים וגודל המחרוזות לא נכון. אני חישבתי הכל מחדש כמו שתיארתי מקודם. * יש שם שחרור זיכרון בסוף הפונקציה, למרות שלא תמיד הוקצה זיכרון. (למשל במקרים בהם ההודעה לא מתאימה לתבנית). בעיקרון את הפונקציה הזאת כתבתי כמעט מחדש ובצורה הדרגתית (בדיקת התבנית, בדיקת הנושא בנפרד ובדיקת הבודי בנפרד ואם זה לא מתאים לתבנית אז בדיקה רגילה של כל המחרוזת) מקווה שזה עזר בהצלחה!
היי. בנוגע לבאג של מסר מסוג SMTP. שאלה ראשונה: מה התבנית של מסר ב SMTP? אפשר לתת דוגמא למסר בתבנית זו? שאלה שניה: אפשר להראות דוגמא למסר שגוי? וכן מסר שגוי הוא רק אם יש בו מילים שמורות? או שזה קשור גם לאורך המסר? שאלה שלישית: כיצד תיקנת את הבאג הזה? תודה רבה!!!
אני לא זוכרת מה המילים השמורות אבל נגיד ואחת המילים השמורות היא password אז מסר תקין של SMTP יכול להיות מ-2 צורות: לפי תבנית: Subject: hello world Body: bla bla bla bla או לא לפי תבנית ואז כולו ייבדק: hello world bla bla מסר לא תקין לפי תבנית: Subject: my password is Body: bla bla או: Subject: hello Body: my password is bla bla מסר לא תקין, לא לפי התבנית: my password is bla bla תתייחסו לבעיה כאילו זה ניתוח מחרוזות רגיל זה הכל...
השאלות שיש פה בשרשור זהות אחד לאחד למה שהולך שם באמת. כמה דגשים ליעילות התוכניות : שאלה ראשונה : חיפוש בעץ בינארי ממוין בשיטה הכי יעילה שתמצאו. שאלה 2 : צריך ליצור ממבר לקלאס בשם AntiVirusEngin, לאתחל אותו וגם לקרוא ל Setup על ההתחלה. תרגיל מאוד פשוט , רק לשים לב שכאשר קוראים ל AntiVirusEngin.checkIfContainVirus() לשים לב שאתם קוראים לה עם משתנה fullScan = false! שאלה 3 : דיבוג מאוד פשוט יחסית . שימו לב שיש המון מקרי עצירה. יש באג בחישוב . קחו את ההודעה Subject:Stam subject Body: stam body תפרקו אותו. ב C++ היה שימוש ב find של string. שימו לב בתוך ה Swich-Case שאתם צריכים להוסיף Break ולבצע השמה של התוצאה אל תוך המשתנה result שאלה 4 : נתנו פה את כל הפיתרון ( מונה הודעות ומונה לכל כתובת) העניין הוא שמי שעושה ב C++ שידע להשתמש ב Map וגם ב Set אני נפלתי על יעילות הדברים . אני מקווה שלכם יהיה יותר טוב
שאלות לדוגמא בSUBNETTING: http://www.indiabix.com/networking/subnetting/ זאת הרמה של התרגילים ששואלים שם, מי שיסתדר עם השאלות הללו יעבור את המבחן בלי בעיה. מי שלא מסתדר עם השאלות הללו, כנראה שלא יעבור לשלב הבא. המבחן השני - הגדרת ראוטר. צריך לנסות לסיים אותו פרפקט, בלי להתקע ובלי לשאול הרבה שאלות מבוחנים. המבחן דיי מלחיץ, כולם יושבים בחדר קטן מסביב לשולחן ושתי בוחנים שעושים סיבובים ומסתכלים מי נתקע במה. רושמים גם הערות לגבי צורת העבודה שלך, ואם אתה נתקע ושואל שאלה (מותר) אז מורידים ניקוד בציון הסופי. המבחן הזה מחולק ל3 חלקים: 1. לחבר ראוטר למחשב ולהגדיר רשת לפי הנתונים שנותנים לפני כן (מבקשים IP סטטי!). שלב די פשוט, רק זורמים עם המדריך המצורף. 2. לעשות את אותו הדבר בWIFI. לדעת להגדיר את שם של הרשת לפי השם שלכם ולעשות את ה WIFI מוצפן. 3. לכבות את הDHCP שלא יחלק כתובות אוטומטית. 4. שלב שלא קשור למבחן אך צריך לעשות אותו גם כן - לרשום מס' משפטים בNOTEPAD שבוחן את רמת האנגלית שלכם. בהצלחה לכל הניגשים בעתיד!
שלום לבחור שהגיב אחרון"הבחור שלא עבר" מצטער קודם לשמוע אבל מאוד אשמח אם תוכל ליידע אותנו באיזה סוג של ראוטר הייתם צריכים לבצע את כל ההוראות הללו והאם הגדירו לכם את זה מראש או שפשוט חיכו שאחרי כל משימה יעיפו מישהו ואז יתנו משימה נוספת?... סתם מתעניין... שיהיה סופ"ש נעים.
שלום רב לכולם, הרגע יצאתי מהמבחנים של התמיכה טכנית והכל מאוד רענן אצלי בראש ויש לי זכרון מפחיד לשאלות ממבחנים! אני כותב את המדריך הזה כי הבוחנים במבחן של היום נורא עצבנו אותי ביחס המעפן שלהם לחבר'ה שבאים אליהם למבחנים. אז ככה, המבחן התחיל בשעה 10 בבוקר , היינו 11 אנשים בסך הכל. המבחן בנוי מכמה שלבים: שלב ראשון: 10 שאלות אמריקאיות בנושא של Subnetting. השאלות האלה ממש ממש קלות למי שלומד קצת ומתרגל. דוגמאות לשאלות (הכל באנגלית): 1) תמצא Subnet mask לכתובת 192.168.0.1... 2) מה broadcast address של הרשת 192.168.0.1 יש עוד כמה סוגים של שאלות כאלה, ראיתי כבר בפורום פה ששיחזרו כמה שאלות כאלה. אני למדתי ותרגלתי עם האתר: http://www.subnetting.net/Subnetting.aspx?mode=practice זה האתר הכי טוב לתרגול וללימוד, השאלות באתר הזה ובמבחן זהות לחלוטין!!! כשתגיעו לרמה שבה אתם מצליחים לפתור את כל התרגילים באתר בשתי דקות תדעו שאתם מוכנים אש! אחרי השלב הזה נשרו 3 אנשים ונשארנו 8. שלב שני: השלב הזה מורכב משני מבחנים מעשיים. המבחן הראשון: חיבור מחשב למודם ולראוטר. המבחן הזה הוא החשוב מבין שני המבחנים המעשיים אז תלמדו אותו טוב טוב! המבחן בנוי משלושה סעיפים: 1) לחבר את המחשב למודם ולראוטר ולבדוק שיש תקשורת דרך הפינג שמביאים לכם. איך עושים את זה?? צעד 1 - אתם מקבלים חוברת צבעונית עם ארבעה עמודים, תפעלו בדיוק לפי החוברת וסיימתם את הסעיף, אבל אם אתם קוראים את ההוראות האלה אתם בטח לא כאלה מבריקים אז אני אפשט את זה בשבילכם. צעד 2 - תיקחו שני כבלים מהמתלה, תחברו למחשב שלכם מצד שמאל צד אחד של הכבל ואת הצד השני תחברו לאחת מיציאות ה- LAN של הראוטר (סוג הראוטר הוא edge). צעד 3 - תחברו את הכבל השני ליציאת ה WAN של הראוטר ואת הצד השני למודם(מודם HP , עם הרבה כניסות). צעד 4 - תיכנסו להגדרות הרשת שלכם במחשב: , לוח בקרה ---> הגדרות רשת ---> עכשיו אתם רואים רשת LAN שזה רשת מקומית ורשת WIRELESS , תעשו לחצן ימני על רשת ה-LAN ותבחרו ב-properties---> פה תבחרו TCP/IPv4 ותעשו PROPERTIES----> תגדירו כמו שמצויר לכם בחוברת שזה אומר שהכל יהיה באוטומטי, אתם לא צריכים להקליד בסעיף הראשון כלום שם. צעד 5 - תיכנסו להפעלה ---> cmd ---> ותקלידו ipconfig ---> קחו את default gateway ותרשמו בחלון של הדפדפן. צעד 6 -מבקשים ממכם סיסמא כדי להיכנס להגדרות של הראוטר, שם משתמש : admin, סיסמא: 1-8. ברכותיי אתם בהגדרות של הראוטר. צעד 7 - ברגע שנכנסתם לתוך ההגדרות של הראוטר מופיע מולכם איזה מדריך, תמלאו את ההגדרות במדריך לפי מה שכתוב לכם בלוח שבכיתה. הוא מבקש סיסמא שכתובה לכם על הראוטר, כתובת איי פי של הראוטר, מדינה ועוד כמה הגדרות שהתשובות אליהן נמצאות על הלוח. אם מאיזושהי סיבה סגרתם את המדריך בטעות אתם יכולים לפתוח אותו מחדש דרך : SETUP ---ואז SETUP WIZARD וקיבלתם שוב את המדריך. צעד 8 - סיימתם למלא את ההגדרות במדריך, ברכותיי. תיכנסו שוב למסך השחור (הפעלה-->cmd)ופה אתם רושמים בדיוק ככה: ping 192.168.30.1 , כתובת האייפי שאתם באמת כותבים פה היא הכתובת שמופיעה על הלוח ליד המילה ping. מה שקורה עכשיו זה שהמחשב מקבל נתונים מאיזושהי כתובת וזה צריך להראות לכם שעברו הנתונים. אחרי שסיימתם את השלב הזה תקראו למדריך שייראה שהצלחתם. סעיף שני של המבחן: 2) להגדיר את רשת ה - WIFI ויש בונוס אם אתם מאבטחים אותה. אני ממליץ לכם להסתכל באינטרנט באיזשהו מדריך של הגדרת רשת אלחוטית זה בערך אותו הדבר. צעד 1 - ללכת ללוח הבקרה ----> רשתות ----> לבחור את הרשת של Wireless ----> לעשות properties----->ללכת שוב ל - TCP/IPv4 ולעשות properties. צעד 2 - להכניס את כל הנתונים שעל הלוח ידנית , זה כולל את הכתובת אייפי שנמצאת על הראוטר, מסכה, default getway ועוד כמה שיש לכם אותם כבר על הלוח. צעד 3 - להיכנס שוב להגדרות של הראוטר ושם אתם צריכים ללכת ל - networks ---> my networks ולהתאים את ההגדרות למה שהגדרתם בצעד 2. זה הכיוון הכללי של סעיף 2 , אל תתפסו אותי בדיוק בדיוק במילה, בשביל זה תקראו מדריך להגדרת רשת אלחוטית והוא בטח ייתן לכם יותר פרטים + תמונות של החלונות. כמו כן , במדריכים שתמצאו באנטרנט תגלו גם איך לאבטח את הרשת ותקבלו את הבונוס. אחרי הסעיף הזה תבדקו שה-WIFI עובד על ידי כך שתנתקו את הכבל של המחשב מהיציאה של ה-LAN. סעיף 3 במבחן: אני לא זוכר את הסעיף הזה, לצערי אני קיבלתי כבל רשת שהיה רופף וזה גרם לי לפשל מאוד בכל המבחן הזה. תנסו לברר את זה איכשהו ממישהו אחר שהיה שם. אחרי שסיימתם את המבחן הזה , מבקשים ממכם לפתוח note pad ולרשום עשר שורות באנגלית. אתם יכולים לכתוב על כל דבר בחיים שלכם , הם רק רוצים לדעת מה הרמה של האנגלית שלכם, אז אם האנגלית שלכם לא משהו או שאתם מפחדים לעשות שגיאת כתיב תתאמנו על זה. שני טיפים אישיים: 1. תיקחו כבלים תקינים , כלומר שיש להם את הצ'ופצ'יקים ששומרים אותם בפנים. 2. יש שני שולחנות בכיתת המעבדה ,אחד של 6 מקומות והשני של 2 מקומות, אני ממליץ לכם מאוד לשבת בשולחן של 2 המקומות כי השולחן של ה - 6 מקומות עמוס בחוטים ואנשים יכולים להוציא לך את החוט בטעות שלא לדבר שכולם מלחיצים אותך! זהו מבחינת המבחן המעשי הראשון. עכשיו המבחן המעשי השני: סיימתם את המבחן הראשון , עכשיו אתם יוצאים לאיזו הפסקונת והולכים עם איזה בחור קצת מוזר(אבל גבר) למעבדה הראשונה, זאת שעשיתם בה את המבחן העיוני הראשון. הקטע של המבחן הזה הוא לראות איך אתם מסתדרים עם משהו שאתם לא מכירים ונתקלים בו בפעם הראשונה. המבחן הוא על המחשב ומותר להשתמש באנטרנט בשביל לחפש חומר. בתוך המחשב אתם פותחים איזושהי תוכנה שהבחור המוזר יגיד לכם, הוא יסביר לכם להפעיל את שלושת החלונות של התוכנה. אתם נכנסים לחלון של הראוטר , אל תדאגו הוא יגיד לכם איזה ועליו אתם מבצעים את הכניסה למערכת הלינוקס ועונים על השאלה הראשונה. ממה שאני זוכר כשאתם מפעילים את המסך הזה הוא מבקש שם משתמש וסיסמא, שם המשתמש הוא admin והסיסמא היא vpn123 , כשאתם מקלידים את הסיסמא אתם לא תראו שכתבתם משהו, אל תדאגו , זה כותב. תלחצו אנטר ואתם עכשיו בתוך הלינוקס. ברכותיי, אתם כרגע כותבים בתוך טרמינל של לינוקס! לינוקס! לינוקס! כל מה שהסברתי עכשיו הבחור המוזר יסביר לכם, אבל טוב שתדעו עוד לפני מה צריך לעשות. ועכשיו לשאלה הראשונה. השאלה הראשונה מורכבת משלושה סעיפים: 1)get into /var/exam directory. איך עונים על הסעיף הזה? עושים חיפוש באינטרנט של איך נכנסים לתוך תיקיה בלינוקס ושם אתם תראו איך עושים את זה, אבל מאחר שאתם לא מבריקים אני אסביר לכם, לא בגלל שאני נחמד,אלא בגלל שאני שונא את צ'ק פוינט. הפקודה הנכונה לשם כך היא cd. הסינטקס הולך ככה: cd /var/exam יכול להיות שזה גם הולך ככה cd /var/exam/f את ה-f רשמתי רק כדי שה- / יהיה מצד ימין למילה exam , לא כותבים את ה -f. בכל מקרה, אפשר למצוא את זה פה: http://www.computerhope.com/unix/ucd.htm#03 2) read the text written in the file in that directory איך עונים על זה? צעד 1: אתם כרגע בתיקיה, אתם צריכים לגלות איזה קובץ נמצא בתיקיה הזאת ולגלות מה כתוב בו. איך מגלים איזה קבצים נמצאים בתיקיה? תחפשו בגוגל כי אני לא אחפש את זה עכשיו במיוחד בשבילכם. מצאתם את שם הקובץ , שם הקובץ במבחן הוא myexam. צעד 2: בלינוקס אתם צריכים לדעת את סוג הקובץ בשביל להצליח לפתוח אותו, מן הסתם אפשר להבין שזה קובץ text כי אתם צריכים לקרוא מה כתוב בו, אבל ליתר בטחון תחפשו בגוגל איך מגלים סוג של קובץ בתיקיה. הכל נמצא באנטרנט. צעד 3: גיליתם שסוג הקובץ הוא text ברכותיי! עכשיו אתם צריכים לקרוא ממנו. איך עושים את זה? נכון , מחפשים בגוגל. טוב נו , אני יודע שאתם מוגבלים אז מצאתי את זה בשבילכם. http://www.computerhope.com/unix/ucat.htm צעד 4: גיליתם מה כתוב בקובץ , כתוב שם you have passed question 2. לכו תקראו לבחור המוזר שיראה את זה. סעיף 3 בשאלה הזאת: 3) "create a text file and give it the name: my_exam and write in it :"Good luck איך עושים את זה? מחפשים בגוגל, טוב נו, בגלל שהגעתם עד לפה אתם כנראה ממש עצלנים ולא מוצלחים אז קבלו את הלינק שיסגור לכם את הפינה: http://www.if-not-true-then-false.com/2 ... ut-editor/ ברכותיי! סיימתם את שאלה מס' 1 בהצלחה! עכשיו לשאלה מספר 2! רק שתדעו, אף אחד לא הצליח את שאלה 2 , אני הייתי קצת קרוב לפתור אותה. מביאים לכם דיאגרמה שדומה קצת לתמונה הזאת:http://www.gyre.co.uk/images/broadband_router_1.png במקום שלושה מחשבים שמחוברים לראוטר, יש שניים, האיי פי של מחשב 1 הוא משהו כמו 172.168.0.1 ושל המחשב השני האיי פי הוא 192.168.0.1 , זה לא בדיוק האיי פי שלהם, אבל הרעיון הוא שהם נמצאים על רשתות שונות והראוטר הוא זה שמצליח לגרום להם לתקשר ביניהם. לראוטר יש שני חיצים החץ השמאלי מסומן במילה eth0 והחץ הימני (של המחשב הימני) הוא eth1. עכשיו... זה קטע מסובך לאללה, אבל אני אחסוך לכם קצת זמן. יש פקודה שנקראת sysconfig. הפקודה נותנת לכם כמה אפשרויות , אתם צריכים להגדיר ראוטר ואז להגדיר את שני המחשבים האחרים(hosts). בקיצור, את השאלה הזאת לא נורא כל כך אם לא תצליחו כי כולם אצלנו לא הצליחו וגם הבחור המוזר אמר לנו שהמבחן הזה פחות חשוב מהמבחן הקודם. אבל אם בכל זאת אתם רוצים להצליח לפתור את השאלה הזאת ,קחו את השאלה הזאת לחבר שלכם שהוא איש סיסטם והוא בטח יידע להסביר לכם אותה. אחרי השלב הזה נפלנו שישה ונשארו שניים והם עברו ראיונות כ"א ומקצועיים ואין מצב שהם ירשמו פה מה דיברו איתם כי הם חארות. וזהו חברים, שמחתי מאוד לכתוב את המדריך הזה, צ'ק פוינט לא העריכו אותי כראוי כי בנאדם שמצליח במבחן העיוני כל כך , אחרי שהוא למד אליו באמת כמה שעות ואין לו שום רקע בתחום הזה כנראה שיש לו משהו בקודקוד ולתת לו עכשיו להתקין ראוטר ומודם אחרי שהוא לא נגע בזה כמה שנים לא באמת בוחן את היכולות שלו. אחרי הכל למשרה הזאת יש קורס של חודש וחצי זה לא שאי אפשר ללמד אותנו להיות טובים בזה. וזאת הסיבה שאני שונא את צ'ק פוינט ושאני עוזר לכם כל כך , כי עכשיו שהמבחן כולו נמצא פה באנטרנט יעלה להם הרבה יותר להחליף את המבחן מאשר להכשיר בנאדם חסר ניסיון לתפקיד. לסיכום, האכלתי אתכם בכפית של זהב טהור ואת צ'ק פוינט בחרא טהור. בהצלחה!
viewtopic.php?t=59583&p=66574#p66574 הסבר שלי!
מישהו שהיה שם לאחרונה (מיונים לתפקיד R&D) יכול להגיד אם עדיין יש את השאלה הבאה (הופיע פה בהודעות יותר ישנות..) : נתון מחסן מילים ומחרוזת וצריך לבדוק האם במחרוזת יש מילה מהמחסן מילים. ואם השאלה קיימת האם מותר להשתמש באיזה פונקציה שאני רוצה מספריית string.h ? תודה רבה!
היי צ'ק פוינט.... קודם כל תודה רבה על המדריך המושקע שכתבת אבל אשמח מאוד אם תוכל לעזור לי במציאת מדריך להגדרת רשת אלחוטית כי אני לא כ"כ מוצא אותו והראוטר הביתי שלי בבית הוא netgear של בזק שכאשר ניסיתי להיכנס לממשק שלו קיבלתי ממשק לא כזה עשיר שיכול ללמד משהו אז מאוד אשמח אם תוכל אתה להמליץ על מדריך טוב כי אני אישית לא מצאתי... המון תודה רבה!!!
רציתי לדעת בבקשה 2 שאלות לגבי היום מיונים שהיה.. 1.בביטול מנגנון ה DHCP הרי בכל ראוטר זה שונה אז במקרה של הממשק כאן איך כיבית בדיוק את חלוקת הכתובות?.. 2. איזה כתובות ,dns וכו' הייתם צריכים לשים במקום הdhcp שהרי בוטל ...? כלומר מה הייתם צריכים לשים בחיבורי הרשת...? תודה .
הי, מישהו יודע אם המבחן הזה עם ה-4 שאלות בתכנות ושאלה בלינוקס עוד קיים? וגם- מה בדיוק שואלים על כל הפקודות האלה? אם אפשר תשובות דחוףף כי המבחן מחר.. תודה!
קיים, קיים. הייתי שם לא מזמן, עשיתי אותו. כמובן שעדיף לממשל ב-C++,C כי אין להם באמת משרות ב-JAVA.
והבנתי שאפשר גם לענות בC#, לא?
אתמול הייתי במבחנים לפיתוח בצ'ק פוינט (16.9.2013) והמבחנים היו בדיוק כפי שכתוב פה (הפוסט בתאריך 27 בפברואר). כל הכבוד! בהצלחה לכולם.
אתמול הייתי במבחנים לפיתוח בצ'ק פוינט (16.9.2013) והמבחנים היו בדיוק כפי שכתוב פה (הפוסט בתאריך 27 בפברואר). כל הכבוד! בהצלחה לכולם. וב אני כבר הרבה זמן משתמש בפורום הזה ונהנה מכל מה שאנשים מעלים לכאן והיות ואני גם מתעב תאגידים גדולים אז החלטתי להעלות כאן את המבחן (הראשון) המפורט של check point. הייתי שם ממש לא מזמן ויש לי את כל השאלות די טריות בראש, אגב אני בחרתי לממש ב - #C (אבל אלו אותן שאלות בכל השפות). כמו שציינו קודם יש למבחן 3 חלקים: חלק ראשון הכי גדול שבו 4 שאלות תכנותיות והוא נמשך 3-4 שעות, חלק שני של שעה וחצי ובו נדרשים להריץ קצת פקודות בסיסיות של תקשורת בין שתי מכונות לינוקס ובנוסף גם לקמפל ולהתקין קוד תוכנה מוכן, חלק שלישי הוא בן רק חצי שעה והוא מבחן עיצוב גרפי. חלק א: ישנה כביכול מערכת שאמורה לבצע 4 פעולות (כל פעולה זה שאלה): פיירוול של מסרים, סינון מסרים עם וירוסים, סינון מסרים עם מילות מוגנות וניטור של תעבורת המסרים. מקבלים solution מוכן שבתוכו יש פרויקט שבו 4 מחלקות, כל מחלקה מייצגת שאלה נפרדת, בכל מחלקה יש פונקציה או שתיים ריקות או לא תקינות שאותן אתם צריכים למלא/לתקן. חוץ מהמחלקות האלו ישנן עוד מחלקות נתונים ועוד פרויקטים אבל בהם לא נוגעים. מחלקה חשובה מאוד היא מחלקת הודעה/מסר (message) שבאה לייצג טיפוס נתונים מסוג הודעה, בטיפוס הזה יש כתובת שולח, כתובת מקבל, תוכן ההודעה (כמחרוזת) ועוד.. בנוסף לאחר שכתבתם את הקוד ישנו טסטר אוטומטי שהוא מריץ הרבה מסרים על המחלקות השונות והוא מדווח אם מה שכתבתם מתפקד כהלכה ואכן המחלקות מבצעות מה שצריך על המסרים ומקטלגות אותן נכון. שאלה 1 - צריך לכתוב חיפוש בעץ בינארי ממוין (כלומר לכל קודקוד הבנים משמאל קטנים יותר מהקודקוד ומימין גדולים יותר), ישנו עץ בינארי ממוין שמכיל בכל קודקוד כתובת אסורה (נמשל כתובת של ספאם), את העץ בונים בפונקציה אחרת שעוברת על קובץ טקסטואלי וממירה אותו לעץ אבל הקוד הזה לא אמור לעניין אותכם, בנוסף ישנה פונקציה שמקבלת הודעה ובה אתם צריכים לכתוב קוד שבודק שכתובת השולח וכתובת המקבל לא נמצאים בעץ, אם אחד מהם נמצא אז מחזירים enum שמייצג לזרוק את המסר אחרת מחזירים enum לקבל את המסר. שימו לב שהביצועים מאוד מאוד חשובים בייחוד בשאלה הזאת ולכן הדרך הכי טובה לדעתי לפתור את זה היא לעשות סריקה של העץ באמצעות while ולא רקורסיה! (מי שלא יודע שיחפש בגוגל איך מחפשים ערך באמצעות לולאה בעץ בינארי ממוין ודגש על ממוין!). כמה דגשים די טריוואלים: שימו לב שצריך לעשות 2 סריקות של העץ (אחת עבור כתובת השולח ושניה עבור המקבל) לכן כמובן שעדיף לכתוב את סריקת העץ כפונקציה נפרדת שמקבלת פרמטר כתובת ולקרוא לפונקציה פשוט פעמיים, דגש שני הוא שאין לאתחל את העץ בתוך הפונקצית טיפול מסרים שאתם כותבים כי אז עבור כל מסר העץ יאותחל מחדש, יש להגיד משתנה private מסוג העץ במחלקה (של השאלה) ובבנאי שלה לאתחל את העץ וכך הוא יאותחל רק פעם אחת. שאלה 2 - בשאלה זאת נדרשים לסרוק כל מסר ולגלות האם הוא מכיל וירוס, הסריקה מתבצעת באמצעות מחלקה אחרת שנקראת אנטי וירוס שבה לא אמורים לגעת (אבל כן להבין קצת את הקוד שלה), גם כאן יש לממש פונקציית טיפול במסרים כאשר כל מסר נשלח לאובייקט מסוג המחלקה האחרת ויש לו פונקציה שסורקת את המסר ומחזירה האם יש בו וירוס או אין ובהתאם אתם מחזירים את ה - enum המתאים. כמה דגשים: כמו בשאלה 1 גם כאן יש להגדיר משתנה פרטי מסוג מחלקת אנטי וירוס ולאתחל אותו בבנאי, חשוב לשים לב שהאתחול כולל גם new וגם קריאה לפונקציית setup (פונקציה של המחלקה) שהיא טוענת בסיס נתונים של הוירוסים וכך האובייקט אנטי וירוס מוכן לשימוש, אגב הצורה שבה הסריקה מתבצעת היא באמצעות ביטויים רגולרים אבל זה לא אמור לעניין אותכם, שימו לב שגם בקריאה אח"כ לפונקציית סריקת מסר מלבד המסר יש עוד כמה ערכים בוליאנים ששולחים אליה, יש ערך שנקרא fullscan שהוא צריך להיות false כי אם הוא true אז מה שיקרה זה שמסר שישלח יבדק כנגד כל הבסיס נתונים של הוירוסים שזה מיותר מכיוון שאם הוא false אז הוא סורק רק עד מציאת וירוס ראשון ואז מפסיק וזה ישפר לכם את הביצועים, יש עוד פרמטר (הראשון ביותר) שבכלל אין לו שימוש בתוך האנטי וירוס וסתם כתבו אותו כדי לבלבל, והפרמטר האחרון הוא loadviruses אך הוא יכול להיות true או false זה לא משנה, כי גם ככה בכל קריאה לסריקת מסר יש בדיקה האם הבסיס נתונים כבר נטען קודם ואם כן אז לא טוענים אותו גם האם הפרמטר הזה יהיה true. שאלה 3 - יש מחלקה שבתוכה יש פונקציה שמקבלת את המסר וקוראת לפונקציות אחרת במטרה לראות האם במסר יש מילים שמורות אסורות, אם כן אז יש להחזיר enum של זריקת המסר אחרת קבלת המסר, הקוד כבר כולו כתוב כולל פונקציית קבלת המסר אבל יש בקוד הזה הרבה באגים ובכלל המצב הראשוני שלו שהוא מתרסק אם מריצים אותו. כמה דגשים: יש שם בהתחלה משתנה result שאותו מחזירה הפונקציה אך בשני ה - if העיקריים לא מוצב בו הערך ואת זה יש לתקן, יש משתנה messagedata שלא מקבל ערך בהתחלה. שימו לב שהתיקונים הם אומנם ברובם בפונקציית הקבלת מסר אך יש גם לתקן קצת בפונקציות האחרות, בנוסף בשאלה הזאת מאוד עוזר בסוף להריץ את הטסטר האוטומטי כדי לוודות שכל המסרים קוטלגו כמו שצריך. שאלה 4 - צריך לכתוב 2 פונקציות, אחת היא של קבלת המסרים והשנייה היא החזרה של כל הכתובות השולחות שמהם נשלחו יותר מ - 10% מהמסרים עד עכשיו. הדרך לממש את זה היא באמצעות hashtable וביתר פירוט dictionary ב - #C, כל מפתח (key) יהיה בו כתובת שולח מסוימת וכל ערך יהיה כמה מסרים הכתובת הזאת שלחה, כלומר בעת קבלת מסר חדש בפונקציית הקבלת מסרים יש להעלות את המונה של מפתח כתובת השולח ב - 1 (או כמובן אם זו פעם ראשונה אז יש להוסיף מפתח חדש עם הערך 1) בנוסף יש לשמור מונה פשוט גלובלי ברמת המחלקה שכל פעם שמתקבל מסר חדש אז הוא מוגדל ב - 1. בפונקציית החזרת הכתובות יש פשוט לעשות לולאה שסורקת את כל המפתחות ב - hashtable ועבור כל מפתח בודקת האם הערך שלו לחלק בערך של המונה הכללי גדול שווה מ - 0.1 (כלומר שווה או גדול מ - 10%), אם כן אז מוסיפים אותו לרשימה שאותה בסוף מחזירים בפונקציה. כמה דגשים בכלל לכל חלק א: חשוב להגן על הקוד כמו נמשל בפונקציית קבלת ההודעות לבדוק שההודעה המתקבלת היא לא null ושהמסר בתוכה לא ריק, כדאי גם להשתמש ב - try catch בייחוד במצבים של נמשל פניה לאנטי וירוס החיצוני בשאלה 2 שם אנחנו לא יודעים איך מימשו אותו. חלק ב: בחלק זה בודקים ידיעה והבנה של פקודות תקשורת בסיסיות, קימפול והתקנה בלינוקס, זה נעשה באמצעות מסמך מפורט שבכל שורה אומר תעשו כך ותעשו כך, אתם צריכים לעקוב שורה אחרי שורה במסמך ולבצע בפועל את ההוראות על שתי מכונות וירטואליות של לינוקס שהן באותה הרשת, ברוב ההוראות במסמך גם רשום איזו פקודה יש להקליד, נמשל רשום שיש לבדוק תקשורת על ידי כתיבת ping וכתובת ה - ip של המכונה השניה, אך יש שורות שבהן לא רשומות הפקודות כמו נמשל רושמים שם שיש לקמפל (תוכנה מסוימת שמקודם הורדנו) בדרך הסטנדרטית ואחר כך להתקין אותה אבל לא רושמים איזה פקודות להקליד. אנסה לפרט מה שאני זוכר שיש לעשות שם: דבר ראשון יש לבדוק כתובות ip של שתי המכונות, אחר כך לעשות פינג מהמכונה הראשונה לעצמה, אחר כך מהראשונה לשניה, להוריד קובץ tar/zip מהמכונה השניה לראשונה באמצעות ftp, הקובץ הוא למעשה התקנה של תוכנה בשם pure ftp, יש לפתוח אותו, לקמפל את התוכן שלו, להתקין את התוכנה, להריץ אותה, לעשות kill לתהליך שלה, לחפש בתוך אחד ה - headers שלה מסר מסוים (welcome to), לפתוח את המסר הזה ולהוסיף לו את המילה my, לקמפל שוב ולהתקין את התוכנה מחדש, לפתוח את התוכנה ולראות שהמסר שהיא מציגה בהתחלה השתנה בהצלחה. כמה דגשים: כמו שקודם אמרתי רוב הדברים שיש לעשות רשום במסמך איזה פקודות צריך להקליד כך שאין צורך לזכור פקודות בעל פה, כשמחפשים את המסר שיש לשנות אז לחפש רק את המילים "welcome to" ולא את כל המסר (כי זה נראה לי מסר שמשורשר משני מקומות שונים) אם אני זוכר נכון זה נמצא בקובץ messages_en.h, את הקימפול הסטנדרטי אפשר לעשות עם gcc או make אבל אין צורך לשבור את הראש ולמצוא מה צריך לקמפל אלא יש שם קובץ טקסט שנקרא install, פותחים אותו עם עורך טקסט וישר בשורה הראשונה רשומות 3 פקודות שצריך להריץ, מריצים את 3 הפקודות אחת אחרי השניה והן גם מקמפלות וגם מתקינות את התוכנה, כדי להפעיל את התוכנה אני נכנסתי פשוט לתיקיית הקיצורי דרך לתוכנות מותקנות שהיא אם אני זוכר נכון usr/local/sbin (בכל מקרה כאשר מריצים את 3 הפקודות אז רשום לאיפה הוא מתקין אותה). חלק ג: טוב האמת שכאן אין לי יותר מדי מה לומר וגם אין כל כך איך להתכונן לזה, מדובר במשימת עיצוב גרפי, אגב אין חובה לעשות את החלק הזה אבל מי שעושה אותו יהיה לו יתרון בקבלה לתפקידים שדורשים יכולת עיצוב ממשקים, במשימה מדברים על מערכת שמשמשת לחיפוש עובדים בחברה, נותנים תמונה שבתוכה יש כביכול תוצאת חיפוש אחת שכוללת תמונה של עובדת, כמה פקדים והרבה מידע עליה שנמצא בדרך כלל כתיבות טקסט, התצוגה הראשונית בתמונה לא נראית טוב ודי מבולגנת, המשימה היא לפתוח את התמונה בשלמותה בצייר ולגזור ממנה חלקים שונים כמו נמשל התיבות טקסט ואותן לארגן בתמונה חדשה (חלון צייר שני) כך שבסופו של דבר תתקבל תמונה סופית שונה שמציגה את העובד ופרטיו בצורה הרבה יותר מאורגנת, יפה ושימושית, ניתן לשנות את הגודל של הפקדים, צבעים ובכלל כל דבר כמעט שאפשר לעשות בצייר. כמה דגשים: כדי להתכונן לחלק זה אז למי שלא מכיר אולי כדאי באמת לעבוד קצת עם הצייר, לגזור חלקים מתמונה לשנות גדלים וכ"ו, כדאי לעבוד בצייר במוד זום מוגדל (נמשל 200%), כדאי להתחיל מלחשוב על קבוצות פקדים שונות עם מכנה משותף כמו נמשל כל התיבות שמכילות את פרטי הכתובת ואז פשוט לגזור אותן מהתמונה הראשונה ולשים אותן ביחד יפה בשניה, כאמור הכי טוב לגזור כל פעם דברים מהראשונה וכך לאט לאט התמונה הראשונה מתרקונת ונהיה יותר קל להתסכל עליה ולתכנן מה עושים (זו לפחות הדרך שאני מצאתי בשבילי הכי טובה אך כמובן שיש עוד דרכים). אה ודבר אחרון לסיום נזכרתי במשהו מצחיק, בסוף המבחן הבוחן ניגש לכל אחד ואז שואל אותו האם הוא ראה את המבחן הזה בעבר, מה בדיוק הוא מצפה שיענו לו??? ובכלל נראה לי שכמעט כולם ראו את המבחן הזה בעבר.. בהצלחה ודיר בלק אם מישהו מספר משהו/נותן רמז על המבחן הזה אחרת פשוט צ'ק פוינט ימצאו את מה שרשמתי כאן וישנו את המבחן.. יש למשהו תובנות נוספות???? (קטע קוד כתוב .... או שיכול להוסיף ) ישkl תובנות נוספות???? (קטע קוד כתוב .... או שיכול להוסיף ) אולי לא אמרו לך אבל אתה 10!!!!
אתמול הייתי במבחנים לפיתוח בצ'ק פוינט (16.9.2013) והמבחנים היו בדיוק כפי שכתוב פה (הפוסט בתאריך 27 בפברואר). כל הכבוד! בהצלחה לכולם. וב אני כבר הרבה זמן משתמש בפורום הזה ונהנה מכל מה שאנשים מעלים לכאן והיות ואני גם מתעב תאגידים גדולים אז החלטתי להעלות כאן את המבחן (הראשון) המפורט של check point. הייתי שם ממש לא מזמן ויש לי את כל השאלות די טריות בראש, אגב אני בחרתי לממש ב - #C (אבל אלו אותן שאלות בכל השפות). כמו שציינו קודם יש למבחן 3 חלקים: חלק ראשון הכי גדול שבו 4 שאלות תכנותיות והוא נמשך 3-4 שעות, חלק שני של שעה וחצי ובו נדרשים להריץ קצת פקודות בסיסיות של תקשורת בין שתי מכונות לינוקס ובנוסף גם לקמפל ולהתקין קוד תוכנה מוכן, חלק שלישי הוא בן רק חצי שעה והוא מבחן עיצוב גרפי. חלק א: ישנה כביכול מערכת שאמורה לבצע 4 פעולות (כל פעולה זה שאלה): פיירוול של מסרים, סינון מסרים עם וירוסים, סינון מסרים עם מילות מוגנות וניטור של תעבורת המסרים. מקבלים solution מוכן שבתוכו יש פרויקט שבו 4 מחלקות, כל מחלקה מייצגת שאלה נפרדת, בכל מחלקה יש פונקציה או שתיים ריקות או לא תקינות שאותן אתם צריכים למלא/לתקן. חוץ מהמחלקות האלו ישנן עוד מחלקות נתונים ועוד פרויקטים אבל בהם לא נוגעים. מחלקה חשובה מאוד היא מחלקת הודעה/מסר (message) שבאה לייצג טיפוס נתונים מסוג הודעה, בטיפוס הזה יש כתובת שולח, כתובת מקבל, תוכן ההודעה (כמחרוזת) ועוד.. בנוסף לאחר שכתבתם את הקוד ישנו טסטר אוטומטי שהוא מריץ הרבה מסרים על המחלקות השונות והוא מדווח אם מה שכתבתם מתפקד כהלכה ואכן המחלקות מבצעות מה שצריך על המסרים ומקטלגות אותן נכון. שאלה 1 - צריך לכתוב חיפוש בעץ בינארי ממוין (כלומר לכל קודקוד הבנים משמאל קטנים יותר מהקודקוד ומימין גדולים יותר), ישנו עץ בינארי ממוין שמכיל בכל קודקוד כתובת אסורה (נמשל כתובת של ספאם), את העץ בונים בפונקציה אחרת שעוברת על קובץ טקסטואלי וממירה אותו לעץ אבל הקוד הזה לא אמור לעניין אותכם, בנוסף ישנה פונקציה שמקבלת הודעה ובה אתם צריכים לכתוב קוד שבודק שכתובת השולח וכתובת המקבל לא נמצאים בעץ, אם אחד מהם נמצא אז מחזירים enum שמייצג לזרוק את המסר אחרת מחזירים enum לקבל את המסר. שימו לב שהביצועים מאוד מאוד חשובים בייחוד בשאלה הזאת ולכן הדרך הכי טובה לדעתי לפתור את זה היא לעשות סריקה של העץ באמצעות while ולא רקורסיה! (מי שלא יודע שיחפש בגוגל איך מחפשים ערך באמצעות לולאה בעץ בינארי ממוין ודגש על ממוין!). כמה דגשים די טריוואלים: שימו לב שצריך לעשות 2 סריקות של העץ (אחת עבור כתובת השולח ושניה עבור המקבל) לכן כמובן שעדיף לכתוב את סריקת העץ כפונקציה נפרדת שמקבלת פרמטר כתובת ולקרוא לפונקציה פשוט פעמיים, דגש שני הוא שאין לאתחל את העץ בתוך הפונקצית טיפול מסרים שאתם כותבים כי אז עבור כל מסר העץ יאותחל מחדש, יש להגיד משתנה private מסוג העץ במחלקה (של השאלה) ובבנאי שלה לאתחל את העץ וכך הוא יאותחל רק פעם אחת. שאלה 2 - בשאלה זאת נדרשים לסרוק כל מסר ולגלות האם הוא מכיל וירוס, הסריקה מתבצעת באמצעות מחלקה אחרת שנקראת אנטי וירוס שבה לא אמורים לגעת (אבל כן להבין קצת את הקוד שלה), גם כאן יש לממש פונקציית טיפול במסרים כאשר כל מסר נשלח לאובייקט מסוג המחלקה האחרת ויש לו פונקציה שסורקת את המסר ומחזירה האם יש בו וירוס או אין ובהתאם אתם מחזירים את ה - enum המתאים. כמה דגשים: כמו בשאלה 1 גם כאן יש להגדיר משתנה פרטי מסוג מחלקת אנטי וירוס ולאתחל אותו בבנאי, חשוב לשים לב שהאתחול כולל גם new וגם קריאה לפונקציית setup (פונקציה של המחלקה) שהיא טוענת בסיס נתונים של הוירוסים וכך האובייקט אנטי וירוס מוכן לשימוש, אגב הצורה שבה הסריקה מתבצעת היא באמצעות ביטויים רגולרים אבל זה לא אמור לעניין אותכם, שימו לב שגם בקריאה אח"כ לפונקציית סריקת מסר מלבד המסר יש עוד כמה ערכים בוליאנים ששולחים אליה, יש ערך שנקרא fullscan שהוא צריך להיות false כי אם הוא true אז מה שיקרה זה שמסר שישלח יבדק כנגד כל הבסיס נתונים של הוירוסים שזה מיותר מכיוון שאם הוא false אז הוא סורק רק עד מציאת וירוס ראשון ואז מפסיק וזה ישפר לכם את הביצועים, יש עוד פרמטר (הראשון ביותר) שבכלל אין לו שימוש בתוך האנטי וירוס וסתם כתבו אותו כדי לבלבל, והפרמטר האחרון הוא loadviruses אך הוא יכול להיות true או false זה לא משנה, כי גם ככה בכל קריאה לסריקת מסר יש בדיקה האם הבסיס נתונים כבר נטען קודם ואם כן אז לא טוענים אותו גם האם הפרמטר הזה יהיה true. שאלה 3 - יש מחלקה שבתוכה יש פונקציה שמקבלת את המסר וקוראת לפונקציות אחרת במטרה לראות האם במסר יש מילים שמורות אסורות, אם כן אז יש להחזיר enum של זריקת המסר אחרת קבלת המסר, הקוד כבר כולו כתוב כולל פונקציית קבלת המסר אבל יש בקוד הזה הרבה באגים ובכלל המצב הראשוני שלו שהוא מתרסק אם מריצים אותו. כמה דגשים: יש שם בהתחלה משתנה result שאותו מחזירה הפונקציה אך בשני ה - if העיקריים לא מוצב בו הערך ואת זה יש לתקן, יש משתנה messagedata שלא מקבל ערך בהתחלה. שימו לב שהתיקונים הם אומנם ברובם בפונקציית הקבלת מסר אך יש גם לתקן קצת בפונקציות האחרות, בנוסף בשאלה הזאת מאוד עוזר בסוף להריץ את הטסטר האוטומטי כדי לוודות שכל המסרים קוטלגו כמו שצריך. שאלה 4 - צריך לכתוב 2 פונקציות, אחת היא של קבלת המסרים והשנייה היא החזרה של כל הכתובות השולחות שמהם נשלחו יותר מ - 10% מהמסרים עד עכשיו. הדרך לממש את זה היא באמצעות hashtable וביתר פירוט dictionary ב - #C, כל מפתח (key) יהיה בו כתובת שולח מסוימת וכל ערך יהיה כמה מסרים הכתובת הזאת שלחה, כלומר בעת קבלת מסר חדש בפונקציית הקבלת מסרים יש להעלות את המונה של מפתח כתובת השולח ב - 1 (או כמובן אם זו פעם ראשונה אז יש להוסיף מפתח חדש עם הערך 1) בנוסף יש לשמור מונה פשוט גלובלי ברמת המחלקה שכל פעם שמתקבל מסר חדש אז הוא מוגדל ב - 1. בפונקציית החזרת הכתובות יש פשוט לעשות לולאה שסורקת את כל המפתחות ב - hashtable ועבור כל מפתח בודקת האם הערך שלו לחלק בערך של המונה הכללי גדול שווה מ - 0.1 (כלומר שווה או גדול מ - 10%), אם כן אז מוסיפים אותו לרשימה שאותה בסוף מחזירים בפונקציה. כמה דגשים בכלל לכל חלק א: חשוב להגן על הקוד כמו נמשל בפונקציית קבלת ההודעות לבדוק שההודעה המתקבלת היא לא null ושהמסר בתוכה לא ריק, כדאי גם להשתמש ב - try catch בייחוד במצבים של נמשל פניה לאנטי וירוס החיצוני בשאלה 2 שם אנחנו לא יודעים איך מימשו אותו. חלק ב: בחלק זה בודקים ידיעה והבנה של פקודות תקשורת בסיסיות, קימפול והתקנה בלינוקס, זה נעשה באמצעות מסמך מפורט שבכל שורה אומר תעשו כך ותעשו כך, אתם צריכים לעקוב שורה אחרי שורה במסמך ולבצע בפועל את ההוראות על שתי מכונות וירטואליות של לינוקס שהן באותה הרשת, ברוב ההוראות במסמך גם רשום איזו פקודה יש להקליד, נמשל רשום שיש לבדוק תקשורת על ידי כתיבת ping וכתובת ה - ip של המכונה השניה, אך יש שורות שבהן לא רשומות הפקודות כמו נמשל רושמים שם שיש לקמפל (תוכנה מסוימת שמקודם הורדנו) בדרך הסטנדרטית ואחר כך להתקין אותה אבל לא רושמים איזה פקודות להקליד. אנסה לפרט מה שאני זוכר שיש לעשות שם: דבר ראשון יש לבדוק כתובות ip של שתי המכונות, אחר כך לעשות פינג מהמכונה הראשונה לעצמה, אחר כך מהראשונה לשניה, להוריד קובץ tar/zip מהמכונה השניה לראשונה באמצעות ftp, הקובץ הוא למעשה התקנה של תוכנה בשם pure ftp, יש לפתוח אותו, לקמפל את התוכן שלו, להתקין את התוכנה, להריץ אותה, לעשות kill לתהליך שלה, לחפש בתוך אחד ה - headers שלה מסר מסוים (welcome to), לפתוח את המסר הזה ולהוסיף לו את המילה my, לקמפל שוב ולהתקין את התוכנה מחדש, לפתוח את התוכנה ולראות שהמסר שהיא מציגה בהתחלה השתנה בהצלחה. כמה דגשים: כמו שקודם אמרתי רוב הדברים שיש לעשות רשום במסמך איזה פקודות צריך להקליד כך שאין צורך לזכור פקודות בעל פה, כשמחפשים את המסר שיש לשנות אז לחפש רק את המילים "welcome to" ולא את כל המסר (כי זה נראה לי מסר שמשורשר משני מקומות שונים) אם אני זוכר נכון זה נמצא בקובץ messages_en.h, את הקימפול הסטנדרטי אפשר לעשות עם gcc או make אבל אין צורך לשבור את הראש ולמצוא מה צריך לקמפל אלא יש שם קובץ טקסט שנקרא install, פותחים אותו עם עורך טקסט וישר בשורה הראשונה רשומות 3 פקודות שצריך להריץ, מריצים את 3 הפקודות אחת אחרי השניה והן גם מקמפלות וגם מתקינות את התוכנה, כדי להפעיל את התוכנה אני נכנסתי פשוט לתיקיית הקיצורי דרך לתוכנות מותקנות שהיא אם אני זוכר נכון usr/local/sbin (בכל מקרה כאשר מריצים את 3 הפקודות אז רשום לאיפה הוא מתקין אותה). חלק ג: טוב האמת שכאן אין לי יותר מדי מה לומר וגם אין כל כך איך להתכונן לזה, מדובר במשימת עיצוב גרפי, אגב אין חובה לעשות את החלק הזה אבל מי שעושה אותו יהיה לו יתרון בקבלה לתפקידים שדורשים יכולת עיצוב ממשקים, במשימה מדברים על מערכת שמשמשת לחיפוש עובדים בחברה, נותנים תמונה שבתוכה יש כביכול תוצאת חיפוש אחת שכוללת תמונה של עובדת, כמה פקדים והרבה מידע עליה שנמצא בדרך כלל כתיבות טקסט, התצוגה הראשונית בתמונה לא נראית טוב ודי מבולגנת, המשימה היא לפתוח את התמונה בשלמותה בצייר ולגזור ממנה חלקים שונים כמו נמשל התיבות טקסט ואותן לארגן בתמונה חדשה (חלון צייר שני) כך שבסופו של דבר תתקבל תמונה סופית שונה שמציגה את העובד ופרטיו בצורה הרבה יותר מאורגנת, יפה ושימושית, ניתן לשנות את הגודל של הפקדים, צבעים ובכלל כל דבר כמעט שאפשר לעשות בצייר. כמה דגשים: כדי להתכונן לחלק זה אז למי שלא מכיר אולי כדאי באמת לעבוד קצת עם הצייר, לגזור חלקים מתמונה לשנות גדלים וכ"ו, כדאי לעבוד בצייר במוד זום מוגדל (נמשל 200%), כדאי להתחיל מלחשוב על קבוצות פקדים שונות עם מכנה משותף כמו נמשל כל התיבות שמכילות את פרטי הכתובת ואז פשוט לגזור אותן מהתמונה הראשונה ולשים אותן ביחד יפה בשניה, כאמור הכי טוב לגזור כל פעם דברים מהראשונה וכך לאט לאט התמונה הראשונה מתרקונת ונהיה יותר קל להתסכל עליה ולתכנן מה עושים (זו לפחות הדרך שאני מצאתי בשבילי הכי טובה אך כמובן שיש עוד דרכים). אה ודבר אחרון לסיום נזכרתי במשהו מצחיק, בסוף המבחן הבוחן ניגש לכל אחד ואז שואל אותו האם הוא ראה את המבחן הזה בעבר, מה בדיוק הוא מצפה שיענו לו??? ובכלל נראה לי שכמעט כולם ראו את המבחן הזה בעבר.. בהצלחה ודיר בלק אם מישהו מספר משהו/נותן רמז על המבחן הזה אחרת פשוט צ'ק פוינט ימצאו את מה שרשמתי כאן וישנו את המבחן.. יש למשהו תובנות נוספות???? (קטע קוד כתוב .... או שיכול להוסיף ) ישkl תובנות נוספות???? (קטע קוד כתוב .... או שיכול להוסיף )
היי, יש אפשרות להיעזר ביכולותי התכנותיות... אשמח לקטע קוד + עזרה קלה בהבנת הנקרא, היינו הבהרות!
שלום, זימנו אותי ליום מיונים עבור משרת: Protection Developer- Application Researcher מה זו המשרה הזו? זה קשור ל QA? תודה רבה.
מישהו יכול להציג אלגוריתם או פיתרון לשאלה התכנותית הרביעית בשפת C?
עוד שאלה- באיזה סוג של שרשור עדיף להשתמש? האם להכין HASHTABLE של מפתחות עבור כל כתובת או לבצע מניפולציה על כתובת - לדוגמא %10 ולבצע שרשור של כתובות בצורה כזו? (מבחינת יעילות)
מישהו יכול להכווין אותי? יש לי את המיונים ביום שני ואני אשמח לעזרה כללית, יש לי כמה שאלות!!
בשאלה ה4 יש שימוש ב ב SET אז צריך לדעת איך להתמשמש בו הייתי יותר ממליץ לכתוב בJAVE כי אקליפס הוא יותר ידודתי למשתמש (במיוחד בשאלה ה-2) הוא מכוון אותך איפה לתקן ומביא לך אפשריות תיקון ולקרוא טוב טוב את ההוראות לפני נורא חשוב!!!!!!!!!!!!!
Protection Developer- Application Researcher זימנו אותי למבחנים למשרה הזאת. מישהו יודע מה זאת המשרה הזאת ובאיזה סוג מבחן מדובר?
פוסט מזעזע לדעתי החוכמה זה לבדוק חשיבה לוגית של מתמודד ולוא דווקא אם הוא כותב סינטקס מדוייק של השפה. כמובן לשלב את זה בידע בJAVA או כל שפה אבל לא ברמה הזו. זימנו אותי לשם לראיון עבודה ואני חייב לציין שממה שקראתי פה - יום מבחנים עמוס בכל טוב , אני שוקל להסיר את מועמדותי. נכון , זה נחשבת חברה טובה לגדול בה וללמוד , אבל עדיין הם משלמים משכורות כמו כולם ( את האמת פחות מהממוצע ) וללמוד אפשר בעוד מלא חברות אם יאתגרו אותך ויש לך את הרצון להתפתח. מאחל לכולם בהצלחה , אני עדיין מתלבט עם כיוון לסלידה.
הייתי ביום מבחנים והיה בדיוק כמו שרשום פה תודה לכולם וכל הכבוד האם מישהו הגיע לראיון שני למשרה ב c# ויוכל לפרט? תודה
עשיתי את הראיון לפני כמה זמן ונעזרתי בשרשור הזה אז אני אתרום חזרה לגבי שאלה 1 עם העצים הבינארים הדגש הוא לכתוב פונקציה שמוצאת את השורש הכי עמוק עבור שני הכתובות תחשבו שיש לכם עץ ענק צומת שיש לו 2 בנים ואלה הכתובת שאתם מחפשים, אז במקום לעשות שני חיפושים מלאים על העץ תעשו חיפוש אחד שמוצא שורש יותר טוב וממנו תוציאו שני חיפושים בינארים. לגבי שאלה 4 עם הטבלת ערבול זה מאוד לא נכון לעשות את מה שנאמר כאן, ברגע שמבקשים ממכם את הטובים ביותר אתם צריכים ב O(1) להחזיר תשובה אם אתם עושים חיפוש על כל הטבלת ערבול זה יקר מאוד, מה גם שאומרים לכם שהפונקציה שמחפשת את הטובים ביותר נקראת כל הודעות לפחות פעם אחת. הפתרון הוא לעשות את זה בעזרת שני מערכים אחד סופר והשני שומר את הכתובת כל פעם אחרי שמכניסים הודעה לטבלת ערבול בודקים כמה הודעות מאותה הכותבת יש סה"כ ועוברים על המערך אם יש במערך מישהו עם פחות הודעות אז מעדכנים את שני המערכים עם הכתובת והערך החדש. (מקווה שזה היה ברור אם מישהו רוצה אני יכול להסביר יותר בפירוט)
עשיתי את הראיון לפני כמה זמן ונעזרתי בשרשור הזה אז אני אתרום חזרה לגבי שאלה 1 עם העצים הבינארים הדגש הוא לכתוב פונקציה שמוצאת את השורש הכי עמוק עבור שני הכתובות תחשבו שיש לכם עץ ענק צומת שיש לו 2 בנים ואלה הכתובת שאתם מחפשים, אז במקום לעשות שני חיפושים מלאים על העץ תעשו חיפוש אחד שמוצא שורש יותר טוב וממנו תוציאו שני חיפושים בינארים. לגבי שאלה 4 עם הטבלת ערבול זה מאוד לא נכון לעשות את מה שנאמר כאן, ברגע שמבקשים ממכם את הטובים ביותר אתם צריכים ב O(1) להחזיר תשובה אם אתם עושים חיפוש על כל הטבלת ערבול זה יקר מאוד, מה גם שאומרים לכם שהפונקציה שמחפשת את הטובים ביותר נקראת כל הודעות לפחות פעם אחת. הפתרון הוא לעשות את זה בעזרת שני מערכים אחד סופר והשני שומר את הכתובת כל פעם אחרי שמכניסים הודעה לטבלת ערבול בודקים כמה הודעות מאותה הכותבת יש סה"כ ועוברים על המערך אם יש במערך מישהו עם פחות הודעות אז מעדכנים את שני המערכים עם הכתובת והערך החדש. (מקווה שזה היה ברור אם מישהו רוצה אני יכול להסביר יותר בפירוט) תשאיר אימייל
פיתה_על_הגז אני מאוד אשמח אם תוכל לפרט יותר לגביי שאלות 1 ו4, יש לי בקרוב מאוד את הראיון הזה ולא ממש הבנתי את ההסבר שלך. תודה רבה וסופ"ש מעולה! .
דבר ראשון אם עוד לא הורדתם את המבחן תורידו אותו מפה http://www.4shared.com/zip/A3BkgGsl/che ... ua=WINDOWS עקרונית המבנה של המבחן קצת השתנה, אבל השאלות זהות לגמרי בשאלה 1 אומרים לכם שיש עץ בינארי ממויין (כל מה שבצד ימין גדול מהצומת הנוכחי כל מה שבצד שמאל קטן מהצומת הנוכחי) ואתם מקבלים מבנה של הודעה לכל מבנה כזה יש כתובת שולח וכתובת מקבל, המטרה שלכם היא למצוא את בצורה היעילה ביותר אם אחת מהכתובות האלה נמצאת ברשימה השחורה. אז הדגש הראשון כמו שנאמר כבר בשרשור הזה הוא לבצע את החיפוש בעזרת לולאה השני הוא שאתם לא רוצים לבצע שני חיפושים מלאים על העץ אם נתסכל על העץ הזה למשל: http://compsci2014.wikispaces.com/file/view/binaryTree.jpeg/412844508/binaryTree.jpeg נניח שכתובת השולח היא 11 וכתובת המקבל היא 10 אז אם אתם מבצעים שני חיפושים מהשורש 7 אתם תצרכו לבצע שני חיפושים מלאים הרעיון הוא לכתוב פונקציה שמקבל את השורש המקורי ושני כתובות ומחפשת שורש הכי עמוק שהוא שורש לשני הכתובות במקרה הזה 9 או 11 זה לא באמת משנה הפונקציה הזאת למשל (לא בדקתי את זה, אבל העקרון נכון, כי במבחן הצלחתי את השאלה) Node* Find_deepets_common_root(Node* current, ADDRESS from_address, ADDRESS to_address) { while (current){ if (from_address < current->data && to_address < current->data) { current = current->left; } else if (from_address > current->data && to_address > current->data) { current = current->right; } else { break; } } return current; } ואז מבצעים חיפוש בינארי רגיל פעמים מהשורש החדש בקשר לשאלה 4 אתם צריכים לשמור סטטיסטיקה על אחוז הפעמים שכל אחד שולח הודעות ומתי שמריצים פונקציה מסוימת להחזיר את כל השולחים ששלחו יותר מ 10% מכלל ההודעות אתם צריכים לממש שני פונקציות אחת שרצה אחרי כל פעם שהודעה חדשה נשלחת ושנייה היא זאת שמחזירה את המערך עם כל השולחים ששלחו יותר מ 10% מכלל ההודעות אז בשביל לעשות את זה יעיל בפונקציה הראשונה אתם שמים מונה שעולה כל פעם שמקבלים הודעה חדשה והוא יספור כמה הודעות יש בסה"כ בנוסף אתם מקבלים טבלת ערבול שבה אתם מאכסנים לכל כתובת שולח כמה הודעות היא שלחה סה"כ אז כל פעם מעדכנים את הטבלת ערבול ( HASH TABLE) אחרי שמקבלים הודעה אני גרוע בלהסביר בכתב אבל באמת שההמשך די טריוויאלי תחשבו איך בעזרת מערכים אתם יכולים לקבל פתרון ב O)1( הכי חשוב לפתור מהר ויעיל אני נתקעתי בגלל שהדיבגר שלי היה על Release (בחיים לא עבדתי עם visual studio) ולא הבנתי למה בשאלה 4 אני מקבל תוצאות משונות ורק ב 10 דקות האחרונות שמתי לב זה, זה לא עניין אותם. אם אתם לא עוברים את זה אתם לא ממשיכים.
זה לינק לתמונה של העץ http://compsci2014.wikispaces.com/file/ ... yTree.jpeg
אגב את המבחן לקחתי פה מאיזשהו שרשור לא אני העלתי.
דבר ראשון, שיחקת אותה! תודה רבה רבה!!. את השאלה על העץ בסוף הבנתי ועשיתי באמת לפי least common ancestor וראיתי שזה באמת מה שהתכוונת אליו. בשאלה 4 שברתי את הראש שעות כדי להבין איך לעשות את זה בO(1) עם מערכים ולא הצלחתי. דבר ראשון הכוונה שלך למערך ששומר את המשתמשים שלחו יותר מ10% מההודעות ואותו מעדכנים בכל הודעה חדשה שנשלחת?, אם כן אז אתה תמיד אתה צריך להמיר את המערך לhashset (בקוד דרוש להחזיר hashset) והרי בהמרה כזאת אתה צריך לעבור על כל המערך שזה בהכרח יותר מO(1). איך בדיוק אפשר לעשות את זה בO(1)?. נ.ב. למה ההכוונה שהמבנה השתנה? סדר השאלות השתנה אבל הן נשארו אותן השאלות?.
המערך בגודל קבוע (10) אז לעבור עליו זה O(1) הם פשוט פיצלו את זה לכל שאלה בנפרד בניגוד למה שמופיע פה שכל השאלות באותו קובץ וורד אין לי כל כך זמן אבל העלתי את מה שעשיתי בבית לפני הבחינה לא מתחייב שזה נכון או שזה הפתרון שהם רוצים, אבל אולי זה יעזור לכם להבין http://tny.cz/22c26609
תודה רבה!!
אשמח לקבל עזרה מכל מי שהיה ביום המיונים, מאוד רוצה את המשרה
קודם כל תודה רבה. לא הבנתי איך החלטת שהמערכים בגודל קבוע 10? זה בגלל שבפונקציה שבתרגיל ב- C אתה אמור למלא מערך בגודל 10? כי ב- java ו ב- c++ אין הגבלה כזאת, אתה פשוט צריך להחזיר סט של כל הכתובות שעוברות את ה- 10%, ולכן אתה לא יכול להסתמך על מספר קבוע של כאלה... יש סיכוי שאני מפספס משהו, אז אשמח להבהרה. תודה
אני דיברתי על C כמובן לא יכולים להיות יותר מ 10 שעברו את ה 10% כי אז יצא לך שהס"כ גדול מ 100%
מישהו פה הולך ליום ראיונות ביום רביעי? על איזה משרה אתם מדברים לבדוק שאני בכלל מפוקס על מה מדובר בפוסט
למישהו כאן יש פתרון קביל למבחן הGUI? אף אחד לא הציע פתרון אפשרי וקביל אליו.
חזרתי היום מיום המבחנים.. אומר זאת כך, בגדול , המבחן הכי קשה שהיה לי אי פעם, פתחו לי את התחת.. רוצים שב - 3-4 שעות, תפתור 4 שאלות, כאשר עבור כל שאלה אתה צריך לקרוא (ולהבין כמובן) את השאלה , מה שכמובן מבזבז עוד זמן.. סביבת עבודה ב - visuall studio, סביבה שלא יצא לי לעבוד בה, ולמי שמכיר יש כמובן יתרון.. לא נראה לי שמישהו שסיים את הלימודים בפחות מ - 85 יעבור את המבחן, אבל זאת דעתי..
היי יש מישהו שהיה במבחן בזמן האחרון ? השאלות העדיין אותם שאלות ? תודההה
עדיין אותו מבחן ( רק שינו קצת שמות של המחלקות, לא קריטי ). אבל עכשיו אין גישה לאינטרנט! ולכל השפות, פרט ל-C, יש משימה חמישית: בהנתן וקטור של סטרינגים להחזיר את כל התת קבוצות שלו ( כולל קבוצה ריקה וקבוצה שלמה )
מה זה? Check Point Data Loss Prevention Test – Answers sheet
זה דף וורד בו אתה אמור לכתוב את התשובות של החלק של הלינוקס
מה פתאום יש שם גם כאלה How to detect financial reports:
אה טעות שלי. הדף תשובות של לינוקס נקרא FTP Server Test - Answers Sheet. ה Check Point Data Loss Prevention Test – Answers sheet הוא לא חלק מהמבחן של R&D (הייתי ממש לאחרונה) בהצלחה
מתי היית חזירונת? השבוע? עברת כבר ראיונות אישיים?
היי מישהו היה בזמן האחרון ויכול לתת קצת יותר מידע למבחן של ה-GUI ?
הולך ליהות לי מבחן ביום חמישי מישהו יהיה בזמן האחרון ויכול לתת לי כיוונים ?
מבחןןן אתה יכול לתת דגשים על השאלות אם היה שינוי כלשהו ואיך כדאי לפתור את שאלה 4 ? תודה
ההוראות לכל המבחנים כתובות באנגלית?? וגם יש למישהו מושג מה הצעות השכר שלהם למתחילים??
יש מישהו שהיה בזמן אחרון ויכול לתת קצת כיוונים חדשים אם יש איזה שינוי.... בבקשה
במהנדס תמיכה 2 מבחנים באנגלית לי היה 1) קטע קריאה על דף. 6 עמודים על ISP REDUNDANCY רוב השאלות אמריקאיות וחלק פתוחות. 2)כ 9 משימות לביצוע על אמולטורים (שרתים) של ויינדווס ולינוקס לפי סדר עדיפויות. יש לזכור שצריך להיות סדר עדיפויות ועם יש משימה שכוללת את המנכ"ל אז כנראה שהוא יהיה בעדיפות ראשונה. GOOGLE פתוח.
שאלה 5 לא חובה והיא הכי קשה למצוא את כל הפרומטציות של וקטור של מחרוזות לדוגמא: "דוד" "משה" רועי" ראו פתרון בשימוש של STL vector<string> myinput; myinput.push_back("david"); myinput.push_back("roei"); myinput.push_back("mira"); myinput.push_back("aviv"); std::vector<string> perms; std::vector<vector<string>> myperms; myperms.push_back(myinput); vector<string>::iterator itBegin = myinput.begin(); vector<string>::iterator itEnd = myinput.end(); while(next_permutation(itBegin, itEnd)) { myperms.push_back(vector<string>(itBegin, itEnd)); }
היי, אשמח לעזרה קלה בשאלה הראשונה בפיתרון ג'אוה. זה זמן מה לא נגעתי בג'אוה, אז סליחה עם השאלה לא ממש קשה. אני מנסה להגיע למידע שנמצא בכל אחד מהערכים על מנת שאוכל לבצע עליהם פעולות: כרגע אני מנסה למידע באמצעות: String test = message.getData()//string; אבל זה איזשהו סטרינג, ואני לא מצליח להפעיל עליו את: Message.stringToAddress מישהו יכול לעזור עם זה?
הבנתי את הטעות שלי. צריך את ה-getFrom וה-getTo. אבל הם מגיעים בפורמט של XXX.XXX.XXX.XXX. איך אני יכול להשוות ביניהם, אם הם לא מספרים?
לשאלה מעליי, אתה יכול להשתמש ב equal שכתוב לך כבר במחלקה יש למישהו עוד טיפים? משהו התשנה? אפשר לענות ב-JAVA? כאילו ראיתי שמישהו פה ענה שאמרו שמי שעונה ב-C\C++ זה פותח לו הכי הרבה אופציות. זה באמת משנה? תודה
המבחן מורכב מ 5 שאלות: Java בכל שאלה צריך לממש פונקציה: 1. צריך לממש עץ בינארי, שעושה חיפוש בינארי. 2. צריך לממש קריאה לפונקציה שמחזירה Struct * ואז לשלוח לפונקציה אחרת את ה Struct שקיבלנו. 3.צריך לתקן קוד, שלא התקמפל. 4. שאלת אלגוריתם. 5. שאלת נושא. בעקרון מי שמסיים 4 שאלות Java מתוך 5 - עובר. בהצלחה
הוסיפו עוד שאלה עכשיו למי שלא כותב ב C צריך למצוא את כל ה permutations of a string את כל הקבוצות שיכולות להיווצר מהמערך הזה כולל קבוצה ריקה אם מקבלים {A,B,C} תשובה: "",A,B,C,AB,AC,BC,ABC
היי, מישהו היה לאחרונה במיונים לתפקיד R&D ויכול לפרט בבקשה איזה שאלות שואלים שם?
בשאלה אחרונה זה פרמוטציות או כל התתי הקבוצות(כי יש הבדל)?
אורח, שאר השאלות הן זהות למה שכתבו? זאת אומרת: 1. חיפוש בינארי 2. שימוש בapi של החברה 3. תיקון שגיאות 4. החזרת רשימה של הודעות עם ה10% ????. יש לי את המבחן ביום שני הבא ואשמח לדעת תודה
מעיין_כהן_כרמל נודה לך שתעדכני אותנו מה היה לך במבחן .
מעיין_כהן_כרמל נודה לך שתעדכני אותנו מה היה לך במבחן . מעיין, מצטרף לבקשה.
שלום, גם אני אשמח לדעת אם המבחנים השתנו? תודה
בנוגע ל permutation. לפי מה שהבנתי המשמעות של permutation היא, אם נשתמש בדוגמה למעלה: "ABC" התוצאה תהיה: ABC, ACB, BAC, BCA, CAB, CBA דהיינו כל הצירופים האפשריים של כל האברים אבל לא חלקים מהם (לא רק A או B וכו'). מישהו יכול קצת יותר לפרט מה הכוונה בשאלה הזו?
בנוגע ל permutation. לפי מה שהבנתי המשמעות של permutation היא, אם נשתמש בדוגמה למעלה: "ABC" התוצאה תהיה: ABC, ACB, BAC, BCA, CAB, CBA דהיינו כל הצירופים האפשריים של כל האברים אבל לא חלקים מהם (לא רק A או B וכו'). מישהו יכול קצת יותר לפרט מה הכוונה בשאלה הזו? ראה: http://www.geeksforgeeks.org/write-a-c- ... en-string/
אני דווקא הבנתי אחרת, עבור הדוגמא הנ"ל, התוצאה צריכה להיות: A B C AB BC ABC "", שוב אבל זה מה שאני הבנתי
הי, יש לי ביום חמישי מבחנים למשרת סטודנט פיתוח האם השאלות מהמבחן שנאמרו כאן זה למשרת סטודנט? והאם מישהו היה לאחרונה ויכול להגיד אם יש שינוי כלשהו בשאלות?
ואללה גם לי יש מחר יום מבחנים, מעניין כמה המידע פה היה רלוונטי בהצלחה!
כמה שאלות: 1) לגבי שאלה 2 המוזכרת, מה הכוונה לסרוק כל מסר? היכן נמצאים כל המסרים? טוב זהו בינתיים אולי יהיה בהמשך
איפה מריצים בC? visual studio? תודה רבה
למישהו שמבין, לא חסר לך בתוצאה AC?
אהלן, יש לי יום מבחנים בחמישי הקרוב - משרת פיתוח, משרה מלאה אמרו לי שאני אצטרך לבחור בין C , C# , Java או python מישהו יודע לומר אם השאלות השתנו? על מה לשים דגש וכו'? תודה רבה!
הי לכולם יש לי יום מבחנים ביום ראשון ואשמח לעזרה של אנשים תותחים שהיו שאלת הפרמוטציות מישהו יכול לתת דוגמה ?(השאלה החדשה)
השאלות הם בדיוק כמו שמתואר פה. כל הכבוד אנשים טובים תורי לחפור : (אגב לצערי לא עברתי, כל המבחן הלך מצויין(!) כצפוי אחרי שקוראים את כל השאלות פה, ולצערי ישבתי שעתיים על באג בשאלה 3, ראו פרטים בהמשך) הם לא אמרו שיש עדיפות ל ++C או שפה כלשהי, להפך החברה גדלה ויש הרבה משרות, אבל זה כנראה אף פעם לא קבוע ומשתנה בהתאם לתקופה.. ל-4 השאלות הראשונות יש 4 שעות אבל מומלץ 3, ואחרי זה יורד ניקוד בהדרגה (הכל מאחורי הקלעים, לא רואים ניקוד או משהו) יש שעה שלמה לשאלה החמישית מי שמסיים קודם מגניב ומקבל בונוס. אל תסיימו מהר מדי שלא יחשדו.. יש יציאה חופשית לשירותים\מטבחון\מה שבא לכם ואפשר להיות בשירותים עם טלפון (אבל אין צורך). המחשב שעובדים עליו מוקשח, אין 'התחל', אין 'המחשב שלי' אין אינטרנט, יש מולך תוכנה עם ו-5 מסכים, כל אחד מכיל הוראות (באנגלית) וכפתור שפותח VISUAL-STUDIO (אם אתם C#) עם הפרוייקט הרלוונטי אפשר כמובן "לדפדף" הלוך וחזור. חשוב לשמור כי זה סוגר תפרוייקט הנוכחי כשמחליפים, זה גם מזכיר את זה כל פעם. כל מסך שכזה מצג TIMER של כמה זמן אתם על השאלה הספציפית. לא יודע אם זה משנה לכם או להם אבל אם עושים ALT_TAB בשביל לחזור מ VISUAL STUDIO לתוכנה הזאת ואז עוברים למסך אחר, ה TIMER שלו ממשיך לרוץ ולא של השאלה שאתם עליה, אולי אם בסוף יש משמעות לכמה שמן התעכבתם על כל שאלה , אז יש אפשרות לשחק עם זה, תעבירו על כמה דקות מסך בתוכנה, ואז הזמנים יהיה שוום בין כל השאלות, או שתשאירו רוב הזמן על תרגיל 3, כי לדעתי למצוא באגים אמור לקחת יותר זמן מלכתוב דברים יחסית פשוטים מוסבר הניקוד על השאלות הוא לפי הקריטריונים הבאים בסדר יורד : 1. שזה יעבוד נכון 2. שזה יעיל 3. הזמן שלוקח לך לעשות את זה (גם שם רשום מומלץ 3 שעות ל 4 השאלות הראשנות יחד) 4 . קריאות ושמות משתנים וכאלה... 5. לא זוכר ויכול להיות שזה בעצם ב 4 , אבל זה זניח אז סיכומים\הערות שלי לפי שאלות : ---------------------------------------------------------------------------------- 1. כמו שאמרו פה, פונקציה שמקבלת אובייקט כלשהו מסוג message שמכיל FROM, TO, PROTOCOL, DATA (נניח שכולם int, זה לא באמת משנה) עבור כל message כזה, צריך לדחות את ההודעה (להחזיר ENUM כלשהו של דחייה) אם ה TO או ה FROM מופיעים ברשימה שחורה הרשימה נתונה בצורת עץ - ויש לנו את ה ROOT NODE שלו אחרת לאשר את ההודעה (להחזיר ENUM כלשהו אחר) כל NODE בעץ מכיל DATA LEFT (יכול להיות NULL) RIGHT (יכול להיות NULL) היעילות חשובה, ושמריצים הוא כנראה מריץ מלא פעמים תפונקציה ונותן ציון על יעילות, שזה מספר שצריך לקרב אותו כמה שאפשר ל 1000 בפיתרון הכי טריויאלי בלי דגשים על יעילות זה מביא ציון שיותר קרוב ל 2000 אם אני זוכר נכון זה די פשוט, אבל בכל זאת, פיתרון : - כמו שאמרו פה (ורשמו גם איך), למצוא את ה NODE הכי עמוק שהוא אב משואף של FROM ו TO בשביל לא להריץ חיפוש מלא על העץ פעמיים - לחפש מה NODE שמצאנו את FROM (למשל), אם נמצא להחזיר דחייה - אחרת, לחפש מה NODE הנ"ל את TO, אם נמצא להחזיר דחייה - אחרת, להחזיר אישור למי שלא סגור על זה, לא צריך שום רקורסיה ! מעבר על עץ צריך להיות משהו בסגנון הבא : (ותעתיקו כי זה הורס פה תאנגלית-עברית) currentNode = root; while (currentNode != null) { if (ValueToFind == CurrentNode.Data.Get() ) return true; else if (ValueToFInd > CurrentNode.Data.Get() ) currentNode = currentNode.Right else currentNode = currentNode.Left; } כן ויש להם קטע מוזר שבשביל לגשת ל PROPERTY עושים Data.Get או Data.Set ולא פשוט DATA, או Data = 4 כנראה מועתק מ-JAVA.. אבל בקטנה.. ---------------------------------------------------------------------------------- 2. מקבלים הודעה וצרכים לדחות או לאשר (כמו קודם) בהתאם להאם היא מכילה וירוסים משתמשים במחלקה שלהם עם שם ארוך שאני לא זוכר קודם צריך ליצור MEMBER של זה, לאתחל את זה ב CTOR, וגם לקרוא ל SETUP (פונקצית אתחול כלשהיא) וצריך לקרוא לפונקציה של המחלקה הזאת ולשלוח לה את ההודעה והיא מחזירה אם יש או אין וירוס הפונקציה מקבלת כל מני פרמטרים נוספים ולא מתועדים ולא ברורים. מהות השאלה הזאת היא לראות איך מתמודדים עם קוד לא מתועד ואם מבינים דברים לבד ממה שאני זוכר : 1.אם נכנסים לקוד של הפונקציה רואים שהפרמטר הראשון לא בשימוש וקיים בשביל לבלבל (חח קוראים לו "UseLast" או משהו כזה, ואני יושב וחושב "?!use last what" ) 2. לשלוח FALSE בפרמטר של FULL_SCAN, אחרת זה ימשיך לחפש גם אם כבר מצאנו וירוס כלשהו בהודעה (אחד מספיק בשביל לדחות אותה) 3. היה עוד פרמטר עם שם מבלבל בסוף, לא זוכר מה הקטע איתו, הוא לא משפיע על כלום אם אני לא טועה.. ציון יעילות שקיבלתי היה בסביבות 1200, קריאה לפונקציה עם פרמטרים בצורה שונה, רק מעלה את זה. (אם אני לא טועה לא רשום באף מקום להגיע בדיוק ל 1000, רק להתקרב כמה שיותר) ---------------------------------------------------------------------------------- 3. איכס !, חד משמעית תשאירו לסוף, ואם אתם בנאדם ולא רובוט, כנראה שתיכנסו אליה בהתחלה סתם בשביל הסקרנות ולהעריך זמנים, אבל אחרי זה פשוט תתעלמו ותחזרו שסיימתם תשאר. (כמובן שהכל בגדר המלצה, אתם מכירים את עצמכם יותר ממני) - צריך לפתור באגים ורשום שגם וטעויות קימפול וחוסר יעילות.. - גם כאן מהות המפונקציה היא שמקבלים הודעה וצריך לאשר או לדחות, בהתאם להאם בהודעה יש מילים לא רצויות שנתונות ברשימה כלשהיא. - כל הבאגים הם כמו שתוארו כאן, אני לא יחזור. (הקטע שממש רשום בהערה "אם ההודעה ריקה אז צריך פשוט לאשר אותה" ואז הם בעצם עושים הפוך קצת הצחיק אותי) אז ככה : להודעה יש DATA , שזה STRING כלשהו להודעה יש גם סוג, והוא אחד מ-3 ערכים אפשריים לכל הודעה צריך לעבור על ה DATA ולחפש אם מופיעות שם מילים לא רצויות, יש פונקציה שעושה את זה. הDATA בהודעות מסוג SMTP אמור להראות ככה : "SUBJECT:blablabla BODY:blablalba" להודעות מסוג SMTP צריך לחפש מילים לא בכל ה-string אלה רק בחלקים מסוימים ממנו, כמו שתואר פה כבר. הבעיה שלי שהטקסט של כל הודעה שהפונקציה קיבלה (סתם בהתחלה, עוד לפני השלב שמחליטים איזה סוג הודעה זה ומה לעשות עם זה) לא היה בפורמט הנ"ל, לא היה בפורמט כלשהו, לא היה קריא בכלל, אלה היה מבולגן ומזובל, משהו בסגנון : "SA@#!$# AO G32$%@HDF@ iRC5" נדמה שזה שמר בין הודעות על הסדר של הרווחים וכמות אותיות בכל "מילה" או שזה יום רע ממש, וזה מהבאגים שהולכים לישון ובבוקר שאחרי ישר פותרים כי בדיוק פיספסתי איזה נקודה פסיק או משהו שולי, או שחמאס חיבלו במבחן שלי. דברים שניסיתי : - חיפשתי במחלקות שלהם ולא היה זכר לאיזה משהו שיפענח את זה לפורמט נכון - לא עשיתי משהו שאולי בעקבות זה זה נהיה ככה, פשוט לשים BREAKPOINT, ולבדוק - בדקתי לכל ההודעות, לא היתה אחת נורמלית - היה שם אופציה לעשות SERIALIZE \ DESERIALIZE להודעה, זה לא קשור שתדעו למקרה שאתם נתקלים בזה - שמריצים את התונית אז דוח שגיאה עם מידע קצר על ההודעה הראשונה שהטיפול בה נכשל, מתוך מלא הודעות שהם מריצים את זה עליהם, ושם מופיע ה-DATA בפורמט קריא. - גם אם כוונת המשורר היא לא לחטט להם מאחורי הקלעים, הרי מתישהו הטקסט של אובייקט ההודעה שהם שוליחים לפונקציה שלנו נהיה קריא ומודפס בדוח שגיאה, אז אמרתי שווה לבדוק מה עושה את זה.. - לכן דיבגתי גם "מאחורי הקלעים" וזה בכוונה מבולגן ולא קריא ומלא פונקציות ותנאים שלא עושים כלום וקיימים בשביל להטעות, ומשתנים לא קריאים וכו'... זה לא סתם קוד שמתכנת מתחיל כתב, בברור מדובר על קוד שתוכנן להיות לא קריא. (ועולים לי קונספירציות בראש, אם זה בשביל שלא נרמה ונשנה את מה שבודק את הקוד, או כי הבעיה באמת שם ורוצים לראות איך מתמודדים עם קוד שנכתב ע"י השטן...) קשה להבין משהו בקוד המבולגן הזה וזה גזל לי זמן. עשיתי עוד מלא מלא דברים .. אבל בגדול לא מצאתי איך להפוך את זה למה שצריך די מבאס שעל זה ישבתי שעתיים ובעצם שאר 99% מהמבחן פתרתי בצ'יק.. אם אתם מוצאים מה הבעיה, שטפו !!! שאלתי בסוף את המשיח אבל לא הוא זה שכתב תמבחן ויודע מה הולך שם לעומק. חח אז קשה להסביר לו שבשאלה של למצוא באגים אולי יש באג.. הקטע הוא שלא לכולם הזה את זה ולכן אני חושד. אבל יצא לי לשאול אנשים שלא נבחנו ב C#, אז הכל יכול להיות. (אני כבר לא זוכר באיזה שפה הם עשו את המבחן, נרא לי C) ---------------------------------------------------------------------------------- 4. יש פונקציה שמקבלת הודעה, ונזכור לשהודעה יש כתובת שולח יש פונקציה שצריכה להחזיר את כל כתובות השולחים שמהם נשלחו יותר מ 10% מההודעות עד עכשיו. רשום שהפונקציה של השנייה נקראת הרבה פעמים (אחת לכל הודעה) ולא סתם כמה פעמים רנדומלים וזהו.. הפיתרון הפשוט הוא : ----------------------- - צריך כמובן משתנה סטטי שסופר את כמות ההודעות הכוללת - צריך Dictionary כך שKEY זה כתובת שולח ו ה VALUE זה כמות ההודעות מהשולח הזה - בפונקציה שמקבלת הודעה : * אם השולח עוד לא ב DICTIONARY להוסיף, עם ערך 1 * אם קיים, אז להגדיל את הערך ב 1 - בפונקציה שמחזירה את השולחים יותר מ 10% : - לחשב את כמות ההודעות שצריך לעבור בצורה הבאה: m_totalMessageCount * 0.1 אין יותר פשוט מזה ! (כמובן להמיר ל DOUBLE) - לעבור על ה DICTIONARY ולהוסיף ל HASH_SET שאותו מחזירים כתובות של אלה שכמות ההודעות שלהם עברה את הנ"ל זה פשוט, ובציון של היעילות זה נותן 1000 שזה מה שרשום שהם מחפשים אם בא לכם ,יש דרך לשפר את זה, ( אישית לא ניסיתי כי הגעתי ל-1000 והעדפתי להתרכז על שאלה 3 אם הייתי פותר את 3, חד משמעית הייתי מנסה לשפר את 4) המלצות שלי, בהשראת מה שנכתב פה בעבר : -------------------------------------------------- לא צריך לעבור על כל ה DICTIONARY זה מיותר. ובעולם האמיתי יש מצב של מליוני שולחים ואז גם זה יהיה לא יעיל. אם היינו צריכים למשל להחזיר את אלה ששלחו יותר מ 50% אז יש מקסימום 2 כאלה ,אם בכלל, תחשבו על זה. אם 25%, אז מקסימום 4 כאלה.. במקרה שלנו זה מקסימום 10, אבל נחשוב גנרי ואפשר בהינתן אחוז הרצוי, לחשב את המספר מקסימלי של השולחים (תמצאו לבד כי העברית-אנגלית פה הורס את זה ואני מעדיף לא להטעות) - אפשר ליצור DICTIONARY נוסף, או כל COLLECTION של KeyValuePairs בגודל שקיבלנו או 2 מערכים (אני פחות אוהב, כי זה בגודל קבוע, ומה אם מחר נחליט לשנות את האחוז) במטרה לאחסן שם בכל רגע נתון את השולחים עם הכי הרבה הודעות - בשביל הנוחות, לתחזר משתנה שאומר מה הערך המינימאלי באוסף הזה - בפונקציה שמקבלת הודעה : * נעלה ב-1 את כמות ההודעות ב DICTIONARY הרגיל כמו קודם, * אם כמות ההודעות של השולח הזה עוברת את המינימום באוסף שלנו אז נתרח לעדכן את האוסף כך שיכלול את השולח הזה במקום מישהו שכבר לא מגניב מספיק. - בפונקציה שמחזירה את השולחים מעל אחוז מסוים : נעבור רק על האוסף שלנו, ונחזיר מתוכו את אלה שעוברים את האחוז שימו לב לא להחזיר את כל האוסף כי הוא אמנם הוא מכיל את אלה ששלחו הכי הרבה אבל לא כולם עוברים את האחוז בכל מקרה הפונקציה עברה להיות מתלויה בגודל המילון למהירה הרבה יותר את האוסף הזה, המשתנה של המימינום, וכל התפעול הזה הייתי שם ב CLASS פנימי בשביל הסדר והקריאות וכאלה, הייתי עושה שם פונקציה UPDATE שמקבלת הודעה ומעדכנת אם צריך. ---------------------------------------------------------------------------------- 5. התבלבתי ממה שכתוב פה, מדובר על תת-קבוצות ולא פרמוטציות כלומר עבור {a,b,c} התוצאה צריכה להיות משהו בסגנון הזה : {ABC} {AB} {AC} {BC} {A} {B} {C} {קבוצה ריקה} אין משמעות לסדר, כלומר AB ו- BA זה אותו איבר נבחנתי ב- C# מבחינה טכנית הפונקציה מקבלת string וצריכה להחזיר IEnumarable (כרצונכם, נגיד List) שמכיל IEnumarables (כי מה שבודק את זה זה אוטומטי ולא בנאדם) להלן מימוש ישן שלי לא בטוח לגבי היעילות של זה (איכס עברית-אנגלית) : כתוב ב- #C private static List<List<string>> Subgroups2(params string items) { // Definitions List<List<string>> result = new List<List<string>>(); bool usedItems = new bool; // Adding empty group result.Add(new List<string>()); // for the empty group // Adding sub groups by size for (int groupSize = 1; groupSize <= items.Length; groupSize++) { Subgroups2(items, result, groupSize, new List<string>(), usedItems); } ///////////////////////////// foreach (var list in result) { Console.WriteLine(string.Join(" ", list)); } ///////////////////////////// return result; } private static void Subgroups2(string items, List<List<string>> result, int groupSize, List<string> currentGroup, bool usedItems, int currentSlot = 0, int indexOfLastItem = -1 ) { if (currentSlot >= groupSize) { // copy current group to new item in result List<string> newGroup = new List<string>(); newGroup.AddRange(currentGroup); // Add new group result.Add(newGroup); } else { for (int currentItemIndex = 0; currentItemIndex < items.Length; currentItemIndex++) { if (usedItems == true) continue; if (currentItemIndex <= indexOfLastItem) continue; usedItems = true; currentGroup.Add(items); Subgroups2(items, result, groupSize, currentGroup, usedItems, currentSlot + 1, currentItemIndex); currentGroup.RemoveAt(currentGroup.Count-1); usedItems = false; } } } שימו לב שבפונקציה השנייה, אם מורידים את התנאי עם IndexOfLastItem אז מקבלים גם את כל הפרמוטציות של כל תתי הקבוצות, (וזה לא מה שהם מחפשים, אבל תראו פשוט תהבדל) ------------------------------------------------------------------------------------------ וזהו , תהיו נחמדים ותשטפו ראיונות, יש אנשים שישקיעו ולימדו ויצליחו בעבודה וחבל שזה יתפספס, למי שחושב אחרת, ברור, צריך ששזה יהיה הוגן כלפי החברה ושהעובד ידע מה הוא עושה, ואנשים צרכים ללמוד ולהשקיע, אבל מבחנים כאלה זה פשוט לא הדרך. שונא ראיונות עם מבחנים אוטומטים כאלה במקום שיחה עם בנאדם. לא לדעת מה זה עץ בינארי זה משהו אחד, אבל להתקע על באג שכזה לא מייצג. ואני אומר את זה בתור תוכניתן מנוסה שעבד בכמה פרוייקטים גדולים, אז הינה P: יהיה בסדר ! בהצלחה חברים !!!!!!!!!
איש נחמד, תגיד בשאלה 5, מה מקבלים במערך string? הרי לפי הדוגמה אמורים לקבל רק תא אחד שבו יש את הstring לפירוק. וצריך להחזיר מערך string שכל תא זה תת קבוצה של הקבוצה הראשית נכון? תודה.
יש לי את המבחן ביום ראשון, שמעתי שאת שאלה 5 צריך לממש עם ITERATOR. בכל מקרה זאת התשובה שלי, משהו שכתבתי הרגע, יש מימוש עם לולאות ועם ITERATOR גם. package substring; import java.util.ArrayList; import java.util.Iterator; public class test { public static void main(String args) { String string, sub; int q,i, c, length; String str = "abcde"; char charArray = str.toCharArray(); length = charArray.length; ArrayList<Character> chars = new ArrayList<Character>(); for (char x : str.toCharArray()) { chars.add(x); } Iterator<Character> itr = chars.iterator(); int size = chars.size(); char temp = new char; for(int r= 0;r<size;r++) { i=0; while(itr.hasNext()) { temp = itr.next(); i++; System.out.println(temp); } temp = new char; chars.remove(0); itr = chars.iterator(); } /*for( c = 0 ; c < length; c++ ) { for( i = 0 ; i < length - c ; i++ ) { temp = chars.get(c+i); //temp = charArray; //sub = string.substring(c, c+i); System.out.println(temp); } temp = new char; }*/ // } } }
איש נחמד, האם התרגיל האחרון הוא כמו בדוגמה הזו? עבור ABCD אחד הצירופים צריך להיות ACD? וגם ABD? כי אם כן אז התשובה שנתת אינה מספיקה מכיוון שצריך לדאוג לקפוץ על אותיות בתוך הרקורסיה. או שכל הצירופים צריכים להיות SUBSTRING של הSTRING הראשי? כלומר ללא קפיצות.
הבהרות : בשאלה 5 מקבלים מערך של STRINGS (מחר זה יכול להיות INT, אבל העיקר שזה מערך של איברים) אין צורך לפרק את STRING כלשהו ל-chars עבור ABCD צריך להופיע גם ABD, וגם ACD לא מאתי בעיה בקוד, הרצתי אותו שוב וקיבלתי (עבור ABCD) : A B C D A B A C A D B C B D C D A B C A B D A C D B C D A B C D (ולא לשכוח קבוצה ריקה)
שלום לכולם! זומנתי ליום ראיונות ביום ראשון ואני רוצה להתכונן, אבל הקישור של המבחן לא עובד. מישהו יכול להעלות אותו מחדש בבקשה?
מצטרף לבקשה, האם למישהו יש את קובץ המבחן? הלינק בשרשור הזה לא עובד.
שולה וכרוב, האם כבר עברתם את הנורא מכל ?? תוכלו לשתף ? אופי השאלות, אופי היום... זהות השאלות, סביבת עבודה בזמן המבחן... וגם, בשאלה החמישית, האם יש דרישה מפורשת להשתמש באיטרטור ? תודה !!
יש לי מחר מבחנים בצק פוינט. מישהו בבקשה יכול להעלות פתרון לשאלה 5 בשפת c++? ממש מתקשה עם השאלה. תודה!
שלום לכולם, יש למישהו מושג לגבי המבחן העדכני של הqa?
נו חברים יש התרשמות כללית? זה כמו שרשום פה, לפי חמשת השאלות? תודה מראש, ומבטיח לעדכן מיד לאחר המבחן
עשיתי את המבחן למשרת פיתוח לא מזמן. אין כל כך מה להוסיף, השאלות לא השתנו עד עכשיו. לחלק ראשון ישנן 4 שאלות שמאוד רצוי לעשות אותן ב-3 שעות!!! השאלה החמישית - מציאת תתי קבוצות של הקבוצה שניתנה. כלומר נתון String וצריך להחזיר List<List<String>> כמה מילים בקשר לשגיאות שיש לתקן בשאלה 3: 1. יש לאתחל משתנה messagedata שבתחילת הפונקציה handleMessage: String messagedata = message.getData() 2. ב if שבודק האם messagedata של ההודעה היא מחרוזת ריקה יש להחזיר ACCEPT_MESSAGE יש שם שגיאה בשביל הודעה ללא תוכן וחוזר DROP_MESSAGE 3. יש שם switch שכתוב כך: switch(message.getProtocol( אבל getProtocol מחזיר אובייקט מסוג מחלקת Protocol שלא enum, לכן הוא לא יכול להיות ב switch מה שצריך לעשות זה: message.getProtocol().get(). זה יביא ערך נומרי של הפרוטוקול. 4. ב-case של ה-switch שמטפלים בפרוטוקולים HTTP, FTP ו-SMTP יש קריאה לפונקציה שמטפלת בפרוטוקולת אבל אין השמה למשתנה result וחסר break אמור להיות כך: result = handleSmpt(messagedata); break; 5. באגים אחרים בפונקציית handleSmtp: 5.1 הודעות שאין בהם subject ו-body חייבים להיבדק על ידי פונקציה handleGenericMessage, כלומר כך: int idxSubject = messagedata.indexOf("Subject:( int idxBody = messagedata.indexOf("Body:( if (idxSubect == -1|| idxBody == -1||idxSubject >0) { handleGenericMessage return { ** idxSubject >0 זהו תנאי שמבטיח שאין שום דבר לפני ":Subject" 5.2 חישוב של substring כלומר הוצאת ערכים מתוך subject ו-body שבור לגמרי, פשוט תעשו מחדש, יותר קל מלתקן קיים. זהו תודה רבה לכל הכותבים לפני ובהצלחה לכולם!!!
היי לכולם, ביום ראשון אני מגיעה ליום מבחנים הפתוח. קודם כל תודה רבה לכולם על התגובות זה מאוד עוזר להכנה. לגבי שאלה 5- לפי מה שהבנתי צריך להחזיר את כל תתי הקבוצות של סטרינג אפשרי, אם האורך של הסטרינג הוא n, אז כמות תתי הקבוצות היא 2 בחזקת n. להלן לינק שמכיל קוד בכל השפות לשאלה הזאת: http://rosettacode.org/wiki/Power_set#Java בהצלחה לכולם!
תתי הקבוצות עם חזרות?
מישהו יכול בבבקשה לפרסם את דף השאלות הרשמי? או לפחות ניסוח יותר פורמלי? תודה רבה!
שלום, הייתי שבוע שעבר במבחנים האלה וזה אכן זהה לכל מה שנכתב כאן: 4 שעות בחינה, כשבשעה הרביעית יורדות כבר נק'. 4 שאלות לממש, הראשונה עץ בינארי, וכ'ו כמו שכבר נכתב. שום שאלה שם לא היתה ממש קשה, כמו זה שהייתי צריך להתמודד עם להבין קוד קיים ולעבוד עליו. זה לקח לי המון זמן לקלוט מה מקבלת/מחזירה כל פונק' שהם בנו שם, והיו מקומות שהם בכוונה כתבו בצורה לא מובנת. כמו כן, לדעתי ההוראות מאד לקו בחסר. השעון שמתקתק מולך גם תורם ללחץ. לדעתי ההכנה הכי טובה למבחן כזה (בדיעבד)-לבקש מחבר איזה שהוא תרגיל בC שהוא עשה כבר בעבר. לבקש ממנו למחוק 2 מימושים של פונק' ושאתה צריך לממש אותם. משהו כזה. מקווה שעזרתי. בהצלחה.
יש חדש במבחן?
יצאתי לא מזמן. המבחן נשאר אותו הדבר. טיפ לגבי 3 - בשביל SMTP לא צריך לכתוב את הפונקציה מחדש וזו ממש לא היתה כוונת המשורר. צריך לתת תנאי מקדים לפני שמשתמשים בה. פונקציות של השוואת תתי מחרוזות לפני הקריאה לבדיקה עושה את העבודה וגם משפרת פלאים את היעילות. אם 1000 זו דרישה ליעילות טובה ומתחת מקבלים בונוס - אני הבאתי את היעילות בשאלה הזו ל-300 די בקלות. חבל שאני לא מתכנת טוב כמו שאני פותר באגים קיימים. לצערי לא הספקתי את שאלה 4 וחבל, כי ככה לא הספקתי להגיע לתחום שאני שוחה בו -לינוקס. אני מציע לקחת את מה שיש כאן ולהתכונן מחשבתית לפחות שבוע. המבחן לא קשה אבל קל מאוד להתבלבל בו. ואל תשכחו - RTFM
באיזה שאלה אתה מדבר ? ואיך שיפרת היעילות אפשר לפרט יותר תודה
המון תודה לך, מה זה RTFM? ומה שאולות בראיון שני?
אתם יודעים במקרה אם יום המיון ל QA הוא ביחד עם התמיכה הטכנית? איזה סוג של מבחני הגיון יהיו? (באנגלית?) המבחן הטכני/מעשי..יהיה על QA או על ראוטרים?? הלכתי לאיבוד :<
אם אתם מחזיקים בהצעה אחרת תעדיפו אותה. חברה שנשכרת בבורסה ומקימי החברה הזו הם מילארדרים, וככה קמצנים במשכורת
אם אתם מחזיקים בהצעה אחרת תעדיפו אותה. חברה שנשכרת בבורסה ומקימי החברה הזו הם מילארדרים, וככה קמצנים במשכורת במידה וסרבת, אפשר לדעת כמה הציעו לך ואיזה תנאים? (הכוונה היא לפיתוח תוכנה. אם אתה מדבר על משרה אחרת, תציין זאת)
אם אתם מחזיקים בהצעה אחרת תעדיפו אותה. חברה שנשכרת בבורסה ומקימי החברה הזו הם מילארדרים, וככה קמצנים במשכורת במידה וסרבת, אפשר לדעת כמה הציעו לך ואיזה תנאים? (הכוונה היא לפיתוח תוכנה. אם אתה מדבר על משרה אחרת, תציין זאת) כן זה היה בQA והם הציעו 5.500 למשרה זו. בכל חברה אחרת מציעים 6+ לqa מתחיל.
מישהו היה לאחרונה ביום מבחנים למשרת פיתוח ? השאלות נשארו אותו דבר ?
קודם כל - תודה רבה לכל העוזרים,מעריכה מאוד את העזרה!! רציתי לשאול לגבי שאלה 3 - מישהו יכול לפרט מה בדיוק צריך לעשות בשאלה במובן של חיפוש מילים מסוימות בתוך מחרוזת נתונה..האם הבנתי נכון שנתונה מחרוזת וצריך למצוא האם היא מכילה מילים מסוימות? אם כן,באלו פונקציות של ספריית string.h משתמשים בשביל לבצע את הפעולות הנדרשות? אני יודעת שהפונצקיה strstr מחזירה האם מילה מסוימת נמצאת בתוך מחרוזת נתונה,האם זה נכון להשתמש בה בשאלה 3? האם יש עוד פונקציות של string.h שצריך להשתמש בהם בשאלה 3? ממש אודה על העזרה!!
מישהו היה בתקופה האחרונה? האם השאלות עדיין רלוונטיות ולא השתנו?
השאלות נשארו אותו הדבר. שימו לב לפרטים הקטנים - אני נפלתי בשאלה הרביעית כי ניסיתי למצוא את 10 האיברים הגדולים ביותר ולא את אלו שיש להם מעל 10% קריאות מ source מסויים. תשומת לב לפרטים חשובה מאוד.
היי לכולם, האם מישהו יכול לתת לי דוגמא לשאלות הגיון שהיו ביום מיון בצ'ק פוינט?
היי, יש לי מחר ראיון עם ראש צוות למשרת פיתוח. מישהו היה, יודע מה שואלים?
כל מי שרשם שיש לו ראיון שני בצ׳ק פויינט היה? יכול לספר מה שואלים? איך היה? תנו פידבק אנשים!
מישהו היה ביום מבחנים בצ'ק פוינט למשרת "רכזת עיבוד והזנת הזמנות"? מה שואלים במבחנים?
מישהו היה ביום מבחנים בצ'ק פוינט למשרת "רכזת עיבוד והזנת הזמנות"? מה שואלים במבחנים? היי היית ביום מיונים??
היי מישהו היה ביום מיון למשרת רכז /ת עיבוד והזנת הזמנות ויכול/ה להגיד מה היה??
היי מישהו היה ביום מיון למשרת רכז /ת עיבוד והזנת הזמנות ויכול/ה להגיד מה היה?? כן, הייתי שם לפני שבועיים והגעתי לסוף החלק הראשון וזרקו אותי. מבחן 1. את עובדת בחנות פרחים. מקבלת מייל הזמנה מלקוח. נותנים לך חוברת דפים שבהם יש את המחירון של הפרחים, ומה צריך להיות בהזמנה מסודרת, והמשימה היא לכתוב במייל ללקוח מסקנות מההזמנה שלו. 2. מבחן של 6.50 דקות, 2 טורים של נתונים, כאשר לפעמים הנתונים זהים ולפעמים שונים בשני הטורים. צריך לסמן האם השורה זהה או שונה. 3. צריך להכניס הזמנה למערכת SAP. בהצלחה !
היי בימים הקרובים יש לי מבחן security analysis בצ'ק פוינט. מישהו שהיה במבחן בזמן האחרון ויכול לעזור? יש שינויים בשאלות? תודה מראש
מישהו היה בחודש האחרון בצק פוינט ויודע אם המבחן נשאר אותו דבר?
איזה מבחן? הייתי לפני חודש וחצי במבחנים למשרת פיתוח. עדיין היה את המבחן שדיברו עליו כאן, 4 שאלות, חיפוש כתובות בעץ בינארי וכל זה.
האם המבחנים בג'אווה זהים לאלה ב-C? אם כן, באיזה מובן בודקים יעילות? כיצד ניתן לקצר זמני ריצה של השאלה על 10%, ושאלה על המחרוזות? אף אחד לא הגיב לשאלה הזו: אז אני אומרת לך: המבחנים זהים. ובשום אופן לא לגשת ל C. אולי התכוונת C#, לא משנה. הכי קל זה C# או JAVA. אנשים עוברים את זה בכמויות ובקלי קלות. יש פה בפורום את השאלות. בסך הכל עם כמה שורות קוד ב JAVA או C# ניתן לפתור את כל המבחן. לא מסובך, לא ביג דיל. אבל ב C++ זה הופך להיות מסובך וב C כמעט בלתי אפשרי לעבור. בקיצור, טיפש מי שפותר ב C++ וטיפש מטופש מי שניגש ב C. הם נכשלים הכי הרבה. אני חוזרת ואומרת - שלא תעיז לגשת ב C. למרות שהם אומרים ומצהירים שהם מחפשים C\C++ הם משקרים וזה ממש לא משנה ביום הבחינות. הכי הכי חשוב זה לעבור את הבחינה ולא משנה איך. אז תפתור ב JAVA או C# ותעבור כמו גדול את השלב הראשון, לאחר מכן תספר להם שאתה רוצה לעבוד ב C או C++ אם בא לך, ואחר כך הם ימיינו אותך לשפה שמתאימה לך ולהם ותתכונן בהתאם. ואני אומרת לך את כל זה ממידע מבפנים... בהצלחה
הייתי שם אתמול והיו בדיוק את אותם השאלות.. רק משהו שנתקעתי עליו: בחלק השני כשמריצים את הftp אצל הלוקח כדי גם להתחבר לftp צריך לתת את הפקודה open..
שלום לכולם, יום שני הקרוב יש לי מיונים למשרת סטודנט לפיתוח תוכנה. הודיעו לי שהמבחן הראשון הוא בjava והוא נערך כשעה וחצי, ולאחר מכן מבחן שבודק יכולות טכניות גם כן שעה וחצי. בנוגע למבחן התכנותי, שמתי לב שבשרשור פה היה דיבור רק על משרת פיתוח מלאה והמבחן הוא 4 שעות, האם המבחן למשרת הסטודנט דומה? או אפילו לקוחה אחת השאלות? מישהו פה התמיין למשרת סטודנט? ועוד משהו, בנוגע לציפיות שכר, מישהו יודע מה השכר של סטודנטים לפיתוח? תודה רבה.
הייתי לאחרונה. כמה טיפים: הם אומרים שכדאי לקחת הפסקות והם יתחשבו בזה - קשקוש. המונה רץ ובסוף יעשו לכם טובה אם יוסיפו לכם כמה דק בהן לא יפסיקו להציק. במקרה שלי גם כששאלתי את הבודק שאלה לגבי הקלט הוא קימפל על המחשב שלי דברים במשך עשר דק רבע שעה וכמובן לא חשב להתחשב בזה.. החל מהחצי שעה האחרונה הם נורא מציקים ובסוף הם פשוט מקימים אותך ומפנים אותך מהבניין כמו פולש. אין לי ספק שיכלתי לפתור את המבחן יותר טוב, ובאמת נתקעתי עם באג די הרבה זמן, אבל בכללי היה לי נורא לא נעים, הם היו די מגעילים ולא נראה לי שהייתי רוצה לעבוד שם..
היי, יש גישה לאינטרנט במבחן הזה? מה אם עושים את המבחן ב- C++ ורוצים לחפש באיזו פונקציה או אלגוריתם להשתמש? או שלא זוכרים משהו ב- syntax בדיוק... נשמע שאפשר להתקע!
לא. מבאס, אבל אין גישה לאינטרנט בכלל.
מישהו היה לאחרונה ביום המבחנים (למשרת פיתוח) ויכול להגיד אם השאלות השתנו? למה כדאי לשים לב? תודה!
האם אני חייב להשתמש ב hash table בשאלה 4? מישהו יכול להסביר קצת בבקשה על איך מיישמים HASH TABLE ו HASH FUNCTION בשפת C ?
אז אני עשיתי את המבחן של R&A, ודבר ראשון רציתי להגיד תודה רבה לכל אנשים שרשמו בפורום. אז כמה המלצות על איך להתכונן למבחן הראשון: 1. דבר ראשון תעברו על כל מה שרשום פה בפורום ותעשו רשימה של מה הולך להיות בכל אחת מ5 השאלות. 2. תממשו הכל בבית. אני סיימתי את המבחן יחסיית מהר בשלוש שעות. (וזה בזכות כל מה שאנשים רשמו פה בפורום כמובן) ועוד דבר, מספר אנשים כתבו כאן בפורום שהחלק של הlinux הוא ממש פשוט.. אז לא ממש התכוננתי אליו.. ולי אישית הוא לא היה כזה פשוט, לא יודע קצת הסתבכתי שם אם כל מני דברים.. אז אני ממלייץ לא לזלזל במבחן השני. בכל אופן לא עניתי על כל השאלות בחלק של הlinux ועדיין עברתי... וזהו שהיה המון בהצלחה.
היי , מישהו עשה את הראיון עם ראש צוות ויכול להגיד מה שואלים ?
שלום לכולם! מישהו שהיה לאחרונה במבחנים למשרת Security Analayst ויכול לשתף קצת מידע על ההשאלות? המבנה מוכר וידוע, אם אתם זוכרים שאלות זה נהדר תודה רבה
שימו לב למשהו חשוב (שלא נאמר לנו באופן מפורש בתחילת המבחן) : חובה להשלים את 4 התרגילים הראשונים תוך 4 שעות (רצוי אפילו פחות - 3 שעות) אם לא ביצעתם את 4 המשימות בהצלחה, כל מה שנשאר לכם לעשות זה ללכת הביתה - נכשלתם כל הקטע הזה לחוץ בזמן - לכן, תעזבו את האופטימיזציות (יעילות וזמן ריצה, כדי לקבל בונוס) ותתרכזו להגיע למשהו שעובד ותשמרו אותו ! אם יישאר לכם זמן בסוף, תעבדו על שיפורים. לדוגמה, בשאלה הראשונה (חיפוש בעץ בינארי) : תעשו פשוט 2 חיפושים מהשורש, אחד עבור כתובת From והשני עבור כתובת To; אני התפתיתי לנסות קודם חיפוש של lowest common ancestor של 2 הכתובות, הסתבכתי קצת עם זה ובזבזתי זמן יקר (ונשלתי בגלל זה) !
היי, הייתי לא מזמן ביום מיון בצק פויינט ורציתי להגיד תודה רבה לכל האנשים הטובים שכותבים פה. סיימתי את הבחינות לפני הזמן הרצוי(3 שעות) וזה רק בזכות מה שכתבו כאן. לכן החלטתי לתרום גם החלקי. ההסקות שלי מיום המיון: חלק א': מורכב מ4(להן זמן מוקצב) ועוד אחת(לה יש שעה בניפרד). 4 השאלות נשארו זהות למה שרשמו כאן לפני. גם הזמנים: 4 שעות ל4 שאלות, אך מומלץ מאד לפתור אותן ב3. אפשר לפתור בפחות, אבל אל תפתרו אותן מהר מידי כדי שלא יחשדו. השאלה החמישית השתנתה! זה כבר לא למצוא תתי קבוצות של סטרינג. השאלה שהייתה לי היא: נתון סטרינג. צריך לבדוק האם הסטרינג מייצג ביטוי מתמטי נכון מבחינת סוגריים. מבהירים שם שיש להתייחס רק לסוגריים פשוטים, כלומר: ')' ו- '('. דוגמה לביטוי נכון: 2+3*(4+5) דוגמאות לביטוי לא נכון: 2+3( (4(+3)) ) ( וכו'... דרך לפתרון: לפתור ברקורסיה. לעבור על הסטרינג ובכל פעם שנתקלים בסוגריים פותח '(' לקרוא לרקורסיה שתחשב את הערך המקבל מתוך הסוגריים. חלק ב': LINUX. כמו שרשמו כאן לפני. כמה דגשים שיכולים לעזור. צריך לעבוד שם עם פעולות של LINUX. נכון שמסבירים שם די טוב מה צריך לעשות, אבל לנוב כמוני בLINUX זה עדיין לא היה כל כך פשוט אם לא הייתי מתכונן מראש. לדעתי כדאי לעבור על כמה פקודות בסיסיות: ftp, kill, ping, ifconfig, cd. יש שעה וחצי לפתור חלק זה, אבל ברגע שיודעים איך לעבוד עם הפעולות אפשר לפתור את זה בדקות. כי כל השאר באמת מוסבר. בגדול, צריך לבדוק IP של מכונה A ומכונה B, לעשות ping ממכונה A לעצמה ואז ממכונה A ל B, להתחבר ממכונה A לשרת ftp שבמכונה B ולהוריד קובץ. את הקובץ יש לקמפל להתקין ולהריץ(יש שם קובץ Readme, תעזרו בו). לאחר מכן צריך לשנות מסר, שמוצג למסך לאחר שמריצים את הקובץ. המסר אמור להיות בקובץ messages_en.h. תשנו את המסר בקובץ, תקמפלו, תתקינו ותריצו שוב. בסוף יש פקודה שבודקת האם הקובץ שונה בהצלחה. איך להתכונן למבחן: תעברו על כל מה שרשמו כאן בפורום. תממשו בבית את כל השאלות. (מאד חשוב) אגב, לי לא היה חלק ג'. יכול להיות החליטו לבטל אותו, כי הוא באמת לא בודק כלום. זהו, שיהיה בהצלחה לכולם!
מסכים עם מי שכתבה מעלי, השאלות אכן חוזרות על עצמן, וכנראה שלא שינו את המבחן עוד מימי 2011. השאלה החמישית הפתיעה אותי, והיא באמת כמו שכתבו מעלי, להחזיר "VALID" אם הסוגריים מבטאות ביטוי מתמטי, ו"INVALID" אם לא. אני אישית פתרתי בעזרת מחסנית, כל קריאה של ")" הכנסתי למחסנית, וכל קריאה של "(" הוצאתי ממנה. במידה והייתי צריך להוציא משהו כשהמחסנית ריקה, החזרתי invalid, ובמידה ולאחר קריאת התווים המחסנית לא הייתה ריקה, החזרתי גם כן, invalid, אחרת valid.
אהלן חברה, יש לי מחר את יום המבחנים האלה. וראיתי לרץ פה איזשהו קישור למבחן, יש מישהו שיש לו במקרה את קישור עדכני? תודה רבה ובהצלחה
לגבי המבחן של צ'ק פויינט. קודם כל המבחן לא קל בכלל אז אל תזלזלו ותתכוננו חזק , תבואו ערניים ועם סנדביץ טוב ובקבוק מים (עדיף ערק שיהיה בכיף) ואל תיהיו מקובעים בראש מבחינת פתרון (למי שחושב שלפתור את השאלות בבית זה פותר אותו מלהתאמץ). מי שבאמת מסיים את המבחן שלהם בשלוש שעות תותח ומגיע לו לעבוד שם כי אתה חייב לתקתק את הקוד כמו מכונה , לא כולם מספיקים גם ב 4 שעות והם משוחררים הביתה. קצת לגבי המבחן : קודם כל יש לקרוא את ההוראות לכל שאלה באנגלית והזמן רץ גם בזמן הקריאה , ההוראות כתובות שם וכן את הדברים שאתה צריך על מנת לפתור את השאלה , אין טעם לחפש בקוד סתם דברים למעט לגבי הערות מה עושה פונקציה ספציפית שאתה רוצה להשתמש בה. מי שפתר את השאלות שמופיעות פה ורשם לעצמו הערות יחסוך לו זמן , מה שכן לפתור בבית את השאלות לא מדמה בצורה מלאה את שיטת העבודה שלהם על הפונקציות שאתה צריך לכתוב ולכן תבינו את הבסיס לפתרון ובשטח תבינו מה הם עושים ואיך להתאים את זה (באמת שלא מסובך רק קחו בחשבון עשר דק הבנה של מה בדיוק קורה ולכן ממליץ באמת להתחיל משאלה מספר 1 שהיא יחסית קלילה על מנת להבין את העקרון). *היתה גישה מאוד מצומצמת לאינטרנט בעיקר על מנת לחפש פונקציה ספציפית בשפה שבה אתם נבחנים , לא הייתי בונה אבל על זה כי תגלו שזה מעכב מאוד אם תנסו לחפש יותר ממשהו אחד. לגבי השאלות : 1)כמו שכתוב כאן בפורם , לדעת עץ בינארי ממויין ואיך עושים סריקה שלו. 2)שאלת API באמת שלא מסובך , תחפשו איזה פונקציות קיימות לשימוש ומה הם עושות , כמו כן תעברו על הקוד להבין טיפה מה קורה שם. 3)השאלה הקשה ביותר במבחן , תקראו טוב את ההוראות ואז תיגשו למצוא את הבאגים ולתקן , המלצה תעברו שורה שורה בקוד ותבינו מה היא עושה ותחפשו איפה השגיאות הלוגיות (מומלץ לעבוד עם הדיבאגר ולהבין מה קורה שם) *הערה - היה מישהו שכתב פה כבר שכנראה ההודעות שהוא קיבל היו לא תקינות אז זה לא נכון כנראה שהוא פשוט לא הבין מה צריך לעשות בצורה מלאה ,שלא תתקעו ותחשבו שזה קרה גם לכם ותתיאשו. 4)כמו שכבר אמרתי הם עובדים בצורה מעט שונה מבחינת קוד אז אם אתם מנסים לממש בבית קחו בחשבון שיש להתאים למה שתקבלו בשטח . *יש שם רמז ברור בקוד לכמות המקסימלתי הניתנת של שולחים בעלי 10% או יותר מהסה"כ אם לא הבנתם עד עכשיו כמה ולמה. 5)היתה לי שאלה נוספת אז קחו בחשבון שזה יכול להיות לכל השפות , אני אישית לא נתקלתי אף פעם בשאלה כזאת , יש שעה לחשוב איך לבצע ולממש (תפתרו בבית לפני דוגמאות ממה שתמצאו על מנת שיעזור לכם בחשיבה). אל תתבישו לקחת עשר דקות הפסקה לפני החלק הבא לשרותים וכו'. לגבי החלק של ה לינוקס : 1)באמת שאין צורך להתכונן או להיות בעל ידע מראש ,אני אישית בחיים לא פתחתי לינוקס , הכל כתוב לכם בהוראות פלוס להפעיל מעט את הראש , יש שעה וחצי שזה בהחלט אמור להספיק. מקווה שיהיה בהצלחה . מה הפתרון לשאלה מס' 4? צריך לפתור את זה עם טבלת hash? וגם אם אתה יכול לפרט קצת יותר על השאלה עצמה זה יהיה מעולה.. תודה רבה!!
לגבי המבחן של צ'ק פויינט. קודם כל המבחן לא קל בכלל אז אל תזלזלו ותתכוננו חזק , תבואו ערניים ועם סנדביץ טוב ובקבוק מים (עדיף ערק שיהיה בכיף) ואל תיהיו מקובעים בראש מבחינת פתרון (למי שחושב שלפתור את השאלות בבית זה פותר אותו מלהתאמץ). מי שבאמת מסיים את המבחן שלהם בשלוש שעות תותח ומגיע לו לעבוד שם כי אתה חייב לתקתק את הקוד כמו מכונה , לא כולם מספיקים גם ב 4 שעות והם משוחררים הביתה. קצת לגבי המבחן : קודם כל יש לקרוא את ההוראות לכל שאלה באנגלית והזמן רץ גם בזמן הקריאה , ההוראות כתובות שם וכן את הדברים שאתה צריך על מנת לפתור את השאלה , אין טעם לחפש בקוד סתם דברים למעט לגבי הערות מה עושה פונקציה ספציפית שאתה רוצה להשתמש בה. מי שפתר את השאלות שמופיעות פה ורשם לעצמו הערות יחסוך לו זמן , מה שכן לפתור בבית את השאלות לא מדמה בצורה מלאה את שיטת העבודה שלהם על הפונקציות שאתה צריך לכתוב ולכן תבינו את הבסיס לפתרון ובשטח תבינו מה הם עושים ואיך להתאים את זה (באמת שלא מסובך רק קחו בחשבון עשר דק הבנה של מה בדיוק קורה ולכן ממליץ באמת להתחיל משאלה מספר 1 שהיא יחסית קלילה על מנת להבין את העקרון). *היתה גישה מאוד מצומצמת לאינטרנט בעיקר על מנת לחפש פונקציה ספציפית בשפה שבה אתם נבחנים , לא הייתי בונה אבל על זה כי תגלו שזה מעכב מאוד אם תנסו לחפש יותר ממשהו אחד. לגבי השאלות : 1)כמו שכתוב כאן בפורם , לדעת עץ בינארי ממויין ואיך עושים סריקה שלו. 2)שאלת API באמת שלא מסובך , תחפשו איזה פונקציות קיימות לשימוש ומה הם עושות , כמו כן תעברו על הקוד להבין טיפה מה קורה שם. 3)השאלה הקשה ביותר במבחן , תקראו טוב את ההוראות ואז תיגשו למצוא את הבאגים ולתקן , המלצה תעברו שורה שורה בקוד ותבינו מה היא עושה ותחפשו איפה השגיאות הלוגיות (מומלץ לעבוד עם הדיבאגר ולהבין מה קורה שם) *הערה - היה מישהו שכתב פה כבר שכנראה ההודעות שהוא קיבל היו לא תקינות אז זה לא נכון כנראה שהוא פשוט לא הבין מה צריך לעשות בצורה מלאה ,שלא תתקעו ותחשבו שזה קרה גם לכם ותתיאשו. 4)כמו שכבר אמרתי הם עובדים בצורה מעט שונה מבחינת קוד אז אם אתם מנסים לממש בבית קחו בחשבון שיש להתאים למה שתקבלו בשטח . *יש שם רמז ברור בקוד לכמות המקסימלתי הניתנת של שולחים בעלי 10% או יותר מהסה"כ אם לא הבנתם עד עכשיו כמה ולמה. 5)היתה לי שאלה נוספת אז קחו בחשבון שזה יכול להיות לכל השפות , אני אישית לא נתקלתי אף פעם בשאלה כזאת , יש שעה לחשוב איך לבצע ולממש (תפתרו בבית לפני דוגמאות ממה שתמצאו על מנת שיעזור לכם בחשיבה). אל תתבישו לקחת עשר דקות הפסקה לפני החלק הבא לשרותים וכו'. לגבי החלק של ה לינוקס : 1)באמת שאין צורך להתכונן או להיות בעל ידע מראש ,אני אישית בחיים לא פתחתי לינוקס , הכל כתוב לכם בהוראות פלוס להפעיל מעט את הראש , יש שעה וחצי שזה בהחלט אמור להספיק. מקווה שיהיה בהצלחה .
מה היה לך בשאלה חמישית?
היי היי יש לי יום מבחנים בשבוע הבא לתפקיד: Student Software Automation האם השאלות הן אותן שאלות ? או שיש הבדל כי מדובר במשרת סטודנט? תודה לעוזרים:)
היי שלום, לגבי שאלת הביטוי עם הסוגריים, המשימה הייתה בדיקת תקינות הביטוי בלבד או גם חישוב הביטוי?? תודה!!
ביטוי הסוגריים בשאלה 5 הייתה שאלת תקינות, לא חישוב הביטוי.
היו היה יום מבחנים - השאלות היו זהות. במשימה מס' 5 - נדרש אלגוריתם למחסנית לפעולות: דחיפה, שליחה וקבלת min ביעילות o (1).
היו היה יום מבחנים - השאלות היו זהות. במשימה מס' 5 - נדרש אלגוריתם למחסנית לפעולות: דחיפה, שליחה וקבלת min ביעילות o (1). היי איזה השאלות היו זהות למה? מה שמצאתי זה מ 2013 הכוונה היא לשאולת האלו?
הי, מה קורה לגבי מי שבוחר לעשות את המבחן בשפת c. האם הוא צריך לממש את המחסנית הרגילה - על מנת להשתמש ב 2 מחסניות לפתרון שאלה זו?
למישהו היה בזמן האחרון Security Analyst ?
שלום לכולם הייתי צריך לממש בג׳אווה: מבנה נתונים שמקבל string בסטרימינג ארוך צריך לפרק את הקלט הזה, לפקודות כמו push 5 pop min שמפריד בין כל פקודה לפקודה בתוך הסטרימינג פסיק. מה שקשה גם שצריך שהכל יעשה בזמן (1) o אני השתמשתי במחסנית ועשיתי פירוק של המחרוזת על ידי הפונקציה spilt ואחרי שזה לא עבד ניסיתי ב arrayList.toArray לטעון לתוך מערך של סטירינגים
אפשר להשתמש בשתי מחסניות, אחת תחזיק את המספרים כרגיל והשניה תכיל את המינימום בכל זמן (תשתנה בכל הכנסה למחסנית).
שלום, יש לי יום מבחנים עבור משרת פיתוח אוטומציה לסטודנטים. ראיתי שמישהו מקודם העלה את הבחינה לכאן אבל הלינק כבר לא עובד. אשמח אם יש מישהו שיש לו את הבחינה ומוכן להעלות בנוסף, באיזה שפה הכי עדיף לפתור את השאלות? אני מעט יותר טוב ומתמצא בשפת C מאשר בC++ או JAVA, האם זה הולך להפיל אותי? באיזה סביבה עדיף להתכונן לבחינה (eclipse, visual...)? אשמח לתגובה ותודה מראש
התקבל במייל של JOBHUNT - ביקש לפרסם בצורה אנונימית! יישר כח על השיחזור המלא! שלום לכולם. היום השתתפתי ביום מבחנים בצ'קפוינט למשרת סטודנט באוטומציה וקידום מובטח לפיתוח בגמר הלימודים. נעזרתי הרבה בפרסומים באתר אך מתברר שלסטודנטים באוטומציה יש מבחן שונה ממה שמפורט פה בשאר הפוסטים. גם לי נאמר לבחוק שפת תכנות: c, c++, java c# . בחרתי להיבחן בC++ (מה שלא משנה את השאלות עצמן). שעה וחצי, 4 שאלות. יש לענות על כל השאלות. אומרים לך שאם לא תצליח את כולן אז לא נורא ועדיין אפשר להמשיך. אני הצלחתי רק 2 מתוך 3 ובכל זאת התוכנה לא נתנה לנו להמשיך לשלב הבא של המבחן ושוחררתי הביתה. אם הייתי מצליח הייתי נשאר לעוד שעה וחצי של מבחן שאין לי מושג מה יש בו. שאלה 1: ממש את סדרת פיבונאצ'י: קלט - וקטור של אינטים. במקום הראשון - N, במקום השני, A במקום ה-0. במקום השלישי A במקום ה-1. פלט נדרש - A במקום ה - N. מימשתי ברקורסיה. 2 תנאי עצירה: אם N=0 החזר את A במקום ה - 0. אם N = 1 החזר את A במקום ה -1. אחרת: החזר קריאה לפונקציה עם וקטור שבו: N-1 והערכים המתאימים בסדרה (2 אחורה) שאלה 2: קלט - 2 מספרים : N ו-M, גודל של מטריצה. פלט נדרש - מספר המייצג את מספר המסלולים האפשריים מהמשבצת 1,1 למשבצת N,M לא היה לי מושג איך לגשת לזה. שאלה 3: קלט - סטרינג המייצג תרגיל חשבון כלשהו עם סוגריים, לדוגמא: (2+3) - 3 פלט נדרש - סטרינג שאומר תקין או לא תקין, בהתייחס לסוגריים. כלומר האם כל הסוגריים בתרגיל תקינים (כמות וסדר). מימשתי באמצעות מחסנית. שאלה 4: קלט - סטרינג ארוך ארוך המייצג לוג של מכונה כלשהי. הסטרינג מרכיב משהו שבהדפסה נראה כמו טבלה שבה מס' תהליך, שם תהליך, זמן התחלה וזמן סיום. נאמר שהלוג מכיל מידע על 15 דקות. פלט נדרש - יש לפרסר את הסטרינג ולהחזיר HH:MM ובו החפיפה המירבית של תהליכים שרצו באותו הזמן. חשוב לומר שכל הקלט הוא סטרינג אחד ארוך שמכיל בתוכו רווחים בין ערך לערך ומספר הרווחים לא זהה בכל שורה. לדוגמה: process ID Process Name Start End 1 First() 00:02 5:23 2 second() 13:04 14:04 בהצלחה לכולם!
התקבל במייל של JOBHUNT - ביקש לפרסם בצורה אנונימית! יישר כח על השיחזור המלא! שלום לכולם. היום השתתפתי ביום מבחנים בצ'קפוינט למשרת סטודנט באוטומציה וקידום מובטח לפיתוח בגמר הלימודים. נעזרתי הרבה בפרסומים באתר אך מתברר שלסטודנטים באוטומציה יש מבחן שונה ממה שמפורט פה בשאר הפוסטים. גם לי נאמר לבחוק שפת תכנות: c, c++, java c# . בחרתי להיבחן בC++ (מה שלא משנה את השאלות עצמן). שעה וחצי, 4 שאלות. יש לענות על כל השאלות. אומרים לך שאם לא תצליח את כולן אז לא נורא ועדיין אפשר להמשיך. אני הצלחתי רק 2 מתוך 3 ובכל זאת התוכנה לא נתנה לנו להמשיך לשלב הבא של המבחן ושוחררתי הביתה. אם הייתי מצליח הייתי נשאר לעוד שעה וחצי של מבחן שאין לי מושג מה יש בו. שאלה 1: ממש את סדרת פיבונאצ'י: קלט - וקטור של אינטים. במקום הראשון - N, במקום השני, A במקום ה-0. במקום השלישי A במקום ה-1. פלט נדרש - A במקום ה - N. מימשתי ברקורסיה. 2 תנאי עצירה: אם N=0 החזר את A במקום ה - 0. אם N = 1 החזר את A במקום ה -1. אחרת: החזר קריאה לפונקציה עם וקטור שבו: N-1 והערכים המתאימים בסדרה (2 אחורה) שאלה 2: קלט - 2 מספרים : N ו-M, גודל של מטריצה. פלט נדרש - מספר המייצג את מספר המסלולים האפשריים מהמשבצת 1,1 למשבצת N,M לא היה לי מושג איך לגשת לזה. שאלה 3: קלט - סטרינג המייצג תרגיל חשבון כלשהו עם סוגריים, לדוגמא: (2+3) - 3 פלט נדרש - סטרינג שאומר תקין או לא תקין, בהתייחס לסוגריים. כלומר האם כל הסוגריים בתרגיל תקינים (כמות וסדר). מימשתי באמצעות מחסנית. שאלה 4: קלט - סטרינג ארוך ארוך המייצג לוג של מכונה כלשהי. הסטרינג מרכיב משהו שבהדפסה נראה כמו טבלה שבה מס' תהליך, שם תהליך, זמן התחלה וזמן סיום. נאמר שהלוג מכיל מידע על 15 דקות. פלט נדרש - יש לפרסר את הסטרינג ולהחזיר HH:MM ובו החפיפה המירבית של תהליכים שרצו באותו הזמן. חשוב לומר שכל הקלט הוא סטרינג אחד ארוך שמכיל בתוכו רווחים בין ערך לערך ומספר הרווחים לא זהה בכל שורה. לדוגמה: process ID Process Name Start End 1 First() 00:02 5:23 2 second() 13:04 14:04 בהצלחה לכולם! אפשר הרחבה על שאלה 4? הלוגים שמקבלים הם בפורמט דקות שניות? או שעות דקות? איך אפשר לפענח את הזמן מתוך הטקסט נשמח להרחבה...
ביקשו HH:MM אז אני מניח שזה דקות שעות. יש בקלט זמן התחלה וסיום
מה שכתוב כאן הינו משנת 2011, האם זה עדני ותקף גם למבחנים של היום ???! סביר להניח ששינו את המבחנים מאז, אודה לשיתוף של מידע עדכני נכון להיום!!
אהלן, למישהו יש תשובה במקרה לשאלה עם הSTRING הארוך, לגבי הHH:MM מהלוג של המכונה. שאלה ממש לא ברורה ברמת הניסוח, אם למישהו יש תשובה או רק ראה את השאלה באחד מהמבחנים זה יהיה מעולה. תודה רבה.
הצעה שלי ל פתרון המסלולים בפייטון def f(m,n): if m==0 and n==0: return 1 if m==0: return f(m,n-1) elif n==0: return f(m-1,n); else: return (f(m,n-1)+f(m-1,n)) print f(2,2) תוצאה 6 למטריצה 2x2
שלום לכולם, כל הכבוד לכל מי שמשתף פה!! יש לי שבוע הבא מבחנים - יום המבחנים הינו יום המורכב משני מבחנים: 1. מבחן תכנותי – ניתן לבחור באחת מהשפות: C , C++ , Java, C#. במבחן מספר משימות תכנות אותן יש לסיים בהצלחה לצורך מעבר למבחן הבא. 2. מבחן לבדיקת יכולות טכניות – התמודדות עם סביבת עבודה על פי הנחיות. למעבר כל המבחנים יש להיערך ליום שייארך עד לשעה 16:00. רציתי לדעת אם מישהו היה לאחרונה ביום הזה ויכול להגיד מה בדיוק הולך שם? אגב אני יודע רק C ואני מקווה שזה סבבה... תודה!!
למישהו יש פתרון לשאלה עם השלוח הודעה? עם ה10%??
בעקרון בגלל שכמות הדקות והשעות ביום היא סופית הייתי מתרגם כל זמן התחלה וזמן סיום לדקה מסוימת ביום. לצורך העניין: 1. עובר על מערך שעות התחלה ומבצע לו toMinuts() בO(n), אותו סיפור לזמני הסיום, סה"כ תרגום בO(n). 2. לאחר מכן בונה מערך בגודל 24 שעות X 60 דקות בשעה, מאותחל ל0. 3. רץ על זמני ההתחלה ועבור זמן התחלה N הייתי מעלה את הערך במקום הN במערך. 4. רץ על זמני סיום ועבור זמן סיום N מוריד את הערך במקום הN במערך. 5. רץ על המערך פעם נוספת ובעצם סוכם את כל זמני הסיום, מחזיק בצד max, timeOfMax ומעדכן בהתאמה. 6. מחזיר TimeOfMax סהכ זמן ריצה וזיכרון O(n + 36*64). אגב אני בטוח שיש פתרון נכון יותר עם פחות זיכרון ויותר מהירות, אבל 1:20 בלילה אז אני מסתפק בזה...
שלום, יש לי שבוע הבא מיונים לתפקיד תמיכה טכנית, מישהו שהיה יכול להגיד לי על מה להתכונן בערך? תודה!
היי כולם, קודם כל תודה על העזרה, יש לי שבוע הבא גם יום מיון למשרת סטודנט אוטומציה. אני רק רוצה לוודא השאלות הן לפני הפרסום האחרון פה? 1. פיבונאצ'י עם 2 מספרים רצופים אשר מהווים את אינדקס 0 ואינדקס 1, כלומר הסדרה אינה מתחילה בהכרח ב-1,1 וצריך למצוא את האיבר ה-N שמקבלים גם בקלט? 2. עבור משבצת N.M למצוא את מס' המסלולים מהמשבצת 1,1 3. בדיקת תקינות סוגריים בביטוי חשבוני (בקשר לזה לא היה צריך לטפל בכך שפותח מסולסל מגיע לפני פותח מרובע לדוג'? פשוט לוודא פותח אל מול סוגר מתאים המימוש עם המימוש הפשוט והמקובל במחסנית וזהו?) 4. שאלת הפגישות וצריך למצוא את הזמן הכי עמוס מבחינת כל הפגישות, הקלט הוא סטרינג שצריך לפרק בהתאם. ולגבי חלק ב' הלינוקס, הבנתי שאין יותר מדי מה להתכונן אליו בכל זאת מה כן אפשר לעשות כדי להתכונן לזה בתור אחד שאין לו ממש ידע בלינוקס.. תודה מראש
היי לכולם, תודה רבה על כל המידע שפרסמתם. אני נבחנת למשרת סטודנט אוטומציה והייתי שמחה לשמוע פרטים על השאלה הרביעית- היא לא מובנת :/ ואם יש לכם טיפים על החלק השני של לינוקס אשמח גם. תודה רבה
היי, למישהו יש קישור לכל המבחנים (והפתרונות שלהם אם יש?), פשוט הקישור בשירשור שבור...
שלום חברים, אני לא יודע עד כמה הפוסט הזה עוד פעיל אבל אני אנסה בכל זאת. מהפתרונות שהחבר'ה העלו לפה, רובם היו ב-JAVA או #C, אני מנסה להבין בנוגע לשאלה 4 האם אנחנו יודעים את כמה המסרים שנשלחים? בשביל להיעזר בHASH TABLE או בשני מערכים, אנחנו נצטרך להקצות מערך, ולהיעזר בפונקציית גיבוב. השאלה היא אם זה נתון?? אני מבין שמומלץ להיעזר בכתובת השולח כמפתח, אבל בכל זאת, על מנת שיהיה לנו מערך של קאונטרים אנחנו חייבים לדעת כמה זיכרון להקצון (או שנשתמש בMALLOC\REALLOCׂ). ולכן השאלה אם כמות המסרים נתונה. תודה רבה לעוזרים
העץ בשאלות לפי מה הוא ממוין לא הבנתי, לפי כתובות או לפי הודעות כי בהתחלה צריך לחפש לפי כתובות - מה שאומר ממוין לפי כתובות אבל בשאלה 4 צריך לספור את מספר הכתובות SEND שבעץ. אבל משאלה 1 נובע שכל כתובת מופיעה פעם אחת... לפי שאלה 4 נראה שהעץ ממוין דווקא לפי הודעות ולפי שאלה 1 נראה שהעץ ממוין לפי כתובות אשמח לתשובה בבקשה, יש לי מבחן עוד שבועיים
הזמינו גם אותי למבחנים שם לתפקיד פיתוח תוכנה, האם יש חדש לגבי השאלות? אותן שאלות? משהו שונה? תודה רבה!!!
היי חבר'ה, גם אני מגיע ליום מיון מחר, ניסיתי להתכונן לחלק של הלינוקס, וקראתי את כל מה שרשמו לגבי השאלה הזו כמובן. החלק של IP ולהוריד קובץ ממכונה למכונה הסתדרתי זה באמת שטויות, אבל לא הסתדר לי הקטע של הקמפול. הורדתי את הקבצי source של pure-ftp כקובץ TAR ופתחתי לתיקיה. בפנים היה קובץ Install כפי שציינו כאן, השתמשתי בפקודות שרשומות שם כאשר אני נמצא בטרמינל בתוך התיקיה : ./configure (ייתכן שיופיע הפוך בפורום, הכוונה לנקודה סלאש ואז המילה) make make install גם מצאתי כמובן את הקובץ messages_en.h ושיניתי מה שצריך ושמרתי לפני הקימפול. זה היה נראה כאילו זה מתקמפל והכל, אך לא מצאתי איך להפעיל את התוכנה בשום דרך חוץ מהפקודה ftp 127.0.0.1 אך שם אני מקבל "welcome to pure-ftp" וזה בעצם מתעלם לחלוטין מהשינויי בקובץ messages_en.h. מידע שבטוח יעזור, ניסיתי את זה ב ubuntu, וזה נראה כאילו מותקן שם כבר pure ftp עוד לפני כן ולכן צריך "לדרוס" את ההתקנה, אבל לא מצאתי איך לעשות את זה, והסרה של ה-ftp המובנה רק סיבכה עוד יותר את העסק . אודה לכם מאוד אם תתקנו אותי איפה טעיתי, כי עם איך שזה הלך לי בחיים לא הייתי מספיק את זה בשעה וחצי ):
היי, אני נבחן בראשון הקרוב למשרת פיתוח, ומההודעות פה בפורום אני מבין שהשאלה של תיקון הקוד היא הקשה ביותר ולא מצאתי כאן פתרון ... יש למישהו לפחות כיוון?
בס"ד הי, עשיתי את המבחן לאחרונה ממש. בחרתי לעשות בשפה C++. כמה שדיברו ששאלה 3 היא הכי קשה - לפי דעתי היא היתה ממש קלה. הרעיון הוא שיש פונקציה שאמורה לקבל הודעות, והודעות שהם מסוג מסויים :FTP,SMTP ועוד אחד שאני לא זוכרת - צריך לבדוק שאין בהם מילים שמורות. עבור הודעות SMTP (אם אני לא טועה) צריך להתייחס בצורה קצת שונה: 1. אם הם מפורמט מסויים: חותכים את ההודעה - וצריך לבדוק רק על 2 חלקים ממנה. 2. אחרת - בודקים על כל ההודעה שאין מילים שמורות!!!! מה שהיה צריך לתקן: בפונקציה הראשית - היה switch בלי להציב את תוצאות הפונקציות המשניות בresult - היה צריך להציב ולהוסיף break. וכן אם ההודעה ריקה - צריך לקבל אותה ולא לדחות כמו שהם עשו. בפונקציה המשנית - של הטיפול בהודעות SMTP(אם אני לא טועה, אבל בכל מקרה בפונקציה של הטיפול בהודעות שיש בהם פורמט מיוחד) צריך להתייחס לחלק 2 שכתבתי למעלה. בפונקציה הם מקבלים פעמיים position שקשורים לחלק של הפורמט. הם לא מתייחסים למקרה שזה לא בפורמט. ולכן צריך לשאול אחרי הposition הראשון שהם מצאו: אם הוא שונה מ 0 - לבדוק מילים שמורות בכל ההודעה(לשלוח לפונקציה שיש שם) וגם לשאול אחי הposition השני : אם הוא שווה למינוס 1 - כנ"ל. זהוא בהצלחה
אהלן אנשים, רציתי לבדוק אם יצא למישהו להיות במבחנים של צ'ק פוינט לפיתוח לאחרונה ויש לו/ה עדכונים?
המבחנים לא השתנו משנת 2011. ארבע שאלות. שאלה ראשונה לממש חיפוש בעץ בינארי מסודר. שאלה שנייה מציאת מחרוזת חשודה. שאלה שלישית תיקון באג. שאלה רביעית מציאת הכתובות שכל אחת היא לפחות 10% מהתעבורה.
תודה נצ'י! אגב, נבחנת ב-C? כי אני רואה שלא התייחסת לשאלה החמישית שישנה בשאר השפות... במידה ונבחנת בשפה אחרת אשמח לשמוע מה היא הייתה, שוב תודה!
הייתי היום במבחנים בצ'ק פוינט. רק רציתי לומר שהשאלות הן אותן השאלות שמתוארות כאן,אז תלמדו אותן טוב...זה ממש עוזר! וגם שכבר לא עושים שאלה חמישית,רק ארבעת הראשונות והחלק של הלינוקס. בהצלחה!
הייתי היום במבחנים בצ'ק פוינט. רק רציתי לומר שהשאלות הן אותן השאלות שמתוארות כאן,אז תלמדו אותן טוב...זה ממש עוזר! וגם שכבר לא עושים שאלה חמישית,רק ארבעת הראשונות והחלק של הלינוקס. בהצלחה! אפשר קישור להודעה עם השאלות המעודכנות , כי כבר התבלבלתי מכל ההודעות בשרשור. תודה
מישהו בבקשה יכול לעשות סדר איך בנוי הNODE של העץ? מה העץ מחזיק כתובת או הודעה? והאם יש למישהו הסבר טוב יותר לגבי הפתרון של שאלה 4 עם הגיבוב? תודה!
הייתי לאחרונה. אותן שאלות. בשאלה 4 חשבתי שנותנים לנו מחלקה של hashTable. בפועל מצאתי את עצמי בונה וזה לקח לי מלא זמן. בכללי לא התרשמתי לטובה מהחברה.
אחרי כמה זמן מקבלים תשובה? האם כל מי שפתר נכון את 4 השאלות בתוך 3 שעות ואת החלק של הלינוקס ממשיך הלאה? תודה
הנה עוד פתרון לשאלה 5(כל תתי הקבוצה של אותו String): public String returnThem(String a){ String b = new String; int cnt = 0; b = "{}";//קבוצה ריקה cnt++; //singles for(int i = 0 ; i < a.length() ; i++){ b = a.charAt(i)+""; cnt++; } //doubles ab,bc,cd for(int i = 0 ; i < a.length()-1 ; i++){ b = a.charAt(i)+""+a.charAt(i+1); cnt++; } //doubles ac,bd for(int i = 0 ; i < a.length()-2 ; i++){ b = a.charAt(i)+""+a.charAt(i+2); cnt++; } //doubles ad for(int i = 0 ; i < a.length()-3 ; i++){ b = a.charAt(i)+""+a.charAt(i+3); cnt++; } //triples abc,bcd for(int i = 0 ; i < a.length()-2 ; i++){ b = a.charAt(i)+""+a.charAt(i+1)+""+a.charAt(i+2); cnt++; } //triples acd for(int i = 0 ; i < a.length()-3 ; i++){ b = a.charAt(i)+""+a.charAt(i+2)+""+a.charAt(i+3); cnt++; } if(!b.toString().equals(a.toString())){ b = a;//קבוצה מלאה } return b; }
שלום פתרתי את כל השאלות ב java בהסתמך על התשובות שניתנו כאן (תודה!) אבל זמן הריצה שלי היה באזור ב 4000 ובאפיון שלהם הם דורשים מקסימום 2500 מישהו יכול להסביר מה צריך לעשות כדי להגיע לזמן ריצה המבוקש? תשובות שלי: שאלה 1: חיפוש בעץ בינארי ממוין בשימוש בלולאה שאלה 2: לאתחל את מנוע האנטי וירוס, setup ולבדוק את ההודעה (בדיקת ההודעה - פונקציה נתונה) שאלה 3: רק תיקוני שגיאות (לא נראה לי שיש כאן מה להסתבך על יעילות, למעט משתנה ה fullscan) שאלה 4: מימשתי עם hashtable (ועברתי על כולו לבדוק איזה soure הוא >= 10%) תודה
שלום פתרתי את כל השאלות ב java בהסתמך על התשובות שניתנו כאן (תודה!) אבל זמן הריצה שלי היה באזור ב 4000 ובאפיון שלהם הם דורשים מקסימום 2500 מישהו יכול להסביר מה צריך לעשות כדי להגיע לזמן ריצה המבוקש? תשובות שלי: שאלה 1: חיפוש בעץ בינארי ממוין בשימוש בלולאה שאלה 2: לאתחל את מנוע האנטי וירוס, setup ולבדוק את ההודעה (בדיקת ההודעה - פונקציה נתונה) שאלה 3: רק תיקוני שגיאות (לא נראה לי שיש כאן מה להסתבך על יעילות, למעט משתנה ה fullscan) שאלה 4: מימשתי עם hashtable (ועברתי על כולו לבדוק איזה soure הוא >= 10%) תודה רק הוסיף ששיפרתי את הפתרון ל 4, כמו שכתוב כאן (שמרתי במערך את עשרת המובילים וכל פעם עדכנתי אותם במקום לעבור עלכל טבלת הערבול), זמן ריצה באמת ירד אבל עדיין לא הגעתי ל 2500..
האם צריך לבנות מאפס את הhash table?
נכון לאוגוסט 17, עדיין אותן שאלות. 1) חיפוש בעץ בינארי 2) API 3) זיהוי תקלות 4) 0.1 מההודעות
נכון לאוגוסט 17, עדיין אותן שאלות. 1) חיפוש בעץ בינארי 2) API 3) זיהוי תקלות 4) 0.1 מההודעות היי, אתה יכול בבקשה להגיד איך בערך פתרת את השאלות? או משהו שגם מאוד יעזור לי (משום מה אף אחד לא כתב פה) מה נתון לך בכל שאלה? תודה!
המבחן הזה לא קל בכלל. הייתי בו ופשוט הייתי אבודה. חוץ ממישהו שפתר את המבחן ויש ליידי אולי בשעה וחצי (גג) כל מי שהיה בחדר לא עבר, זה הרגיש כאילו יש לו את הפתרון מול העיניים. הקוד לא פשוט בכלל, זה די דומה למה שכתבו פה אבל עד שאתה לא נתקל בזה אתה לא מבין כמה זה קשה. באופן כללי ביקשתי מבחן בשפת סי והוא מעורבב עם בC++ סיימתי 2 משימות וחצי (התחלתי את הרביעית) לא הספקתי אפילו להגיע לשלישית, המשימה הרביעית מאוד מבלבלת איפה לאתחל מה ובגלל שלא פתרתי אותה אני לא יודעת לכוון. כל הערבוב בין סי לc++ ערבב אותי ממש אני עד עכשיו לא מבינה מה קרה שם ופשוט חבל שלא פתרתי בc++. מאחלת לכם בהצלחה מי שעובר את זה באמת ראוי להיות שם... כשנכנסים לבניין מרגישים מה זה להיות במגרש של הגדולים:)
אני מתראיינת לצוות של פיתוח לתמיכה ואמורה לעשות מבחן שקשור לדיבוג ספר טלפונים בC, מישהו עשה את זה ויכול לשתף ?
נכון לנובמבר 2017, עדיין אותן 4 שאלות. טיפים שלי: שאלה 1: המליצו כאן למצוא קודם שורש משותף כדי לשפר יעילות שזה רעיון שמימשתי בבית לפני המבחן, אבל לא עבד לי ברגע האמת ונתקעתי הרבה זמן. אז שימו לב שבמצב כזה אתם פשוט מוותרים על זה ועושים חיפוש רגיל עם השורש הנתון. ככה לפחות אפשר להצליח בשאלה למרות שהיעילות נפגעת. שאלה 2: היא ממש קלה. כמה שורות קוד בודדות שאפשר לזכור על פי מה שכבר כתבו כאן. שאלה 3: מופיעים עוד באגים שלא פורסמו כאן בפורום. בSWITCH יש כמה דברים די פשוטים שצריך לפתור כדי שהוא יעבוד. השאלה הזאת יכולה להיות קשה אם לא הולך, אז תנסו להישאר רגועים ולנסות שוב אם צריך. שני דברים הכי קשים ושאפשר לזכור הם: א. הבדיקה של המצב הבא: subject:blablaBody:blabla לא נכונה. כדי לתקן צריך לשנות לזה: String subject = message.substring(indexof"('subject:')+"subject".length(), indexof('body'); הדגש הוא על החלק המוגדש, שם צריך תיקון. אם לא הולך לכם, תנסו לצייר דוגמא על דף ולחשב. ב. לאחר מכן, כדי ליצור 2 מצבים אפשריים צריך לכתוב IF שכבר פורסם כאן בפורום ועובד: if((indexof"('subject:')!=-1 && indexof('body) && indexof"('subject:')>0 ) כל זה מוודא שההודעה לא עומד בקריטריון לSTMP, ולכן השלילה של הIF נותנת את המקרה המיוחד שציינתי בסעיף א'. שאלה 4: בגלל שמקבלים אובייקטים שכבר החברה עצמה בנתה, קשה ליישם את הפתרונות שכבר פורסמו כאן, אז צריך קצת לקרוא את הקוד באובייקטים הרלוונטים כדי להבין איך לממש את הפתרון. חוץ מזה המימוש שאפשר לכתוב בבית דומה למה שצריך כאן. זהו. ממליץ לחדשים לעבור על 20 הדפים בשרשור הזה ולכנס את המידע לדפי WORD לפי שאלות וליצור כמה שיודע מידע מסודר. זה יעזור ברגע האמת כי העבודה על זה גורמת לזכור הכל. אני עברתי את חלק א'. היינו 3 מתוך 12 בחדר שעברו אז אל תחשבו שקריאה כאן תהפוך את המבחן לקל. חלק ב' שיש בו לינוקס הוא הרבה יותר קשה ממה שחבר'ה תיארו בשירור, למי שלא בקיא בלינוקס. אז לקראת המבחן לקחת לינוקס, להתעסק הרבה בטרמינל שלו ובפקודות\נושאים הבאים: ifconfig, ping התעסקות עם שרת FTP ולא זוכר. הצלחתי 7 שאלות מתוך 8, מקווה שזה מספיק ומחכה לתשובה מהם. תודה לכל החבר'ה שכתבו בו במהלך השנים, ניסיתי גם להמשיך את המסורת ומקווה שעזרתי.
קצת שאלה לצד.. יש פה מישהו שעבר את יום המבחנים וזומן לראיון נוסף? אם כן - איך מתבצע ראיון ההמשך.. תודה.
קצת שאלה לצד.. יש פה מישהו שעבר את יום המבחנים וזומן לראיון נוסף? אם כן - איך מתבצע ראיון ההמשך.. תודה. אין אצלם גיוס ממוקד לפי משרות. הם מזמנים את כל העולם להיבחן למבחן סינון ראשוני בן 5-6 שעות. מי שעובר אותו נכנס ל-pool גדול שמפיצים שם לראשי הצוותים. יש די הרבה תקנים, אבל מתי תזומני לראיון - זה כבר עניין של זמן. יכולים לחזור אלייך אחרי שבוע, אחרי חודש, או אחרי חצי שנה - תלוי מתי ראש צוות מסוים ייתקל בקורות החיים שלך ויתעניין בך. אין להם כל-כך ערך לזמן, כי יש להם את הפריווילגיה. יש להם pool אינסופי של מועמדים. אז לא נורא אם הם נזכרים במישהו רק אחרי חצי שנה והוא כבר גויס לחברה אחרת - יש עוד איזה 400 כמוהו ש"רק מחכים להתראיין לחברה" (לפחות כך נדמה להם, על אף שצ'ק פוינט כבר מזמן לא נחשבת לחברה שאנשים עפים לעבוד בה). בחברות נורמליות מנפים מועמדים לפי המשרות אליהם הם מבקשים להגיע, ואז בוחנים את מועמדותם. בצ'ק פוינט משום מה זה עובד הפוך - בוחנים מועמדות של כל מי שרק מביע התעניינות במשרת פיתוח בחברה (לא משנה איזו משרה ספציפית), ואז במקרה שעבר הוא צריך לחכות לשיחה מאראלה ממפעל הפיס לגבי משרה שיש מצב גדול שהוא בכלל לא הגיש אליה את מועמדותו.
אשאל שוב... יש פה מישהו שעבר את יום המבחנים וזומן לראיון נוסף? אם כן - איך מתבצע ראיון ההמשך..
גם אני אשמח לשאלות מעודכנות... כולם פה בילבלו
אשמח לשאלות מעודכנות למי שהיה בימים האחרונים
היי, יש לי שבוע הבא מבחן בצ'ק פוינט למשרת Security Analyst אשמח לשמוע אם מישהו עבר את זה, כל מידע יעזור! תודה מראש
שלום לכולם מישהו היה השבוע במבחנים למשרת Student Software Automation ויכול לשחזר את השאלות? תודה רבה
טוב אז הייתי ביום מיונים, וכל מה שנכתב פה היה אחד לאחד! 1. חיפוש בעץ בינארי 2. אני לא ממש זוכרת - הייתה די פשוטה ולכן לא נחרטה בזכרוני.. 3. תיקון באגים - לקחה המון זמן: כשקוראים לפונקציות ב switch צריך להוסיף השמה ל result. במקרה של הודעה ריקה צריך לבצע drop message ולא accept (או ההפך לא בטוחה..) בחלק שמחשב את ה subject צריך להוריד את ה (-1) 4. השאלה עם הצגת ה IP ששלחו יותר מ 10% מכלל ההודעות. הייתה הכי קשה בעיניי וגם בסופו של דבר לא הצלחתי אותה. רוב האנשים לא הצליחו את כל השאלות ונשלחו הביתה. הייתה הרגשה לא נעימה וממש רציתי לסיים עם זה ולעוף משם. אפשר סתם להיתקע על באג וזה לא מדד לחוכמה או כמה אתה תותח. תממשו בבית חיפוש בעץ בינארי ממוין וכמו שנאמר כבר לפניי - למצוא שורש משותף לכתובת השולח והמקבל. לשאלה הרביעית גם כדאי להתכונן. עבודה עם hashtable או מערכים. בשאלה זו יש להחזיר SET המכיל את כל הIP של שולחי ההודעות ששלחו יותר מ 10%. צריך להיות COUNTER של סה"כ ההודעות, ותחשבו איפה ואיך לשמור אותם... כמובן שלא תמיד זה עוזר ברגע האמת שיהיה המון בהצלחה לכולם! אני לא עברתי... העיקר שהמבחן הסיוטי הזה נגמר!
הי מחר יש לי מבחן אבל אני חייב לפתור את המבחן ב C בשאלה של 0.1 בשפת C השאלה הרביעית . צריך לממש את HASHTABLE ? או שהמימוש כבר נתון וצריך רק להשתמש ? תודה
המבחן הזה לא קל בכלל. הייתי בו ופשוט הייתי אבודה. חוץ ממישהו שפתר את המבחן ויש ליידי אולי בשעה וחצי (גג) כל מי שהיה בחדר לא עבר, זה הרגיש כאילו יש לו את הפתרון מול העיניים. הקוד לא פשוט בכלל, זה די דומה למה שכתבו פה אבל עד שאתה לא נתקל בזה אתה לא מבין כמה זה קשה. באופן כללי ביקשתי מבחן בשפת סי והוא מעורבב עם בC++ סיימתי 2 משימות וחצי (התחלתי את הרביעית) לא הספקתי אפילו להגיע לשלישית, המשימה הרביעית מאוד מבלבלת איפה לאתחל מה ובגלל שלא פתרתי אותה אני לא יודעת לכוון. כל הערבוב בין סי לc++ ערבב אותי ממש אני עד עכשיו לא מבינה מה קרה שם ופשוט חבל שלא פתרתי בc++. מאחלת לכם בהצלחה מי שעובר את זה באמת ראוי להיות שם... כשנכנסים לבניין מרגישים מה זה להיות במגרש של הגדולים:) השאלות הם עדיין אותן שאלות כאמור? 1) חיפוש בעץ בינארי 2) API 3) זיהוי תקלות 4) 0.1 מההודעות האם היה שאלה חמישית? אולי את יודעת האם החלק השני של מי שעבר עדיין אותו Linux ?
לכל מי שקורא את הפורום, נבחנתי במחנים בצ'ק פוינט בינואר 2018, 5-6 שנים אחרי הפוסט האחרון שפורסם פה. יכול להעיד שהמידע בשרשור עדיין רלוונטי! אפילו רלוונטי מאוד!
09.01.2018 עדיין 4 שאלות: 1 נתון עץ ותמצא איבר, 2 להשתמש בפונקציות נתונות כדי לבדוק עם אין "וירוס", 3 לתקן (אותם טעויות כמו באחת התגובות מ-2013) , להחזיר מערך של כתובות שחוזרות יותר מ-10 אחוז (הקושי להבין איך להשתמש בפונקציה נתונה כדי להחזיר את המערך, לא הצלחתי)
המבחן בדיוק כפי שתיארו כאן נכון להיום פברואר 18, 4 השאלות הראשונות (ללא שאלה 5) ולאחר מכן המבחן לינוקס. תודה לתורמים ולעוזרים!
המבחן בדיוק כפי שתיארו כאן נכון להיום פברואר 18, 4 השאלות הראשונות (ללא שאלה 5) ולאחר מכן המבחן לינוקס. תודה לתורמים ולעוזרים! היי יש לי השאלה הראשונה לגבי השאלה הראשונה איך מימשו את העץ ? מערך ממוין?
המבחן בדיוק כפי שתיארו כאן נכון להיום פברואר 18, 4 השאלות הראשונות (ללא שאלה 5) ולאחר מכן המבחן לינוקס. תודה לתורמים ולעוזרים! היי יש לי השאלה הראשונה לגבי השאלה הראשונה איך מימשו את העץ ? מערך ממוין? לא התסכלתי במימוש שלו, לא רלוונטי. דבר ראשון מצאתי את האב המשותף העמוק ביותר של 2 הכתובות (from, to) של ההודעה ואז ממנו סרקתי מטה לראות האם אחת מהכתובות נמצאת בעץ (אחת בכל פעם).
המבחנים ל משרת סטודנט עדיין אותו דבר .. 2018 מאי. 1- מימוש פיבונאצ'י 2- מטריצה תחזיר מספר דרכים אפשריות מנקודת התחלה לסיום ( מותר ללכת ימינה ולמטה רק ) 3- יש לך טבלה ( נתונה במחרוזת ) של משימות עם זמני סיום והתחלה אתה צריך להחזיר את הזמן המקסמלי שיש בו הכי הרבה משימות 4- יש לך מחרוזת שהיא ביטוי מתמטי עם סוגריים "(", ")" אתה צריך להחזיר אם הסוגריים חוקיים או לא. 5- יש לך סיסמה אתה צריך לבדוק אם היא חוקית כלומר ( מכילה : אותיות קטנות, גדולות,מספרים,תווים ) ואסור שתכיל את השם של המשתמש ( שנתון גם כן בשאלה ). גם כן לגבי המשרה הרגילה, אותן שאלות מישהוא ישב לידי ראיתי שהוא עושה אותן. בהצלחה.
יש מישו שפתר את השאלה הרביעית עם מערכים בג'אווה ויכול לעזור?
הייתי שם, ממשתי את כל 4 השאלות האלה בבית, הלכתי שם לאיבוד עם המערכת והמשגיח שהוא מתכנת בעצמו לא עזר לא, אחד(לא צריך שיפתור, שיסביר איך אני עובד עם הממשק??) הם מריצים על הקוד שלך 4000 טסטים(מקרים שונים) ואם אחד מהם לא עובד- השאלה נפסלת. לא עשיתי כלום. תהיו אופטימיים בכל זאת. הי
זומנתי למבחנים למשרת תכנות בצק פוינט. האם השאלות עדיין רלבנטיות? יש למישהו לינק לשאלות כדי שאוכל לתרגל?
המבחן נשאר אותו מבחן נכון לדצמבר, 2018. לשים לב שבשאלה הרביעית יש להחזיר את הכתובות ששלחו יותר מ10 אחוז מהתעבורה כSET. הפונקציה לא מחזירה LIST אלא SET ככה שצריך להמיר או מלכתחילה לכתוב כSET.
3.2.2018 JAVA THE FIRST public enum Message_Action { Reject, Accept } public Message_Action handleMessage( Message message) { Node Current = root; while (Current != null ){ if (message.getFrom() < Current.getData() && message.getTo() <Current.getData()) { Current = Current.getLeft(); } else if (message.getFrom() > Current.getData() && message.getTo()> Current.getData()) { Current = Current.getRight(); } else { return Message_Action.Reject; } } return Message_Action.Accept; }
3.2.19 JAVA 4 The Question number public static HashMap <String, Integer> Info = new HashMap<String, Integer>() ; public static int countMSG ; public HashTable(HashMap <String, Integer> hash , int counter) {//constructor countMSG=counter; Info= hash; } public static void GetMSG(Message m)//get message and check if the sender exist { int sended=0; countMSG++; if(Info.containsKey(m.getFrom()) && sended ==0) { sended = Info.get(m.getFrom()); sended++; Info.remove(m.getFrom()); Info.put(m.getFrom(), sended); } else { Info.put(m.getFrom(), 1); } } public static HashSet<String> AllSend10Precent(HashMap <String, Integer> M) { HashSet <String> Answer = new HashSet <String>(); double Ten = countMSG *0.1; System.out.println("10 % is : " +Ten); double countofSMessage = countMSG*0.1; System.out.println("count of Sender is : " + countofSMessage); double stop=0; if(!M.isEmpty()) { for (Map.Entry<String, Integer> entry : M.entrySet()) { System.out.println(M.entrySet()); if(entry.getValue() > Ten && stop < countofSMessage) { Answer.add(entry.getKey()); stop = Answer.size(); System.out.println("Stop is : " +stop); } } } return Answer; } public static void main(Stringargs) { int sum = 0 ; HashMap <String, Integer> InfoMSG = new HashMap<String, Integer>(); HashTable ht = new HashTable(InfoMSG, sum); Message sms = new Message ("dana","ron","ello" ,""); ht.GetMSG(sms); Message sms1 = new Message ("yoni","kim","nice", ""); ht.GetMSG(sms1); Message sms2 = new Message ("yoni","bur","juli", ""); ht.GetMSG(sms2); Message sms3 = new Message ("lol","pp","nice", ""); ht.GetMSG(sms3); Message sms13 = new Message ("lol","pp","nce", ""); ht.GetMSG(sms13); Message sms4 = new Message ("hadar","kim","nice", ""); ht.GetMSG(sms4); Message sms5 = new Message ("yoni","kim","nice", ""); ht.GetMSG(sms5); Message sms6 = new Message ("jim","kim","nice",""); ht.GetMSG(sms6); Message sms7 = new Message ("kim","kim","nice",""); ht.GetMSG(sms7); Message sms8 = new Message ("roni","kim","nice",""); ht.GetMSG(sms8); Message sms9 = new Message ("asaf","kim","nice",""); ht.GetMSG(sms9); Message sms10 = new Message ("ran","kim","nice",""); ht.GetMSG(sms10); HashSet <String> setMSG = new HashSet<String>(); setMSG = AllSend10Precent(InfoMSG); System.out.println(ht.countMSG); System.out.println(setMSG); }
1. אם אני עושה את המבחן בC - זה בויזואל סטודיו? 2. האם יש שאלת מימוש סוגריים מאוזנים על ידי מחסנית בC? 3. האם בחלק של לינוקס יש גישה לאינטרנט? 4. בשאלה רביעית של ה10% - נתון כבר הממשק בC לHASHMAP ולSET?
1. אם אני עושה את המבחן בC - זה בויזואל סטודיו? 2. האם יש שאלת מימוש סוגריים מאוזנים על ידי מחסנית בC? 3. האם בחלק של לינוקס יש גישה לאינטרנט? 4. בשאלה רביעית של ה10% - נתון כבר הממשק בC לHASHMAP ולSET?
מישהו נבחן אצלם לאחרונה ויודע אם השאלות נשארו אותו דבר?? אמרו לנו שיהיה תיקון באגים, מישהו עשה את זה ויודע לכוון???( ב C#) דחוווף
יש לי מבחן בעוד כמה ימים על משרת r&d. אמרו לי שאני צריך לדעת תכנות ברמה בסיסית באיזה שפה שבא לי. אבל מהשאלות שרשמתם כאן זה נראה רמה גבוהה מאוד. האם מישהו עשה את המבחן לr&d בזמן האחרון? תודה מראש
שלום לכולם. אני רוצה להודות מקרב לב לכל התותחים שכתבו כאן מידע בעבר. הכל עדיין רלוונטי. אני רוצה להשלים כאן כמה חורים: א. בשאלה שנוגעת לבדיקת איכות סיסמה. אם נניח השם שלי הוא Shimon ובסיסמה יש shimOn זה גם לא טוב. איך אני בודק את זה? אני יוצר העתקים של הסיסמה והשם ב-ToLower (אותיות קטנות) ואז בודק האם השם הוא סאב-סטרינג בסיסמה. פשוט וקל. ב. בנוגע לשאלה על המחרוזת הענקית שמכילה מידע על טבלה עם משימות וכו': זו שאלה שטנית שכמעט ואין דרך לענות עליה בהצלחה אם לא התכוננת לה מראש (אצלנו כולם נפלו על השאלה הזו חוץ ממני). הצעה לפתרון: שימו לב שהתו ':' מופיע רק בתוך הזמנים שעליך לשלוף מהמחרוזת. למשל: 10:23. מה שאפשר לעשות זה לעבור על המחרוזת עם counter שסופר מופעים של ':'. אם המונה כעת אי-זוגי ז"א שהגענו לשעת התחלה של task כלשהי, אז נלקט את הספרות שמימין ומשמאל ל-':' למחרוזת אחת בשם begin, למשל: 10:23=> "1023". אם המונה כעת זוגי ז"א שהגענו לשעת סיום, אז נלקט את הספרות למחרוזת end באותו אופן, ומיד נכניס את begin ו-end למערך בעל 2 תאים, ואת המערך נכניס ל-list שמכילה מערכים כאלו. כל מערך מייצג כמובן שעת התחלה וסיום של task כלשהו. אחרי שסיימנו לעבור על כל המחרוזת ההתחלתית מה שנשאר הוא לעבור בלולאה על ה-list ולבדוק ע"י לולאה פנימית עבור כל שעת התחלה של כל task כמה משימות התחילו לפניה ונגמרו אחריה (ע"י השוואת מחרוזות עם ה-begin ו-end של כל שאר המשימות), את המונה נשמור במערך נפרד, ולבסוף נעבור על מערך המונים הזה ונמצא את המקסימלי שבו ואת מיקומו במערך, נפנה לאותו מיקום ב-list ושם מחכה לנו שעת ההתחלה שהיא התוצאה הרצויה. שימו לב שהשעה 7:20 שמורה בלי 0 בהתחלה (לא: 07:20), וצריך להתחשב בזה. דרך נוספת על אותו עיקרון: כמו שכתבתי, אבל להשתמש ב-split על מחרוזת הקלט באמצעות התו ':'. כך שאם שעת ההתחלה של המשימה הראשונה היא 9:34 ושעת סיום 12:56 אזי המחרוזות החדשות יראו כך: הראשונה תסתיים ב- '9' (שעת התחלה), השנייה תיפתח ב-"34" (דקת התחלה) ותסתיים ב-"12" (שעת סיום. השלישית תפתח ב-"56" (דקת סיום). ואז לעבור בלולאה על כל המחרוזות האלו (כמובן שאין צורך לעבור על המחרוזת כולה. אתה יודע להיכן לגשת בכל מחרוזת!) ולאסוף את הנתונים באותה דרך. זה עבד לי. בנוגע לחלק השני: כידוע לכולכם זה לא ממש מוצלח לפגוש חומר לראשונה בשעת המבחן... כדאי שתתקינו מראש מכונה וירטואלית במחשב שלכם , להתקין לינוקס, ואז לפתוח את הטרמינל (שזה בעצם המקבילה של לינוקס ל'שורת הפקודה' של windows) ולהתאמן על פקודות בסיסיות - , pwd, cd, ls, ping, ולקרוא כמה שיותר על העברת קבצים (ftp). וכן על חיסול ftp ע"י kill ועוד. כל סנטימטר שתתקדמו באימונים יחסוך לכם כאב ראש במבחן עצמו. תצליחו.
תקף לתאריך 21.11.2019 שאלה ראשונה לחתוך מחרוזת עד התו ה K. אסור לסיים עם רווח, אסור לחתוך מילה וצריך להיות מקסימלי. לדוגמה: "good morning everybody" עם K=15 יחזיר "good morning". שאלה שניה "Compute the minimum number of horizontal brushstrokes needed to paint a skyline shape" נתון מערך של מספרים שלמים. צריך להחזיר את מספר הצביעות המינימלי כאשר עוברים עם המברשת בצורה אופקית. לדוגמה: עבור המערך מחזיר 9 שאלה שלישית נתון מספר בין 8000- ל 8000 וצריך להכניס את המספר 5 כדי שהמספר החדש יהיה מקסימלי. לדוגמה: 0 > 50 268 > 5268 999- > 5999- המון הצלחה!
היי חברה שמעתי שלאחרונה שינו את צורת המבחן של SOFTWARE DEVELOPER ובמקום שנעשה את המבחן אצלהם אז שולחים תרגיל בית .. מישהו ששלחו לו את התרגיל ויכול לשתף אותי בפתרון? תודה מאוד ואשמח לעזרה תותחיייים !
היי חברים תוכלו לעזור לי בבקשה חברים עוזרים איפה אתם!
מישהו היה בראיון אישי עם ראש הצוות למשרת פיתוח ויכול לשתף אותי מה שאלו?
עזרההההה חברייייייייייים נוווו
היי, מישהו עשה את המבחן בית בקודיליטי מחודש מרץ והלאה ויכול לומר מה השאלות? הן אותן שאלות שפורסמו בינואר? תודה רבה
היי, מישהו עשה את המבחן בית בקודיליטי מחודש מרץ והלאה ויכול לומר מה השאלות? הן אותן שאלות שפורסמו בינואר? תודה רבה מצטרף לשאלה, יש מישהו שיכול לעדכן? זה ממש יעזור
למישהו יש מידע על המבחן בקודיליטי??
למישהו יש מידע על המבחן בקודיליטי?? היי, ראיתי שהית אמור להבחן בקודיליטי ובררת לגבי התוכן, ניגשת למבחן? אם כן, תוכל לשתף ? thetasteoflifereview@gmail.com תודה
אוקי, אז אני עשיתי את המבחן בקודיליטי מפרסמת לטובת כולם: היה שם 2 שאלות שיש לעשות בשעתיים (רק להבין את השאלה הראשונה לוקח המון זמן...)- א. נתון מערך המתאר מתקן חניית אופניים בכל מנעול יכולים להיות מס' אופניים,המערך מתאר את מספרי המנעולים של אנשים חונים לפי הסדר לדוג:10=A כלומר האדם הראשון שהגיע החנה את האופניים במנעול מס' 10. וכן הלאה... חוץ מזה שהמנעולים יכולים להיות גם במינוס לדוג:1-=A,כלומר מספרי המנעולים יכולים להיות מ -100000- עד 1000000 (אני לא בטוחה לגבי המספרים הנ"ל יכול להיות שזה יותר גבוה משהו כמו 2 מיליון)לעומת זאת גודל המערך יכול להיות עד 1000000. כעת לבעיה- אדם מגיע ורוצה להחנות את אופניו הוא רוצה להחנות אותם במקום שיתקיימו 2 התנאים הבאים: 1.האופניים יחנו בחניה שנמצאת בין החניה של האדם הראשון שהגיע לבין החניה של האדם האחרון. 2.המרחק בין החניה שאופניים יחנו לבין החניה התפוסה הסמוכה יהיה מקסימלי. לדוג':עבור מערך A אז החניה צריכה להיות בין 3 ל 10.והתשובה תיהיה 5 או 6 מכיון שהמרחק בין 5 ל 3 הוא המרחק המקסימלי והוא כמו המרחק בין 6 ל 8.למעשה צריך להחזיר את מספר האפשריות לחניה שיש לי ולא את מספרי החניות האפשריות. מקוה שהבנתי את השאלה כנדרש. בכל אופן כדאי לכם לשים לב לאפשרות של מינוס. ב.היתה שאלה עם סטרינגים צריך לדעת היטב פונקציות של סטרינגים. המון הצלחה !!!!!
הייי מישהו שניגש בזמן האחרון למבחן בית בקודליטי לעדכון? בבקשה מאוד יעזור
מישהו שעשה את המבחן בcodility ויכול לשתף קצת???