שלב 1. אימון
הגעתי ל-JavaRush במודע: מחירון חודשי הולם, מבנה ברור של החומר, תרגול רב ונוכחות הקהילה שלי. הנקודה הראשונה ברורה, אבל לימוד שפה ללא מבנה הוא די קשה, והכשרה כזו בהחלט תשאיר אדם עם פערים רציניים ב-Java Core. הניסיון של ראיונות ומפרטים טכניים מראה שניתן להשתמש בשאלות על "הליבה" לכל דבר: החל מהסטה סיבית ויציקה של גנריות ועד ל-IO והסדרה. תרגול הוא חובה; אני עדיין יכול להבין ולזכור רק חצי מהדברים אם כתבתי אותם בעצמי. ובכן, הקהילה: פתרת את הבעיה - תתפאר בזה בתגובות; אם לא החלטתם, אתם מוזמנים לשאול שאלות, אבל סביר להניח שאף אחד לא ייתן לכם פתרון מוכן. וחזרתי למאמרים מותאמים אישית בנושאים חינמיים גם לאחר סיום הקורס, יש שם הרבה דברים טובים להתחיל איתם (במיוחד ההתנסות הראשונה עם מסגרות באמצעות דוגמאות שלב אחר שלב + שאלות לראיונות). באופן כללי, אני אסיר תודה לפרויקט הזה על הבסיס שקיבלתי, אבל לא הייתי מסתמך רק על JavaRush - אותו Shildt הטוב מכולם הולך "חופף" לנושא הנלמד, ולעתים קרובות חושף כמה נקודות. הרבה כבר נאמר בביקורות על משימות שלפעמים מקדימות את התיאוריה ומאלצות אותך לגוגל. מבחינתי זה יותר פלוס מאשר מינוס - וזו לא עובדה שעכשיו המצב זהה לזה שלמדתי. עצה מיידית למי שכמוני נכנס לג'אווה "מאפס" : בשלב מסוים אתה עלול להשתעמם או להתקשות:-
לכולם קשה להתחיל מאפס, חלילה, רק 5% מהאנשים מגיעים לסוף הקורס. המשימה שלך היא להפוך לאחד מהם.
-
התעניינתי אחרי חודש-חודשיים, כשהמשימות נעשו יותר קשות ומעניינות. להיות סבלני.
- העיקר הוא התקדמות שבועית. אחרי שבועיים של מנוחה כבר קשה לחזור, ולא כולם יכולים לכתוב כל יום כמה חודשים ברציפות. תן לעצמך הגבלה של שעות לשבוע - למשל, 15. אתה יכול לקודד ל-1.5 שעות בכל יום חול ועוד 3-4 שעות בשני סופי השבוע, או שאתה יכול לקחת כמה ערבים חופש, אבל "מגבלת סוף השבוע" תהיה להגביר. כך, לוח הזמנים יהיה גמיש, אך קבוע. כמובן שאז ניתן יהיה למדוד עבודה לפי משימות ופרוייקטים, אבל ברמת התחביר והקרנל, שעות יספיקו.
שלב 2. חינוך עצמי
אז, לא קיבלתי את ההתמחות: השארתי רק כמה ימים על הדרישות הטכניות עד לסיום הגיוס לקבוצה ולא הספקתי להבין את הדרישות - היו יותר מדי מילים לא מוכרות. כי לא רציתי לחכות עוד שלושה חודשים, החלטתי להמשיך הלאה בעצמי. למרבה המזל, ישנם מדריכים ומדריכי וידאו לכל המסגרות הפופולריות. במהלך החודשים הבאים, עסקתי ב-Spring MVC, Spring Boot + Data, Spring Security, Hibernate, jUnit, Maven, Git, RDBMS, שלטתי ב-SQL וניסיתי לחבר את הכל לכדי שלם אחד. שישה חודשים לאחר מכן, היו לי פרויקטים שמפחידים להסתכל עליהם עכשיו, אבל רכשתי ניסיון מעשי בשימוש במסגרות "למבוגרים" ו-GitHub שניתן להציג לבקשת מעסיק פוטנציאלי. עצה :-
ככל שתלמד מוקדם יותר על .gitignore, כך ייטב. ;)
-
מדריכים רבים כוללים מספר מסגרות בו זמנית; השתמש בזה והוסף משלך. כתבנו חנות מקוונת באמצעות Maven + Spring Boot + Data - הוסף הרשאות, בדיקות יחידות ורישום.
-
עבור פרויקטים באינטרנט, אתה יכול לקחת תבניות חזיתיות בחינם מהאינטרנט - הן יותר נעימות לעבודה, הן נראות טוב יותר כצילומי מסך ב-README ב-Git. במקביל, תוכלו לזכור HTML ו-CSS – סביר להניח שתרצו לתקן את הסגנונות והפריסה.
מה היה חסר לי (מאוחר יותר נכוויתי במהלך ראיון)
-
אלגוריתמים. כדי למנוע את הטעויות שלי, אני ממליץ מיד על ספר קצר ברוסית, "אלגוריתמים גרושים". מה המורכבות של האלגוריתמים, ממה זה מורכב, למה קוויקסורט לא מספיק, מבוא לתורת הגרפים - הכל שם ובשפה הכי מובנת.
-
אוספים "מתחת למכסה המנוע". אני לא זוכר אם זה היה ב-JavaRush, אבל זה שימושי לדעת איך HashMap.get() עובד או מדוע לא מובטח ש-HashSet ישמר סדר אלמנטים. שוב, אילו אוספים בטוחים ומדוע.
-
SQL. אתה צריך לפחות עד JOINs - מה הם, איך הם עובדים, היכולת לכתוב SELECT על שתי טבלאות על נייר תוך כדי תנועה. אני ממליץ על www.sql-ex.ru: זה ייקח אותך לרמה הרצויה תוך יום או יומיים.
-
ליבת אביב: איזה סוג של הערות יש, מהו הקשר, איך נוצרים שעועית, איזה שעועית סקופ בטוח בשרשור, ואיך לפתור הזרקה הדדית - כל שאלות הראיון. איך מחזירים דף, איך מחזירים JSON וכו'. אני קורא כרגע את "אביב 5 למקצוענים" ברוסית, אבל באופן כללי הם ממליצים על "אביב בפעולה".
שלב 3. חיפוש עבודה
למעשה, בחודשיים הראשונים לאחר השלמת פרויקטים ביתיים, שלחתי כ-30 תגובות למשרות פנויות שונות של Junior\Trainee (דרך HH, LinkedIn, סוכנויות גיוס), עם כמעט אפס תוצאות. התמקדתי רק במשרות פנויות ללא ניסיון, ציינתי בכנות מחסנית מוכרת לי וכתבתי על יכולת הלמידה הגבוהה שלי במכתבים נלווים. התוצאה היא שתי שיחות (אחת מהן הסתיימה מיד באנגלית שלפני הביניים שלי), עוד שתי חברות שלחו מפרט טכני, הייתה רק "פגישה" אחת, ואז הייתי שם לבד ופתרתי בעיות באלגוריתמים על פיסת נייר, לאחר מכן HR פשוט לקח את הניירות ו"נתקשר אליך". ניסיתי לקבל כמה התמחויות (ללא תשלום ובתשלום מותנה): עשיתי את המפרט הטכני, אבל לא עברתי את הביטוח הלאומי הסופי; אבל עכשיו אני יכול לומר שהחניכים בהחלט מגויסים על ידי T-Systems, CFT, Andersen ו-EPAM (יש להם ביקורות מעורבות, תחליט בעצמך). מבחינתי, זו דרך טובה להיכנס לתחום אם יש לך אפשרות לשבת בלי הכנסה כמה חודשים ולא למות =) בכלל, אחרי החוויה הזו קצת נכנסתי לדיכאון, ושמתי את כל הסיפור עם החיפוש בהפסקה במשך כמעט חצי שנה - המשכתי לעבוד על הפרופיל הקודם, כתבתי כמה אפליקציות רק בשביל הכיף, אבל אפילו לא פרסמתי אותן ב-Git. עד שפגשתי מכר אחד, שסיפרתי לו כלאחר יד על הכשלים במשרות פנויות: באותה תקופה הוא כבר עבד כמפתח ביניים, אבל הוא התחיל באותו אופן - בלימוד עצמי. מכר נתן לי כמה המלצות , בהן השתמש בעצמו ואשר מאוד עזרו לי בחיפוש העבודה שלי בעתיד. אם אתה עוקב אחריהם או לא זה תלוי בך, כי... הם, בדרך כלשהי, לא לגמרי כנים. אז, ציטוטים נוספים:-
בכל אופן, ספק לעצמך 6+ חודשים של ניסיון מסחרי בקורות החיים שלך: התמחות, פרויקטי גמר, פרילנסרים, עבודה מרחוק - מה שלא יהיה. זה יעזור מאוד בשלב של סינון ראשוני של קורות חיים על ידי משאבי אנוש;
-
הסר את המילה ג'וניור ומשכורת צפויה מהקורות חיים שלך; פשוט השאירו אותו כמפתח Java, ודנו על הכסף בנפרד עם כל חברה;
-
נסה לתת ל-HR שם את "המזלג" של השכר המוצע לפני שתציין את הציפיות שלך. אם חברה מציעה 80-120 אלף, ואתה מחפש 40 אלף או יותר, חלק מהסלקטורים יתייחסו אליך בזלזול;
-
הגש מועמדות לכל המשרות הפנויות המתאימות למחסנית שלך, גם אם הן דורשות 1-3 שנות ניסיון מסחרי.
-
כלול בקורות החיים שלך את כל ערימת השפות, הטכנולוגיות והמסגרות שאיתם עבדת.
-
הירשמו בלינקדאין – יש שם באמת הרבה אנשי משאבי אנוש מחברות שונות. מלאו את הפרופיל שלכם בקפידה – למעשה, אלו גם קורות החיים שלכם. כדי לפתח את רשת אנשי הקשר שלך, הוסף LIONs הרלוונטיים לפרופיל שלך; הם מקבלים בקשות מכל המשתמשים.
-
נסה את עצמך במבחני ג'אווה בחינם - לעתים קרובות הם ניתנים על הנייר לפני הראיון לג'וניור. עדיף להתכונן מראש.
-
הם תמיד שואלים על האוספים: אילו מהם יש, במה הם שונים, מתי הזמן הטוב ביותר להשתמש בהם.
-
תמיד על מחלקות וממשקים מופשטים - האם יש להם שיטות, שדות, אילו, האם הם יכולים לעבור בירושה וכו'.
-
כמעט תמיד על multithreading - מה השתמשת בעבודה שלך, מילות מפתח, שיטות, האם אתה מכיר את util.concurrent.
-
לעתים קרובות כאשר עובדים עם זיכרון - הערימה, הערימה, והאם המחרוזות הללו יהיו שווים, והאובייקטים הללו, למה.
-
לפעמים על אלגוריתמים - איזה מהם אתה מכיר, איזו מורכבות, למה, אתה יכול לכתוב אלגוריתם עכשיו.
-
לפעמים מבוסס על דפוסים - אילו אתה מכיר, באילו אתה משתמש, כתוב יחיד או מפעל.
-
לפעמים ב-SQL - סוגי JOIN, מהי טרנזקציה, איך מבצעים אותה ב-JDBC, כותבים שאילתה קצרה.
-
דף אנשי קשר עסקיים בפרופיל Salesforce עם עריכה והוספת רשומות חדשות;
-
הדמיית מעלית בבניין רב קומות באמצעות Spring State Machine עם בקרת קונסולה;
-
אפליקציית אנדרואיד המבוססת על ספריית LibGDX עם פלט טקסט תו אחר תו בעת לחיצה על כפתור;
-
חיקוי REST של שיתוף רכב, עם הוספת לקוחות באמצעות בקשת HTTP והחזרת JSON;
-
בעיה של מיון גרף לא מכוון דרך תא פנוי;
-
חיפוש משולשים שווה שוקיים באמצעות קואורדינטות מקובץ;
-
Refactoring של קוד מוגמר באמצעות Stream API;
-
מחשבון ממשק משתמש עם תמיכה בביטויים טרינריים;
-
מרוץ שרשורים עם כתיבת התוצאות לקובץ.
-
נסו לא רק להשלים את המשימה, אלא גם לוודא שהקוד תואם את עקרונות ה-OOP.
-
בדוק את היעילות של הקוד שלך - פעם דחו אותי בגלל שבין השאר השתמשתי ב-PrintStream במקום BufferedWriter.
-
תכננו את זמן הביצוע שלכם עם מרווח של 50% - עדיף להתחיל ולסיים מוקדם יותר מאשר לעשות דחיפה ב-8 בבוקר של המועד האחרון.
GO TO FULL VERSION