ETAP 1. Szkolenie
Do JavaRush trafiłem świadomie: odpowiedni miesięczny cennik, przejrzysta struktura materiału, dużo praktyki i obecność własnej społeczności. Pierwsza kwestia jest jasna, ale nauka języka bez struktury jest dość trudna, a takie szkolenie z pewnością pozostawi osobę z poważnymi brakami w Java Core. Doświadczenia wynikające z wywiadów i specyfikacji technicznych pokazują, że pytania dotyczące „rdzenia” można wykorzystać do wszystkiego: od przesuwania bitowego i rzutowania typów generycznych po operacje wejścia/wyjścia i serializację. Praktyka jest koniecznością; Nadal rozumiem i pamiętam tylko połowę rzeczy, jeśli sam je napisałem. Cóż, społeczność: rozwiązałeś problem - pochwal się tym w komentarzach; Jeśli jeszcze się nie zdecydowałeś, możesz zadawać pytania, ale najprawdopodobniej nikt nie poda Ci gotowego rozwiązania. A do niestandardowych artykułów na darmowe tematy wracałem nawet po ukończeniu kursu, jest tam sporo dobrych rzeczy na początek (zwłaszcza pierwsze doświadczenia z frameworkami na przykładach krok po kroku + pytania do wywiadów). Ogólnie rzecz biorąc, jestem wdzięczny temu projektowi za otrzymaną bazę, ale nie polegałbym tylko na JavaRush - ten sam Shildt najlepiej „nakłada się” na badany temat i często ujawnia pewne punkty. W recenzjach powiedziano już wiele o zadaniach, które czasami wyprzedzają teorię i zmuszają do korzystania z Google. Dla mnie to raczej plus niż minus - i nie jest faktem, że teraz sytuacja jest taka sama jak wtedy, gdy studiowałem. Natychmiastowa rada dla tych, którzy tak jak ja rozpoczynają przygodę z Javą „od zera” : na pewnym etapie możesz się znudzić lub mieć trudności:-
Każdemu jest ciężko zaczynać od zera, nie daj Boże, tylko 5% osób dociera do końca kursu. Twoim zadaniem jest stać się jednym z nich.
-
Moje zainteresowanie pojawiło się po miesiącu lub dwóch, kiedy zadania stały się trudniejsze i ciekawsze. Bądź cierpliwy.
- Najważniejsze są tygodniowe postępy. Po dwóch tygodniach odpoczynku powrót jest już trudny, a nie każdy jest w stanie pisać codziennie przez kilka miesięcy z rzędu. Ustal sobie limit godzin w tygodniu – na przykład 15. Możesz kodować przez 1,5 godziny w każdy dzień powszedni i kolejne 3-4 godziny w oba weekendy, albo możesz wziąć kilka wieczorów wolnych, ale „limit weekendowy” będzie zwiększyć. Dzięki temu harmonogram będzie elastyczny, ale regularny. Oczywiście wtedy będzie można mierzyć pracę zadaniami i projektami, ale na poziomie składni i jądra wystarczą godziny.
ETAP 2. Samokształcenie
Więc nie dostałem się na staż: zostawiłem tylko kilka dni na wymaganiach technicznych do końca rekrutacji do grupy i nie miałem czasu na wymyślenie wymagań - było za dużo nieznanych słów. Ponieważ Nie chciałam czekać kolejnych trzech miesięcy, postanowiłam działać dalej. Na szczęście istnieją przewodniki i samouczki wideo dotyczące wszystkich popularnych frameworków. Przez kolejne kilka miesięcy zajmowałem się Spring MVC, Spring Boot + Data, Spring Security, Hibernate, jUnit, Maven, Git, RDBMS, opanowałem SQL i próbowałem złożyć to wszystko w jedną całość. Pół roku później miałem projekty, na które teraz aż strach patrzeć, ale zdobyłem praktyczne doświadczenie w korzystaniu z „dorosłych” frameworków i GitHuba, który można było pokazać na prośbę potencjalnego pracodawcy. Porada :-
Im szybciej dowiesz się o .gitignore, tym lepiej. ;)
-
Wiele przewodników zawiera kilka frameworków jednocześnie; użyj tego i dodaj własne. Sklep internetowy napisaliśmy przy użyciu Maven + Spring Boot + Data - dodaj autoryzację, testy jednostkowe i logowanie.
-
Do projektów webowych można pobrać darmowe szablony frontendowe z Internetu - przyjemniej się z nimi pracuje, lepiej wyglądają jako zrzuty ekranu w pliku README na Git. Jednocześnie będziesz w stanie zapamiętać HTML i CSS - prawdopodobnie będziesz chciał poprawić style i układ.
Czego mi brakowało (później spaliłem się podczas rozmowy kwalifikacyjnej)
-
Algorytmy. Aby uniknąć moich błędów, od razu polecam krótką książkę w języku rosyjskim „Grocking Algorithms”. Jaka jest złożoność algorytmów, na czym polega, dlaczego szybkie sortowanie nie wystarczy, wprowadzenie do teorii grafów – wszystko jest tam i w jak najbardziej zrozumiałym języku.
-
Kolekcje „pod maską”. Nie pamiętam, czy było to w JavaRush, ale warto wiedzieć, jak działa HashMap.get() i dlaczego HashSet nie gwarantuje zachowania kolejności elementów. Powtórzę jeszcze raz – które kolekcje są bezpieczne dla wątków i dlaczego.
-
SQL-a. Potrzebujesz co najmniej JOIN - czym są, jak działają, możliwość zapisywania w locie SELECT na dwóch tabelach na papierze. Polecam www.sql-ex.ru: w ciągu jednego lub dwóch dni przeniesie Cię na pożądany poziom.
-
Spring Core: jakie są adnotacje, jaki jest kontekst, jak powstają fasole, który Bean Scope jest bezpieczny dla wątków i jak rozwiązać wzajemne wstrzykiwanie - wszystkie pytania podczas rozmowy kwalifikacyjnej. Jak zwrócić stronę, jak zwrócić JSON itp. Aktualnie czytam „Wiosnę 5 dla profesjonalistów” po rosyjsku, ale ogólnie polecają „Wiosnę w akcji”.
ETAP 3. Poszukiwanie pracy
Właściwie w ciągu pierwszych kilku miesięcy po ukończeniu projektów domowych wysłałem około 30 odpowiedzi na różne oferty pracy Junior\Trainee (za pośrednictwem HH, LinkedIn, agencji rekrutacyjnych), z niemal zerowym skutkiem. Skupiłem się wyłącznie na ofertach pracy bez doświadczenia, szczerze wskazałem znajomy mi stos i pisałem w listach motywacyjnych o moich wysokich zdolnościach uczenia się. Efektem są dwie rozmowy telefoniczne (jedna z nich od razu zakończyła się w moim średniozaawansowanym angielskim), dwie kolejne firmy przesłały specyfikacje techniczne, odbyło się tylko jedno „spotkanie”, a potem byłem tam sam, rozwiązując problemy dotyczące algorytmów na kartce papieru, po czym HR po prostu zabrał papiery i „Zadzwonimy do ciebie”. Starałem się o kilka staży (bezpłatnych i warunkowo płatnych): zrobiłem specyfikację techniczną, ale nie wyszedłem poza ostateczne zabezpieczenie społeczne; ale teraz mogę powiedzieć, że stażystów na pewno rekrutują T-Systems, CFT, Andersen i EPAM (mają mieszane recenzje, zdecyduj sam). Jeśli chodzi o mnie, jest to dobry sposób na wejście na pole, jeśli masz możliwość siedzenia bez dochodów przez kilka miesięcy i nie umrzeć =) Ogólnie rzecz biorąc, po tym doświadczeniu wpadłem w lekką depresję i wstrzymałem całą historię z poszukiwaniami przez prawie sześć miesięcy - kontynuowałem pracę na poprzednim profilu, pisałem kilka aplikacji dla zabawy, ale nawet nie umieściłem ich na Gicie. Aż spotkałem jednego znajomego, któremu mimochodem opowiedziałem o porażkach z wakatami: w tym czasie pracował już jako średni programista, ale zaczynał w ten sam sposób – od samokształcenia. Znajomy dał mi kilka rekomendacji , z których sam skorzystał i które bardzo pomogły mi w przyszłości w poszukiwaniu pracy. To, czy je zastosujesz, czy nie, zależy od Ciebie, ponieważ... w pewnym sensie nie są do końca szczerzy. Zatem dalsze cytaty:-
W jakikolwiek sposób zapewnij sobie w swoim CV ponad 6-miesięczne doświadczenie komercyjne: staże, projekty dyplomowe, freelancing, praca zdalna – cokolwiek. Będzie to bardzo pomocne na etapie wstępnej selekcji CV przez HR;
-
usuń ze swojego CV słowo Junior i oczekiwane wynagrodzenie; po prostu zostaw to jako Java Developer i omów pieniądze indywidualnie z każdą firmą;
-
postaraj się, aby dział HR określił „widelec” proponowanej pensji, zanim określisz swoje oczekiwania. Jeśli firma oferuje 80-120 tys., a Ty szukasz 40 tys. i więcej, niektórzy selekcjonerzy potraktują Cię z pogardą;
-
Aplikuj na wszystkie oferty pracy, które odpowiadają Twojemu stosowi, nawet jeśli wymagają 1-3 lat doświadczenia komercyjnego.
-
Uwzględnij w swoim CV cały stos języków, technologii i frameworków, z którymi pracowałeś.
-
Zarejestruj się na LinkedIn – jest tam naprawdę dużo osób HR z różnych firm. Wypełnij dokładnie swój profil – tak naprawdę jest to także Twoje CV. Aby rozwijać swoją sieć kontaktów, dodaj LIONy odpowiednie dla Twojego profilu, akceptują one prośby od wszystkich użytkowników.
-
Spróbuj swoich sił w bezpłatnych testach Java – często podawane są one w formie papierowej przed rozmową kwalifikacyjną Junior. Lepiej przygotować się wcześniej.
-
Zawsze pytają o kolekcje: jakie są, czym się różnią, kiedy najlepiej z nich korzystać.
-
Zawsze na klasach abstrakcyjnych i interfejsach - czy mogą mieć metody, pola, jakie, czy można je dziedziczyć itp.
-
Prawie zawsze na wielowątkowości - to, czego używałeś w swojej pracy, słowa kluczowe, metody, znasz util.concurrent.
-
Często podczas pracy z pamięcią - sterta, stos i czy te ciągi będą równe, a te obiekty, dlaczego.
-
Czasami o algorytmach - jakie znasz, jaką złożoność, dlaczego, możesz już napisać algorytm.
-
Czasem na podstawie wzorców - które znasz, jakich używasz, napisz singleton lub fabrykę.
-
Czasami w SQL - rodzaje JOIN, czym jest transakcja, jak ją przeprowadzić w JDBC, napisz krótkie zapytanie.
-
Strona kontaktów biznesowych profilu Salesforce z edycją i dodawaniem nowych rekordów;
-
symulacja windy w budynku wielopiętrowym z wykorzystaniem Spring State Machine ze sterowaniem konsolowym;
-
Aplikacja na Androida oparta na bibliotece LibGDX wyświetlająca tekst znak po znaku po naciśnięciu przycisku;
-
Imitacja REST carsharingu, z dodawaniem klientów poprzez żądanie HTTP i zwracaniem JSON;
-
problem sortowania grafu nieskierowanego przez wolną komórkę;
-
szukać trójkątów równoramiennych na podstawie współrzędnych z pliku;
-
refaktoryzacja gotowego kodu przy użyciu Stream API;
-
Kalkulator interfejsu użytkownika z obsługą wyrażeń trójskładnikowych;
-
wyścig wątków z zapisem wyników do pliku.
-
Staraj się nie tylko wykonać zadanie, ale także upewnić się, że kod jest zgodny z zasadami OOP.
-
Sprawdź wydajność swojego kodu - raz zostałem odrzucony, ponieważ między innymi użyłem PrintStream zamiast BufferedWriter.
-
Zaplanuj czas realizacji z marginesem 50% – lepiej zacząć i zakończyć wcześniej, niż robić git push o ósmej rano w wyznaczonym terminie.
GO TO FULL VERSION