JavaRush /בלוג Java /Random-HE /הטריק, או איך להשיג עבודה כמפתח ג'אווה בינוני ללא ניסיון ...
Юрий
רָמָה
Москва

הטריק, או איך להשיג עבודה כמפתח ג'אווה בינוני ללא ניסיון ב-Java

פורסם בקבוצה
שלום לכל תלמידי ואנשי המקצוע של Java. אולי הסיפור שלי יהווה דוגמה לכמה איך לעשות את זה, ולאחרים - איך לא לעשות את זה. זה 19 באוקטובר 2021, והיום סיימתי תקופת ניסיון (3 חודשים) כמפתח ג'אווה ביניים בחברה גדולה. לא היה לי ניסיון קודם בפיתוח Java. עד 4 ביוני 2020, לא ידעתי דבר על ג'אווה. כשהתקבלתי לעבודה כג'אוויסט הבטחתי שאם אעבור את תקופת הניסיון אכתוב סיפור הצלחה.מאמר זה יחולק לשני חלקים הגיוניים: רקע קריירה ( פרקים 1-5, לא קשור לג'אווה, אבל שבו אתה יכול לצבור ידע על הקריירה שלך). להיות ג'אוויסט (פרקים 6-9 - לימוד ג'אווה, ראיונות, קבלת עבודה, ניסיון אמיתי ראשון). <h3>פרק 1. כלכלן</h3>כדי להבין באיזו רמת ידע הגעתי ל-JavaRush, אני צריך לתת הערה ביוגרפית על עצמי. 2013, נובמבר, 8 בבוקר. אני יושב בבית קפה על טגאנקה וחוזר על הוראות SQL. בעוד שעה יש לי ראיון לתפקיד כלכלן מוביל במחלקה הפיננסית של הבנק. זה הראיון היחיד שהוזמנתי אליו, ואני חייב לתת לו 100%. למענו טסתי מסנט פטרבורג ונשארתי אצל קרובי משפחה במטבח, כדי לא לבזבז את חסכונותיי הקטנים ממילא. עוברות 30 דקות, הפנקייקים עם בשר חזיר וגבינה נאכלות וצריך להתקדם לעבר החלום היקר שלנו. אבל הכל רועד. מה אם אכשל בראיון? בסדר, זה לא היה. אני הולך לבנק, מקבל כרטיס כרטיס ומחכה למרואיינים שלי בחדר הישיבות. הזמן עובר הרבה מאוד זמן. נכנסים גבר כבן 35 ואישה באותו גיל. הם מציגים את עצמם ומבקשים לספר לך על עצמם: "יורי, זה תענוג". אני בן 21, לומד במשרה חלקית באוניברסיטה בסנט פטרסבורג, עבדתי 3 חודשים כפקיד בבנק. הבנתי שלא בשביל זה למדתי, התחלתי להסתכל על שוק העבודה וראיתי שבמוסקווה לכלכלנים יש SQL כדרישה. אז למדתי את זה, הלכתי לקורסים (MS SQL Administration - זה מה שהיה לי, בשביל זה הלכתי), והתקשרת אליי. הם מדברים על החברה, מה שהם עושים (רוב המילים לא מובנות), ואז מבקשים ממך לעשות מבחן. למבחן יש 3 שאלות בנושא SQL: 1. נתון טבלה, שלף את כל הרשומות עם id = 10. 2. נתון שתי טבלאות, חבר אותן והצג עמודה מכל אחת. 3. קבץ את המחלקות וציין את מספר העובדים לכל מחלקה. בבושה גדולה אני כותב את הבקשות האלה. לאחר מכן דיון על הציפיות שלי מהעבודה. והם אומרים לי את משפט הקסם: "תודה על הראיון, נתקשר אליך בחזרה." עובר שבוע, והם מציעים לי לבוא לעבוד איתם. אופוריה, הלם, שמחה! ובעבור איזה כסף: 70 אלף רובל ביד! כן, אני אהיה עשיר! אני מגיע למוסקבה, מתמקם, שוכר חדר במרכז. הימים הראשונים הם אופוריים. אחרי 10 ימים מתחילה ההבנה: לאן הגעתי? אני לא מבין כלום בכלל! הייתי צריך להכין דוחות הנהלה לכל הבנק מדי חודש. מטבע הדברים, עבורי זה היה כמו עבורך, קורא יקר. תפסתי את המונחים אשראי בין בנקאי, החלפות, הקצאת הוצאות, עלויות וכו' כלחשים בלטינית. בדרך, הייתי צריך לשלוט בצד הטכני של הבעיה: MS Access (כל הדיווח נעשה שם דרך VBA), MS SQL (כאחסון חדש, במקום Access), Oracle (שקראתי לו בהתחלה Oracle, מה שגרם להיסטריה בקרב מתכנתים). ופתאום אני מתחיל להבין שהצד הטכני הרבה יותר מעניין אותי. יש ניסיונות ליצור שאילתות מורכבות (כתוצאה מכך, מסד הנתונים נתקע מהסקריפטים שלי, ומנהלי מערכת זועמים מתרוצצים ומנסים להבין מי עשה זאת). אבל התפקיד העיקרי הוא פיננסים, שפשוט מתחילים לעצבן אותי. אחרי חודש וחצי אני כותב מכתב התפטרות, כי אני לא יכול לתת תוצאות (והם לא ממש ציפו ממני, למען האמת). ראש המחלקה הפיננסית קורע את זה ואומר: "אל תתעסק בשטויות". חודש אחר כך אני כותב שוב הצהרה, וראש המחלקה, שהזדעזע מחוצפה כזו (שהפך לימים יו"ר דירקטוריון הבנק), חותם בתמיהה קיצונית: הבחור בן 21, ללא גבוה יותר. חינוך, הם קיבלו גם משכורת וגם אמון, אבל הוא מתנהג ככה. הסיבות לפיטורין היו שני גורמים נוספים: הבוס, שלא יכולתי להגיב ברוגע, והכיסא הלא נוח, ממנו החל לכאוב לי הגב. זה מצחיק להפליא, אבל הנה המניע. כשהפסקתי, חשבתי שעכשיו יהיה לי אפילו יותר נוח. אבל זה לא היה שם. <h3>פרק 2. 70 ראיונות</h3>יצאתי מהבנק, נשמתי עמוק. "אני אסדר את זה ככה, כולם יהיו המומים". נקבעו ראיונות, המשכורות עבורם היו גבוהות יותר, ונראה היה שלא יהיה צורך להתעסק בדיווח. יש 4 ראיונות ואף אחד לא שוכר אותי. 5, 6 ראיונות - אותו דבר. גרתי עם בחורה בחדר שכור, והיא קיבלה עבודה ויכלה לכסות את חוסר ההכנסה שלי. אבל עדיין לא היה לי מושג כמה זמן לא תהיה לי הכנסה. הלכתי לראיונות (משרות פנויות א-לה אנליסט), והם שאלו בעיקר על SQL ו-VBA. למי שלא מודע, VBA היא שפת תכנות באקסל, אקסס ומוצרי MS Office אחרים. מתקיימים 10 ראיונות - כלום. 20, 30 - כלום. כולם נבוכים מחוסר הניסיון וההשכלה הגבוהה (מה שנראה לי כמו דבר קטן). 40 ראיונות, והייאוש מתחיל להתגנב. במהלך תקופה של 55-60 ראיונות אני מתחיל ללמוד 1C. הילדה, שכבר הפכה לאישה, מבקשת לעזוב לסנט פטרסבורג, מכיוון שלפחות יש לה דיור משלה שם. ובראיון ה-70, הוזמנתי להיות מנהל מסד נתונים של 1C (עם סיכוי להיות מפתח 1C) בחברה קטנה באזור התעשייה של סנט פטרסבורג תמורת 50,000 רובל. עכשיו זו צמיחה בקריירה! <h3>פרק 3. שובה של האגדה</h3>הבטתי מבעד לחלון של מיניבוס (תחבורה תאגידית) באזור התעשייה האפור של סנט פטרסבורג, ונסעתי שעה וארבעים לכיוון, הבנתי שאני לא יכול לחיות ככה. העניין ב-1C נעלם בנגיעה הראשונה של המערכת שנכתבה בעצמה. היה צורך בתוכנית. והוא התבגר: בערבים למד SQL, ובמקביל פיקח על אתר העבודה הידוע. הטריגר האחרון לפיטורין היה המצב: המנכ"ל לא רצה לתת לי לצאת לחופשה מתוכננת, למרות שכבר נרכשו כרטיסים. לאחר החופשה שלי, אני כותב בקשה ושוב שולח את קורות החיים שלי למשרות פנויות במוסקבה. שוב מציעים לי ראיון בבנק גדול בזמן מוסקבה. שוב אני מגיע למטבח של קרובי המשפחה שלי והולך לראיון. כשhr כתבה את הכתובת, לא האמנתי למראה עיני - זה היה הבניין שבו חלמתי לעבוד (בזמן מגורי האחרון במוסקבה זה היה בבנייה). התפקיד נקרא מומחה לתמיכה במערכות מידע ראשי. אני הולך למשרד את פניי מקבל גבר כבן 30 במעיל וג'ינס אופנתי. עלינו לקומה ה-15, וכשראיתי את הפנורמה של העיר, היא עצרה את נשימתי: כל הבניינים הגבוהים הסטליניסטיים נראו לעין. כל הסגנון של הבניין היה מודרני מאוד: במשרדו של הבוס היו מקררי יין, אקווריומים אופנתיים, ציור של אישה עירומה בסגנון שחור ולבן. זה גרם לאפקט "וואו". השיחה עם הבוס לא התנהלה כמו בדרך כלל: במשך כ-40 דקות הוא דיבר על מה שקורה בבנק. לא הבנתי כלום, אבל הנהנתי בראשי. כששאלתי: מתי תתחיל לשאול אותי? הוא לא שם לב. שוב, לשאלתי "מתי הראיון הטכני?", התשובה הייתה "כן, בכל מקרה נשכור אותך, אם אתה לא יכול להתמודד עם זה, נפטר אותך". זה נאמר בחיוך, והבנתי שהכל, החלום שוב התגשם! <h3>פרק 4. למצוא את עצמך ב-IT </h3>כשהגעתי למקום החדש, הבנתי למה הם מעסיקים אותי מיד. אני אתאר דיוקן טיפוסי של עובד מחלקה: גיל ממוצע בן 55, מוסקובי, השכלה של אוניברסיטת מוסקבה, עבודה במכון מחקר ביטחוני בימי ברית המועצות, ומעבר למגזר הבנקאי בשנות ה-90, עובד כאן כבר 20 שנים, מחציתם גברים, מחציתם נשים. הם נכנסו לדיסוננס מוחלט עם הפנים שמסביב. היינו מעורבים בתחזוקת תוכניות דיווח לחשבונאות. באופן טבעי, כל זה היה בתסריטי VBA ו-SQL עתיקים שנכתבו על ידי מפתחים בסוף שנות ה-90 ותחילת שנות ה-2000. זה היה 2015, והאוטומציה הייתה דרך MS Access. כלומר, זה נראה גרוע ביותר. אבל היה ניואנס - הם סיפקו את מה שהלקוח (החשבונאות) רצה. ובדיוק בזמן ובצורה הנדרשת. רק הם ידעו איך זה עובד, ואפילו אונוטול לא יכול היה לדמיין את מורכבות ההתפתחויות שלהם. וכל מנהל IT, ולו ברצון הגדול ביותר, לא יכול היה לפטר אותם - החשב הראשי ניגש לדירקטוריון הבנק והגן על כל עובד ששירת את האינטרסים של אגף הנהלת החשבונות. המנהל רצה שאשחק בתפקיד של סוס טרויאני: למדתי את כל ההתפתחויות שלהם, ואז העברתי את הנתונים למערכת החדשה. אז אפשר לפטר את העובדים הוותיקים, ולהעביר אותי למערכת חדשה. ראשית, התעמקתי בתהליכים שלהם והסתכלתי על קוד ה-VBA. בהדרגה למדתי לקרוא קוד VBA. שנה לאחר מכן כבר ידעתי לכתוב את הקוד עצמו. משימה אופיינית: נתנו מסד נתונים, חילצו ממנו נתונים והכנסו לאקסל בפורמט מסוים. עכשיו, כפי שאמר זדורנוב, קחו נשימה עמוקה: כל הדיווחים של המחלקה (וזה 50 דיווחים יומיים, 20 חודשיים!) התנהלו באופן ידני! קארל, אתה מבין שאנשים משנים תאריכים ל-+1 כל יום עם הידיים שלהם ב-50 דוחות! הם יושבים, מחכים לתוצאה של דוח אחד במשך 1-10 דקות ומשיקים אחר! יתרה מכך, יש להשיק דיווחים יומיים בשעה מסוימת, וחלילה מאחרים! לא רק שהם עושים דוחות, הם מריצים באופן ידני נהלים במסד הנתונים ללא שימוש במשתנים! כלומר, במקום להשתמש במשתנה @startDate = '2015-01-01', הם ישנו את אותו תאריך באופן ידני ב-20 מקומות! לאחר שבדקתי את כל זה, התחלתי ללמוד Python, ויחד עם VBA, SQL ומתזמן המשימות, ביצעתי את כל זה אוטומטי תוך שנתיים. לא רק אוטומטי, אלא גם האצת דוחות רבים: אם אתה נוטש את MS Access + VBA לטובת MS SQL + TSQL, אתה יכול להשיג עלייה מרובה בפריון. הרקורד שלי מאיץ את יצירת הדוחות100פַּעַם! אבל הקולגות שלי היו מאוד לא מרוצים מאוטומציה כזו, אז הוכרזתי כאויב העם (הם רצו לשבת בשקט עד הפנסיה). הזמן חלף והעברת הנתונים הצליחה. המנהל העריך אותי מאוד: אם בתחילת דרכי באתי לעבודה ב-8 בבוקר, אז לאחר זמן מה יכולתי לבוא בכל עת עד 12:00, עליה מתמדת בשכר ובתפקיד, תשלום עבור עבודה בסופי שבוע יותר מכמות כפולה, מונית עד הבית אם איחרתם בעבודה, תקשורת סלולרית, בקיצור - העילית! <h3>פרק 5. כלוב הזהב</h3>פתאום, אחרי 3.5 שנים, מגיעה הנהלת IT חדשה ואומרת שאין צורך יותר במערכת שאליה העברתי את הנתונים. אבל המערכת הישנה תישאר. המנהל שלי עולה בסולם הקריירה ומזמין אותי לעבור למחלקה מתקדמת יותר. בפגישה עם ראש המחלקה הפרוגרסיבית, אני מבין שהמחסנית הטכנולוגית של המחלקה הזו לא מוכרת לי: אורקל, .net, C#, לינוקס וכו' + אנטיפתיה כלפי הבוס הפוטנציאלי. אני אומר למנהל שלי שאני לא מעוניין במחלקה הפרוגרסיבית, ובנוחות הוא שוכח ממני. ואז נשאלת השאלה: מה לעשות הלאה? ההכנסה כבר הייתה סבירה, Junior dev לא היה שוכר אותי עבור המשכורת הזו. לאחר שחשבתי על הכישורים שלי, הבנתי שאני צריך ללכת ללמידת מכונה. הכל היה מעניין עד המפגש הראשון עם סטטיסטיקה מתמטית, שרק גרם למיאוס במכון. זהו, קהות חושים במשך שישה חודשים! הזמן עבר, ויום אחד, תוך כדי הליכה, חשבתי על אתר אינטרנט שיציג מסעדות טובות על מפת מוסקבה. התחיל ללמוד HTML, CSS, JS. ביליתי 3 חודשים בלימודים; לא היה לי את הידע ליצור אתר אינטרנט מלא, אבל יכולתי לתרגל אותו בעבודה. נולד רעיון: ליצור פורטל לרואי חשבון כדי שיוכלו להוריד לעצמם כל דוח באמצעות כפתור. לקח חודשיים ליצור את הפורטל, ואפליקציית האינטרנט SPA (יישום עמוד בודד) נולד ב-React js עם קצה אחורי של Node.js. חזרה הריצה סקריפטים של SQL (לא ידעתי על מסגרות כמו Hibernate), השיקה את Python ואחסנה מידע נוסף ב-MongoDb (לדוגמה, על משתמשי האתר). חיצונית, האתר נראה הגון מאוד (bootstrap 4, אנימציה אופנתית). אני עדיין גאה בפרויקט הזה. אבל כשהראיתי את הקוד שלי למפתחי האינטרנט של הבנק, הם היו המומים. לא מחלקה אחת משלך! רק תכונות, רק הארדקור! הם שיבחו אותי, אבל אמרו שאני עדיין צריך ללמוד הרבה כדי להיות מפתח Middle stack. ניסיתי למצוא עבודה כאנליסט, אבל לא היו הצעות מיוחדות. אני חושב: לא הייתי שם, אני אפרסם את קורות החיים שלי של מפתח מלא. השיחות הגיעו, אבל במהלך ראיונות עפתי כמו דיקט מעל פריז: למשל, לא ידעתי מה זה HashMap, HashSet ולמה הם צריכים. לא היה שמץ של מושג לגבי OOP, דפוסי תכנות, אלגוריתמים, בדיקות, Git. נזכרתי ברגשות בושה שנשכחו מזמן מבורות בדברים בסיסיים. פתאום מגיעה הצעה לעבודה בתור ראש מחלקת ניתוח לקוחות בחברה פיננסית. שבוע לפני סגירת המדינה עקב המגיפה. קיבלתי עבודה בחברה פיננסית, אבל הייתה תחושה כפולה: מצד אחד השכר הגבוה היה חם, מצד שני תהיה התפתחות מינימלית בפן הטכני. שבוע חלף לאחר התקנת המכשיר והוצגה עבודה מרחוק. מאחר ולא חלים ימי עבודה על המגזר הפיננסי, עבדנו כרגיל. הבוס החדש התברר כאדם משוגע מאוד: הוא הציע לגרד את פייסבוק, ליצור רשתות עצביות משלו כדי לחקור לקוחות (ללא מדען נתונים בצוות). לעובדים חדשים הוצע ללמוד Python תוך שבוע וכו'. ימי חופש ללא תשלום הפכו לנורמה. זה היה טיפשי להפסיק: איפה תמצא עבודה בזמן מגיפה? אבל הסבלנות פקעה לאחר חודשיים, כאשר הוכרז שלא יהיו בונוסים רבעוניים. הניואנס הוא שכאשר סיכמנו על השכר, בזמן הגיוס, hr אמר שהשכר מתחלק לשכר (60%) ולבונוס רבעוני (40%) המשולם תמיד. התברר שנעשתה בחירה לא נכונה ועלינו להתחיל לחפש עבודה חדשה. <h3>פרק 6. מתחילים לשלוט ב-Java</h3>ביום בהיר אחד במאי אני מקבל הזמנה לראיון למשרה הפנויה "מפתח". לחברה בענף הביטוח צריך אדם שיפתח מוצרי ביטוח. דרוש ניסיון בתכנות, אך מכיוון שמדובר בפיתוח "ייחודי" של החברה, אין צורך בשפה ספציפית. צריך גם Git וכן הלאה. קבעתי ראיון בעוד יומיים, ולמדתי את יסודות Git בזמני הפנוי. במהלך הראיון, נשאלתי לגבי Python, JS, Git, SQL. עניתי על הכל חוץ מהמושג "עומס שיטות", והוזמנתי לעבודה בעוד שבועיים. התברר שהחברה קנתה את המערכת מזמן. כתוב ב-Java (מקדימה ומאחור), בעזרתה ניתן ליצור תהליכים עסקיים מבלי לדעת שפת תכנות (ליתר דיוק, באמצעות שפת התכנות המובנית Jelly). זה נשמע טוב, אבל למעשה הכל היה מעוות. סטייה לירית: לכל טכנולוגיה יש עידן משלה וקנה מידה משלה. זה מגניב לעשות את כל הדיווחים בשנת 2000 רק באקסל. לעשות את אותו הדבר ב-2021 זה לא טוב במיוחד. אתר אינטרנט של חברה ב-HTML טהור היה מגניב ב-1999, אבל לא ב-2021. לכן, הטכנולוגיה שהחברה השתמשה בה בזמן הקמתה (2005) הייתה מאוד מגניבה - Java הייתה אחראית גם לשרת וגם לחלק הלקוח (מה שנקרא דפי Java servlet). יתרה מכך, אם אתה יוצר תהליך עסקי חדש (שיש לו ממשק משתמש משלו), אז הוא מאוחסן בתוך מסד הנתונים, ולא בקוד בקובץ. כדי להבין עד כמה זה לא נוח, דמיינו שאתם כותבים קוד ג'אווה ברעיון Intellij, שומרים אותו במסד הנתונים, ואז. כאשר אתה רוצה להפעיל את הקוד שלך, ליבת התוכנית עוברת למסד הנתונים וקוראת את הקוד שלך משם. לפיכך, אינך יכול לנפות באגים במלואו ביישום שלך. רמז מס' 1: כאשר אתה רוצה לשלוח קוד לספסל הבדיקה, עליך ליצור מצד שני, תהיה פיתוח מינימלי בפן הטכני. שבוע חלף לאחר התקנת המכשיר והוצגה עבודה מרחוק. מאחר ולא חלים ימי עבודה על המגזר הפיננסי, עבדנו כרגיל. הבוס החדש התברר כאדם משוגע מאוד: הוא הציע לגרד את פייסבוק, ליצור רשתות עצביות משלו כדי לחקור לקוחות (ללא מדען נתונים בצוות). לעובדים חדשים הוצע ללמוד Python תוך שבוע וכו'. ימי חופש ללא תשלום הפכו לנורמה. זה היה טיפשי להפסיק: איפה תמצא עבודה בזמן מגיפה? אבל הסבלנות פקעה לאחר חודשיים, כאשר הוכרז שלא יהיו בונוסים רבעוניים. הניואנס הוא שכאשר סיכמנו על השכר, בזמן הגיוס, hr אמר שהשכר מתחלק לשכר (60%) ולבונוס רבעוני (40%) המשולם תמיד. התברר שנעשתה בחירה לא נכונה ועלינו להתחיל לחפש עבודה חדשה. <h3>פרק 6. מתחילים לשלוט ב-Java</h3>ביום בהיר אחד במאי אני מקבל הזמנה לראיון למשרה הפנויה "מפתח". לחברה בענף הביטוח צריך אדם שיפתח מוצרי ביטוח. דרוש ניסיון בתכנות, אך מכיוון שמדובר בפיתוח "ייחודי" של החברה, אין צורך בשפה ספציפית. צריך גם Git וכן הלאה. קבעתי ראיון בעוד יומיים, ולמדתי את יסודות Git בזמני הפנוי. במהלך הראיון, נשאלתי לגבי Python, JS, Git, SQL. עניתי על הכל חוץ מהמושג "עומס שיטות", והוזמנתי לעבודה בעוד שבועיים. התברר שהחברה קנתה את המערכת מזמן. כתוב ב-Java (מקדימה ומאחור), בעזרתה ניתן ליצור תהליכים עסקיים מבלי לדעת שפת תכנות (ליתר דיוק, באמצעות שפת התכנות המובנית Jelly). זה נשמע טוב, אבל למעשה הכל היה מעוות. סטייה לירית: לכל טכנולוגיה יש עידן משלה וקנה מידה משלה. זה מגניב לעשות את כל הדיווחים בשנת 2000 רק באקסל. לעשות את אותו הדבר ב-2021 זה לא טוב במיוחד. אתר אינטרנט של חברה ב-HTML טהור היה מגניב ב-1999, אבל לא ב-2021. לכן, הטכנולוגיה שהחברה השתמשה בה בזמן הקמתה (2005) הייתה מאוד מגניבה - Java הייתה אחראית גם לשרת וגם לחלק הלקוח (מה שנקרא דפי Java servlet). יתרה מכך, אם אתה יוצר תהליך עסקי חדש (שיש לו ממשק משתמש משלו), אז הוא מאוחסן בתוך מסד הנתונים, ולא בקוד בקובץ. כדי להבין עד כמה זה לא נוח, דמיינו שאתם כותבים קוד ג'אווה ברעיון Intellij, שומרים אותו במסד הנתונים, ואז. כאשר אתה רוצה להפעיל את הקוד שלך, ליבת התוכנית עוברת למסד הנתונים וקוראת את הקוד שלך משם. לפיכך, אינך יכול לנפות באגים במלואו ביישום שלך. רמז מס' 1: כאשר אתה רוצה לשלוח קוד לספסל הבדיקה, עליך ליצור מצד שני, תהיה פיתוח מינימלי בפן הטכני. שבוע חלף לאחר התקנת המכשיר והוצגה עבודה מרחוק. מאחר ולא חלים ימי עבודה על המגזר הפיננסי, עבדנו כרגיל. הבוס החדש התברר כאדם משוגע מאוד: הוא הציע לגרד את פייסבוק, ליצור רשתות עצביות משלו כדי לחקור לקוחות (ללא מדען נתונים בצוות). לעובדים חדשים הוצע ללמוד Python תוך שבוע וכו'. ימי חופש ללא תשלום הפכו לנורמה. זה היה טיפשי להפסיק: איפה תמצא עבודה בזמן מגיפה? אבל הסבלנות פקעה לאחר חודשיים, כאשר הוכרז שלא יהיו בונוסים רבעוניים. הניואנס הוא שכאשר סיכמנו על השכר, בזמן הגיוס, hr אמר שהשכר מתחלק לשכר (60%) ולבונוס רבעוני (40%) המשולם תמיד. התברר שנעשתה בחירה לא נכונה ועלינו להתחיל לחפש עבודה חדשה. <h3>פרק 6. מתחילים לשלוט ב-Java</h3>ביום בהיר אחד במאי אני מקבל הזמנה לראיון למשרה הפנויה "מפתח". לחברה בענף הביטוח צריך אדם שיפתח מוצרי ביטוח. דרוש ניסיון בתכנות, אך מכיוון שמדובר בפיתוח "ייחודי" של החברה, אין צורך בשפה ספציפית. צריך גם Git וכן הלאה. קבעתי ראיון בעוד יומיים, ולמדתי את יסודות Git בזמני הפנוי. במהלך הראיון, נשאלתי לגבי Python, JS, Git, SQL. עניתי על הכל חוץ מהמושג "עומס שיטות", והוזמנתי לעבודה בעוד שבועיים. התברר שהחברה קנתה את המערכת מזמן. כתוב ב-Java (מקדימה ומאחור), בעזרתה ניתן ליצור תהליכים עסקיים מבלי לדעת שפת תכנות (ליתר דיוק, באמצעות שפת התכנות המובנית Jelly). זה נשמע טוב, אבל למעשה הכל היה מעוות. סטייה לירית: לכל טכנולוגיה יש עידן משלה וקנה מידה משלה. זה מגניב לעשות את כל הדיווחים בשנת 2000 רק באקסל. לעשות את אותו הדבר ב-2021 זה לא טוב במיוחד. אתר אינטרנט של חברה ב-HTML טהור היה מגניב ב-1999, אבל לא ב-2021. לכן, הטכנולוגיה שהחברה השתמשה בה בזמן הקמתה (2005) הייתה מאוד מגניבה - Java הייתה אחראית גם לשרת וגם לחלק הלקוח (מה שנקרא דפי Java servlet). יתרה מכך, אם אתה יוצר תהליך עסקי חדש (שיש לו ממשק משתמש משלו), אז הוא מאוחסן בתוך מסד הנתונים, ולא בקוד בקובץ. כדי להבין עד כמה זה לא נוח, דמיינו שאתם כותבים קוד ג'אווה ברעיון Intellij, שומרים אותו במסד הנתונים, ואז. כאשר אתה רוצה להפעיל את הקוד שלך, ליבת התוכנית עוברת למסד הנתונים וקוראת את הקוד שלך משם. לפיכך, אינך יכול לנפות באגים במלואו ביישום שלך. רמז מס' 1: כאשר אתה רוצה לשלוח קוד לספסל הבדיקה, עליך ליצור צור רשתות עצביות משלך כדי לחקור לקוחות (ללא מדען נתונים בצוות). לעובדים חדשים הוצע ללמוד Python תוך שבוע וכו'. ימי חופש ללא תשלום הפכו לנורמה. זה היה טיפשי להפסיק: איפה תמצא עבודה בזמן מגיפה? אבל הסבלנות פקעה לאחר חודשיים, כאשר הוכרז שלא יהיו בונוסים רבעוניים. הניואנס הוא שכאשר סיכמנו על השכר, בזמן הגיוס, hr אמר שהשכר מתחלק לשכר (60%) ולבונוס רבעוני (40%) המשולם תמיד. התברר שנעשתה בחירה לא נכונה ועלינו להתחיל לחפש עבודה חדשה. <h3>פרק 6. מתחילים לשלוט ב-Java</h3>ביום בהיר אחד במאי אני מקבל הזמנה לראיון למשרה הפנויה "מפתח". לחברה בענף הביטוח צריך אדם שיפתח מוצרי ביטוח. דרוש ניסיון בתכנות, אך מכיוון שמדובר בפיתוח "ייחודי" של החברה, אין צורך בשפה ספציפית. צריך גם Git וכן הלאה. קבעתי ראיון בעוד יומיים, ולמדתי את יסודות Git בזמני הפנוי. במהלך הראיון, נשאלתי לגבי Python, JS, Git, SQL. עניתי על הכל חוץ מהמושג "עומס שיטות", והוזמנתי לעבודה בעוד שבועיים. התברר שהחברה קנתה את המערכת מזמן. כתוב ב-Java (מקדימה ומאחור), בעזרתה ניתן ליצור תהליכים עסקיים מבלי לדעת שפת תכנות (ליתר דיוק, באמצעות שפת התכנות המובנית Jelly). זה נשמע טוב, אבל למעשה הכל היה מעוות. סטייה לירית: לכל טכנולוגיה יש עידן משלה וקנה מידה משלה. זה מגניב לעשות את כל הדיווחים בשנת 2000 רק באקסל. לעשות את אותו הדבר ב-2021 זה לא טוב במיוחד. אתר אינטרנט של חברה ב-HTML טהור היה מגניב ב-1999, אבל לא ב-2021. לכן, הטכנולוגיה שהחברה השתמשה בה בזמן הקמתה (2005) הייתה מאוד מגניבה - Java הייתה אחראית גם לשרת וגם לחלק הלקוח (מה שנקרא דפי Java servlet). יתרה מכך, אם אתה יוצר תהליך עסקי חדש (שיש לו ממשק משתמש משלו), אז הוא מאוחסן בתוך מסד הנתונים, ולא בקוד בקובץ. כדי להבין עד כמה זה לא נוח, דמיינו שאתם כותבים קוד ג'אווה ברעיון Intellij, שומרים אותו במסד הנתונים, ואז. כאשר אתה רוצה להפעיל את הקוד שלך, ליבת התוכנית עוברת למסד הנתונים וקוראת את הקוד שלך משם. לפיכך, אינך יכול לנפות באגים במלואו ביישום שלך. רמז מס' 1: כאשר אתה רוצה לשלוח קוד לספסל הבדיקה, עליך ליצור צור רשתות עצביות משלך כדי לחקור לקוחות (ללא מדען נתונים בצוות). לעובדים חדשים הוצע ללמוד Python תוך שבוע וכו'. ימי חופש ללא תשלום הפכו לנורמה. זה היה טיפשי להפסיק: איפה תמצא עבודה בזמן מגיפה? אבל הסבלנות פקעה לאחר חודשיים, כאשר הוכרז שלא יהיו בונוסים רבעוניים. הניואנס הוא שכאשר סיכמנו על השכר, בזמן הגיוס, hr אמר שהשכר מתחלק לשכר (60%) ולבונוס רבעוני (40%) המשולם תמיד. התברר שנעשתה בחירה לא נכונה ועלינו להתחיל לחפש עבודה חדשה. <h3>פרק 6. מתחילים לשלוט ב-Java</h3>ביום בהיר אחד במאי אני מקבל הזמנה לראיון למשרה הפנויה "מפתח". לחברה בענף הביטוח צריך אדם שיפתח מוצרי ביטוח. דרוש ניסיון בתכנות, אך מכיוון שמדובר בפיתוח "ייחודי" של החברה, אין צורך בשפה ספציפית. צריך גם Git וכן הלאה. קבעתי ראיון בעוד יומיים, ולמדתי את יסודות Git בזמני הפנוי. במהלך הראיון, נשאלתי לגבי Python, JS, Git, SQL. עניתי על הכל חוץ מהמושג "עומס שיטות", והוזמנתי לעבודה בעוד שבועיים. התברר שהחברה קנתה את המערכת מזמן. כתוב ב-Java (מקדימה ומאחור), בעזרתה ניתן ליצור תהליכים עסקיים מבלי לדעת שפת תכנות (ליתר דיוק, באמצעות שפת התכנות המובנית Jelly). זה נשמע טוב, אבל למעשה הכל היה מעוות. סטייה לירית: לכל טכנולוגיה יש עידן משלה וקנה מידה משלה. זה מגניב לעשות את כל הדיווחים בשנת 2000 רק באקסל. לעשות את אותו הדבר ב-2021 זה לא טוב במיוחד. אתר אינטרנט של חברה ב-HTML טהור היה מגניב ב-1999, אבל לא ב-2021. לכן, הטכנולוגיה שהחברה השתמשה בה בזמן הקמתה (2005) הייתה מאוד מגניבה - Java הייתה אחראית גם לשרת וגם לחלק הלקוח (מה שנקרא דפי Java servlet). יתרה מכך, אם אתה יוצר תהליך עסקי חדש (שיש לו ממשק משתמש משלו), אז הוא מאוחסן בתוך מסד הנתונים, ולא בקוד בקובץ. כדי להבין עד כמה זה לא נוח, דמיינו שאתם כותבים קוד ג'אווה ברעיון Intellij, שומרים אותו במסד הנתונים, ואז. כאשר אתה רוצה להפעיל את הקוד שלך, ליבת התוכנית עוברת למסד הנתונים וקוראת את הקוד שלך משם. לפיכך, אינך יכול לנפות באגים במלואו ביישום שלך. רמז מס' 1: כאשר אתה רוצה לשלוח קוד לספסל הבדיקה, עליך ליצור <h3>פרק 6. מתחילים לשלוט ב-Java</h3>ביום בהיר אחד במאי אני מקבל הזמנה לראיון למשרה הפנויה "מפתח". לחברה בענף הביטוח צריך אדם שיפתח מוצרי ביטוח. דרוש ניסיון בתכנות, אך מכיוון שמדובר בפיתוח "ייחודי" של החברה, אין צורך בשפה ספציפית. צריך גם Git וכן הלאה. קבעתי ראיון בעוד יומיים, ולמדתי את יסודות Git בזמני הפנוי. במהלך הראיון, נשאלתי לגבי Python, JS, Git, SQL. עניתי על הכל חוץ מהמושג "עומס שיטות", והוזמנתי לעבודה בעוד שבועיים. התברר שהחברה קנתה את המערכת מזמן. כתוב ב-Java (מקדימה ומאחור), בעזרתה ניתן ליצור תהליכים עסקיים מבלי לדעת שפת תכנות (ליתר דיוק, באמצעות שפת התכנות המובנית Jelly). זה נשמע טוב, אבל למעשה הכל היה מעוות. סטייה לירית: לכל טכנולוגיה יש עידן משלה וקנה מידה משלה. זה מגניב לעשות את כל הדיווחים בשנת 2000 רק באקסל. לעשות את אותו הדבר ב-2021 זה לא טוב במיוחד. אתר אינטרנט של חברה ב-HTML טהור היה מגניב ב-1999, אבל לא ב-2021. לכן, הטכנולוגיה שהחברה השתמשה בה בזמן הקמתה (2005) הייתה מאוד מגניבה - Java הייתה אחראית גם לשרת וגם לחלק הלקוח (מה שנקרא דפי Java servlet). יתרה מכך, אם אתה יוצר תהליך עסקי חדש (שיש לו ממשק משתמש משלו), אז הוא מאוחסן בתוך מסד הנתונים, ולא בקוד בקובץ. כדי להבין עד כמה זה לא נוח, דמיינו שאתם כותבים קוד ג'אווה ברעיון Intellij, שומרים אותו במסד הנתונים, ואז. כאשר אתה רוצה להפעיל את הקוד שלך, ליבת התוכנית עוברת למסד הנתונים וקוראת את הקוד שלך משם. לפיכך, אינך יכול לנפות באגים במלואו ביישום שלך. רמז מס' 1: כאשר אתה רוצה לשלוח קוד לספסל הבדיקה, עליך ליצור <h3>פרק 6. מתחילים לשלוט ב-Java</h3>ביום בהיר אחד במאי אני מקבל הזמנה לראיון למשרה הפנויה "מפתח". לחברה בענף הביטוח צריך אדם שיפתח מוצרי ביטוח. דרוש ניסיון בתכנות, אך מכיוון שמדובר בפיתוח "ייחודי" של החברה, אין צורך בשפה ספציפית. צריך גם Git וכן הלאה. קבעתי ראיון בעוד יומיים, ולמדתי את יסודות Git בזמני הפנוי. במהלך הראיון, נשאלתי לגבי Python, JS, Git, SQL. עניתי על הכל חוץ מהמושג "עומס שיטות", והוזמנתי לעבודה בעוד שבועיים. התברר שהחברה קנתה את המערכת מזמן. כתוב ב-Java (מקדימה ומאחור), בעזרתה ניתן ליצור תהליכים עסקיים מבלי לדעת שפת תכנות (ליתר דיוק, באמצעות שפת התכנות המובנית Jelly). זה נשמע טוב, אבל למעשה הכל היה מעוות. סטייה לירית: לכל טכנולוגיה יש עידן משלה וקנה מידה משלה. זה מגניב לעשות את כל הדיווחים בשנת 2000 רק באקסל. לעשות את אותו הדבר ב-2021 זה לא טוב במיוחד. אתר אינטרנט של חברה ב-HTML טהור היה מגניב ב-1999, אבל לא ב-2021. לכן, הטכנולוגיה שהחברה השתמשה בה בזמן הקמתה (2005) הייתה מאוד מגניבה - Java הייתה אחראית גם לשרת וגם לחלק הלקוח (מה שנקרא דפי Java servlet). יתרה מכך, אם אתה יוצר תהליך עסקי חדש (שיש לו ממשק משתמש משלו), אז הוא מאוחסן בתוך מסד הנתונים, ולא בקוד בקובץ. כדי להבין עד כמה זה לא נוח, דמיינו שאתם כותבים קוד ג'אווה ברעיון Intellij, שומרים אותו במסד הנתונים, ואז. כאשר אתה רוצה להפעיל את הקוד שלך, ליבת התוכנית עוברת למסד הנתונים וקוראת את הקוד שלך משם. לפיכך, אינך יכול לנפות באגים במלואו ביישום שלך. רמז מס' 1: כאשר אתה רוצה לשלוח קוד לספסל הבדיקה, עליך ליצור אתר אינטרנט של חברה ב-HTML טהור היה מגניב ב-1999, אבל לא ב-2021. לכן, הטכנולוגיה שהחברה השתמשה בה בזמן הקמתה (2005) הייתה מאוד מגניבה - Java הייתה אחראית גם לשרת וגם לחלק הלקוח (מה שנקרא דפי Java servlet). יתרה מכך, אם אתה יוצר תהליך עסקי חדש (שיש לו ממשק משתמש משלו), אז הוא מאוחסן בתוך מסד הנתונים, ולא בקוד בקובץ. כדי להבין עד כמה זה לא נוח, דמיינו שאתם כותבים קוד ג'אווה ברעיון Intellij, שומרים אותו במסד הנתונים, ואז. כאשר אתה רוצה להפעיל את הקוד שלך, ליבת התוכנית עוברת למסד הנתונים וקוראת את הקוד שלך משם. לפיכך, אינך יכול לנפות באגים במלואו ביישום שלך. רמז מס' 1: כאשר אתה רוצה לשלוח קוד לספסל הבדיקה, עליך ליצור אתר אינטרנט של חברה ב-HTML טהור היה מגניב ב-1999, אבל לא ב-2021. לכן, הטכנולוגיה שהחברה השתמשה בה בזמן הקמתה (2005) הייתה מאוד מגניבה - Java הייתה אחראית גם לשרת וגם לחלק הלקוח (מה שנקרא דפי Java servlet). יתרה מכך, אם אתה יוצר תהליך עסקי חדש (שיש לו ממשק משתמש משלו), אז הוא מאוחסן בתוך מסד הנתונים, ולא בקוד בקובץ. כדי להבין עד כמה זה לא נוח, דמיינו שאתם כותבים קוד ג'אווה ברעיון Intellij, שומרים אותו במסד הנתונים, ואז. כאשר אתה רוצה להפעיל את הקוד שלך, ליבת התוכנית עוברת למסד הנתונים וקוראת את הקוד שלך משם. לפיכך, אינך יכול לנפות באגים במלואו ביישום שלך. רמז מס' 1: כאשר אתה רוצה לשלוח קוד לספסל הבדיקה, עליך ליצורSQL скрипт, שיכיל את הקוד שלך. לא נעים, אבל נסבל? Zest #2: מסד הנתונים מורכב מיותר מ-200 טבלאות שיש להן קשרים זה עם זה. זה אומר שאתה צריך לדעת לאילו טבלאות לזרוק את הקוד שלך, ואילו ישויות צריך ליצור בטבלאות אחרות. הפלט הוא סקריפט SQL באורך של ~ 1000 שורות. זה באמת מגעיל. היזהרו ממורשת. בקיצור, כשהבנתי שהכל בג'אווה, הלכתי ל-JavaRush (סוף סוף הגענו לנושא של האתר!). יוני-יולי 2020. 10 הרמות הראשונות נסגרו במהירות (אולי חודש), כי לא היה שום דבר חדש ביסודו. ואז המהירות ירדה. יולי-אוקטובר 2020. רמות 10-20 סגורות. אוקטובר-מרץ 2021. רמות 20-30 סגורות. עכשיו הכיף מתחיל: במרץ 2021 התחלתי להסתכל על משרות פנויות ב-Java והבנתי שיש שם הרבה מילים לא מוכרות. סוג של Spring, SpringBoot, Hibernate, JUnit. לאחר שקניתי קורסי וידאו באתר מוכר, פשוט נגעתי באביב וחשבתי שעכשיו אני יודע ויכול הכל. לאחר מכן, נתקלתי בקורס TopJava של גריגורי קיסלין. באתר שלו תוכלו לנסות לבצע משימת מבחן, ואם תצליחו, תוכלו לעבור את הקורס. בקורס זה יוצרים אפליקציית אינטרנט מלאה ואף מפרסמים אותה באינטרנט. עבור הכסף הזה, הם יתנו לכם סקירה (סקירה של הקוד על ידי מתכנת מנוסה יותר), יתנו משוב ויתנו לכם טיפים במקרה של בעיות. הגעתי לשיעורי בית 3 והפסקתי. הסיבה פשוטה: הם דורשים ממך הרבה, אבל הם לא נותנים לך שום ידע. דרישות שיעורי הבית מאוד מבלבלות. המידע מוצג בצורה מאוד לא עקבית. לדעתי הסובייקטיבית, קורס זה נחוץ למפתחים מנוסים למדי שמגיעים משפות דומות אחרות. כי בקורס שלו אין כמעט הסבר על הטכנולוגיות שהוא מבקש להשתמש בהן. אתה גם צריך להכיר את Git היטב (הכל נשלח למאגר האישי שלך). בסוף אפריל 2021 אני מפרסם קורות חיים למפתח ג'אווה (עם השכר הרצוי ברמה בינונית+) ובו אני מציין שבעבודתי האחרונה תכנתי ב-Java (שיקרתי). עוד באותו היום מגיעה לבנק בקשה למשרת מפתח Java. <h3>פרק 7. ראיונות Java והשבחת מיומנויות</h3>אז מה הייתה התוכנית? אני צריך לקבל משכורת טובה, כי אני כבר רגיל לחיות מהכנסה ניכרת + הלוואות. לכן, תפקידים זוטרים לא מתאימים לי. אתה צריך למצוא עבודה בינונית. אבל מי יעסיק אותי בלי ניסיון? ההחלטה באה בטבעיות: הרקורד התעסוקתי שלי אומר שעבדתי כמפתח שנה ועוד 4 שנים כמומחה במחלקת IT בתפקידי הקודם. אז, אני אגיד שאני מפתח בג'אווה במשך שנה. ואם ישאלו על מוצרים חדשים, אני אגיד שה-Java הישנה (7) הייתה שם ולא תמכה בכלום. לפני הראיון הראשון שלי (מרחוק), הייתי עצבני. אין לי ניסיון, מעט מאוד ידע, ואני מבקש הרבה כסף. אני חושב: לא אכפת, ניסיון שלילי הוא גם ניסיון. אני יוצר קשר דרך סקייפ ואתראיין שני ראשי מחלקות. מה שגרם לי להרגיש עוד יותר עצוב. התחילו שאלות: OOP, מכשיר HashMap, זרמים, מבני נתונים, מה זה Spring, Hibernate, AOP. ואם לפני ספינג זה היה פחות או יותר נסבל, אז באביב זה התפרק לגמרי. אנשים שואלים אותי: איך התפתחת באביב אם אתה לא באמת יודע את זה? אני: העתקתי, הדבקתי, זה עובד, ותודה על זה. התשובה הזו שעשעה אותם. אחר כך שאלו על SQL, שבו הייתי כמו ברווז למים. לאחר מכן היה Git ושאלה על rebase, cherry-pick (שגם אני לא הכרתי) וסיום על JS, מכיוון שזה היה רשום בקורות החיים שלי. גם שם היה כישלון מוחלט, כי שאלו על OOP JS. על סמך תוצאות הראיון התברר שהידע שלי אינו comme il faut, ולכן לא אהיה זכאי למשרה זו. בערב כותב משאבי אנוש שהמועמדות שלי אושרה והם מוכנים להתקשר אלי. למעשה נחנקתי מהמבורגר במקדונלד'ס. שמחתי, אבל אחרי 3 ימים HR דיווחו שהם בחרו במועמד אחר. בפעם הראשונה מניסיוני, הצעה בוטלה. אחרי הראיון הראשון בג'אווה הגברתי את המשחק שלי: לקחתי קורס (וסיימתי אותו לגמרי!) ב-Git מבית Colt Steele באתר ידוע למכירת קורסי וידאו. זה שינה את התפיסה שלי לגבי Git. לאחר מכן עברתי קורס (מבריק) אצל זאור טרגולוב בנושא אביב+תרדמת חורף. ערכת הדרכה: אני צופה בזה כמו בסרטון, אני עושה את אותו הדבר במחשב שלי, אבל אני שם למשתנים ולשיעורים אחרת כדי לא להעתיק בטיפשות קוד של מישהו אחר. אני מעלה את כל העבודה שלי ל-Github שלי (ובכך מתרגל את Git). זה היה באמצע מאי והתחילו שיחות מ-hr. התחלנו לקבוע ראיונות אחד אחד. הזמנות רבות נאלצו להתבטל מהסיבות הבאות: HR לא קרא את תיאור קורות החיים שלי והזמין אותי לתפקיד בכיר. כדאי גם להזכיר קסטה נפרדת של משאבי אנוש: אלה שמבלבלים בין Java ל-JavaScript. זו הסיבה שכתבתי מפתח Java Middle בכותרת של קורות החיים שלי. <h3>פרק 8. רשימת שאלות טיפוסיות ואיך מתנהלים ראיונות</h3>התחלתי ללכת לראיונות ובהדרגה יצרתי מאגר של שאלות בסיסיות באמצע. נדרש: 0. OOP - הגדרה, דברו על כל עיקרון של OOP (+תנו דוגמה מהחיים האמיתיים). 1. Equals ו-hashcode - מה החוזה (היחס) ביניהם? 2. HashMap - איך להבין לאיזה דלי אובייקט ייכנס, מהי התנגשות, באיזה מבנה נתונים הנתונים מאוחסנים בתוך ה-HashMap, הגודל הסטנדרטי, איך מספר הדליים גדל. 3. זרם - אילו סוגי פעולות, מה ההבדל ביניהן, תנו דוגמה לכל סוג הפעלה. 4. בריכת מיתרים, בריכת שלמים - מה זה? 5. ערימה, מחסנית - מה זה, מה ההבדל? 6. הבדלים בין Runnable, Thread, Future. 7. נדיף, אטומיות. 8. מוצק, נשיקה, יבש - הגדרות, דוגמאות מהחיים האמיתיים. 9. גישה לשינויים בג'אווה. 10. מה ההבדל בין מחלקה מופשטת לממשק. האם הממשק יכול להיות פרטי? 11. ממשקים פונקציונליים. 12. רשום את כל שיטות האובייקט וספרו מדוע יש צורך בהן. תכונות של שיטת השיבוט. 13. מהי סריאליזציה וסריאליזציה. 14. נסה לתפוס עם משאבים - תאר מה זה, ספר לו באמצעות הממשק Closeable. 15. ההבדלים בין סופי, לבסוף, לסיים? 16. עומס יתר, עקיפת השיטה היא ההבדל. 17. מדוע String הפך לבלתי ניתן לשינוי, ספר לנו על StringBuilder ו-StringBuffer. 18. מהי מורכבות זמן O(1), מורכבות זיכרון. 19. מבני נתונים: מדברים על מפה, סט, תור, deque, list והטמעתם ב-Java (treeMap, hashSet, hashMap, arrayList, linkedList, priorityQueue, blockingQueue), תאר את המורכבות (הגרוע ביותר, הממוצע, הטוב ביותר) של ההכנסה, חיפוש, הסרת אלמנט בכל מבנה. 20. סוגי נתונים פרימיטיביים ב-Java. מדוע יש צורך בכל אחד מהם? 21. סוגי טעויות. חריגים מסומנים ולא מסומנים. 22. מה זה JVM, JRE, JDK? 23. עם אילו אספנים עבדת? Maven - בנה מחזור חיים. 24. Spring - Ioc Definitions, Di, Bean Lifecycle, Context, @Bean Annotations, @Configuration, @Autowired, @Advice, @Aspect, @Service, @Repository. 25. גנרי - הגדרה מה זה גבול תחתון ועליון? 26.תכנות דפוסים - לפחות Singleton (נכונות לספר למה זה לפעמים אנטי דפוס) + Builder, Adapter, Factory, Decorator, Proxt. רצוי: 26. בדיקות - סוגי מבחנים, איתם עבדו בספריות (JUnit). מה זה מוק, דקירה, מרגל? 27. מגף קפיצי - למה זה נחוץ, מוכנות לבצע יישום SpringBoot באינטרנט. 28. Hibernate - למה זה נחוץ, Entity, עמודת הצטרפות, טעינה עצלנית לעומת להוטה, רמות מטמון (קשות). 29. מנוחת אביב - למה זה נחוץ, איך עושים @post, @get endpoints. איך לקרוא פרמטרים/גוף הבקשה? כיצד להגיש בפורמט json? 30. מבני נתונים - עצים, סוגיהם. 31. אלגוריתמים - סוגי מיון. בנוסף ל-Java, הם עשויים לשאול: 1. (חובה!) Git - למה זה נחוץ, פעולות מיזוג, rebase, cherry-pick, push, pull, commit, log, checkout, branch, reset, revert, refresh. 2.SQL - יכולת לכתוב שאילתה: חבר שתי טבלאות לאחת (הצטרפות פנימית, צירוף שמאלי). 3. מסדי נתונים - 3 טפסים רגילים, אינדקסים (למה הם נחוצים, סוגים), מפתח ראשי, מפתח זר איך מתנהל ראיון מרחוק טיפוסי: hr שולח קישור לזום (סקייפ, מפגש גוגל). עד לזמן מסוים אתה מתחבר ויש שם בין 1 ל-3 אנשים (מומחה טכני, בוס, hr). במקרים עקשניים במיוחד, עד 8 אנשים. קודם אתה מספר על עצמך, אחר כך החלק הטכני, אחר כך סיפור על המשרה הפנויה ופרידה (אומרים מתי ייצרו איתך קשר או מה יהיו השלבים הבאים). במהלך פרידות, אתה יכול לבקש משוב על ידע. שאלתי: "האם אתה יכול להגיד לי, במהלך התשובות שלי, איפה האוזניים שלך כואבות?" אנשים רבים מגיבים, אבל היו מוכנים להידחות. במהלך הראיון הם מעריכים: 1. יכולתך לבטא מחשבות וידע בשפה הרוסית (אני מכיר מקרה שבו מועמד נדחה עקב ידיעה לקויה של השפה הרוסית). 2. ניסיון קודם (ייתכן שהם ישאלו בקפדנות מה עשית בעבודה האחרונה שלך). 3. תגובה נאותה כאשר מופעל עליך לחץ (היה ראיון אחד שבו אנשים התחילו לדבר בחוסר כבוד: התעלמות מהתשובות שלי, ניסיון להנחיל את עמדותיהם וכו'. סיימתי את הראיון 15 דקות לאחר ההתחלה, והם: זה היה ראיון מלחיץ!) 4. רמת הידע שלך. אפרט כאן יותר. הכרת ההגדרות של נושא היא רק 10% ממה שמצופה ממך. יש צורך להבין איך זה עובד (לפחות ברמה העליונה). נכונות להסביר באיזה שלב בפיתוח תבחר בפתרון זה או אחר. זה הרבה יותר חשוב מהדיוק של ההגדרה שלך. אנתח את התזה באמצעות שתי דוגמאות. דוגמה ראשונה: במהלך ראיון נשאלתי על HashMap, ונתתי את ההגדרה: "זהו מבנה נתונים המאחסן חבילות מפתח וערכים". ואז שאל המראיין: מה ההבדל מ-TreeMap? תשובה: ההבדל הוא ש-HashMap מגיב את המפתח ובשל גיבוב הגישה מהירה. המראיין ביקש מיד לספר לנו את המבנה הפנימי של HashMap, ובמקביל שאל על hashCode ושווים. וזה יעמיק יותר עד שתסתפק בתשובה או שתפסיק. למדתי לענות נכון על HashMap רק לאחר חודשיים של ראיונות וקורס על מבני נתונים על hexlet. דוגמה שנייה: המושג SOLID. הם מבקשים ממני לתת הגדרה ששיננתי. אבל ברגע שזה הגיע לדוגמאות מהחיים האמיתיים, התחילו בעיות. Внимание!אם אתה לא יודע, אז אל תמציא את זה, אלא תגיד את זה: אני לא מכיר את הנושא הזה, אבל אני יכול להניח שזה עובד ככה. מומחים טכניים רבים זועמים כאשר אדם מדבר כפירה כאילו הוא מבין את הנושא. 5. רמת ההתלהבות שלך במהלך הדיון בעבודה. מצופה מכם להתעניין ולשאול שאלות על המשרה הפנויה (רק לא רק מומצאות). 6. לפעמים הומור (רק בנושא) ותחומי עניין משותפים עוזרים לך לתקשר. אתה מוזמן לדבר על התחביבים שלך, אולי המרואיין אוהב גם את דוטה/כדורגל/פנטזיה. וזה יתרון עבורך כמועמד. אני מכיר מקרים שבהם קהילת אינטרסים העלימה עין מההכשרה הטכנית הגרועה של המראיין (אתה בחור נורמלי, אנחנו נאמן אותך). <h3>פרק 9. קבלת עבודה, טבילת האש</h3>הראיונות התקיימו מסוף אפריל עד אמצע יולי. הראיונות הראשונים היו מביכים, אבל בהדרגה המצב השתפר לרמה מקובלת. לימוד שאלות נפוצות ומשוב הרגיש את עצמו. 25 הראיונות הראשונים לא צלחו. לאחר מכן החלו רגעי ייאוש. תחושות: מה אם לא יעסיקו אותי בשכר הזה? פתאום התחילו העניינים לירות: תוך שבוע הגישו שלוש חברות הצעות. בחרתי בחברה שידעתי את הפרטים שלה, בנוסף הייתה משכורת טובה ואפשרות לעבוד מרחוק. במהלך הראיון שלי, נשאלתי כ-30 שאלות על ליבת Java ו-Spring, על 97% מהן עניתי נכון. אחרי זה הייתה תקשורת עם רשויות גבוהות יותר ואחרי שבוע וחצי קיבלתי עבודה אצלם. קודם כל, כאשר אתה מגיע לכל עבודה אתה מתחיל לקבל גישה לכל המערכות הדרושות ולהתקין את הכלים הדרושים לך. זה לקח שבוע וחצי, וקיבלתי את המשימה הראשונה: לשנות את הטקסט הסטטי בכיתה. כשפתחתי את הפרויקט, הרגשתי בחילה: היו הרבה מודולים בתוך פרויקט אחד, הרבה שיעורים, מבחנים וכו'. בשלב הזה הלכתי לאיבוד, אבל מפתח שני עזר לי והעלה אותי למהירות. הבאג תוקן תוך 10 דקות, פורסם ב-Git, התקבלה בקשת pull (בקשה למזג שני סניפים שבהם מפתחים אחרים בודקים את הקוד שלך), ולאחר מכן התמזגה לסניף הראשי. התברר שהכל לא כל כך קשה. עד המשימה המלאה הראשונה... בזמן תכנון המשימות לשבועיים הקרובים אמרו לי: תעשו אינטגרציה עם מערכת אחרת, שנמצאת ב-OpenShift. זה המקום שבו הדברים נעשו ממש מפחידים: OpenShift הוא אשכול שלם של טכנולוגיות: Docker, Kubernetes, Linux וכו'. זיעה קרה זלגה במורד הגב שלי: ובכן, עבדתי בתור ג'וויסט. מיד לאחר הפגישה, התקשרתי למפתח, שהרגיע אותי: נכתבו מתאמים למערכת הזו, והספיק לייבא מחלקות מסוימות לפרויקט שלי, שלאחר מכן יכולתי להשתמש בבטחה באינטגרציה. זה הפך להיות כיף שוב, עד שהמפתח הראה אינטגרציה טיפוסית: ראיתי יותר מ-20 מחלקות שנוצרו לאינטגרציה דומה. יתר על כן, הבחינו בהערות שלא נראו בעבר @Value, @Builder, @NoArgsConstructor, @Getter @Sl4f - התברר שזהו פרויקט Lombook (לקרוא באינטרנט). כשהמפתח הסביר לי איך עושים את זה, ניסיתי לרשום את הקשרים של כל השיעורים, ושום דבר לא נתקע לי בראש. הרגע המביך ביותר היה חוסר הידע של Intellij Idea: איך לחפש פרויקט גלובלי, שחזור קוד וכו'. לאחר שלקחתי על עצמי את המשימה, הבנתי מדוע יש צורך ב-OOP: עבור כמות כה גדולה של קוד, יש צורך לחלק אותו למחלקות; יש להכריז על שיטות שאינן בשימוש מחוץ למחלקה כפרטיות כדי לא להפעיל אותן בטעות במחלקה אחרת וכו'. לאחר שכתבתי את האינטגרציה שלי באנלוגיה לאינטגרציה אחרת, למדתי על קיומו של CheckStyle - תוסף מיוחד שבודק את הסגנון של הקוד שלך, ולא תוכל להרכיב את הפרויקט שלך עד שתתקן שגיאות (לדוגמה, רווחים נוספים, שמות משתנים באותיות גדולות, שמות משתנים קצרים מדי). לאחר שהבסתי את CheckStyle, שלחתי את הקוד שלי לבדיקה למפתחים בכירים ותיקנתי את הטעויות שלי תוך שבוע. בכלל, היה לי מזל גדול שבצוות שלי היה לי קשר טוב עם המפתח השני, שהסביר הרבה דברים. חודש לאחר המכשיר, הושקה האינטגרציה הראשונה שלי בעמדה אינטגרציה-פונקציונלית (נבדקת העבודה של כל האפליקציות ביחד), והכל עבד שם! ניצחון! המשימה הבאה הייתה ליצור מחלקה שתאפשר הסתרת נתונים על ידי מפתח ב-json. לדוגמה: יש json {text:"JavaRush"} -> עיבוד -> {text:"****Rush"}. יש כאן שני סיבוכים: ייתכן שיש קינון {text:{mytext:"JavaRush"}}, ומה שיותר לא נעים זה קינון בתוך המערך: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush" "} ] } (כמובן שאתה צריך להסתיר את כל text.mytext). פתרון הבעיה הזו התברר כדי קשה, אבל עשיתי את זה! כאן אומר המפתח השני: כסו את הפיתוח הזה בבדיקות. הייתה תמיהה בעיניים. כך הכרתי את ספריית JUnit בלחימה. המהות של בדיקת יחידות: יש לך נתוני קלט, מעבירים אותם למתודה ומשווים את הנתונים שהתקבלו עם התוצאה הנכונה (צור משתנה עם התוצאה הנכונה). כתבתי 11 מקרים לספרייה שלי, בהם בדקתי שהאפליקציה לא קרסה עם NullPointException ושהיא מסתירה נכון נתונים עם כל סוג של קינון. לאחר השלמת משימה זו, קיבלתי אינטגרציה חדשה, שייחודיותה הייתה הבאה: הייתי צריך לייצא שעועית אביבית מספרייה חיצונית. בשלב זה הפכתי ללקוח קבוע של אתר Stack OverFlow. פעם אחת אפילו מפתח ספרינג רשמי הגיב. לאחר יישום השילוב הזה, תקופת הניסיון שלי הגיעה לסיומה. הבוס בירך אותי על שעברתי את תקופת המבחן, והתחלתי לכתוב את המאמר הזה. בסך הכל, לקח 8 שעות לכתוב מאמר זה) תודה על תשומת הלב, אני מקווה שהמאמר היה שימושי. ניסיתי לרשום את הקשרים של כל השיעורים, ושום דבר לא נתקע לי בראש. הרגע המביך ביותר היה חוסר הידע של Intellij Idea: איך לחפש פרויקט גלובלי, שחזור קוד וכו'. לאחר שלקחתי על עצמי את המשימה, הבנתי מדוע יש צורך ב-OOP: עבור כמות כה גדולה של קוד, יש צורך לחלק אותו למחלקות; יש להכריז על שיטות שאינן בשימוש מחוץ למחלקה כפרטיות כדי לא להפעיל אותן בטעות במחלקה אחרת וכו'. לאחר שכתבתי את האינטגרציה שלי באנלוגיה לאינטגרציה אחרת, למדתי על קיומו של CheckStyle - תוסף מיוחד שבודק את הסגנון של הקוד שלך, ולא תוכל להרכיב את הפרויקט שלך עד שתתקן שגיאות (לדוגמה, רווחים נוספים, שמות משתנים באותיות גדולות, שמות משתנים קצרים מדי). לאחר שהבסתי את CheckStyle, שלחתי את הקוד שלי לבדיקה למפתחים בכירים ותיקנתי את הטעויות שלי תוך שבוע. בכלל, היה לי מזל גדול שבצוות שלי היה לי קשר טוב עם המפתח השני, שהסביר הרבה דברים. חודש לאחר המכשיר, הושקה האינטגרציה הראשונה שלי בעמדה אינטגרציה-פונקציונלית (נבדקת העבודה של כל האפליקציות ביחד), והכל עבד שם! ניצחון! המשימה הבאה הייתה ליצור מחלקה שתאפשר הסתרת נתונים על ידי מפתח ב-json. לדוגמה: יש json {text:"JavaRush"} -> עיבוד -> {text:"****Rush"}. יש כאן שני סיבוכים: ייתכן שיש קינון {text:{mytext:"JavaRush"}}, ומה שיותר לא נעים זה קינון בתוך המערך: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush" "} ] } (כמובן שאתה צריך להסתיר את כל text.mytext). פתרון הבעיה הזו התברר כדי קשה, אבל עשיתי את זה! כאן אומר המפתח השני: כסו את הפיתוח הזה בבדיקות. הייתה תמיהה בעיניים. כך הכרתי את ספריית JUnit בלחימה. המהות של בדיקת יחידות: יש לך נתוני קלט, מעבירים אותם למתודה ומשווים את הנתונים שהתקבלו עם התוצאה הנכונה (צור משתנה עם התוצאה הנכונה). כתבתי 11 מקרים לספרייה שלי, בהם בדקתי שהאפליקציה לא קרסה עם NullPointException ושהיא מסתירה נכון נתונים עם כל סוג של קינון. לאחר השלמת משימה זו, קיבלתי אינטגרציה חדשה, שייחודיותה הייתה הבאה: הייתי צריך לייצא שעועית אביבית מספרייה חיצונית. בשלב זה הפכתי ללקוח קבוע של אתר Stack OverFlow. פעם אחת אפילו מפתח ספרינג רשמי הגיב. לאחר יישום השילוב הזה, תקופת הניסיון שלי הגיעה לסיומה. הבוס בירך אותי על שעברתי את תקופת המבחן, והתחלתי לכתוב את המאמר הזה. בסך הכל, לקח 8 שעות לכתוב מאמר זה) תודה על תשומת הלב, אני מקווה שהמאמר היה שימושי. ניסיתי לרשום את הקשרים של כל השיעורים, ושום דבר לא נתקע לי בראש. הרגע המביך ביותר היה חוסר הידע של Intellij Idea: איך לחפש פרויקט גלובלי, שחזור קוד וכו'. לאחר שלקחתי על עצמי את המשימה, הבנתי מדוע יש צורך ב-OOP: עבור כמות כה גדולה של קוד, יש צורך לחלק אותו למחלקות; יש להכריז על שיטות שאינן בשימוש מחוץ למחלקה כפרטיות כדי לא להפעיל אותן בטעות במחלקה אחרת וכו'. לאחר שכתבתי את האינטגרציה שלי באנלוגיה לאינטגרציה אחרת, למדתי על קיומו של CheckStyle - תוסף מיוחד שבודק את הסגנון של הקוד שלך, ולא תוכל להרכיב את הפרויקט שלך עד שתתקן שגיאות (לדוגמה, רווחים נוספים, שמות משתנים באותיות גדולות, שמות משתנים קצרים מדי). לאחר שהבסתי את CheckStyle, שלחתי את הקוד שלי לבדיקה למפתחים בכירים ותיקנתי את הטעויות שלי תוך שבוע. בכלל, היה לי מזל גדול שבצוות שלי היה לי קשר טוב עם המפתח השני, שהסביר הרבה דברים. חודש לאחר המכשיר, הושקה האינטגרציה הראשונה שלי בעמדה אינטגרציה-פונקציונלית (נבדקת העבודה של כל האפליקציות ביחד), והכל עבד שם! ניצחון! המשימה הבאה הייתה ליצור מחלקה שתאפשר הסתרת נתונים על ידי מפתח ב-json. לדוגמה: יש json {text:"JavaRush"} -> עיבוד -> {text:"****Rush"}. יש כאן שני סיבוכים: ייתכן שיש קינון {text:{mytext:"JavaRush"}}, ומה שיותר לא נעים זה קינון בתוך המערך: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush" "} ] } (כמובן שאתה צריך להסתיר את כל text.mytext). פתרון הבעיה הזו התברר כדי קשה, אבל עשיתי את זה! כאן אומר המפתח השני: כסו את הפיתוח הזה בבדיקות. הייתה תמיהה בעיניים. כך הכרתי את ספריית JUnit בלחימה. המהות של בדיקת יחידות: יש לך נתוני קלט, מעבירים אותם למתודה ומשווים את הנתונים שהתקבלו עם התוצאה הנכונה (צור משתנה עם התוצאה הנכונה). כתבתי 11 מקרים לספרייה שלי, בהם בדקתי שהאפליקציה לא קרסה עם NullPointException ושהיא מסתירה נכון נתונים עם כל סוג של קינון. לאחר השלמת משימה זו, קיבלתי אינטגרציה חדשה, שייחודיותה הייתה הבאה: הייתי צריך לייצא שעועית אביבית מספרייה חיצונית. בשלב זה הפכתי ללקוח קבוע של אתר Stack OverFlow. פעם אחת אפילו מפתח ספרינג רשמי הגיב. לאחר יישום השילוב הזה, תקופת הניסיון שלי הגיעה לסיומה. הבוס בירך אותי על שעברתי את תקופת המבחן, והתחלתי לכתוב את המאמר הזה. בסך הכל, לקח 8 שעות לכתוב מאמר זה) תודה על תשומת הלב, אני מקווה שהמאמר היה שימושי. עבור כמות כה גדולה של קוד, אתה צריך לחלק אותו למחלקות; יש להכריז על שיטות שאינן בשימוש מחוץ למחלקה כפרטיות כדי לא להפעיל אותן בטעות במחלקה אחרת וכו'. לאחר שכתבתי את האינטגרציה שלי באנלוגיה לאינטגרציה אחרת, למדתי על קיומו של CheckStyle - תוסף מיוחד שבודק את הסגנון של הקוד שלך, ולא תוכל להרכיב את הפרויקט שלך עד שתתקן שגיאות (לדוגמה, רווחים נוספים, שמות משתנים באותיות גדולות, שמות משתנים קצרים מדי). לאחר שהבסתי את CheckStyle, שלחתי את הקוד שלי לבדיקה למפתחים בכירים ותיקנתי את הטעויות שלי תוך שבוע. בכלל, היה לי מזל גדול שבצוות שלי היה לי קשר טוב עם המפתח השני, שהסביר הרבה דברים. חודש לאחר המכשיר, הושקה האינטגרציה הראשונה שלי בעמדה אינטגרציה-פונקציונלית (נבדקת העבודה של כל האפליקציות ביחד), והכל עבד שם! ניצחון! המשימה הבאה הייתה ליצור מחלקה שתאפשר הסתרת נתונים על ידי מפתח ב-json. לדוגמה: יש json {text:"JavaRush"} -> עיבוד -> {text:"****Rush"}. יש כאן שני סיבוכים: ייתכן שיש קינון {text:{mytext:"JavaRush"}}, ומה שיותר לא נעים זה קינון בתוך המערך: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush" "} ] } (כמובן שאתה צריך להסתיר את כל text.mytext). פתרון הבעיה הזו התברר כדי קשה, אבל עשיתי את זה! כאן אומר המפתח השני: כסו את הפיתוח הזה בבדיקות. הייתה תמיהה בעיניים. כך הכרתי את ספריית JUnit בלחימה. המהות של בדיקת יחידות: יש לך נתוני קלט, מעבירים אותם למתודה ומשווים את הנתונים שהתקבלו עם התוצאה הנכונה (צור משתנה עם התוצאה הנכונה). כתבתי 11 מקרים לספרייה שלי, בהם בדקתי שהאפליקציה לא קרסה עם NullPointException ושהיא מסתירה נכון נתונים עם כל סוג של קינון. לאחר השלמת משימה זו, קיבלתי אינטגרציה חדשה, שייחודיותה הייתה הבאה: הייתי צריך לייצא שעועית אביבית מספרייה חיצונית. בשלב זה הפכתי ללקוח קבוע של אתר Stack OverFlow. פעם אחת אפילו מפתח ספרינג רשמי הגיב. לאחר יישום השילוב הזה, תקופת הניסיון שלי הגיעה לסיומה. הבוס בירך אותי על שעברתי את תקופת המבחן, והתחלתי לכתוב את המאמר הזה. בסך הכל, לקח 8 שעות לכתוב מאמר זה) תודה על תשומת הלב, אני מקווה שהמאמר היה שימושי. עבור כמות כה גדולה של קוד, אתה צריך לחלק אותו למחלקות; יש להכריז על שיטות שאינן בשימוש מחוץ למחלקה כפרטיות כדי לא להפעיל אותן בטעות במחלקה אחרת וכו'. לאחר שכתבתי את האינטגרציה שלי באנלוגיה לאינטגרציה אחרת, למדתי על קיומו של CheckStyle - תוסף מיוחד שבודק את הסגנון של הקוד שלך, ולא תוכל להרכיב את הפרויקט שלך עד שתתקן שגיאות (לדוגמה, רווחים נוספים, שמות משתנים באותיות גדולות, שמות משתנים קצרים מדי). לאחר שהבסתי את CheckStyle, שלחתי את הקוד שלי לבדיקה למפתחים בכירים ותיקנתי את הטעויות שלי תוך שבוע. בכלל, היה לי מזל גדול שבצוות שלי היה לי קשר טוב עם המפתח השני, שהסביר הרבה דברים. חודש לאחר המכשיר, הושקה האינטגרציה הראשונה שלי בעמדה אינטגרציה-פונקציונלית (נבדקת העבודה של כל האפליקציות ביחד), והכל עבד שם! ניצחון! המשימה הבאה הייתה ליצור מחלקה שתאפשר הסתרת נתונים על ידי מפתח ב-json. לדוגמה: יש json {text:"JavaRush"} -> עיבוד -> {text:"****Rush"}. יש כאן שני סיבוכים: ייתכן שיש קינון {text:{mytext:"JavaRush"}}, ומה שיותר לא נעים זה קינון בתוך המערך: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush" "} ] } (כמובן שאתה צריך להסתיר את כל text.mytext). פתרון הבעיה הזו התברר כדי קשה, אבל עשיתי את זה! כאן אומר המפתח השני: כסו את הפיתוח הזה בבדיקות. הייתה תמיהה בעיניים. כך הכרתי את ספריית JUnit בלחימה. המהות של בדיקת יחידות: יש לך נתוני קלט, מעבירים אותם למתודה ומשווים את הנתונים שהתקבלו עם התוצאה הנכונה (צור משתנה עם התוצאה הנכונה). כתבתי 11 מקרים לספרייה שלי, בהם בדקתי שהאפליקציה לא קרסה עם NullPointException ושהיא מסתירה נכון נתונים עם כל סוג של קינון. לאחר השלמת משימה זו, קיבלתי אינטגרציה חדשה, שייחודיותה הייתה הבאה: הייתי צריך לייצא שעועית אביבית מספרייה חיצונית. בשלב זה הפכתי ללקוח קבוע של אתר Stack OverFlow. פעם אחת אפילו מפתח ספרינג רשמי הגיב. לאחר יישום השילוב הזה, תקופת הניסיון שלי הגיעה לסיומה. הבוס בירך אותי על שעברתי את תקופת המבחן, והתחלתי לכתוב את המאמר הזה. בסך הכל, לקח 8 שעות לכתוב מאמר זה) תודה על תשומת הלב, אני מקווה שהמאמר היה שימושי. שמות משתנים קצרים מדי). לאחר שהבסתי את CheckStyle, שלחתי את הקוד שלי לבדיקה למפתחים בכירים ותיקנתי את הטעויות שלי תוך שבוע. בכלל, היה לי מזל גדול שבצוות שלי היה לי קשר טוב עם המפתח השני, שהסביר הרבה דברים. חודש לאחר המכשיר, הושקה האינטגרציה הראשונה שלי בעמדה אינטגרציה-פונקציונלית (נבדקת העבודה של כל האפליקציות ביחד), והכל עבד שם! ניצחון! המשימה הבאה הייתה ליצור מחלקה שתאפשר הסתרת נתונים על ידי מפתח ב-json. לדוגמה: יש json {text:"JavaRush"} -> עיבוד -> {text:"****Rush"}. יש כאן שני סיבוכים: ייתכן שיש קינון {text:{mytext:"JavaRush"}}, ומה שיותר לא נעים זה קינון בתוך המערך: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush" "} ] } (כמובן שאתה צריך להסתיר את כל text.mytext). פתרון הבעיה הזו התברר כדי קשה, אבל עשיתי את זה! כאן אומר המפתח השני: כסו את הפיתוח הזה בבדיקות. הייתה תמיהה בעיניים. כך הכרתי את ספריית JUnit בלחימה. המהות של בדיקת יחידות: יש לך נתוני קלט, מעבירים אותם למתודה ומשווים את הנתונים שהתקבלו עם התוצאה הנכונה (צור משתנה עם התוצאה הנכונה). כתבתי 11 מקרים לספרייה שלי, בהם בדקתי שהאפליקציה לא קרסה עם NullPointException ושהיא מסתירה נכון נתונים עם כל סוג של קינון. לאחר השלמת משימה זו, קיבלתי אינטגרציה חדשה, שייחודיותה הייתה הבאה: הייתי צריך לייצא שעועית אביבית מספרייה חיצונית. בשלב זה הפכתי ללקוח קבוע של אתר Stack OverFlow. פעם אחת אפילו מפתח ספרינג רשמי הגיב. לאחר יישום השילוב הזה, תקופת הניסיון שלי הגיעה לסיומה. הבוס בירך אותי על שעברתי את תקופת המבחן, והתחלתי לכתוב את המאמר הזה. בסך הכל, לקח 8 שעות לכתוב מאמר זה) תודה על תשומת הלב, אני מקווה שהמאמר היה שימושי. שמות משתנים קצרים מדי). לאחר שהבסתי את CheckStyle, שלחתי את הקוד שלי לבדיקה למפתחים בכירים ותיקנתי את הטעויות שלי תוך שבוע. בכלל, היה לי מזל גדול שבצוות שלי היה לי קשר טוב עם המפתח השני, שהסביר הרבה דברים. חודש לאחר המכשיר, הושקה האינטגרציה הראשונה שלי בעמדה אינטגרציה-פונקציונלית (נבדקת העבודה של כל האפליקציות ביחד), והכל עבד שם! ניצחון! המשימה הבאה הייתה ליצור מחלקה שתאפשר הסתרת נתונים על ידי מפתח ב-json. לדוגמה: יש json {text:"JavaRush"} -> עיבוד -> {text:"****Rush"}. יש כאן שני סיבוכים: ייתכן שיש קינון {text:{mytext:"JavaRush"}}, ומה שיותר לא נעים זה קינון בתוך המערך: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush" "} ] } (כמובן שאתה צריך להסתיר את כל text.mytext). פתרון הבעיה הזו התברר כדי קשה, אבל עשיתי את זה! כאן אומר המפתח השני: כסו את הפיתוח הזה בבדיקות. הייתה תמיהה בעיניים. כך הכרתי את ספריית JUnit בלחימה. המהות של בדיקת יחידות: יש לך נתוני קלט, מעבירים אותם למתודה ומשווים את הנתונים שהתקבלו עם התוצאה הנכונה (צור משתנה עם התוצאה הנכונה). כתבתי 11 מקרים לספרייה שלי, בהם בדקתי שהאפליקציה לא קרסה עם NullPointException ושהיא מסתירה נכון נתונים עם כל סוג של קינון. לאחר השלמת משימה זו, קיבלתי אינטגרציה חדשה, שייחודיותה הייתה הבאה: הייתי צריך לייצא שעועית אביבית מספרייה חיצונית. בשלב זה הפכתי ללקוח קבוע של אתר Stack OverFlow. פעם אחת אפילו מפתח ספרינג רשמי הגיב. לאחר יישום השילוב הזה, תקופת הניסיון שלי הגיעה לסיומה. הבוס בירך אותי על שעברתי את תקופת המבחן, והתחלתי לכתוב את המאמר הזה. בסך הכל, לקח 8 שעות לכתוב מאמר זה) תודה על תשומת הלב, אני מקווה שהמאמר היה שימושי. פתרון הבעיה הזו התברר כדי קשה, אבל עשיתי את זה! כאן אומר המפתח השני: כסו את הפיתוח הזה בבדיקות. הייתה תמיהה בעיניים. כך הכרתי את ספריית JUnit בלחימה. המהות של בדיקת יחידות: יש לך נתוני קלט, מעבירים אותם למתודה ומשווים את הנתונים שהתקבלו עם התוצאה הנכונה (צור משתנה עם התוצאה הנכונה). כתבתי 11 מקרים לספרייה שלי, בהם בדקתי שהאפליקציה לא קרסה עם NullPointException ושהיא מסתירה נכון נתונים עם כל סוג של קינון. לאחר השלמת משימה זו, קיבלתי אינטגרציה חדשה, שייחודיותה הייתה הבאה: הייתי צריך לייצא שעועית אביבית מספרייה חיצונית. בשלב זה הפכתי ללקוח קבוע של אתר Stack OverFlow. פעם אחת אפילו מפתח ספרינג רשמי הגיב. לאחר יישום השילוב הזה, תקופת הניסיון שלי הגיעה לסיומה. הבוס בירך אותי על שעברתי את תקופת המבחן, והתחלתי לכתוב את המאמר הזה. בסך הכל, לקח 8 שעות לכתוב מאמר זה) תודה על תשומת הלב, אני מקווה שהמאמר היה שימושי. פתרון הבעיה הזו התברר כדי קשה, אבל עשיתי את זה! כאן אומר המפתח השני: כסו את הפיתוח הזה בבדיקות. הייתה תמיהה בעיניים. כך הכרתי את ספריית JUnit בלחימה. המהות של בדיקת יחידות: יש לך נתוני קלט, מעבירים אותם למתודה ומשווים את הנתונים שהתקבלו עם התוצאה הנכונה (צור משתנה עם התוצאה הנכונה). כתבתי 11 מקרים לספרייה שלי, בהם בדקתי שהאפליקציה לא קרסה עם NullPointException ושהיא מסתירה נכון נתונים עם כל סוג של קינון. לאחר השלמת משימה זו, קיבלתי אינטגרציה חדשה, שייחודיותה הייתה הבאה: הייתי צריך לייצא שעועית אביבית מספרייה חיצונית. בשלב זה הפכתי ללקוח קבוע של אתר Stack OverFlow. פעם אחת אפילו מפתח ספרינג רשמי הגיב. לאחר יישום השילוב הזה, תקופת הניסיון שלי הגיעה לסיומה. הבוס בירך אותי על שעברתי את תקופת המבחן, והתחלתי לכתוב את המאמר הזה. בסך הכל, לקח 8 שעות לכתוב מאמר זה) תודה על תשומת הלב, אני מקווה שהמאמר היה שימושי.
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION