JavaRush /Blog Java /Random-PL /Trik, czyli jak zdobyć pracę jako średni programista Java...
Юрий
Poziom 30
Москва

Trik, czyli jak zdobyć pracę jako średni programista Java bez doświadczenia w Javie

Opublikowano w grupie Random-PL
Pozdrowienia dla wszystkich studentów i profesjonalistów Java. Być może moja historia będzie dla jednych przykładem jak to robić, a dla innych – jak tego nie robić. Jest 19 października 2021, a dzisiaj zakończyłem okres próbny (3 miesiące) jako środkowy programista Java w dużej firmie. Nie miałem wcześniej żadnego doświadczenia w programowaniu w Javie. Do 4 czerwca 2020 r. o Javie nie wiedziałem nic. Kiedy zostałem zatrudniony jako Javaista, obiecałem, że jeśli zdam okres próbny, napiszę historię sukcesu. Artykuł ten zostanie podzielony na dwie logiczne części: Przebieg kariery zawodowej ( rozdziały 1-5, niezwiązane z Javą, ale w którym możesz zdobyć wiedzę o swojej karierze). Zostać Javaistą (rozdziały 6-9 - nauka Java, rozmowy kwalifikacyjne, zdobycie pracy, pierwsze prawdziwe doświadczenie). <h3>Rozdział 1. Ekonomista</h3>Aby zrozumieć, z jakim poziomem wiedzy przyszedłem do JavaRush, muszę przedstawić notę ​​biograficzną o sobie. 2013, listopad, godzina 8:00. Siedzę w kawiarni na Tagance i powtarzam instrukcje SQL. Za godzinę mam rozmowę kwalifikacyjną na stanowisko czołowego ekonomisty w dziale finansowym banku. To jedyna rozmowa kwalifikacyjna, na którą zostałam zaproszona i muszę dać z siebie 100%. Dla niego przyleciałem z Petersburga i zostałem u krewnych w kuchni, żeby nie wydawać i tak już niewielkich oszczędności. Mija 30 minut, naleśniki z szynką i serem są zjedzone i trzeba ruszać w stronę naszego ukochanego marzenia. Ale wszystko się trzęsie. Co się stanie, jeśli nie uda mi się przejść rozmowy kwalifikacyjnej? OK, nie było. Idę do banku, dostaję przepustkę i czekam na rozmówców w sali konferencyjnej. Czas płynie bardzo długo. Przychodzi mężczyzna w wieku około 35 lat i kobieta w tym samym wieku. Przedstawiają się i proszą o opowiedzenie o sobie: „Yuri, to przyjemność”. Mam 21 lat, studiuję zaocznie na uniwersytecie w Petersburgu, przez 3 miesiące pracowałam jako kasjerka w banku. Zdałem sobie sprawę, że nie po to się studiuję, zacząłem przyglądać się rynkowi pracy i zobaczyłem, że w Moskwie ekonomiści mają SQL jako wymóg. Więc się tego uczyłem, chodziłem na kursy (Administracja MS SQL - po to byłem, po to poszedłem), a ty do mnie zadzwoniłeś. Opowiadają o firmie, czym się zajmują (większość słów jest niezrozumiała), a następnie proszą Cię o przystąpienie do testu. Test składa się z 3 pytań dotyczących SQL: 1. Mając tabelę, wyciągnij wszystkie rekordy o id = 10. 2. Mając dwie tabele, połącz je i wyświetl kolumnę z każdej. 3. Pogrupuj działy i podaj liczbę pracowników każdego działu. Z wielkim wstydem piszę te prośby. Następnie następuje omówienie moich oczekiwań w stosunku do pracy. I mówią mi magiczne zdanie: „Dziękujemy za rozmowę, oddzwonimy”. Mija tydzień, a oni proponują mi przyjechać do nich do pracy. Euforia, szok, radość! I za jakie pieniądze: 70 tysięcy rubli w ręku! Tak, będę bogaty! Przyjeżdżam do Moskwy, osiedlam się, wynajmuję pokój w centrum. Pierwsze dni to euforia. Po 10 dniach zaczyna się świadomość: dokąd przyszedłem? Kompletnie nic nie rozumiem! Co miesiąc musiałem przygotowywać raporty zarządcze dla całego banku. U mnie oczywiście było tak samo jak u Ciebie, drogi czytelniku. Terminy kredyt międzybankowy, swapy, alokacja wydatków, koszty itp. postrzegałem jako zaklęcia w języku łacińskim. Po drodze musiałem opanować techniczną stronę zagadnienia: MS Access (całe raportowanie odbywało się tam poprzez VBA), MS SQL (jako nowy magazyn zamiast Access), Oracle (które początkowo nazwałem Oracle, wywołując histerię wśród programistów). I nagle zaczynam rozumieć, że strona techniczna jest dla mnie o wiele bardziej interesująca. Zdarzają się próby tworzenia skomplikowanych zapytań (w rezultacie baza danych zawiesza się na moich skryptach, a wściekli administratorzy biegają po okolicy, próbując dowiedzieć się, kto to zrobił). Ale główną pracą są finanse, co po prostu zaczyna mnie wkurzać. Po półtora miesiąca piszę rezygnację, bo nie mogę dać żadnych wyników (a oni, szczerze mówiąc, niczego ode mnie nie oczekiwali). Szef działu finansowego podrze to i mówi: „nie zajmuj się bzdurami”. Miesiąc później znów piszę oświadczenie, a szef wydziału, zszokowany taką bezczelnością (który później został prezesem zarządu banku), podpisuje się z ogromnym zdziwieniem: facet ma 21 lat, bez wyższego wykształcenia wykształcenie, dostawali pensję i zaufanie, a on tak się zachowuje. Powodami zwolnienia były jeszcze dwa czynniki: szef, na którego arogancję nie mogłam spokojnie zareagować oraz niewygodne krzesło, od którego zaczęły mnie boleć plecy. To niezwykle zabawne, ale oto motyw. Kiedy odchodziłem, myślałem, że teraz poczuję się jeszcze bardziej komfortowo. Ale tego tam nie było. <h3>Rozdział 2. 70 wywiadów</h3>Wychodząc z banku, wziąłem głęboki oddech. „Załatwię to w ten sposób, wszyscy będą zdumieni”. Rozmowy kwalifikacyjne były zaplanowane, pensje za nie wyższe i wydawało się, że nie będzie potrzeby zajmować się reportażem. Są 4 rozmowy kwalifikacyjne i nikt mnie nie zatrudnia. 5, 6 wywiadów - to samo. Mieszkałem z dziewczyną w wynajętym pokoju, a ona dostała pracę i mogła pokryć mój brak dochodów. Ale nadal nie miałem pojęcia, jak długo będę pozbawiony dochodów. Chodziłem na rozmowy kwalifikacyjne (praca w charakterze analityka), na których pytano głównie o SQL i VBA. Dla tych, którzy nie są świadomi, VBA jest językiem programowania w programach Excel, Access i innych produktach MS Office. Odbywa się 10 rozmów kwalifikacyjnych – nic. 20, 30 - nic. Wszyscy wstydzą się braku doświadczenia i wyższego wykształcenia (co wydaje mi się drobnostką). 40 rozmów kwalifikacyjnych i zaczyna wkradać się rozpacz. W okresie 55-60 rozmów kwalifikacyjnych rozpoczynam naukę 1C. Dziewczyna, która została już żoną, prosi o wyjazd do Petersburga, bo przynajmniej ma tam własne mieszkanie. A podczas 70. rozmowy kwalifikacyjnej zostałem zaproszony do roli administratora bazy danych 1C (z perspektywą zostania programistą 1C) w małej firmie w strefie przemysłowej w Petersburgu za 50 000 rubli. To jest rozwój kariery! <h3>Rozdział 3. Powrót Legendy</h3>Patrząc przez okno minibusa (transport korporacyjny) na szarą strefę przemysłową Petersburga i jadąc godzinę i czterdzieści w jedną stronę, zdałem sobie sprawę, że nie mogę żyć tak. Zainteresowanie 1C zniknęło po pierwszym dotknięciu samodzielnie napisanego systemu. Potrzebny był plan. I dojrzał: wieczorami uczył się SQL, a jednocześnie monitorował dobrze znane miejsce pracy. Ostatecznym powodem zwolnienia była sytuacja: dyrektor generalny nie chciał mnie wypuścić na planowany urlop, mimo że bilety zostały już zakupione. Po wakacjach piszę aplikację i ponownie wysyłam CV na oferty pracy w Moskwie. Po raz kolejny zaproponowano mi rozmowę kwalifikacyjną w dużym banku czasu moskiewskiego. Znów przychodzę do kuchni moich bliskich i idę na rozmowę. Kiedy hr napisał adres, nie mogłem uwierzyć własnym oczom – to był budynek, w którym marzyłem o pracy (w czasie mojej ostatniej rezydencji w Moskwie był dopiero w budowie). Stanowisko nosiło tytuł głównego specjalisty wsparcia systemów informatycznych. Idę do biura Wita mnie mężczyzna około 30-tki w modnej marynarce i jeansach. Weszliśmy na 15. piętro i kiedy zobaczyłam panoramę miasta, zaparło mi dech w piersiach: było widać wszystkie stalinowskie wieżowce. Cały styl budynku był bardzo nowoczesny: w gabinecie szefa znalazły się lodówki na wino, modne akwaria, obraz nagiej kobiety w czarno-białej stylistyce. Wywołało to efekt „wow”. Rozmowa z szefem nie przebiegała tak, jak zwykle: przez około 40 minut opowiadał o tym, co dzieje się w banku. Nic nie zrozumiałem, ale pokiwałem głową. Kiedy zapytałem: kiedy zaczniesz mnie pytać? Nie zwracał uwagi. Po raz kolejny na moje pytanie „kiedy jest rozmowa techniczna?”, odpowiedź brzmiała: „tak, i tak cię zatrudnimy, jeśli sobie nie poradzisz, zwolnimy cię”. Powiedziano to z uśmiechem i zdałem sobie sprawę, że wszystko, marzenie znów się spełniło! <h3>Rozdział 4. Odnalezienie się w IT </h3>Kiedy przybyłem do nowego miejsca, zrozumiałem, dlaczego od razu mnie zatrudnili. Opiszę typowy portret pracownika wydziału: średnia wieku 55 lat, Moskal, wykształcenie na Moskiewskim Uniwersytecie Państwowym, praca w instytucie badań nad obronnością w czasach sowieckich i przejście do sektora bankowego w latach 90., pracuje tu od 20 lat lat. Połowa to mężczyźni, połowa to kobiety. Weszły w całkowity dysonans z otaczającymi wnętrzami. Zajmowaliśmy się utrzymaniem programów raportowych dla księgowości. Oczywiście wszystko to znajdowało się w starożytnych skryptach VBA i SQL napisanych przez programistów pod koniec lat 90. i na początku XXI wieku. Był rok 2015, a automatyzacja odbywała się poprzez MS Access. To znaczy, wyglądało wyjątkowo biednie. Ale był niuans - zapewnili to, czego chciał klient (księgowość). I dokładnie na czas i w wymaganej formie. Tylko oni wiedzieli, jak to działa, i nawet Onotole nie był w stanie wyobrazić sobie zawiłości ich rozwoju. A żaden menadżer IT, nawet przy największych chęciach, nie mógł ich zwolnić – główny księgowy szedł do zarządu banku i bronił każdego pracownika, który służył interesom działu księgowości. Menedżer chciał, żebym odegrał rolę konia trojańskiego: przestudiowałem wszystkie ich rozwój, a następnie przeprowadziłem migrację danych do nowego systemu. Wtedy będzie można zwolnić starych pracowników, a mnie przenieść do nowego systemu. Najpierw zagłębiłem się w ich procesy i przyjrzałem się kodowi VBA. Stopniowo nauczyłem się czytać kod VBA. Rok później już wiedziałem jak napisać sam kod. Typowe zadanie: mając bazę danych, wyodrębnij z niej dane i umieść je w Excelu w określonym formacie. A teraz, jak powiedział Zadornow, weźcie głęboki oddech: cała sprawozdawczość departamentu (a to 50 raportów dziennych i 20 miesięcznych!) była prowadzona ręcznie! Karl, czy rozumiesz, że ludzie codziennie zmieniają daty na +1 rękami w 50 raportach! Siedzą, czekają na wynik jednego raportu przez 1-10 minut i uruchamiają kolejny! Co więcej, codzienne raporty muszą być uruchamiane o określonej godzinie i nie daj Boże się spóźnić! Nie tylko tworzą raporty, ale ręcznie uruchamiają procedury w bazie danych bez użycia zmiennych! Oznacza to, że zamiast używać zmiennej @startDate = '2015-01-01', ręcznie zmienią tę samą datę w 20 miejscach! Po obejrzeniu tego wszystkiego zacząłem uczyć się Pythona, i razem z VBA, SQL i harmonogramem zadań zautomatyzowałem to wszystko w dwa lata. Nie tylko zautomatyzował, ale także przyspieszył wiele raportów: jeśli zrezygnujesz z MS Access + VBA na rzecz MS SQL + TSQL, możesz osiągnąć wielokrotny wzrost produktywności. Mój rekord przyspiesza tworzenie raportów w100raz! Ale moi koledzy byli bardzo niezadowoleni z takiej automatyzacji, więc uznano mnie za wroga ludu (chcieli siedzieć spokojnie do emerytury). Czas mijał i migracja danych przebiegła pomyślnie. Kierownik bardzo mnie cenił: jeśli na początku kariery przychodziłem do pracy na 8 rano, to po pewnym czasie mogłem przychodzić o każdej porze do 12:00, stałe podwyżki wynagrodzenia i stanowiska, wynagrodzenie za pracę w weekendy więcej niż podwójna kwota, taksówka do domu, jeśli spóźniłeś się do pracy, komunikacja mobilna, krótko mówiąc – elita! <h3>Rozdział 5. Złota klatka</h3>Nagle, po 3,5 roku, przychodzi nowy menadżer IT i mówi, że system, do którego przeprowadziłem migrację danych, nie jest już potrzebny. Ale stary system pozostanie. Mój menadżer wspina się po szczeblach kariery i zaprasza mnie do przejścia do bardziej postępowego działu. Na spotkaniu z kierownikiem działu progresywnego rozumiem, że stos technologiczny tego działu jest mi nieznany: Oracle, .net, C#, Linux itp. + Niechęć do potencjalnego szefa. Mówię mojemu menadżerowi, że nie jestem zainteresowany działem progresywnym, a on wygodnie o mnie zapomina. I wtedy pojawia się pytanie: co dalej? Dochody były już przyzwoite, Junior Dev nie zatrudniłby mnie za taką pensję. Po zastanowieniu się nad swoimi umiejętnościami zdałem sobie sprawę, że muszę zająć się uczeniem maszynowym. Wszystko było ciekawe aż do pierwszego spotkania ze statystyką matematyczną, co wywołało w instytucie jedynie niesmak. To wszystko, odrętwienie przez sześć miesięcy! Czas mijał i pewnego dnia podczas spaceru pomyślałem o stronie internetowej, która wyświetlałaby dobre restauracje na mapie Moskwy. Zacząłem uczyć się HTML, CSS, JS. Studiowałem 3 miesiące, nie miałem wiedzy, żeby stworzyć pełnoprawną stronę internetową, ale mogłem ją przećwiczyć w pracy. Narodził się pomysł: stworzyć portal dla księgowych, tak aby za pomocą przycisku mogli pobrać dla siebie dowolny raport. Tworzenie portalu zajęło 2 miesiące, a aplikacja internetowa SPA (Single page application) narodziła się w React js z backendem Node.js. Wyciągnięte z powrotem skrypty SQL (nie wiedziałem o frameworkach takich jak Hibernate), uruchomiłem Pythona i zapisałem dodatkowe informacje w MongoDb (na przykład o użytkownikach witryny). Zewnętrznie strona wyglądała bardzo przyzwoicie (bootstrap 4, modna animacja). Nadal jestem dumny z tego projektu. Kiedy jednak pokazałem swój kod twórcom stron internetowych banku, byli oszołomieni. ANI JEDNEJ KLASY WŁASNEJ! Tylko funkcje, tylko hardkor! Pochwalili mnie, ale powiedzieli, że muszę się jeszcze dużo uczyć, aby zostać programistą typu Middle-Full-Stack Developer. Próbowałem dostać pracę jako analityk, ale nie było żadnych specjalnych ofert. Myślę: nie było mnie tam, zamieszczę swoje CV programisty full-stack. Telefony przychodziły, ale podczas rozmów leciałem jak sklejka nad Paryżem: nie wiedziałem na przykład, czym są HashMap, HashSet i do czego są potrzebne. Nie było zielonego pojęcia o OOP, wzorcach programowania, algorytmach, testowaniu, Gicie. Przypomniało mi się dawno zapomniane uczucie wstydu z powodu nieznajomości podstawowych rzeczy. Nagle pojawia się oferta pracy na stanowisku szefa analityki klientów w firmie finansowej. Tydzień przed zamknięciem kraju z powodu pandemii. Dostałem pracę w firmie finansowej, ale było podwójne uczucie: z jednej strony wysoka pensja była ciepła, z drugiej strony rozwój techniczny był minimalny. Minął tydzień od zainstalowania urządzenia i wprowadzenia pracy zdalnej. Ponieważ dni wolne od pracy nie dotyczyły sektora finansowego, pracowaliśmy normalnie. Nowy szef okazał się bardzo szaloną osobą: zaproponował, że przeszuka Facebooka, stworzy własne sieci neuronowe do badania klientów (bez analityka danych w zespole). Nowym pracownikom zaproponowano naukę Pythona w ciągu tygodnia itp. Normą stały się bezpłatne dni wolne. Głupio było rezygnować: gdzie dostaniesz pracę w czasie pandemii? Cierpliwość skończyła się jednak po 2 miesiącach, kiedy ogłoszono, że premii kwartalnych nie będzie. Niuans jest taki, że kiedy ustalaliśmy wynagrodzenie, w momencie zatrudnienia hr powiedział, że wynagrodzenie jest podzielone na wynagrodzenie (60%) i premię kwartalną (40%), która jest zawsze wypłacana. Stało się jasne, że dokonano złego wyboru i musieliśmy zacząć szukać nowej pracy. <h3>Rozdział 6. Zaczynam naukę języka Java</h3>Pewnego pięknego majowego dnia otrzymuję zaproszenie na rozmowę kwalifikacyjną na stanowisko „Programista”. Firma z branży ubezpieczeniowej potrzebuje osoby, która będzie rozwijać produkty ubezpieczeniowe. Wymagane jest doświadczenie w programowaniu, ale ponieważ jest to „unikalny” rozwój firmy, nie ma potrzeby posiadania konkretnego języka. Git i tak dalej są również potrzebne. Umówiłem się na rozmowę za dwa dni, a w wolnym czasie studiowałem podstawy Gita. Podczas rozmowy kwalifikacyjnej zapytano mnie o Python, JS, Git, SQL. Odpowiedziałem na wszystko oprócz koncepcji „przeciążenia metod” i za 2 tygodnie zostałem zaproszony do pracy. Okazało się, że firma kupiła system już dawno temu. napisany w Javie (front i back), dzięki któremu można tworzyć procesy biznesowe bez znajomości języka programowania (a dokładniej wykorzystując wbudowany język programowania Jelly). Brzmi nieźle, ale tak naprawdę wszystko było zniekształcone. Dygresja liryczna: każda technologia ma swoją epokę i własną skalę. Sporządzanie wszystkich raportów w roku 2000 tylko w Excelu jest fajne. Zrobienie tego samego w 2021 roku nie jest zbyt dobre. Strona firmowa w czystym HTML była fajna w 1999 roku, ale nie w 2021. Zatem technologia, z której korzystała firma w momencie jej powstania (2005 rok) była bardzo fajna - Java odpowiadała zarówno za część serwerową, jak i kliencką (tzw. strony serwletów Java). Co więcej, jeśli utworzysz nowy proces biznesowy (który ma własny interfejs użytkownika), to jest on przechowywany w bazie danych, a nie w kodzie w pliku. Aby zrozumieć, jakie to niewygodne, wyobraź sobie, że piszesz kod Java w Intellij idea, zapisujesz go w bazie danych, a następnie. kiedy chcesz uruchomić swój kod, jądro programu udaje się do bazy danych i stamtąd odczytuje Twój kod. W związku z tym nie można w pełni debugować aplikacji. Wskazówka nr 1: Jeśli chcesz przesłać kod do środowiska testowego, musisz utworzyć z drugiej strony rozwój techniczny będzie minimalny. Minął tydzień od zainstalowania urządzenia i wprowadzenia pracy zdalnej. Ponieważ dni wolne od pracy nie dotyczyły sektora finansowego, pracowaliśmy normalnie. Nowy szef okazał się bardzo szaloną osobą: zaproponował, że przeszuka Facebooka, stworzy własne sieci neuronowe do badania klientów (bez analityka danych w zespole). Nowym pracownikom zaproponowano naukę Pythona w ciągu tygodnia itp. Normą stały się bezpłatne dni wolne. Głupio było rezygnować: gdzie dostaniesz pracę w czasie pandemii? Cierpliwość skończyła się jednak po 2 miesiącach, kiedy ogłoszono, że premii kwartalnych nie będzie. Niuans jest taki, że kiedy ustalaliśmy wynagrodzenie, w momencie zatrudnienia hr powiedział, że wynagrodzenie jest podzielone na wynagrodzenie (60%) i premię kwartalną (40%), która jest zawsze wypłacana. Stało się jasne, że dokonano złego wyboru i musieliśmy zacząć szukać nowej pracy. <h3>Rozdział 6. Zaczynam naukę języka Java</h3>Pewnego pięknego majowego dnia otrzymuję zaproszenie na rozmowę kwalifikacyjną na stanowisko „Programista”. Firma z branży ubezpieczeniowej potrzebuje osoby, która będzie rozwijać produkty ubezpieczeniowe. Wymagane jest doświadczenie w programowaniu, ale ponieważ jest to „unikalny” rozwój firmy, nie ma potrzeby posiadania konkretnego języka. Git i tak dalej są również potrzebne. Umówiłem się na rozmowę za dwa dni, a w wolnym czasie studiowałem podstawy Gita. Podczas rozmowy kwalifikacyjnej zapytano mnie o Python, JS, Git, SQL. Odpowiedziałem na wszystko oprócz koncepcji „przeciążenia metod” i za 2 tygodnie zostałem zaproszony do pracy. Okazało się, że firma kupiła system już dawno temu. napisany w Javie (front i back), dzięki któremu można tworzyć procesy biznesowe bez znajomości języka programowania (a dokładniej wykorzystując wbudowany język programowania Jelly). Brzmi nieźle, ale tak naprawdę wszystko było zniekształcone. Dygresja liryczna: każda technologia ma swoją epokę i własną skalę. Sporządzanie wszystkich raportów w roku 2000 tylko w Excelu jest fajne. Zrobienie tego samego w 2021 roku nie jest zbyt dobre. Strona firmowa w czystym HTML była fajna w 1999 roku, ale nie w 2021. Zatem technologia, z której korzystała firma w momencie jej powstania (2005 rok) była bardzo fajna - Java odpowiadała zarówno za część serwerową, jak i kliencką (tzw. strony serwletów Java). Co więcej, jeśli utworzysz nowy proces biznesowy (który ma własny interfejs użytkownika), to jest on przechowywany w bazie danych, a nie w kodzie w pliku. Aby zrozumieć, jakie to niewygodne, wyobraź sobie, że piszesz kod Java w Intellij idea, zapisujesz go w bazie danych, a następnie. kiedy chcesz uruchomić swój kod, jądro programu udaje się do bazy danych i stamtąd odczytuje Twój kod. W związku z tym nie można w pełni debugować aplikacji. Wskazówka nr 1: Jeśli chcesz przesłać kod do środowiska testowego, musisz utworzyć z drugiej strony rozwój techniczny będzie minimalny. Minął tydzień od zainstalowania urządzenia i wprowadzenia pracy zdalnej. Ponieważ dni wolne od pracy nie dotyczyły sektora finansowego, pracowaliśmy normalnie. Nowy szef okazał się bardzo szaloną osobą: zaproponował, że przeszuka Facebooka, stworzy własne sieci neuronowe do badania klientów (bez analityka danych w zespole). Nowym pracownikom zaproponowano naukę Pythona w ciągu tygodnia itp. Normą stały się bezpłatne dni wolne. Głupio było rezygnować: gdzie dostaniesz pracę w czasie pandemii? Cierpliwość skończyła się jednak po 2 miesiącach, kiedy ogłoszono, że premii kwartalnych nie będzie. Niuans jest taki, że kiedy ustalaliśmy wynagrodzenie, w momencie zatrudnienia hr powiedział, że wynagrodzenie jest podzielone na wynagrodzenie (60%) i premię kwartalną (40%), która jest zawsze wypłacana. Stało się jasne, że dokonano złego wyboru i musieliśmy zacząć szukać nowej pracy. <h3>Rozdział 6. Zaczynam naukę języka Java</h3>Pewnego pięknego majowego dnia otrzymuję zaproszenie na rozmowę kwalifikacyjną na stanowisko „Programista”. Firma z branży ubezpieczeniowej potrzebuje osoby, która będzie rozwijać produkty ubezpieczeniowe. Wymagane jest doświadczenie w programowaniu, ale ponieważ jest to „unikalny” rozwój firmy, nie ma potrzeby posiadania konkretnego języka. Git i tak dalej są również potrzebne. Umówiłem się na rozmowę za dwa dni, a w wolnym czasie studiowałem podstawy Gita. Podczas rozmowy kwalifikacyjnej zapytano mnie o Python, JS, Git, SQL. Odpowiedziałem na wszystko oprócz koncepcji „przeciążenia metod” i za 2 tygodnie zostałem zaproszony do pracy. Okazało się, że firma kupiła system już dawno temu. napisany w Javie (front i back), dzięki któremu można tworzyć procesy biznesowe bez znajomości języka programowania (a dokładniej wykorzystując wbudowany język programowania Jelly). Brzmi nieźle, ale tak naprawdę wszystko było zniekształcone. Dygresja liryczna: każda technologia ma swoją epokę i własną skalę. Sporządzanie wszystkich raportów w roku 2000 tylko w Excelu jest fajne. Zrobienie tego samego w 2021 roku nie jest zbyt dobre. Strona firmowa w czystym HTML była fajna w 1999 roku, ale nie w 2021. Zatem technologia, z której korzystała firma w momencie jej powstania (2005 rok) była bardzo fajna - Java odpowiadała zarówno za część serwerową, jak i kliencką (tzw. strony serwletów Java). Co więcej, jeśli utworzysz nowy proces biznesowy (który ma własny interfejs użytkownika), to jest on przechowywany w bazie danych, a nie w kodzie w pliku. Aby zrozumieć, jakie to niewygodne, wyobraź sobie, że piszesz kod Java w Intellij idea, zapisujesz go w bazie danych, a następnie. kiedy chcesz uruchomić swój kod, jądro programu udaje się do bazy danych i stamtąd odczytuje Twój kod. W związku z tym nie można w pełni debugować aplikacji. Wskazówka nr 1: Jeśli chcesz przesłać kod do środowiska testowego, musisz utworzyć twórz własne sieci neuronowe do badania klientów (bez personelu zajmującego się analityką danych). Nowym pracownikom zaproponowano naukę Pythona w ciągu tygodnia itp. Normą stały się bezpłatne dni wolne. Głupio było rezygnować: gdzie dostaniesz pracę w czasie pandemii? Cierpliwość skończyła się jednak po 2 miesiącach, kiedy ogłoszono, że premii kwartalnych nie będzie. Niuans jest taki, że kiedy ustalaliśmy wynagrodzenie, w momencie zatrudnienia hr powiedział, że wynagrodzenie jest podzielone na wynagrodzenie (60%) i premię kwartalną (40%), która jest zawsze wypłacana. Stało się jasne, że dokonano złego wyboru i musieliśmy zacząć szukać nowej pracy. <h3>Rozdział 6. Zaczynam naukę języka Java</h3>Pewnego pięknego majowego dnia otrzymuję zaproszenie na rozmowę kwalifikacyjną na stanowisko „Programista”. Firma z branży ubezpieczeniowej potrzebuje osoby, która będzie rozwijać produkty ubezpieczeniowe. Wymagane jest doświadczenie w programowaniu, ale ponieważ jest to „unikalny” rozwój firmy, nie ma potrzeby posiadania konkretnego języka. Git i tak dalej są również potrzebne. Umówiłem się na rozmowę za dwa dni, a w wolnym czasie studiowałem podstawy Gita. Podczas rozmowy kwalifikacyjnej zapytano mnie o Python, JS, Git, SQL. Odpowiedziałem na wszystko oprócz koncepcji „przeciążenia metod” i za 2 tygodnie zostałem zaproszony do pracy. Okazało się, że firma kupiła system już dawno temu. napisany w Javie (front i back), dzięki któremu można tworzyć procesy biznesowe bez znajomości języka programowania (a dokładniej wykorzystując wbudowany język programowania Jelly). Brzmi nieźle, ale tak naprawdę wszystko było zniekształcone. Dygresja liryczna: każda technologia ma swoją epokę i własną skalę. Sporządzanie wszystkich raportów w roku 2000 tylko w Excelu jest fajne. Zrobienie tego samego w 2021 roku nie jest zbyt dobre. Strona firmowa w czystym HTML była fajna w 1999 roku, ale nie w 2021. Zatem technologia, z której korzystała firma w momencie jej powstania (2005 rok) była bardzo fajna - Java odpowiadała zarówno za część serwerową, jak i kliencką (tzw. strony serwletów Java). Co więcej, jeśli utworzysz nowy proces biznesowy (który ma własny interfejs użytkownika), to jest on przechowywany w bazie danych, a nie w kodzie w pliku. Aby zrozumieć, jakie to niewygodne, wyobraź sobie, że piszesz kod Java w Intellij idea, zapisujesz go w bazie danych, a następnie. kiedy chcesz uruchomić swój kod, jądro programu udaje się do bazy danych i stamtąd odczytuje Twój kod. W związku z tym nie można w pełni debugować aplikacji. Wskazówka nr 1: Jeśli chcesz przesłać kod do środowiska testowego, musisz utworzyć twórz własne sieci neuronowe do badania klientów (bez personelu zajmującego się analityką danych). Nowym pracownikom zaproponowano naukę Pythona w ciągu tygodnia itp. Normą stały się bezpłatne dni wolne. Głupio było rezygnować: gdzie dostaniesz pracę w czasie pandemii? Cierpliwość skończyła się jednak po 2 miesiącach, kiedy ogłoszono, że premii kwartalnych nie będzie. Niuans jest taki, że kiedy ustalaliśmy wynagrodzenie, w momencie zatrudnienia hr powiedział, że wynagrodzenie jest podzielone na wynagrodzenie (60%) i premię kwartalną (40%), która jest zawsze wypłacana. Stało się jasne, że dokonano złego wyboru i musieliśmy zacząć szukać nowej pracy. <h3>Rozdział 6. Zaczynam naukę języka Java</h3>Pewnego pięknego majowego dnia otrzymuję zaproszenie na rozmowę kwalifikacyjną na stanowisko „Programista”. Firma z branży ubezpieczeniowej potrzebuje osoby, która będzie rozwijać produkty ubezpieczeniowe. Wymagane jest doświadczenie w programowaniu, ale ponieważ jest to „unikalny” rozwój firmy, nie ma potrzeby posiadania konkretnego języka. Git i tak dalej są również potrzebne. Umówiłem się na rozmowę za dwa dni, a w wolnym czasie studiowałem podstawy Gita. Podczas rozmowy kwalifikacyjnej zapytano mnie o Python, JS, Git, SQL. Odpowiedziałem na wszystko oprócz koncepcji „przeciążenia metod” i za 2 tygodnie zostałem zaproszony do pracy. Okazało się, że firma kupiła system już dawno temu. napisany w Javie (front i back), dzięki któremu można tworzyć procesy biznesowe bez znajomości języka programowania (a dokładniej wykorzystując wbudowany język programowania Jelly). Brzmi nieźle, ale tak naprawdę wszystko było zniekształcone. Dygresja liryczna: każda technologia ma swoją epokę i własną skalę. Sporządzanie wszystkich raportów w roku 2000 tylko w Excelu jest fajne. Zrobienie tego samego w 2021 roku nie jest zbyt dobre. Strona firmowa w czystym HTML była fajna w 1999 roku, ale nie w 2021. Zatem technologia, z której korzystała firma w momencie jej powstania (2005 rok) była bardzo fajna - Java odpowiadała zarówno za część serwerową, jak i kliencką (tzw. strony serwletów Java). Co więcej, jeśli utworzysz nowy proces biznesowy (który ma własny interfejs użytkownika), to jest on przechowywany w bazie danych, a nie w kodzie w pliku. Aby zrozumieć, jakie to niewygodne, wyobraź sobie, że piszesz kod Java w Intellij idea, zapisujesz go w bazie danych, a następnie. kiedy chcesz uruchomić swój kod, jądro programu udaje się do bazy danych i stamtąd odczytuje Twój kod. W związku z tym nie można w pełni debugować aplikacji. Wskazówka nr 1: Jeśli chcesz przesłać kod do środowiska testowego, musisz utworzyć <h3>Rozdział 6. Zaczynam naukę języka Java</h3>Pewnego pięknego majowego dnia otrzymuję zaproszenie na rozmowę kwalifikacyjną na stanowisko „Programista”. Firma z branży ubezpieczeniowej potrzebuje osoby, która będzie rozwijać produkty ubezpieczeniowe. Wymagane jest doświadczenie w programowaniu, ale ponieważ jest to „unikalny” rozwój firmy, nie ma potrzeby posiadania konkretnego języka. Git i tak dalej są również potrzebne. Umówiłem się na rozmowę za dwa dni, a w wolnym czasie studiowałem podstawy Gita. Podczas rozmowy kwalifikacyjnej zapytano mnie o Python, JS, Git, SQL. Odpowiedziałem na wszystko oprócz koncepcji „przeciążenia metod” i za 2 tygodnie zostałem zaproszony do pracy. Okazało się, że firma kupiła system już dawno temu. napisany w Javie (front i back), dzięki któremu można tworzyć procesy biznesowe bez znajomości języka programowania (a dokładniej wykorzystując wbudowany język programowania Jelly). Brzmi nieźle, ale tak naprawdę wszystko było zniekształcone. Dygresja liryczna: każda technologia ma swoją epokę i własną skalę. Sporządzanie wszystkich raportów w roku 2000 tylko w Excelu jest fajne. Zrobienie tego samego w 2021 roku nie jest zbyt dobre. Strona firmowa w czystym HTML była fajna w 1999 roku, ale nie w 2021. Zatem technologia, z której korzystała firma w momencie jej powstania (2005 rok) była bardzo fajna - Java odpowiadała zarówno za część serwerową, jak i kliencką (tzw. strony serwletów Java). Co więcej, jeśli utworzysz nowy proces biznesowy (który ma własny interfejs użytkownika), to jest on przechowywany w bazie danych, a nie w kodzie w pliku. Aby zrozumieć, jakie to niewygodne, wyobraź sobie, że piszesz kod Java w Intellij idea, zapisujesz go w bazie danych, a następnie. kiedy chcesz uruchomić swój kod, jądro programu udaje się do bazy danych i stamtąd odczytuje Twój kod. W związku z tym nie można w pełni debugować aplikacji. Wskazówka nr 1: Jeśli chcesz przesłać kod do środowiska testowego, musisz utworzyć <h3>Rozdział 6. Zaczynam naukę języka Java</h3>Pewnego pięknego majowego dnia otrzymuję zaproszenie na rozmowę kwalifikacyjną na stanowisko „Programista”. Firma z branży ubezpieczeniowej potrzebuje osoby, która będzie rozwijać produkty ubezpieczeniowe. Wymagane jest doświadczenie w programowaniu, ale ponieważ jest to „unikalny” rozwój firmy, nie ma potrzeby posiadania konkretnego języka. Git i tak dalej są również potrzebne. Umówiłem się na rozmowę za dwa dni, a w wolnym czasie studiowałem podstawy Gita. Podczas rozmowy kwalifikacyjnej zapytano mnie o Python, JS, Git, SQL. Odpowiedziałem na wszystko oprócz koncepcji „przeciążenia metod” i za 2 tygodnie zostałem zaproszony do pracy. Okazało się, że firma kupiła system już dawno temu. napisany w Javie (front i back), dzięki któremu można tworzyć procesy biznesowe bez znajomości języka programowania (a dokładniej wykorzystując wbudowany język programowania Jelly). Brzmi nieźle, ale tak naprawdę wszystko było zniekształcone. Dygresja liryczna: każda technologia ma swoją epokę i własną skalę. Sporządzanie wszystkich raportów w roku 2000 tylko w Excelu jest fajne. Zrobienie tego samego w 2021 roku nie jest zbyt dobre. Strona firmowa w czystym HTML była fajna w 1999 roku, ale nie w 2021. Zatem technologia, z której korzystała firma w momencie jej powstania (2005 rok) była bardzo fajna - Java odpowiadała zarówno za część serwerową, jak i kliencką (tzw. strony serwletów Java). Co więcej, jeśli utworzysz nowy proces biznesowy (który ma własny interfejs użytkownika), to jest on przechowywany w bazie danych, a nie w kodzie w pliku. Aby zrozumieć, jakie to niewygodne, wyobraź sobie, że piszesz kod Java w Intellij idea, zapisujesz go w bazie danych, a następnie. kiedy chcesz uruchomić swój kod, jądro programu udaje się do bazy danych i stamtąd odczytuje Twój kod. W związku z tym nie można w pełni debugować aplikacji. Wskazówka nr 1: Jeśli chcesz przesłać kod do środowiska testowego, musisz utworzyć Strona firmowa w czystym HTML była fajna w 1999 roku, ale nie w 2021. Zatem technologia, z której korzystała firma w momencie jej powstania (2005 rok) była bardzo fajna - Java odpowiadała zarówno za część serwerową, jak i kliencką (tzw. strony serwletów Java). Co więcej, jeśli utworzysz nowy proces biznesowy (który ma własny interfejs użytkownika), to jest on przechowywany w bazie danych, a nie w kodzie w pliku. Aby zrozumieć, jakie to niewygodne, wyobraź sobie, że piszesz kod Java w Intellij idea, zapisujesz go w bazie danych, a następnie. kiedy chcesz uruchomić swój kod, jądro programu udaje się do bazy danych i stamtąd odczytuje Twój kod. W związku z tym nie można w pełni debugować aplikacji. Wskazówka nr 1: Jeśli chcesz przesłać kod do środowiska testowego, musisz utworzyć Strona firmowa w czystym HTML była fajna w 1999 roku, ale nie w 2021. Zatem technologia, z której korzystała firma w momencie jej powstania (2005 rok) była bardzo fajna - Java odpowiadała zarówno za część serwerową, jak i kliencką (tzw. strony serwletów Java). Co więcej, jeśli utworzysz nowy proces biznesowy (który ma własny interfejs użytkownika), to jest on przechowywany w bazie danych, a nie w kodzie w pliku. Aby zrozumieć, jakie to niewygodne, wyobraź sobie, że piszesz kod Java w Intellij idea, zapisujesz go w bazie danych, a następnie. kiedy chcesz uruchomić swój kod, jądro programu udaje się do bazy danych i stamtąd odczytuje Twój kod. W związku z tym nie można w pełni debugować aplikacji. Wskazówka nr 1: Jeśli chcesz przesłać kod do środowiska testowego, musisz utworzyćSQL скрипт, który będzie zawierał Twój kod. Nieprzyjemne, ale znośne? Radość nr 2: Baza danych składa się z ponad 200 tabel, które są ze sobą powiązane. Oznacza to, że musisz wiedzieć, do których tabel wrzucić swój kod i które elementy należy utworzyć w innych tabelach. Dane wyjściowe to skrypt SQL o długości ~ 1000 linii. To naprawdę obrzydliwe. Uważaj na dziedzictwo. Krótko mówiąc, zdając sobie sprawę, że to wszystko jest w Javie, udałem się na JavaRush (wreszcie dotarliśmy do tematu strony!). Czerwiec-lipiec 2020. Pierwsze 10 poziomów zostało szybko zamkniętych (może na miesiąc), bo nie było nic zasadniczo nowego. Potem prędkość spadła. Lipiec-październik 2020. Poziomy 10-20 zamknięte. Październik-marzec 2021. Poziomy 20-30 zamknięte. Teraz zaczyna się zabawa: w marcu 2021 zacząłem przeglądać oferty pracy w Javie i zdałem sobie sprawę, że jest tam mnóstwo nieznanych słów. Jakiś rodzaj Springa, SpringBoot, Hibernate, JUnit. Kupując kursy wideo na znanej stronie internetowej, po prostu dotknąłem wiosny i pomyślałem, że teraz wiem i mogę wszystko. Potem natknąłem się na kurs TopJava autorstwa Grigorija Kislina. Na jego stronie możesz spróbować wykonać zadanie testowe, a jeśli ci się to uda, możesz przystąpić do kursu. Na tym kursie utworzysz pełnoprawną aplikację internetową, a nawet opublikujesz ją w Internecie. Za te pieniądze dadzą Ci recenzję (przegląd kodu przez bardziej doświadczonego programistę), przekażą informację zwrotną i dadzą wskazówki w razie problemów. Odrobiłem zadanie domowe 3 i zrezygnowałem. Powód jest prosty: wymagają od Ciebie wiele, ale nie dają Ci żadnej wiedzy. Wymagania dotyczące pracy domowej są bardzo mylące. Informacje są prezentowane wyjątkowo niespójnie. Moim subiektywnym zdaniem ten kurs jest potrzebny dość doświadczonym programistom, którzy pochodzą z innych podobnych języków. Ponieważ na jego kursie praktycznie nie ma wyjaśnienia technologii, o które prosi. Musisz także dobrze znać Gita (wszystko przesyłane jest do Twojego osobistego repozytorium). Pod koniec kwietnia 2021 zamieszczam CV dla programisty Java (z pożądanym wynagrodzeniem na poziomie średnim+), w którym zaznaczam, że w ostatniej pracy programowałem w Javie (kłamałem). Jeszcze tego samego dnia bank otrzymuje aplikację na stanowisko programisty Java. <h3>Rozdział 7. Wywiady w języku Java i doskonalenie umiejętności</h3>Jaki był zatem plan? Muszę uzyskać dobrą pensję, ponieważ jestem już przyzwyczajony do życia ze znacznymi dochodami + pożyczkami. Dlatego stanowiska juniorów nie są dla mnie odpowiednie. Musisz znaleźć pracę na średnim poziomie. Ale kto mnie zatrudni bez doświadczenia? Decyzja przyszła naturalnie: z mojej historii zatrudnienia wynika, że ​​na poprzednim stanowisku przez rok pracowałem jako programista, a przez kolejne 4 lata jako ekspert w dziale IT. Powiem więc, że od roku rozwijam się w Javie. A jeśli zapytają o nowości, to powiem, że była stara Java (7) i niczego nie wspierała. Przed pierwszą (zdalną) rozmową kwalifikacyjną byłem zdenerwowany. Nie mam doświadczenia, bardzo mała wiedza, a proszę o duże pieniądze. Myślę: nie przejmuj się, negatywne doświadczenie to też doświadczenie. Kontaktuję się przez Skype i rozmawiam ze mną dwóch kierowników działów. Co sprawiło, że przestraszyłem się jeszcze bardziej. Zaczęły się pytania: OOP, urządzenie HashMap, strumienie, struktury danych, czym jest Spring, Hibernate, AOP. A jeśli przed Spingiem było mniej więcej znośnie, to na wiosnę zupełnie się rozpadło. Ludzie pytają mnie: jak się rozwinąłeś na wiosnę, jeśli tak naprawdę tego nie wiesz? Ja: Skopiowałem, wkleiłem, działa i dzięki za to. Ta odpowiedź ich rozbawiła. Potem zapytali o SQL, w którym byłem jak kaczka w wodzie. Następny był Git i pytanie o rebase, cherry-pick (o którym też nie wiedziałem) i skończyłem o JS, ponieważ było to wymienione w moim CV. Tam też nastąpiła kompletna porażka, bo pytali o OOP JS. Na podstawie wyników rozmowy kwalifikacyjnej okazało się, że moja wiedza nie jest comme il faut, w związku z czym nie będę kwalifikować się na to stanowisko. Wieczorem HR pisze, że moja kandydatura została zaakceptowana i są gotowi do mnie zadzwonić. Rzeczywiście zakrztusiłem się burgerem w McDonaldzie. Ucieszyłem się, ale po 3 dniach HR poinformował, że wybrał innego kandydata. Po raz pierwszy w moim życiu oferta została wycofana. Po pierwszej rozmowie kwalifikacyjnej w Javie podkręciłem swoją grę: wziąłem udział w kursie (i ukończyłem go całkowicie!) w Git od Colta Steele na dobrze znanej stronie sprzedaży kursów wideo. To zmieniło moje postrzeganie Gita. Następnie wziąłem (genialny) kurs od Zaura Tregulova na Spring+Hibernate. Schemat szkolenia: Oglądam jak na filmie, robię to samo na swoim komputerze, tylko inaczej nazywam zmienne i klasy, żeby głupio nie kopiować cudzego kodu. Przesyłam całą moją pracę na mój Github (w ten sposób ćwicząc Git). Była połowa maja i zaczęły się telefony od hr. Zaczęliśmy umawiać się na wywiady jeden po drugim. Wiele zaproszeń musiało zostać odwołanych z następujących powodów: HR nie przeczytał opisu mojego CV i zaprosił mnie na wyższe stanowisko. Warto też wspomnieć o odrębnej kaście HR: tych, którzy mylą Javę z JavaScriptem. Dlatego w tytule mojego CV napisałem „Programista Middle Java”. <h3>Rozdział 8. Lista typowych pytań i przebieg rozmów kwalifikacyjnych</h3>Zacząłem chodzić na rozmowy kwalifikacyjne i stopniowo utworzyłem w środku pulę podstawowych pytań. Wymagane: 0. OOP - definicja, omów każdą zasadę OOP (+podaj przykład z życia). 1. Równa się i hashcode - jaka jest umowa (relacja) między nimi? 2. HashMap - jak zrozumieć, do którego zasobnika trafi obiekt, na czym polega kolizja, w jakiej strukturze danych przechowywane są dane wewnątrz HashMap, jaki jest standardowy rozmiar, jak rośnie liczba zasobników. 3. Strumień – jakie rodzaje operacji, jaka jest między nimi różnica, podaj przykład każdego rodzaju operacji. 4. Pula stringów, pula Integer – co to jest? 5. Sterta, stos - co to jest, jaka jest różnica? 6. Różnice pomiędzy wykonalnością, wątkiem i przyszłością. 7. Lotność, atomowość. 8. Solid, Kiss, Dry - definicje, przykłady z życia. 9. Modyfikatory dostępu w Javie. 10. Jaka jest różnica pomiędzy klasą abstrakcyjną a interfejsem. Czy interfejs może być prywatny? 11. Interfejsy funkcjonalne. 12. Wymień wszystkie metody obiektowe i powiedz, dlaczego są potrzebne. Cechy metody klonowania. 13. Co to jest serializacja i deserializacja. 14. Spróbuj złapać z zasobami - opisz co to jest, opowiedz za pomocą interfejsu Closeable. 15. Różnice między Finalem, wreszcie sfinalizowane? 16. Przeciążenie, Zastąpienie metody jest różnicą. 17. Dlaczego String stał się niezmienny, opowiedz nam o StringBuilder i StringBuffer. 18. Co to jest złożoność czasowa O(1), złożoność pamięciowa. 19. Struktury danych: omówienie map, set, kolejka, deque, lista i ich implementacja w Javie (treeMap, hashSet, hashMap, arrayList,linkedList, priorytetQueue, blockingQueue), opisują złożoność (najgorsza, średnia, najlepsza) wstawiania, search, usuwając element w każdej strukturze. 20. Prymitywne typy danych w Javie. Dlaczego każdy z nich jest potrzebny? 21. Rodzaje błędów. Sprawdzone i niesprawdzone wyjątki. 22. Co to jest JVM, JRE, JDK? 23. Z jakimi kolekcjonerami współpracowałeś? Maven — cykl życia kompilacji. 24. Spring - definicje Ioc, Di, cykl życia komponentu Bean, kontekst, adnotacje @Bean, @Configuration, @Autowired, @Advice, @Aspect, @Service, @Repository. 25. Generyki - definicja dolnej i górnej granicy? 26.Wzorce programistyczne - przynajmniej Singleton (chęć opowiedzenia dlaczego czasami jest to anty-wzorzec) + Konstruktor, Adapter, Fabryka, Dekorator, Proxt. Pożądane: 26. Testowanie - rodzaje testów, z którymi pracowało się w bibliotekach (JUnit). Co to jest Mock, Stab, Spy? 27. Spring boot - dlaczego jest potrzebny, gotowość do wykonania aplikacji SpringBoot online. 28. Hibernacja - dlaczego jest potrzebna, jednostka, kolumna dołączenia, ładowanie leniwe i chętne, poziomy buforowania (trudne). 29. Wiosenny odpoczynek - po co jest potrzebny, jak zrobić punkty końcowe @post, @get. Jak czytać parametry/treść żądania? Jak przesłać w formacie json? 30. Struktury danych - drzewa, ich rodzaje. 31. Algorytmy - rodzaje sortowania. Oprócz Javy mogą zapytać: 1. (Wymagane!) Git - do czego jest potrzebny, operacje scalają, rebase, cherry-pick, push, pull, commit, log, checkout, rozgałęziają, resetują, revert, odświeżają. 2.SQL - możliwość napisania zapytania: złączenie dwóch tabel w jedną (złączenie wewnętrzne, złączenie lewe). 3. Bazy danych - 3 formularze normalne, indeksy (po co są potrzebne, typy), klucz podstawowy, klucz obcy Jak przebiega typowa rozmowa na odległość: hr wysyła link do zoomu (Skype, Google Meeting). W pewnym momencie łączysz się i jest tam od 1 do 3 osób (ekspert techniczny, szef, hr). W szczególnie upartych przypadkach do 8 osób. Najpierw opowiadasz o sobie, potem część techniczna, potem opowieść o wakacie i pożegnaniu (mówią, kiedy się z Tobą skontaktują i jakie będą kolejne kroki). Podczas pożegnań możesz poprosić o informację zwrotną na temat wiedzy. Zapytałem: „Czy możesz mi powiedzieć podczas moich odpowiedzi, gdzie bolą Cię uszy?” Wiele osób odpowiada, ale bądź przygotowany na odrzucenie. Podczas rozmowy oceniają: 1. Umiejętność wyrażania myśli oraz znajomość języka rosyjskiego (znam przypadek, gdy kandydat został odrzucony ze względu na słabą znajomość języka rosyjskiego). 2. Wcześniejsze doświadczenia (mogą szczegółowo zapytać, co robiłeś w ostatniej pracy). 3. Adekwatna reakcja, gdy wywierana jest na Ciebie presja (była jedna rozmowa, podczas której ludzie zaczęli odnosić się lekceważąco: ignorować moje odpowiedzi, próbować wpajać swoje stanowisko itp. Skończyłem rozmowę 15 minut po jej rozpoczęciu, a oni: to była stresująca rozmowa kwalifikacyjna!) 4. Poziom Twojej wiedzy. Omówię tutaj bardziej szczegółowo. Znajomość definicji tematu to tylko 10% tego, czego się od Ciebie oczekuje. Trzeba zrozumieć jak to działa (przynajmniej na najwyższym poziomie). Chęć wyjaśnienia, na jakim etapie rozwoju wybierzesz to czy tamto rozwiązanie. Jest to o wiele ważniejsze niż dokładność definicji. Tezę tę przeanalizuję na dwóch przykładach. Przykład pierwszy: podczas rozmowy kwalifikacyjnej zapytano mnie o HashMap i podałem definicję: „jest to struktura danych przechowująca pakiety kluczy i wartości”. Następnie ankieter zapytał: czym różni się od TreeMap? Odpowiedź: Różnica polega na tym, że HashMap miesza klucz i dzięki mieszaniu dostęp jest szybki. Osoba przeprowadzająca wywiad od razu poprosiła o podanie wewnętrznej struktury HashMap, jednocześnie pytając o hashCode i równości. I pójdzie głębiej, dopóki nie będziesz usatysfakcjonowany odpowiedzią lub utkniesz w martwym punkcie. Nauczyłem się poprawnie odpowiadać na temat HashMap dopiero po 2 miesiącach rozmów kwalifikacyjnych i kursie dotyczącym struktur danych na hexlecie. Drugi przykład: koncepcja SOLID. Proszą mnie o podanie definicji, którą zapamiętałem. Ale gdy tylko doszło do przykładów z życia wziętych, zaczęły się problemy. Внимание!Jeśli nie wiesz, to nie wymyślaj, ale powiedz tak: nie znam tego tematu, ale mogę założyć, że tak to działa. Wielu ekspertów technicznych wpada w wściekłość, gdy ktoś wypowiada herezję tak, jakby rozumiał temat. 5. Twój poziom entuzjazmu podczas rozmowy o pracę. Oczekujemy, że będziesz zainteresowany i zadawał pytania dotyczące wakatu (nie tylko te wymyślone). 6. Czasami humor (tylko na temat) i wspólne zainteresowania pomagają w komunikacji. Nie krępuj się porozmawiać o swoich zainteresowaniach, być może rozmówca uwielbia także Dotę/piłkę nożną/fantasy. A to jest plus dla Ciebie jako kandydata. Znam przypadki, gdy wspólnota interesów przymykała oczy na słabe przygotowanie techniczne osoby przeprowadzającej rozmowę kwalifikacyjną (jesteś normalnym facetem, przeszkolimy Cię). <h3>Rozdział 9. Znalezienie pracy, chrzest bojowy</h3>Rozmowy kwalifikacyjne odbywały się od końca kwietnia do połowy lipca. Pierwsze rozmowy kwalifikacyjne były żenujące, ale stopniowo sytuacja poprawiła się do akceptowalnego poziomu. Badanie typowych pytań i opinii dało się odczuć. Pierwsze 25 rozmów zakończyło się niepowodzeniem. Potem zaczęły się chwile rozpaczy. Odczucia: co jeśli nie zatrudnią mnie za taką pensję? Nagle sytuacja zaczęła się kręcić: w ciągu tygodnia trzy firmy złożyły oferty. Wybrałem firmę, której specyfikę znałem, a do tego była dobra płaca i możliwość pracy zdalnej. Podczas rozmowy kwalifikacyjnej zadano mi około 30 pytań dotyczących rdzenia Java i Springa, z czego 97% odpowiedziałem poprawnie. Potem była komunikacja z wyższymi władzami i po 1,5 tygodniu dostałem u nich pracę. Przede wszystkim, gdy przychodzisz do jakiejkolwiek pracy, zaczynasz uzyskiwać dostęp do wszystkich niezbędnych systemów i instalować potrzebne narzędzia. Zajęło mi to półtora tygodnia i dostałem pierwsze zadanie: zmienić statyczny tekst w klasie. Kiedy otworzyłem projekt, zrobiło mi się niedobrze: w jednym projekcie było wiele modułów, wiele klas, testów itp. W tym momencie byłem zagubiony, ale drugi programista pomógł mi i wprowadził mnie na wyższy poziom. Błąd został naprawiony w 10 minut, opublikowany w Git, wykonano żądanie ściągnięcia (żądanie połączenia dwóch gałęzi, w których inni programiści sprawdzają Twój kod), a następnie połączono z gałęzią główną. Okazało się, że wszystko nie jest takie trudne. Aż do pierwszego pełnoprawnego zadania... W momencie planowania zadań na kolejne dwa tygodnie powiedzieli mi: będziesz robił integrację z innym systemem, który znajduje się na OpenShift. Tutaj sytuacja stała się naprawdę przerażająca: OpenShift to cały klaster technologii: Docker, Kubernetes, Linux i tak dalej. Zimny ​​pot spłynął mi po plecach: cóż, pracowałem jako Jawista. Zaraz po spotkaniu zadzwoniłem do developera, który mnie uspokoił: adaptery dla tego systemu zostały już napisane i wystarczyło zaimportować do mojego projektu określone klasy, po czym mogłem bezpiecznie korzystać z integracji. Znowu było fajnie, dopóki programista nie pokazał typowej integracji: widziałem ponad 20 klas stworzonych do podobnej integracji. Ponadto zauważono niewidziane wcześniej adnotacje @Value, @Builder, @NoArgsConstructor, @Getter @Sl4f - okazało się, że to projekt Lombook (czytaj w internecie). Kiedy programista wyjaśnił mi jak to zrobić, próbowałem spisać powiązania wszystkich klas i zupełnie nic nie utkwiło mi w głowie. Najbardziej żenującym momentem był brak wiedzy o Intellij Idea: jak szukać projektu globalnie, refaktoryzacji kodu itp. Podejmując się zadania, zrozumiałem po co jest OOP: przy tak dużej ilości kodu konieczne jest podzielenie go na klasy; metody, które nie są używane poza klasą muszą być zadeklarowane jako prywatne, aby przypadkowo nie uruchomić ich w innej klasie itp. Po napisaniu mojej integracji przez analogię z inną integracją dowiedziałem się o istnieniu CheckStyle - specjalnej wtyczki sprawdzającej styl kodu i nie będziesz mógł skompilować projektu, dopóki nie naprawisz błędów (na przykład dodatkowych spacji, nazw zmiennych pisanych wielkimi literami, zbyt krótkich nazw zmiennych). Po pokonaniu CheckStyle wysłałem mój kod do sprawdzenia starszym programistom i poprawiłem swoje błędy w ciągu tygodnia. Ogólnie miałem szczęście, że w moim zespole miałem dobry kontakt z drugim programistą, który wiele rzeczy mi wyjaśnił. Miesiąc po urządzeniu uruchomiona została moja pierwsza integracja na stanowisku Integracyjno-Funkcjonalnym (testowane jest wspólnie działanie wszystkich aplikacji) i tam wszystko zadziałało! Zwycięstwo! Kolejnym zadaniem było stworzenie klasy umożliwiającej ukrywanie danych po kluczu w jsonie. Na przykład: istnieje json {text:"JavaRush"} -> przetwarzanie -> {text:"****Rush"}. Są tu dwie komplikacje: może wystąpić zagnieżdżanie {text:{mytext:"JavaRush"}}, a jeszcze bardziej nieprzyjemne jest zagnieżdżanie wewnątrz tablicy: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush "} ] } (oczywiście musisz ukryć cały tekst.mytext). Rozwiązanie tego problemu okazało się dość trudne, ale udało się! Tutaj drugi programista mówi: przykryj ten rozwój testami. W oczach widać było zdziwienie. W ten sposób poznałem bibliotekę JUnit w walce. Istota testów jednostkowych: masz dane wejściowe, przekazujesz je do metody i porównujesz otrzymane dane z poprawnym wynikiem (tworzysz zmienną z poprawnym wynikiem). Napisałem do swojej biblioteki 11 przypadków, w których sprawdziłem, czy aplikacja nie uległa awarii z powodu wyjątku NullPointException i czy poprawnie ukrywa dane przy dowolnym typie zagnieżdżenia. Po wykonaniu tego zadania otrzymałem nową integrację, której osobliwość była następująca: musiałem wyeksportować Spring Bean z zewnętrznej biblioteki. W tym momencie zostałem stałym klientem serwisu Stack OverFlow. Któregoś razu odpowiedział nawet oficjalny programista Springa. Po wdrożeniu tej integracji mój okres próbny dobiegł końca. Szef pogratulował mi przejścia okresu próbnego i zabrałem się za pisanie tego artykułu. W sumie napisanie tego artykułu zajęło 8 godzin) Dziękuję za uwagę, mam nadzieję, że artykuł był przydatny. Próbowałem spisać powiązania wszystkich klas i zupełnie nic nie utkwiło mi w głowie. Najbardziej żenującym momentem był brak wiedzy o Intellij Idea: jak szukać projektu globalnie, refaktoryzacji kodu itp. Podejmując się zadania, zrozumiałem po co jest OOP: przy tak dużej ilości kodu konieczne jest podzielenie go na klasy; metody, które nie są używane poza klasą muszą być zadeklarowane jako prywatne, aby przypadkowo nie uruchomić ich w innej klasie itp. Po napisaniu mojej integracji przez analogię z inną integracją dowiedziałem się o istnieniu CheckStyle - specjalnej wtyczki sprawdzającej styl kodu i nie będziesz mógł skompilować projektu, dopóki nie naprawisz błędów (na przykład dodatkowych spacji, nazw zmiennych pisanych wielkimi literami, zbyt krótkich nazw zmiennych). Po pokonaniu CheckStyle wysłałem mój kod do sprawdzenia starszym programistom i poprawiłem swoje błędy w ciągu tygodnia. Ogólnie miałem szczęście, że w moim zespole miałem dobry kontakt z drugim programistą, który wiele rzeczy mi wyjaśnił. Miesiąc po urządzeniu uruchomiona została moja pierwsza integracja na stanowisku Integracyjno-Funkcjonalnym (testowane jest wspólnie działanie wszystkich aplikacji) i tam wszystko zadziałało! Zwycięstwo! Kolejnym zadaniem było stworzenie klasy umożliwiającej ukrywanie danych po kluczu w jsonie. Na przykład: istnieje json {text:"JavaRush"} -> przetwarzanie -> {text:"****Rush"}. Są tu dwie komplikacje: może wystąpić zagnieżdżanie {text:{mytext:"JavaRush"}}, a jeszcze bardziej nieprzyjemne jest zagnieżdżanie wewnątrz tablicy: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush "} ] } (oczywiście musisz ukryć cały tekst.mytext). Rozwiązanie tego problemu okazało się dość trudne, ale udało się! Tutaj drugi programista mówi: przykryj ten rozwój testami. W oczach widać było zdziwienie. W ten sposób poznałem bibliotekę JUnit w walce. Istota testów jednostkowych: masz dane wejściowe, przekazujesz je do metody i porównujesz otrzymane dane z poprawnym wynikiem (tworzysz zmienną z poprawnym wynikiem). Napisałem do swojej biblioteki 11 przypadków, w których sprawdziłem, czy aplikacja nie uległa awarii z powodu wyjątku NullPointException i czy poprawnie ukrywa dane przy dowolnym typie zagnieżdżenia. Po wykonaniu tego zadania otrzymałem nową integrację, której osobliwość była następująca: musiałem wyeksportować Spring Bean z zewnętrznej biblioteki. W tym momencie zostałem stałym klientem serwisu Stack OverFlow. Któregoś razu odpowiedział nawet oficjalny programista Springa. Po wdrożeniu tej integracji mój okres próbny dobiegł końca. Szef pogratulował mi przejścia okresu próbnego i zabrałem się za pisanie tego artykułu. W sumie napisanie tego artykułu zajęło 8 godzin) Dziękuję za uwagę, mam nadzieję, że artykuł był przydatny. Próbowałem spisać powiązania wszystkich klas i zupełnie nic nie utkwiło mi w głowie. Najbardziej żenującym momentem był brak wiedzy o Intellij Idea: jak szukać projektu globalnie, refaktoryzacji kodu itp. Podejmując się zadania, zrozumiałem po co jest OOP: przy tak dużej ilości kodu konieczne jest podzielenie go na klasy; metody, które nie są używane poza klasą muszą być zadeklarowane jako prywatne, aby przypadkowo nie uruchomić ich w innej klasie itp. Po napisaniu mojej integracji przez analogię z inną integracją dowiedziałem się o istnieniu CheckStyle - specjalnej wtyczki sprawdzającej styl kodu i nie będziesz mógł skompilować projektu, dopóki nie naprawisz błędów (na przykład dodatkowych spacji, nazw zmiennych pisanych wielkimi literami, zbyt krótkich nazw zmiennych). Po pokonaniu CheckStyle wysłałem mój kod do sprawdzenia starszym programistom i poprawiłem swoje błędy w ciągu tygodnia. Ogólnie miałem szczęście, że w moim zespole miałem dobry kontakt z drugim programistą, który wiele rzeczy mi wyjaśnił. Miesiąc po urządzeniu uruchomiona została moja pierwsza integracja na stanowisku Integracyjno-Funkcjonalnym (testowane jest wspólnie działanie wszystkich aplikacji) i tam wszystko zadziałało! Zwycięstwo! Kolejnym zadaniem było stworzenie klasy umożliwiającej ukrywanie danych po kluczu w jsonie. Na przykład: istnieje json {text:"JavaRush"} -> przetwarzanie -> {text:"****Rush"}. Są tu dwie komplikacje: może wystąpić zagnieżdżanie {text:{mytext:"JavaRush"}}, a jeszcze bardziej nieprzyjemne jest zagnieżdżanie wewnątrz tablicy: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush "} ] } (oczywiście musisz ukryć cały tekst.mytext). Rozwiązanie tego problemu okazało się dość trudne, ale udało się! Tutaj drugi programista mówi: przykryj ten rozwój testami. W oczach widać było zdziwienie. W ten sposób poznałem bibliotekę JUnit w walce. Istota testów jednostkowych: masz dane wejściowe, przekazujesz je do metody i porównujesz otrzymane dane z poprawnym wynikiem (tworzysz zmienną z poprawnym wynikiem). Napisałem do swojej biblioteki 11 przypadków, w których sprawdziłem, czy aplikacja nie uległa awarii z powodu wyjątku NullPointException i czy poprawnie ukrywa dane przy dowolnym typie zagnieżdżenia. Po wykonaniu tego zadania otrzymałem nową integrację, której osobliwość była następująca: musiałem wyeksportować Spring Bean z zewnętrznej biblioteki. W tym momencie zostałem stałym klientem serwisu Stack OverFlow. Któregoś razu odpowiedział nawet oficjalny programista Springa. Po wdrożeniu tej integracji mój okres próbny dobiegł końca. Szef pogratulował mi przejścia okresu próbnego i zabrałem się za pisanie tego artykułu. W sumie napisanie tego artykułu zajęło 8 godzin) Dziękuję za uwagę, mam nadzieję, że artykuł był przydatny. Przy tak dużej ilości kodu trzeba podzielić go na klasy; metody, które nie są używane poza klasą muszą być zadeklarowane jako prywatne, aby przypadkowo nie uruchomić ich w innej klasie itp. Po napisaniu mojej integracji przez analogię z inną integracją dowiedziałem się o istnieniu CheckStyle - specjalnej wtyczki sprawdzającej styl kodu i nie będziesz mógł skompilować projektu, dopóki nie naprawisz błędów (na przykład dodatkowych spacji, nazw zmiennych pisanych wielkimi literami, zbyt krótkich nazw zmiennych). Po pokonaniu CheckStyle wysłałem mój kod do sprawdzenia starszym programistom i poprawiłem swoje błędy w ciągu tygodnia. Ogólnie miałem szczęście, że w moim zespole miałem dobry kontakt z drugim programistą, który wiele rzeczy mi wyjaśnił. Miesiąc po urządzeniu uruchomiona została moja pierwsza integracja na stanowisku Integracyjno-Funkcjonalnym (testowane jest wspólnie działanie wszystkich aplikacji) i tam wszystko zadziałało! Zwycięstwo! Kolejnym zadaniem było stworzenie klasy umożliwiającej ukrywanie danych po kluczu w jsonie. Na przykład: istnieje json {text:"JavaRush"} -> przetwarzanie -> {text:"****Rush"}. Są tu dwie komplikacje: może wystąpić zagnieżdżanie {text:{mytext:"JavaRush"}}, a jeszcze bardziej nieprzyjemne jest zagnieżdżanie wewnątrz tablicy: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush "} ] } (oczywiście musisz ukryć cały tekst.mytext). Rozwiązanie tego problemu okazało się dość trudne, ale udało się! Tutaj drugi programista mówi: przykryj ten rozwój testami. W oczach widać było zdziwienie. W ten sposób poznałem bibliotekę JUnit w walce. Istota testów jednostkowych: masz dane wejściowe, przekazujesz je do metody i porównujesz otrzymane dane z poprawnym wynikiem (tworzysz zmienną z poprawnym wynikiem). Napisałem do swojej biblioteki 11 przypadków, w których sprawdziłem, czy aplikacja nie uległa awarii z powodu wyjątku NullPointException i czy poprawnie ukrywa dane przy dowolnym typie zagnieżdżenia. Po wykonaniu tego zadania otrzymałem nową integrację, której osobliwość była następująca: musiałem wyeksportować Spring Bean z zewnętrznej biblioteki. W tym momencie zostałem stałym klientem serwisu Stack OverFlow. Któregoś razu odpowiedział nawet oficjalny programista Springa. Po wdrożeniu tej integracji mój okres próbny dobiegł końca. Szef pogratulował mi przejścia okresu próbnego i zabrałem się za pisanie tego artykułu. W sumie napisanie tego artykułu zajęło 8 godzin) Dziękuję za uwagę, mam nadzieję, że artykuł był przydatny. Przy tak dużej ilości kodu trzeba podzielić go na klasy; metody, które nie są używane poza klasą muszą być zadeklarowane jako prywatne, aby przypadkowo nie uruchomić ich w innej klasie itp. Po napisaniu mojej integracji przez analogię z inną integracją dowiedziałem się o istnieniu CheckStyle - specjalnej wtyczki sprawdzającej styl kodu i nie będziesz mógł skompilować projektu, dopóki nie naprawisz błędów (na przykład dodatkowych spacji, nazw zmiennych pisanych wielkimi literami, zbyt krótkich nazw zmiennych). Po pokonaniu CheckStyle wysłałem mój kod do sprawdzenia starszym programistom i poprawiłem swoje błędy w ciągu tygodnia. Ogólnie miałem szczęście, że w moim zespole miałem dobry kontakt z drugim programistą, który wiele rzeczy mi wyjaśnił. Miesiąc po urządzeniu uruchomiona została moja pierwsza integracja na stanowisku Integracyjno-Funkcjonalnym (testowane jest wspólnie działanie wszystkich aplikacji) i tam wszystko zadziałało! Zwycięstwo! Kolejnym zadaniem było stworzenie klasy umożliwiającej ukrywanie danych po kluczu w jsonie. Na przykład: istnieje json {text:"JavaRush"} -> przetwarzanie -> {text:"****Rush"}. Są tu dwie komplikacje: może wystąpić zagnieżdżanie {text:{mytext:"JavaRush"}}, a jeszcze bardziej nieprzyjemne jest zagnieżdżanie wewnątrz tablicy: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush "} ] } (oczywiście musisz ukryć cały tekst.mytext). Rozwiązanie tego problemu okazało się dość trudne, ale udało się! Tutaj drugi programista mówi: przykryj ten rozwój testami. W oczach widać było zdziwienie. W ten sposób poznałem bibliotekę JUnit w walce. Istota testów jednostkowych: masz dane wejściowe, przekazujesz je do metody i porównujesz otrzymane dane z poprawnym wynikiem (tworzysz zmienną z poprawnym wynikiem). Napisałem do swojej biblioteki 11 przypadków, w których sprawdziłem, czy aplikacja nie uległa awarii z powodu wyjątku NullPointException i czy poprawnie ukrywa dane przy dowolnym typie zagnieżdżenia. Po wykonaniu tego zadania otrzymałem nową integrację, której osobliwość była następująca: musiałem wyeksportować Spring Bean z zewnętrznej biblioteki. W tym momencie zostałem stałym klientem serwisu Stack OverFlow. Któregoś razu odpowiedział nawet oficjalny programista Springa. Po wdrożeniu tej integracji mój okres próbny dobiegł końca. Szef pogratulował mi przejścia okresu próbnego i zabrałem się za pisanie tego artykułu. W sumie napisanie tego artykułu zajęło 8 godzin) Dziękuję za uwagę, mam nadzieję, że artykuł był przydatny. nazwy zmiennych są za krótkie). Po pokonaniu CheckStyle wysłałem mój kod do sprawdzenia starszym programistom i poprawiłem swoje błędy w ciągu tygodnia. Ogólnie miałem szczęście, że w moim zespole miałem dobry kontakt z drugim programistą, który wiele rzeczy mi wyjaśnił. Miesiąc po urządzeniu uruchomiona została moja pierwsza integracja na stanowisku Integracyjno-Funkcjonalnym (testowane jest wspólnie działanie wszystkich aplikacji) i tam wszystko zadziałało! Zwycięstwo! Kolejnym zadaniem było stworzenie klasy umożliwiającej ukrywanie danych po kluczu w jsonie. Na przykład: istnieje json {text:"JavaRush"} -> przetwarzanie -> {text:"****Rush"}. Są tu dwie komplikacje: może wystąpić zagnieżdżanie {text:{mytext:"JavaRush"}}, a jeszcze bardziej nieprzyjemne jest zagnieżdżanie wewnątrz tablicy: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush "} ] } (oczywiście musisz ukryć cały tekst.mytext). Rozwiązanie tego problemu okazało się dość trudne, ale udało się! Tutaj drugi programista mówi: przykryj ten rozwój testami. W oczach widać było zdziwienie. W ten sposób poznałem bibliotekę JUnit w walce. Istota testów jednostkowych: masz dane wejściowe, przekazujesz je do metody i porównujesz otrzymane dane z poprawnym wynikiem (tworzysz zmienną z poprawnym wynikiem). Napisałem do swojej biblioteki 11 przypadków, w których sprawdziłem, czy aplikacja nie uległa awarii z powodu wyjątku NullPointException i czy poprawnie ukrywa dane przy dowolnym typie zagnieżdżenia. Po wykonaniu tego zadania otrzymałem nową integrację, której osobliwość była następująca: musiałem wyeksportować Spring Bean z zewnętrznej biblioteki. W tym momencie zostałem stałym klientem serwisu Stack OverFlow. Któregoś razu odpowiedział nawet oficjalny programista Springa. Po wdrożeniu tej integracji mój okres próbny dobiegł końca. Szef pogratulował mi przejścia okresu próbnego i zabrałem się za pisanie tego artykułu. W sumie napisanie tego artykułu zajęło 8 godzin) Dziękuję za uwagę, mam nadzieję, że artykuł był przydatny. nazwy zmiennych są za krótkie). Po pokonaniu CheckStyle wysłałem mój kod do sprawdzenia starszym programistom i poprawiłem swoje błędy w ciągu tygodnia. Ogólnie miałem szczęście, że w moim zespole miałem dobry kontakt z drugim programistą, który wiele rzeczy mi wyjaśnił. Miesiąc po urządzeniu uruchomiona została moja pierwsza integracja na stanowisku Integracyjno-Funkcjonalnym (testowane jest wspólnie działanie wszystkich aplikacji) i tam wszystko zadziałało! Zwycięstwo! Kolejnym zadaniem było stworzenie klasy umożliwiającej ukrywanie danych po kluczu w jsonie. Na przykład: istnieje json {text:"JavaRush"} -> przetwarzanie -> {text:"****Rush"}. Są tu dwie komplikacje: może wystąpić zagnieżdżanie {text:{mytext:"JavaRush"}}, a jeszcze bardziej nieprzyjemne jest zagnieżdżanie wewnątrz tablicy: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush "} ] } (oczywiście musisz ukryć cały tekst.mytext). Rozwiązanie tego problemu okazało się dość trudne, ale udało się! Tutaj drugi programista mówi: przykryj ten rozwój testami. W oczach widać było zdziwienie. W ten sposób poznałem bibliotekę JUnit w walce. Istota testów jednostkowych: masz dane wejściowe, przekazujesz je do metody i porównujesz otrzymane dane z poprawnym wynikiem (tworzysz zmienną z poprawnym wynikiem). Napisałem do swojej biblioteki 11 przypadków, w których sprawdziłem, czy aplikacja nie uległa awarii z powodu wyjątku NullPointException i czy poprawnie ukrywa dane przy dowolnym typie zagnieżdżenia. Po wykonaniu tego zadania otrzymałem nową integrację, której osobliwość była następująca: musiałem wyeksportować Spring Bean z zewnętrznej biblioteki. W tym momencie zostałem stałym klientem serwisu Stack OverFlow. Któregoś razu odpowiedział nawet oficjalny programista Springa. Po wdrożeniu tej integracji mój okres próbny dobiegł końca. Szef pogratulował mi przejścia okresu próbnego i zabrałem się za pisanie tego artykułu. W sumie napisanie tego artykułu zajęło 8 godzin) Dziękuję za uwagę, mam nadzieję, że artykuł był przydatny. Rozwiązanie tego problemu okazało się dość trudne, ale udało się! Tutaj drugi programista mówi: przykryj ten rozwój testami. W oczach widać było zdziwienie. W ten sposób poznałem bibliotekę JUnit w walce. Istota testów jednostkowych: masz dane wejściowe, przekazujesz je do metody i porównujesz otrzymane dane z poprawnym wynikiem (tworzysz zmienną z poprawnym wynikiem). Napisałem do swojej biblioteki 11 przypadków, w których sprawdziłem, czy aplikacja nie uległa awarii z powodu wyjątku NullPointException i czy poprawnie ukrywa dane przy dowolnym typie zagnieżdżenia. Po wykonaniu tego zadania otrzymałem nową integrację, której osobliwość była następująca: musiałem wyeksportować Spring Bean z zewnętrznej biblioteki. W tym momencie zostałem stałym klientem serwisu Stack OverFlow. Któregoś razu odpowiedział nawet oficjalny programista Springa. Po wdrożeniu tej integracji mój okres próbny dobiegł końca. Szef pogratulował mi przejścia okresu próbnego i zabrałem się za pisanie tego artykułu. W sumie napisanie tego artykułu zajęło 8 godzin) Dziękuję za uwagę, mam nadzieję, że artykuł był przydatny. Rozwiązanie tego problemu okazało się dość trudne, ale udało się! Tutaj drugi programista mówi: przykryj ten rozwój testami. W oczach widać było zdziwienie. W ten sposób poznałem bibliotekę JUnit w walce. Istota testów jednostkowych: masz dane wejściowe, przekazujesz je do metody i porównujesz otrzymane dane z poprawnym wynikiem (tworzysz zmienną z poprawnym wynikiem). Napisałem do swojej biblioteki 11 przypadków, w których sprawdziłem, czy aplikacja nie uległa awarii z powodu wyjątku NullPointException i czy poprawnie ukrywa dane przy dowolnym typie zagnieżdżenia. Po wykonaniu tego zadania otrzymałem nową integrację, której osobliwość była następująca: musiałem wyeksportować Spring Bean z zewnętrznej biblioteki. W tym momencie zostałem stałym klientem serwisu Stack OverFlow. Któregoś razu odpowiedział nawet oficjalny programista Springa. Po wdrożeniu tej integracji mój okres próbny dobiegł końca. Szef pogratulował mi przejścia okresu próbnego i zabrałem się za pisanie tego artykułu. W sumie napisanie tego artykułu zajęło 8 godzin) Dziękuję za uwagę, mam nadzieję, że artykuł był przydatny.
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION