{"id":52950,"date":"2019-11-20T00:00:00","date_gmt":"2019-11-19T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/kak-podgotovitsya-k-sobesedovaniyu-v-google-i-ne-projti-ego-dvazhdy"},"modified":"2020-02-18T14:00:46","modified_gmt":"2020-02-18T11:00:46","slug":"kak-podgotovitsya-k-sobesedovaniyu-v-google-i-ne-projti-ego-dvazhdy","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/news\/kak-podgotovitsya-k-sobesedovaniyu-v-google-i-ne-projti-ego-dvazhdy","title":{"rendered":"Jak przygotowa\u0107 si\u0119 do rozmowy kwalifikacyjnej w Google i jej nie zda\u0107. Dwukrotnie.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Jak przygotowa\u0107 si\u0119 do rozmowy kwalifikacyjnej w Google i jej nie zda\u0107. Dwukrotnie.\" src=\"\/wp-content\/uploads\/2019\/11\/5bcaf7eb91486f2273b88f96aa4b6cb8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTytu\u0142 artyku\u0142u brzmi jak epic fail, ale tak naprawd\u0119 sprawa nie jest tak jednoznaczna. Og\u00f3lnie rzecz bior\u0105c, ta historia zako\u0144czy\u0142a si\u0119 do\u015b\u0107 pozytywnie, chocia\u017c nie w Google. Ale to ju\u017c temat na inny artyku\u0142. W tym artykule opowiem o trzech rzeczach: jak przebiega\u0142 m\u00f3j proces przygotowa\u0144, jak wygl\u0105da\u0142y rozmowy kwalifikacyjne w Google oraz dlaczego moim zdaniem sprawa nie jest tak jednoznaczna, jak mo\u017ce si\u0119 wydawa\u0107.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Jak to si\u0119 wszystko zacz\u0119\u0142o<\/h2>\n<p>\nPewnego ch\u0142odnego zimowego wieczoru na Cyprze nagle przysz\u0142a mi do g\u0142owy my\u015bl, \u017ce moja wiedza z dziedziny klasycznej informatyki jest znacznie poni\u017cej przeci\u0119tnej i \u017ce trzeba co\u015b z tym zrobi\u0107. Je\u015bli kto\u015b jeszcze nie czyta\u0142, dlaczego wiecz\u00f3r by\u0142 cypryjski i zimny, to mo\u017cna si\u0119 tego dowiedzie\u0107. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/359090\/\"><u>tutaj<\/u><\/a><\/noindex>. Po pewnych przemy\u015bleniach zdecydowa\u0142em, \u017ce najpierw musz\u0119 przej\u015b\u0107 kurs online na temat algorytm\u00f3w i struktur danych. Od jednego z by\u0142ych koleg\u00f3w s\u0142ysza\u0142em o kursie Roberta Sedgewicka na Coursera. Kurs sk\u0142ada si\u0119 z dw\u00f3ch cz\u0119\u015bci (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.coursera.org\/learn\/algorithms-part1\"><u>cz\u0119\u015b\u0107 1<\/u><\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/www.coursera.org\/learn\/algorithms-part2\"><u>Part 2<\/u><\/a><\/noindex>). Je\u015bli linki si\u0119 zmieni\u0105, mo\u017cna zawsze wyszuka\u0107 je po nazwisku autora. Ka\u017cda z cz\u0119\u015bci trwa 6 tygodni. Na pocz\u0105tku tygodnia udost\u0119pniane s\u0105 wyk\u0142ady, a w ci\u0105gu tygodnia nale\u017cy tak\u017ce wykona\u0107 \u0107wiczenia. Pierwsza cz\u0119\u015b\u0107 kursu obejmuje podstawowe struktury danych, g\u0142\u00f3wne rodzaje sortowania i z\u0142o\u017cono\u015b\u0107 algorytm\u00f3w. Druga cz\u0119\u015b\u0107 jest ju\u017c bardziej zaawansowana, zaczyna si\u0119 od graf\u00f3w i ko\u0144czy na takich rzeczach jak programowanie liniowe i trudno\u015bci. Po przemy\u015bleniu wszystkiego, doszed\u0142em do wniosku, \u017ce dok\u0142adnie tego potrzebuj\u0119. Tutaj z ciekawo\u015bci\u0105 zapyta\u0107 mo\u017ce dociekliwy czytelnik, co ma wsp\u00f3lnego z tym Google. I rzeczywi\u015bcie, do tego momentu nie mia\u0142 on tu zupe\u0142nie nic wsp\u00f3lnego. Ale potrzebowa\u0142em celu, poniewa\u017c uczenie si\u0119 przez 12 tygodni wieczorami bez celu jest do\u015b\u0107 trudne. A jaki mo\u017ce by\u0107 cel zdobywania nowej wiedzy? Oczywi\u015bcie, jej zastosowanie w praktyce. W codziennym \u017cyciu jest to do\u015b\u0107 problematyczne, ale na rozmowie kwalifikacyjnej w du\u017cej firmie jest to jak najbardziej mo\u017cliwe. Szybkie wyszukiwanie pokaza\u0142o, \u017ce Google (przepraszam za tautologi\u0119) jest jedn\u0105 z najwi\u0119kszych firm w Europie (a ja rozwa\u017ca\u0142em w\u0142a\u015bnie Europ\u0119), kt\u00f3ra przeprowadza takie rozmowy kwalifikacyjne. A dok\u0142adniej, ich biuro znajduje si\u0119 w Zurychu, w Szwajcarii. Tak wi\u0119c postanowione \u2014 uczymy si\u0119 i idziemy na rozmow\u0119 kwalifikacyjn\u0105 do Google.<\/p>\n<h2>Przygotowanie do pierwszego podej\u015bcia<\/h2>\n<p>\n12 tygodni min\u0119\u0142o niezauwa\u017calnie, a ja uko\u0144czy\u0142em oba kursy. Moje wra\u017cenia z kurs\u00f3w s\u0105 wi\u0119cej ni\u017c pozytywne i mog\u0119 je poleci\u0107 wszystkim zainteresowanym. Kursy przypad\u0142y mi do gustu z nast\u0119puj\u0105cych powod\u00f3w:<\/p>\n<ul>\n<li> Wyk\u0142adowca m\u00f3wi do\u015b\u0107 wyra\u017anym angielskim<\/li>\n<li> Materia\u0142 jest dobrze zorganizowany<\/li>\n<li> Wspania\u0142e prezentacje, pokazuj\u0105ce wn\u0119trza ka\u017cdego algorytmu<\/li>\n<li> Odpowiedni dob\u00f3r materia\u0142u<\/li>\n<li> Interesuj\u0105ce \u0107wiczenia<\/li>\n<li> \u0106wiczenia s\u0105 automatycznie sprawdzane na stronie, po czym generowany jest raport<\/li>\n<\/ul>\n<p>\nMoja praca nad kursami zazwyczaj przebiega\u0142a w nast\u0119puj\u0105cy spos\u00f3b. W ci\u0105gu 1-2 dni s\u0142ucha\u0142em wyk\u0142ad\u00f3w. Nast\u0119pnie przyst\u0119powa\u0142em do szybkiego testu wiedzy. Reszt\u0119 tygodnia sp\u0119dza\u0142em na \u0107wiczeniu w kilku iteracjach. Po pierwszym osi\u0105ga\u0142em 30-70%, kolejne podnosi\u0142y wynik do 97-100%. \u0106wiczenie zazwyczaj polega\u0142o na zaimplementowaniu jakiego\u015b algorytmu, na przyk\u0142ad <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Seam_carving\"><u>Seam carving<\/u><\/a><\/noindex> lub <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Bzip2\"><u>bzip<\/u><\/a><\/noindex>.<\/p>\n<p>Po uko\u0144czeniu kurs\u00f3w zda\u0142em sobie spraw\u0119, \u017ce wiele wiedzy to wiele smutk\u00f3w. Je\u015bli wcze\u015bniej po prostu wiedzia\u0142em, \u017ce nic nie wiem, to teraz zacz\u0105\u0142em zdawa\u0107 sobie spraw\u0119, co dok\u0142adnie wiem. <\/p>\n<p>Poniewa\u017c by\u0142 jeszcze maj, a rozmow\u0119 kwalifikacyjn\u0105 zaplanowa\u0142em na jesie\u0144, postanowi\u0142em kontynuowa\u0107 swoje eduakacj\u0119. Po zapoznaniu si\u0119 z wymaganiami oferty, podj\u0105\u0142em decyzj\u0119, aby jednocze\u015bnie p\u00f3j\u015b\u0107 w dw\u00f3ch kierunkach: kontynuowa\u0107 nauk\u0119 algorytm\u00f3w i przej\u015b\u0107 podstawowy kurs z uczenia maszynowego. W przypadku pierwszego celu zdecydowa\u0142em si\u0119 prze\u0142\u0105czy\u0107 z kurs\u00f3w na ksi\u0105\u017ck\u0119 i wybra\u0142em monumentalne dzie\u0142o Stevena Skieny \u201eAlgorytmy. Przewodnik po projektowaniu\u201d. Nie tak monumentalne jak u Knutha, ale mimo to. Dla drugiego celu zn\u00f3w poszed\u0142em na Courser\u0119 i zapisa\u0142em si\u0119 na kurs prowadzony przez Andrew Nga <noindex><a rel=\"nofollow\" href=\"https:\/\/www.coursera.org\/learn\/machine-learning\">Machine Learning<\/a><\/noindex>.<\/p>\n<p>Min\u0119\u0142o jeszcze 3 miesi\u0105ce i uko\u0144czy\u0142em kurs oraz ksi\u0105\u017ck\u0119. <\/p>\n<p>Zacznijmy od ksi\u0105\u017cki. Czytanie okaza\u0142o si\u0119 do\u015b\u0107 interesuj\u0105ce, cho\u0107 nie\u0142atwe. W zasadzie, poleci\u0142bym t\u0119 ksi\u0105\u017ck\u0119, ale nie od razu. Generalnie rzecz bior\u0105c, ksi\u0105\u017cka daje g\u0142\u0119bsz\u0105 analiz\u0119 tego, czego nauczy\u0142em si\u0119 na kursach. Dodatkowo odkry\u0142em dla siebie (z formalnego punktu widzenia) takie poj\u0119cia jak heurystyki i programowanie dynamiczne. Oczywi\u015bcie wcze\u015bniej mia\u0142em do czynienia z nimi, ale nie wiedzia\u0142em, jak si\u0119 nazywaj\u0105. W ksi\u0105\u017cce znajduje si\u0119 r\u00f3wnie\u017c pewna ilo\u015b\u0107 anegdot z \u017cycia autora (War Story), kt\u00f3re nieco prze\u0142amuj\u0105 akademicki charakter wyk\u0142adu. Drug\u0105 po\u0142ow\u0119 ksi\u0105\u017cki mo\u017cna zreszt\u0105 pomin\u0105\u0107, tam raczej opisane s\u0105 istniej\u0105ce problemy i metody ich rozwi\u0105zania. Przydatne, je\u015bli regularnie stosowane w praktyce, w przeciwnym razie szybko zostanie zapomniane.<\/p>\n<p>Kurs bardzo mnie zadowoli\u0142. Autor wyra\u017anie zna si\u0119 na rzeczy i opowiada w ciekawy spos\u00f3b. Dodatkowo spora cz\u0119\u015b\u0107, a mianowicie algebra liniowa i podstawy sieci neuronowych, pami\u0119ta\u0142em jeszcze z uniwersytetu, wi\u0119c nie napotka\u0142em na wi\u0119ksze trudno\u015bci. Struktura kursu jest do\u015b\u0107 standardowa. Kurs podzielony jest na tygodnie. Ka\u017cdego tygodnia najpierw odbywaj\u0105 si\u0119 wyk\u0142ady przeplatane kr\u00f3tkimi testami. Po wyk\u0142adach przydzielane jest zadanie, kt\u00f3re nale\u017cy wykona\u0107, wys\u0142a\u0107, a ono zostanie automatycznie sprawdzone. W skr\u00f3cie, lista temat\u00f3w omawianych na kursie jest nast\u0119puj\u0105ca:<br \/>\n \u2014 funkcja kosztu<br \/>\n \u2014 regresja liniowa<br \/>\n \u2014 spadek gradientu<br \/>\n \u2014 skalowanie cech<br \/>\n \u2014 r\u00f3wnanie normalne<br \/>\n \u2014 regresja logistyczna<br \/>\n \u2014 klasyfikacja wieloklasowa (jeden przeciwko wszystkim)<br \/>\n \u2014 sieci neuronowe<br \/>\n \u2014 wsteczna propagacja<br \/>\n \u2014 regularyzacja<br \/>\n \u2014 b\u0142\u0105d\/odchylenie<br \/>\n \u2014 krzywe uczenia si\u0119<br \/>\n \u2014 metryki b\u0142\u0119du (precyzja, recall, F1)<br \/>\n \u2014 maszyny wektor\u00f3w no\u015bnych (klasyfikacja z du\u017cym marginesem)<br \/>\n \u2014 K-\u015brednie<br \/>\n \u2014 analiza g\u0142\u00f3wnych sk\u0142adowych<br \/>\n \u2014 wykrywanie anomalii<br \/>\n \u2014 filtrowanie kolaboratywne (system rekomendacji)<br \/>\n \u2014 stochastyczne, mini-partia, batch spadki gradientu<br \/>\n \u2014 uczenie online<br \/>\n \u2014 map reduce<br \/>\n \u2014 analiza sufitowa<br \/>\nPo uko\u0144czeniu kursu zrozumienie tych wszystkich temat\u00f3w by\u0142o obecne. Po 2 latach prawie wszystko naturalnie zapomniane. Polecam go tym, kt\u00f3rzy nie znaj\u0105 si\u0119 na uczeniu maszynowym i chc\u0105 uzyska\u0107 solidn\u0105 podstaw\u0119 do dalszego rozwoju.<\/p>\n<h2>Pierwsze podej\u015bcie<\/h2>\n<p>\nBy\u0142 ju\u017c wrzesie\u0144 i nasta\u0142 czas, aby pomy\u015ble\u0107 o rozmowie kwalifikacyjnej. Poniewa\u017c aplikowanie przez stron\u0119 to do\u015b\u0107 kiepski pomys\u0142, zaj\u0105\u0142em si\u0119 poszukiwaniem znajomych pracuj\u0105cych w Google. Wyb\u00f3r pad\u0142 na <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/users\/datacompboy\/\" class=\"user_link\">datacompboy<\/a><\/noindex>, poniewa\u017c by\u0142 jedyn\u0105 osob\u0105, kt\u00f3r\u0105 zna\u0142em osobi\u015bcie (cho\u0107 nie osobi\u015bcie). Zgodzi\u0142 si\u0119 przekaza\u0107 moje CV, a wkr\u00f3tce p\u00f3\u017aniej otrzyma\u0142em od rekrutera wiadomo\u015b\u0107, proponuj\u0105c\u0105 zarezerwowanie slotu w jego kalendarzu na pierwsz\u0105 rozmow\u0119. Po kilku dniach odby\u0142a si\u0119 rozmowa. Pr\u00f3bowa\u0142em komunikowa\u0107 si\u0119 przez Hangouts, ale jako\u015b\u0107 by\u0142a okropna, wi\u0119c przeszli\u015bmy na telefon. Najpierw szybko om\u00f3wili\u015bmy standardowe pytania jak, dlaczego i po co, a potem przeszli\u015bmy do technicznego skanowania. Sk\u0142ada\u0142o si\u0119 ono z dziesi\u0119ciu pyta\u0144 w stylu \u201ejakie trudno\u015bci wyst\u0119puj\u0105 przy wstawianiu do mapy haszuj\u0105cej\u201d, \u201ejakie znasz zr\u00f3wnowa\u017cone drzewa\u201d. Nie jest to trudne, je\u015bli ma si\u0119 podstawow\u0105 wiedz\u0119 na ten temat. Skanowanie posz\u0142o dobrze i w wyniku tego postanowiono zorganizowa\u0107 pierwsz\u0105 rozmow\u0119 kwalifikacyjn\u0105 za tydzie\u0144. <\/p>\n<p>Rozmowa kwalifikacyjna r\u00f3wnie\u017c odby\u0142a si\u0119 przez Hangouts. Najpierw przez oko\u0142o 5 minut rozmawiali\u015bmy o mnie, a potem przeszli\u015bmy do zadania. Zadanie dotyczy\u0142o graf\u00f3w. Szybko zrozumia\u0142em, co trzeba zrobi\u0107, ale wybra\u0142em niew\u0142a\u015bciwy algorytm. Kiedy zacz\u0105\u0142em pisa\u0107 kod, u\u015bwiadomi\u0142em sobie to i przeszed\u0142em na inny wariant, kt\u00f3ry doko\u0144czy\u0142em. Rekruter zada\u0142 kilka pyta\u0144 dotycz\u0105cych z\u0142o\u017cono\u015bci algorytmu, zapyta\u0142, czy mo\u017cna to zrobi\u0107 szybciej. Jako\u015b si\u0119 zaci\u0105\u0142em i nie potrafi\u0142em. Na tym czas si\u0119 sko\u0144czy\u0142 i po\u017cegnali\u015bmy si\u0119. Po oko\u0142o 10 minutach dotar\u0142o do mnie, \u017ce zamiast algorytmu Dijkstry, kt\u00f3rego u\u017cy\u0142em, konkretnie w tym zadaniu mo\u017cna by\u0142oby u\u017cy\u0107 przeszukiwania wszerz, co by\u0142oby szybsze. Po chwili zadzwoni\u0142 rekruter i powiedzia\u0142, \u017ce og\u00f3lnie rozmowa posz\u0142a dobrze i trzeba by zorganizowa\u0107 jeszcze jedn\u0105. Dogadali\u015bmy si\u0119 na kolejne spotkanie za tydzie\u0144.<\/p>\n<p>Tym razem sprawy posz\u0142y gorzej. Je\u015bli za pierwszym razem interviewer by\u0142 przyjazny i rozmowny, to tym razem by\u0142 jaki\u015b ponury. Nie uda\u0142o mi si\u0119 od razu zgadn\u0105\u0107 zadania, chocia\u017c pomys\u0142y, kt\u00f3re przedstawia\u0142em, mog\u0142y w zasadzie prowadzi\u0107 do rozwi\u0105zania. Ostatecznie, po kilku wskaz\u00f3wkach od interviewera, dotar\u0142em do rozwi\u0105zania. Tym razem znowu okaza\u0142o si\u0119, \u017ce to wyszukiwanie wszerz, tylko z kilku punkt\u00f3w. Rozwi\u0105zanie napisa\u0142em w czasie, ale zapomnia\u0142em o przypadkach brzegowych. Po jakim\u015b czasie zadzwoni\u0142 rekruter i poinformowa\u0142, \u017ce tym razem interviewer by\u0142 niezadowolony, poniewa\u017c jego zdaniem potrzebowa\u0142em zbyt wielu wskaz\u00f3wek (3 lub 4) i ci\u0105gle zmienia\u0142em kod podczas pisania. Po wynikach dw\u00f3ch rozm\u00f3w kwalifikacyjnych podj\u0119to decyzj\u0119, aby dalej nie i\u015b\u0107, a od\u0142o\u017cy\u0107 nast\u0119pne interview na rok, je\u015bli b\u0119d\u0119 mia\u0142 na to ochot\u0119. Na tym zako\u0144czyli\u015bmy rozmow\u0119. <\/p>\n<p>Z tej historii wyci\u0105gn\u0105\u0142em kilka wniosk\u00f3w:<\/p>\n<ul>\n<li> Teoria to dobrze, ale trzeba szybko si\u0119 w niej orientowa\u0107.<\/li>\n<li> Teoria bez praktyki nie pomo\u017ce. Nale\u017cy rozwi\u0105zywa\u0107 zadania i doprowadzi\u0107 pisanie kodu do automatyzmu.<\/li>\n<li> Wiele zale\u017cy od interviewera. I na to nic nie mo\u017cna poradzi\u0107.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Przygotowanie do drugiej pr\u00f3by<\/h2>\n<p>\nPo przemy\u015bleniu sytuacji podj\u0105\u0142em decyzj\u0119, aby spr\u00f3bowa\u0107 jeszcze raz za rok. Lekko zmieni\u0142em cel. Je\u015bli wcze\u015bniej g\u0142\u00f3wnym celem by\u0142a nauka, a interview w Google dalekim marzeniem, to teraz przej\u015bcie przez interview sta\u0142o si\u0119 celem, a nauka \u015brodkiem.<br \/>\nZosta\u0142 opracowany nowy plan, w kt\u00f3ry wchodzi\u0142y nast\u0119puj\u0105ce punkty:<\/p>\n<ul>\n<li> Kontynuowa\u0107 nauk\u0119 teorii poprzez czytanie ksi\u0105\u017cek i artyku\u0142\u00f3w.<\/li>\n<li> Rozwi\u0105za\u0107 algorytmiczne zadania w ilo\u015bci 500-1000 sztuk.<\/li>\n<li> Kontynuowa\u0107 nauk\u0119 teorii poprzez ogl\u0105danie film\u00f3w.<\/li>\n<li> Kontynuowa\u0107 nauk\u0119 teorii poprzez kursy.<\/li>\n<li> Pozna\u0107 do\u015bwiadczenia innych ludzi w zakresie przechodzenia rozm\u00f3w kwalifikacyjnych w Google.<\/li>\n<\/ul>\n<p>\nPlan zosta\u0142 zrealizowany przeze mnie w ci\u0105gu roku. Nast\u0119pnie opisz\u0119, co dok\u0142adnie robi\u0142em w ka\u017cdym z punkt\u00f3w.<\/p>\n<h4>Ksi\u0105\u017cki i artyku\u0142y<\/h4>\n<p>\nIlo\u015b\u0107 przeczytanych artyku\u0142\u00f3w ju\u017c nawet nie pami\u0119tam, czyta\u0142em je zar\u00f3wno po rosyjsku, jak i po angielsku. Najbardziej przydatn\u0105 stron\u0105 okaza\u0142a si\u0119 prawdopodobnie <noindex><a rel=\"nofollow\" href=\"http:\/\/e-maxx.ru\/algo\/\"><u>ta<\/u><\/a><\/noindex>. Zebrano tu opisy wielu ciekawych algorytm\u00f3w z przyk\u0142adami kodu.<\/p>\n<p>Przeczyta\u0142em 5 ksi\u0105\u017cek: Algorithms, 4th edition (Sedgewick, Wayne), Introduction to Algorithms 3rd Edition (Cormen, Leiserson, Rivest, Stein), Cracking the Coding Interview 4th edition (Gayle Laakmann), Programming Interviews Exposed 2nd edition (Mongan, Suojanen, Giguere), Elements of Programming Interviews (Aziz, Lee, Prakash). Mo\u017cna je podzieli\u0107 na 2 kategorie. W pierwszej znajduj\u0105 si\u0119 ksi\u0105\u017cki Sedgewicka i Cormena. To teoria. Pozosta\u0142e to przygotowanie do rozmowy kwalifikacyjnej. Sedgewick w ksi\u0105\u017cce opisuje to samo, co w swoich kursach. Po prostu w wersji pisemnej. Nie ma szczeg\u00f3lnego sensu dok\u0142adnie czyta\u0107, je\u015bli przesz\u0142o si\u0119 kurs, ale warto rzuci\u0107 okiem. Je\u015bli kurs nie by\u0142 ogl\u0105dany, to ma sens przeczyta\u0107. Cormen wyda\u0142 mi si\u0119 zbyt nudny. Szczerze m\u00f3wi\u0105c, ledwo go przeszed\u0142em. Wynios\u0142em stamt\u0105d tylko <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Master_theorem_(analysis_of_algorithms)\"><u>master theorem<\/u><\/a><\/noindex>, oraz kilka rzadko u\u017cywanych struktur danych (Fibonacci heap, van Emde Boas tree, radix heap).<\/p>\n<p>Ksi\u0105\u017ck\u0119 do przygotowania do rozmowy kwalifikacyjnej warto przeczyta\u0107 przynajmniej jedn\u0105. Wszystkie s\u0105 zbudowane wed\u0142ug podobnej zasady. Opisuj\u0105 proces rozmowy kwalifikacyjnej w du\u017cych firmach technologicznych, podaj\u0105 podstawowe rzeczy z informatyki, zagadki na te podstawowe rzeczy, rozwi\u0105zania zagadek i rozbi\u00f3r rozwi\u0105za\u0144. Z tych trzech chyba poleca\u0142bym Cracking the Coding Interview jako g\u0142\u00f3wn\u0105, a pozosta\u0142e wed\u0142ug uznania.<\/p>\n<h4>Zadania algorytmiczne<\/h4>\n<p>\nTo chyba by\u0142 najciekawszy punkt przygotowania. Mo\u017cna, oczywi\u015bcie, usi\u0105\u015b\u0107 i bezmy\u015blnie rozwi\u0105zywa\u0107 zadania. Jest wiele r\u00f3\u017cnych stron do tego. Ja g\u0142\u00f3wnie korzysta\u0142em z trzech: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.hackerrank.com\"><u>Hackerrank<\/u><\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.codechef.com\/\"><u>CodeChef<\/u><\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/leetcode.com\/\"><u>LeetCode<\/u><\/a><\/noindex>. Na CodeChef zadania s\u0105 podzielone wed\u0142ug trudno\u015bci, ale nie wed\u0142ug temat\u00f3w. Na Hackerrank wed\u0142ug trudno\u015bci i temat\u00f3w. <\/p>\n<p>Jednak jak od razu si\u0119 dowiedzia\u0142em, jest ciekawszy spos\u00f3b. A s\u0105 to zawody (programming challenges lub programming contests). Wszystkie trzy strony je oferuj\u0105. Niestety z LeetCode jest problem \u2014 niewygodna strefa czasowa. Dlatego nie bra\u0142em udzia\u0142u w tym serwisie. Hackerrank i CodeChef oferuj\u0105 wystarczaj\u0105c\u0105 ilo\u015b\u0107 r\u00f3\u017cnych zawod\u00f3w, trwaj\u0105cych od 1 godziny do 10 dni. R\u00f3\u017cne formaty maj\u0105 r\u00f3\u017cne zasady, ale mo\u017cna by o tym d\u0142ugo opowiada\u0107. G\u0142\u00f3wna istota, dlaczego zawody s\u0105 dobre, to wprowadzenie rywalizacyjnego (i znowu tautologia) elementu do procesu nauki.<\/p>\n<p>\u0141\u0105cznie wzi\u0105\u0142em udzia\u0142 w 37 zawodach na Hackerrank. Z tego 32 by\u0142y w rankingu, a 5 sponsorowanymi (nawet otrzyma\u0142em 25$ w jednym z nich) lub dla zabawy. W zawodach rankingowych 10 razy znalaz\u0142em si\u0119 w top 4%, 11 razy w top 12% i 5 razy w top 25%. Moje najlepsze wyniki to 27\/1459 w 3-godzinnym i 22\/9721 w tygodniowym.<\/p>\n<p>Przeszed\u0142em na CodeChef, gdy na Hackerrank zawody zacz\u0119\u0142y odbywa\u0107 si\u0119 rzadziej. \u0141\u0105cznie wzi\u0105\u0142em udzia\u0142 w 5 zawodach. Najlepszym wynikiem by\u0142o 426\/5019 w dziesi\u0119ciodniowych zawodach.<\/p>\n<p>Og\u00f3lnie, w zawodach i dla zabawy rozwi\u0105za\u0142em nieco ponad 1000 zada\u0144, co wpisywa\u0142o si\u0119 w plan. Teraz niestety nie mam wolnego czasu na kontynuowanie dzia\u0142alno\u015bci konkursowej, ani celu, pod kt\u00f3ry m\u00f3g\u0142bym przypisa\u0107 czas, kt\u00f3ry nie jest wolny. Ale to by\u0142o zabawne. Polecam tym, kt\u00f3rzy si\u0119 tym interesuj\u0105, znale\u017a\u0107 towarzyszy my\u015bli. We dwoje lub w grupie jest znacznie ciekawiej. Zajmowa\u0142em si\u0119 tym z przyjacielem, dlatego mo\u017ce tak dobrze mi sz\u0142o.<\/p>\n<h4>Ogl\u0105danie wideo<\/h4>\n<p>\nPo przeczytaniu ksi\u0105\u017cki Skiena zainteresowa\u0142em si\u0119 tym, czym si\u0119 zajmuje. Podobnie jak Sedgwick, jest profesorem na uniwersytecie. W zwi\u0105zku z tym w sieci mo\u017cna znale\u017a\u0107 nagrania jego wyk\u0142ad\u00f3w. Postanowi\u0142em obejrze\u0107 kurs <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/playlist?list=PL07B3F10B48592010\"><u>COMP300E \u2014 Programming Challenges \u2014 2009 HKUST<\/u><\/a><\/noindex>. Nie powiem, \u017ce bardzo mi si\u0119 spodoba\u0142o. Po pierwsze jako\u015b\u0107 wideo nie by\u0142a najlepsza. Po drugie nie pr\u00f3bowa\u0142em samodzielnie rozwi\u0105zywa\u0107 zada\u0144 omawianych w kursie. Tak wi\u0119c zaanga\u017cowanie by\u0142o niewielkie.<br \/>\nR\u00f3wnie\u017c podczas rozwi\u0105zywania zada\u0144, pr\u00f3buj\u0105c znale\u017a\u0107 odpowiedni algorytm, natkn\u0105\u0142em si\u0119 na wideo Tushara Roya. Pracowa\u0142 w Amazonie, a teraz pracuje w Apple. Jak p\u00f3\u017aniej ustali\u0142em, ma on <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/user\/tusharroy2525\/videos\">kana\u0142 na YouTube<\/a><\/noindex>, na kt\u00f3rym umieszcza analizy r\u00f3\u017cnych algorytm\u00f3w. W momencie pisania artyku\u0142u kana\u0142 zawiera 103 filmy. I trzeba powiedzie\u0107, \u017ce analizy w jego wykonaniu s\u0105 bardzo przyzwoite. Pr\u00f3bowa\u0142em ogl\u0105da\u0107 innych autor\u00f3w, ale jako\u015b mi nie pasowa\u0142o. Tak wi\u0119c ten kana\u0142 zdecydowanie mog\u0119 poleci\u0107 do ogl\u0105dania.<\/p>\n<h4>Uczestnictwo w kursach<\/h4>\n<p>\nTutaj nie zajmowa\u0142em si\u0119 niczym szczeg\u00f3lnym. Obejrza\u0142em filmy z Android Developer Nanodegree od Google i przeszed\u0142em kurs od ITMO <noindex><a rel=\"nofollow\" href=\"https:\/\/www.edx.org\/course\/how-to-win-coding-competitions-secrets-of-champions\">How to Win Coding Competitions: Secrets of Champions<\/a><\/noindex>. Nanodegree jest ca\u0142kiem w porz\u0105dku, chocia\u017c oczywi\u015bcie nic nowego stamt\u0105d nie dowiedzia\u0142em si\u0119. Kurs od ITMO by\u0142 nieco chaotyczny w teorii, ale zadania by\u0142y interesuj\u0105ce. Nie poleca\u0142bym zaczyna\u0107 od niego, ale og\u00f3lnie czas sp\u0119dzony na nim nie by\u0142 stracony.<\/p>\n<h4>Pozna\u0107 do\u015bwiadczenia innych ludzi<\/h4>\n<p>\nOczywi\u015bcie wiele os\u00f3b pr\u00f3bowa\u0142o dosta\u0107 si\u0119 do Google. Niekt\u00f3rzy si\u0119 dostali, inni nie. Niekt\u00f3rzy pisali o tym artyku\u0142y. Z ciekawych rzeczy mo\u017ce zaznacz\u0119 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jwasham\/coding-interview-university\">to tutaj<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"http:\/\/larrr.com\/wp-content\/uploads\/2016\/10\/InterviewPreparationGuide.pdf\">to tutaj<\/a><\/noindex>. W pierwszym przypadku, osoba przygotowa\u0142a dla siebie list\u0119 tego, co musi si\u0119 nauczy\u0107, aby zosta\u0107 in\u017cynierem oprogramowania i dosta\u0107 si\u0119 do Google. Ostatecznie trafi\u0142 do Amazona, ale to ju\u017c nie jest takie wa\u017cne. Drugi poradnik zosta\u0142 napisany przez in\u017cyniera Google, Laris\u0119 Agarow\u0105 (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/users\/larrr\/\" class=\"user_link\">Larrr<\/a><\/noindex>). Opr\u00f3cz tego dokumentu, mo\u017cna r\u00f3wnie\u017c przeczyta\u0107 <noindex><a rel=\"nofollow\" href=\"http:\/\/larrr.com\/\">jej blog<\/a><\/noindex>.<\/p>\n<p>Warto poczyta\u0107 opinie o rozmowach kwalifikacyjnych na Glassdoor. Wszystkie s\u0105 mniej wi\u0119cej podobne, ale mo\u017cna wyci\u0105gn\u0105\u0107 jak\u0105\u015b u\u017cyteczn\u0105 informacj\u0119.<\/p>\n<p>Link\u00f3w do innych drobnych artyku\u0142\u00f3w nie b\u0119d\u0119 podawa\u0142, sami z \u0142atwo\u015bci\u0105 znajdziecie je w Google. <\/p>\n<h2>Drugie podej\u015bcie<\/h2>\n<p>\nI tak min\u0105\u0142 rok. By\u0142 to bardzo intensywny czas pod wzgl\u0119dem nauki. Jednak do nowej jesieni podchodzi\u0142em z du\u017co g\u0142\u0119bsz\u0105 wiedz\u0105 teoretyczn\u0105 i wypracowanymi umiej\u0119tno\u015bciami praktycznymi. Do ko\u0144ca wyznaczonego mi roku na przygotowania pozosta\u0142o jeszcze kilka tygodni, kiedy nagle na moj\u0105 skrzynk\u0119 mailow\u0105 przysz\u0142a wiadomo\u015b\u0107 od rekrutera z Google, w kt\u00f3rej pyta\u0142, czy nadal mam ochot\u0119 pracowa\u0107 w Google i czy nie przeszkadza\u0142oby mi, gdyby\u015bmy porozmawiali. Oczywi\u015bcie nie mia\u0142em nic przeciwko. Um\u00f3wili\u015bmy si\u0119 na rozmow\u0119 telefoniczn\u0105 za tydzie\u0144. Poproszono mnie r\u00f3wnie\u017c o zaktualizowane CV, do kt\u00f3rego do\u0142\u0105czy\u0142em kr\u00f3tkie podsumowanie tego, co zrobi\u0142em przez rok w pracy i w og\u00f3le.<\/p>\n<p>Po rozmowie o \u017cyciu ustalono, \u017ce za tydzie\u0144 odb\u0119dzie si\u0119 wywiad na Hangouts, wszystko jak w zesz\u0142ym roku. Tydzie\u0144 min\u0105\u0142, nadszed\u0142 czas na rozmow\u0119, ale przek\u0142adaj\u0105cy si\u0119 nie pojawi\u0142. Min\u0119\u0142o 10 minut, ju\u017c zaczyna\u0142em si\u0119 denerwowa\u0107, gdy nagle kto\u015b wdar\u0142 si\u0119 do czatu. Jak si\u0119 p\u00f3\u017aniej okaza\u0142o, m\u00f3j rozm\u00f3wca z jakiego\u015b powodu nie m\u00f3g\u0142 si\u0119 pojawi\u0107 i pilnie znaleziono mu zast\u0119pstwo. Osoba ta by\u0142a niezbyt przygotowana zar\u00f3wno pod wzgl\u0119dem konfiguracji komputera, jak i prowadzenia wywiadu. Ale potem wszystko posz\u0142o dobrze. Rozwi\u0105za\u0142em zadanie szybko, opisa\u0142em, gdzie mog\u0105 by\u0107 pu\u0142apki, jak je mo\u017cna omin\u0105\u0107. Om\u00f3wili\u015bmy kilka r\u00f3\u017cnych wariant\u00f3w zadania, z\u0142o\u017cono\u015b\u0107 algorytmu. Potem jeszcze przez 5 minut porozmawiali\u015bmy, in\u017cynier opowiedzia\u0142 o swoich wra\u017ceniach z pracy w Monachium (w Zurychu najwyra\u017aniej nie znale\u017ali pilnego zast\u0119pstwa), na tym si\u0119 rozstali\u015bmy.<\/p>\n<p>Tego samego dnia skontaktowa\u0142 si\u0119 ze mn\u0105 rekruter i poinformowa\u0142, \u017ce rozmowa kwalifikacyjna posz\u0142a \u015bwietnie i s\u0105 gotowi zaprosi\u0107 mnie na rozmow\u0119 w biurze. Nast\u0119pnego dnia po\u0142\u0105czyli\u015bmy si\u0119 przez Hangouts i om\u00f3wili\u015bmy szczeg\u00f3\u0142y. Poniewa\u017c musia\u0142em za\u0142atwi\u0107 wiz\u0119, postanowili\u015bmy um\u00f3wi\u0107 si\u0119 na rozmow\u0119 za miesi\u0105c. <\/p>\n<p>Podczas przygotowywania dokument\u00f3w r\u00f3wnocze\u015bnie omawia\u0142em z rekruterem nadchodz\u0105c\u0105 rozmow\u0119 kwalifikacyjn\u0105. Standardowa rozmowa w Google sk\u0142ada si\u0119 z 4 algorytmicznych i jednej dotycz\u0105cej System Design. Jednak\u017ce, poniewa\u017c aplikowa\u0142em jako programista Android, powiedziano mi, \u017ce cz\u0119\u015b\u0107 rozmowy b\u0119dzie mia\u0142a specyfik\u0119 Androida. Jakie dok\u0142adnie pytania b\u0119d\u0105 zadawane i w czym b\u0119dzie ta specyfika, nie uda\u0142o mi si\u0119 od rekrutera uzyska\u0107. Zrozumia\u0142em, \u017ce to wprowadzono stosunkowo niedawno i sam nie by\u0142 zbyt zorientowany. Zaplanowano mi tak\u017ce dwie sesje treningowe: jak przeprowadza\u0107 rozmow\u0119 algorytmiczn\u0105 i jak przeprowadza\u0107 rozmow\u0119 System Design. Sesje by\u0142y \u015brednio przydatne. Nikt nie m\u00f3g\u0142 mi tak\u017ce powiedzie\u0107, co pytaj\u0105 programist\u00f3w Android. Dlatego moja przygotowania w tym miesi\u0105cu sprowadzi\u0142y si\u0119 do:<\/p>\n<ul>\n<li>Zakupu tablicy markerowej i zapisania na niej z pami\u0119ci 2-3 dziesi\u0105tek najpopularniejszych algorytm\u00f3w. Po 3-5 dziennie. Z kolei ka\u017cdy z nich by\u0142 zapisany kilka razy.<\/li>\n<li>Od\u015bwie\u017cenia w pami\u0119ci r\u00f3\u017cnych informacji dotycz\u0105cych Androida, kt\u00f3rych nie u\u017cywam na co dzie\u0144.<\/li>\n<li>Obejrzenia kilku film\u00f3w o du\u017cych skalach i tym podobnych.<\/li>\n<\/ul>\n<p>\nJak ju\u017c wspomina\u0142em, r\u00f3wnolegle przygotowywa\u0142em dokumenty na podr\u00f3\u017c. Na pocz\u0105tek poproszono mnie o dane do sporz\u0105dzenia zaproszenia. P\u00f3\u017aniej d\u0142ugo pr\u00f3bowa\u0142em ustali\u0107, kto na Cyprze za\u0142atwia wizy do Szwajcarii, poniewa\u017c szwajcarska ambasada si\u0119 tym nie zajmuje. Okaza\u0142o si\u0119, \u017ce tym zajmuje si\u0119 konsulat Austrii. Zadzwoni\u0142em i um\u00f3wi\u0142em si\u0119 na wizyt\u0119. \u017b\u0105dano ca\u0142ego zestawu dokument\u00f3w, ale nic specjalnie interesuj\u0105cego. Zdj\u0119cia, paszport, zezwolenie na pobyt, mn\u00f3stwo r\u00f3\u017cnych za\u015bwiadcze\u0144 i oczywi\u015bcie zaproszenie. Czas mija\u0142, a list nadal nie przychodzi\u0142. Ostatecznie pojecha\u0142em z zwyk\u0142ym wydrukiem i to ca\u0142kiem wystarczy\u0142o. Sam list dotar\u0142 jeszcze po oko\u0142o trzech dniach, przy czym cypryjski FedEx nie potrafi\u0142 znale\u017a\u0107 mojego adresu, wi\u0119c musia\u0142em po niego pojecha\u0107 sam. Przy okazji odebra\u0142em w tym samym FedExie paczk\u0119, kt\u00f3rej te\u017c nie dostarczono, poniewa\u017c nie znaleziono adresu, a kt\u00f3ra le\u017ca\u0142a tam od czerwca (5 miesi\u0119cy, Carl). Nie wiedzia\u0142em o niej, wi\u0119c naturalnie nie przypuszcza\u0142em, \u017ce j\u0105 maj\u0105. Wiz\u0119 otrzyma\u0142em na czas, po czym zarezerwowano mi hotel i zaproponowano opcje przelotu. Opcje dostosowa\u0142em, aby by\u0142y wygodniejsze. Bezpo\u015brednich lot\u00f3w ju\u017c nie by\u0142o, wi\u0119c ostatecznie lecia\u0142em tam przez Ateny, a z powrotem przez Wiede\u0144.<\/p>\n<p>Po za\u0142atwieniu wszystkich formalno\u015bci zwi\u0105zanych z podr\u00f3\u017c\u0105 min\u0119\u0142o jeszcze kilka dni i faktycznie wylecia\u0142em do Zurychu. Dotar\u0142em bez przyg\u00f3d. Z lotniska do miasta dojecha\u0142em poci\u0105giem \u2014 szybko i wygodnie. Troch\u0119 poszukuj\u0105c po mie\u015bcie, znalaz\u0142em hotel i si\u0119 zameldowa\u0142em. Poniewa\u017c hotel by\u0142 zarezerwowany bez posi\u0142k\u00f3w, zjad\u0142em kolacj\u0119 w pobliskiej restauracji i poszed\u0142em spa\u0107, poniewa\u017c lot by\u0142 poranny i by\u0142em ju\u017c zm\u0119czony. Nast\u0119pnego dnia zjad\u0142em \u015bniadanie w hotelu (za dodatkow\u0105 op\u0142at\u0105) i uda\u0142em si\u0119 do biura Google. W Zurychu Google ma kilka biur. Moje rozmowy kwalifikacyjne nie odbywa\u0142y si\u0119 w centralnym. W sumie biuro wygl\u0105da\u0142o do\u015b\u0107 standardowo, wi\u0119c nie mia\u0142em okazji zobaczy\u0107 wszystkich udogodnie\u0144 \u201enormalnego\u201d biura Google. Zarejestrowa\u0142em si\u0119 u administratora i usiad\u0142em, czekaj\u0105c. Po jakim\u015b czasie wyszed\u0142 rekruter i opowiedzia\u0142 mi plan dnia, po czym zaprowadzi\u0142 do pokoju, w kt\u00f3rym mia\u0142y odby\u0107 si\u0119 rozmowy. W planie by\u0142o 3 rozmowy, lunch i jeszcze 2 rozmowy.<\/p>\n<h4>Rozmowa kwalifikacyjna numer jeden<\/h4>\n<p>\nPierwsza rozmowa kwalifikacyjna dotyczy\u0142a Androida. Co ciekawe, w og\u00f3le nie by\u0142a zwi\u0105zana z algorytmami. Niespodzianka, prawda? C\u00f3\u017c, nawet lepiej, w ko\u0144cu to bardziej znajome. Poproszono mnie o stworzenie okre\u015blonego komponentu UI. Najpierw om\u00f3wili\u015bmy, co i jak zrobi\u0107. Zaproponowa\u0142em rozwi\u0105zanie oparte na RxJava, opisa\u0142em, co dok\u0142adnie i dlaczego chcia\u0142bym zrobi\u0107. Powiedzieli, \u017ce to oczywi\u015bcie dobrze, ale zr\u00f3bmy to przy u\u017cyciu narz\u0119dzi frameworka Android. A przy okazji napiszmy kod na tablicy. Nie tylko komponent, ale ca\u0142\u0105 Activity wykorzystuj\u0105c\u0105 ten komponent. Na to nie by\u0142em przygotowany. Jedna rzecz to pisa\u0107 na tablicy algorytmy na 30-50 linijek, a inna to klika\u0107 w Androidzie, nawet skracaj\u0105c i pisz\u0105c komentarze w stylu \u201eno, tego nie b\u0119d\u0119 pisa\u0142, bo to i tak oczywiste\u201d. Wysz\u0142o co\u015b jak sa\u0142atka na trzech tablicach. To znaczy, \u017ce zadanie rozwi\u0105za\u0142em, ale wygl\u0105da\u0142o to \u017ale.<\/p>\n<h4>Rozmowa kwalifikacyjna numer dwa<\/h4>\n<p>\nTym razem rozmowa dotyczy\u0142a algorytm\u00f3w. A interviewer\u00f3w by\u0142o dw\u00f3ch. Jeden by\u0142 g\u0142\u00f3wnym interviewerem, a drugi m\u0142odszym padawanem (shadow interviewer). Nale\u017ca\u0142o wymy\u015bli\u0107 struktur\u0119 danych o okre\u015blonych w\u0142a\u015bciwo\u015bciach. Najpierw, jak zwykle, omawiali\u015bmy problem. Zadawa\u0142em r\u00f3\u017cne pytania, interviewer odpowiada\u0142. Po pewnym czasie poprosili, \u017cebym napisa\u0142 kilka metod wymy\u015blonej struktury na tablicy. Tym razem posz\u0142o wzgl\u0119dnie dobrze, chocia\u017c by\u0142o kilka drobnych b\u0142\u0119d\u00f3w, kt\u00f3re poprawi\u0142em po wskaz\u00f3wkach interviewera. <\/p>\n<h4>Rozmowa kwalifikacyjna numer trzy<\/h4>\n<p>\nTym razem system design, kt\u00f3ry nagle okaza\u0142 si\u0119 Androidem. Nale\u017ca\u0142o zaprojektowa\u0107 aplikacj\u0119 o okre\u015blonej funkcjonalno\u015bci. Om\u00f3wili\u015bmy wymagania dotycz\u0105ce aplikacji, serwera i protoko\u0142u komunikacji. Nast\u0119pnie zacz\u0105\u0142em opisywa\u0107, jakie komponenty lub biblioteki chcia\u0142bym wykorzysta\u0107 przy budowie aplikacji. A potem, przy wspomnieniu Job Scheduler, pojawi\u0142 si\u0119 pewien problem. S\u0119k w tym, \u017ce nigdy go nie u\u017cywa\u0142em w praktyce, poniewa\u017c w momencie jego wprowadzenia przeszed\u0142em na wsparcie aplikacji, w kt\u00f3rych nie by\u0142o zada\u0144 do jego zastosowania. Podczas opracowywania kolejnych projekt\u00f3w by\u0142o to samo. To znaczy, teoretycznie wiem, co to jest, kiedy i jak to stosowa\u0107, ale nie mam do\u015bwiadczenia w u\u017cywaniu tego. I to najwyra\u017aniej nie spodoba\u0142o si\u0119 interviewerowi. P\u00f3\u017aniej poprosili, \u017cebym napisa\u0142 kod. Tak, podczas opracowywania aplikacji od razu trzeba pisa\u0107 kod. Ponownie kod Androida na tablicy. Zn\u00f3w wysz\u0142o \u017ale.<\/p>\n<h4>Obiad<\/h4>\n<p>\nMia\u0142 przyj\u015b\u0107 jeszcze jedna osoba, ale si\u0119 nie pojawi\u0142a. Google r\u00f3wnie\u017c ma czasem potkni\u0119cia. W rezultacie na lunch poszed\u0142em z poprzednim rozm\u00f3wc\u0105, jej koleg\u0105, a chwil\u0119 p\u00f3\u017aniej do\u0142\u0105czy\u0142 nast\u0119pny rozm\u00f3wca. Lunch by\u0142 ca\u0142kiem przyzwoity. Znowu, poniewa\u017c to nie by\u0142a g\u0142\u00f3wna siedziba w Zurychu, sto\u0142\u00f3wka wygl\u0105da\u0142a do\u015b\u0107 zwyczajnie, chocia\u017c bardzo przyjemnie.<\/p>\n<h4>Rozmowa kwalifikacyjna numer cztery<\/h4>\n<p>\nWreszcie algorytmy w czystej postaci. Pierwsze zadanie rozwi\u0105za\u0142em do\u015b\u0107 szybko i skutecznie, co prawda nie trafi\u0142em w jeden przypadek brzegowy, ale dzi\u0119ki wskaz\u00f3wce rozm\u00f3wcy (on poda\u0142 ten w\u0142a\u015bnie przypadek brzegowy) znalaz\u0142em problem i go poprawi\u0142em. Naturalnie musia\u0142em pisa\u0107 kod na tablicy. Nast\u0119pnie podano podobne zadanie, ale trudniejsze. Dla niego znalaz\u0142em kilka nieoptymalnych rozwi\u0105za\u0144 i prawie znalaz\u0142em optymalne, zabrak\u0142o mi 5-10 minut, aby doko\u0144czy\u0107 my\u015bl. No i kod dla niego nie zd\u0105\u017cy\u0142em ju\u017c napisa\u0107.<\/p>\n<h4>Rozmowa kwalifikacyjna numer pi\u0119\u0107<\/h4>\n<p>\nI znowu rozmowa na temat Androida. Ciekawe, po co uczy\u0142em si\u0119 algorytm\u00f3w przez ca\u0142y rok?<br \/>\nNa pocz\u0105tku by\u0142o kilka prostych pyta\u0144. Potem rozm\u00f3wca napisa\u0142 kod na tablicy i poprosi\u0142 o znalezienie w nim problem\u00f3w. Znalaz\u0142em, wyt\u0142umaczy\u0142em, poprawi\u0142em. Om\u00f3wili\u015bmy to. A potem zacz\u0119\u0142y si\u0119 kilka niespodziewanych pyta\u0144 w stylu \u201eco w klasie X robi metoda Y\u201d, \u201eco wewn\u0105trz metody Y\u201d, \u201eco robi klasa Z\u201d. Na co\u015b z tego odpowiedzia\u0142em, ale potem powiedzia\u0142em, \u017ce w pracy ostatnio si\u0119 z tym nie spotka\u0142em i oczywi\u015bcie nie pami\u0119tam, kto, co i jak w szczeg\u00f3\u0142ach robi. Po tym rozm\u00f3wca pyta\u0142, co teraz robi\u0119. I pytania zacz\u0119\u0142y si\u0119 na ten temat. Tutaj ju\u017c odpowiada\u0142em znacznie lepiej.<\/p>\n<p>Po zako\u0144czeniu ostatniej rozmowy zabra\u0142em kart\u0119 dost\u0119pu, \u017cyczyli mi powodzenia i wys\u0142ano mnie precz. Troch\u0119 pochodzi\u0142em po mie\u015bcie, zjad\u0142em kolacj\u0119 i poszed\u0142em do hotelu, gdzie pad\u0142em spa\u0107, poniewa\u017c lot zn\u00f3w by\u0142 wcze\u015bnie rano. Nast\u0119pnego dnia szcz\u0119\u015bliwie dotar\u0142em na Cypr. Na pro\u015bb\u0119 rekrutera napisa\u0142em opini\u0119 na temat rozmowy i wype\u0142ni\u0142em w specjalnej us\u0142udze formularz na zwrot wydanych pieni\u0119dzy. Z wszystkich wydatk\u00f3w Google bezpo\u015brednio op\u0142aca tylko bilety. Hotel, jedzenie i transport s\u0105 op\u0142acane przez kandydata. Nast\u0119pnie wype\u0142niamy formularz, do\u0142\u0105czamy paragony i wysy\u0142amy do specjalnej firmy. Oni to przetwarzaj\u0105 i do\u015b\u0107 szybko przelewaj\u0105 pieni\u0105dze na konto.<\/p>\n<p>Przetwarzanie wynik\u00f3w rozmowy kwalifikacyjnej zaj\u0119\u0142o p\u00f3\u0142torej tygodnia. Po tym poinformowano mnie, \u017ce by\u0142em \"troch\u0119 poni\u017cej wymaganego poziomu\". Chodzi o to, \u017ce 2 rozmowy posz\u0142y dobrze, 2 troch\u0119 mniej, a System Design posz\u0142o bardzo \u017ale. Gdyby chocia\u017c 3 przesz\u0142y dobrze, m\u00f3g\u0142bym powalczy\u0107, ale tak to bez szans. Zaproponowano mi, \u017ceby spr\u00f3bowa\u0107 ponownie za rok.<\/p>\n<p>Na pocz\u0105tku oczywi\u015bcie by\u0142em rozczarowany, poniewa\u017c przygotowanie zaj\u0119\u0142o du\u017co czasu i ju\u017c w momencie rozmowy kwalifikacyjnej my\u015bla\u0142em o opuszczeniu Cypru. Praca w Google i przeprowadzka do Szwajcarii wydawa\u0142y si\u0119 \u015bwietn\u0105 opcj\u0105.<\/p>\n<h2>Podsumowanie<\/h2>\n<p>\nI teraz przechodzimy do ko\u0144cowej cz\u0119\u015bci artyku\u0142u. Tak, dwa razy nie przeszed\u0142em rozmowy kwalifikacyjnej w Google. To smutne. Prawdopodobnie by\u0142oby interesuj\u0105co tam pracowa\u0107. Ale mo\u017cna spojrze\u0107 na spraw\u0119 z innej perspektywy. <\/p>\n<ul>\n<li> W ci\u0105gu p\u00f3\u0142tora roku nauczy\u0142em si\u0119 ogromnej ilo\u015bci rzeczy zwi\u0105zanych z tworzeniem oprogramowania.<\/li>\n<li>Czerpa\u0142em wiele rado\u015bci bior\u0105c udzia\u0142 w zawodach programistycznych.<\/li>\n<li>Sp\u0119dzi\u0142em kilka dni w Zurychu. Kiedy jeszcze tam si\u0119 wybior\u0119?<\/li>\n<li>Zyska\u0142em interesuj\u0105ce do\u015bwiadczenie rozmowy kwalifikacyjnej w jednej z najwi\u0119kszych firm IT na \u015bwiecie.<\/li>\n<\/ul>\n<p>\nW ten spos\u00f3b wszystko, co wydarzy\u0142o si\u0119 w ci\u0105gu tych p\u00f3\u0142tora roku, mo\u017cna po prostu traktowa\u0107 jako nauk\u0119 lub trening. A wyniki tego treningu da\u0142y o sobie zna\u0107. Moja my\u015bl o opuszczeniu Cypru dojrza\u0142a (z powod\u00f3w rodzinnych), pomy\u015blnie przeszed\u0142em kilka rozm\u00f3w kwalifikacyjnych w innej znanej firmie i po 8 miesi\u0105cach si\u0119 przeprowadzi\u0142em. Ale to zupe\u0142nie inna historia. Niemniej jednak, uwa\u017cam, \u017ce powinienem podzi\u0119kowa\u0107 Google za te p\u00f3\u0142tora roku, kt\u00f3re pracowa\u0142em nad sob\u0105, oraz za 2 interesuj\u0105ce dni w Zurychu.<\/p>\n<p>Co mog\u0119 powiedzie\u0107 na koniec. Je\u015bli pracujesz w IT, przygotuj si\u0119 do rozmowy kwalifikacyjnej w Google (Amazon, Microsoft, Apple itd.). Mo\u017ce kiedy\u015b uda Ci si\u0119 tam dosta\u0107. Nawet je\u015bli nie chcesz, uwierz, \u017ce dzi\u0119ki takiemu przygotowaniu nie b\u0119dzie Ci gorzej. W momencie, gdy zrozumiesz, \u017ce mo\u017cesz (nawet je\u015bli tylko przy sprzyjaj\u0105cych okoliczno\u015bciach) przej\u015b\u0107 rozmow\u0119 w jednej z tych firm, przed Tob\u0105 otworzy si\u0119 znacznie wi\u0119cej dr\u00f3g ni\u017c na pocz\u0105tku Twojego przygotowania. A wszystko, czego potrzebujesz na tej drodze, to cel, determinacja i czas. \u017bycz\u0119 powodzenia \ud83d\ude42<br \/>\n<br \/>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/419945\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0442\u0430\u0442\u044c\u0438 \u0437\u0432\u0443\u0447\u0438\u0442 \u043a\u0430\u043a epic fail, \u043d\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432\u0441\u0435 \u043d\u0435 \u0442\u0430\u043a \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e. \u0414\u0430 \u0438 \u0432 \u043e\u0431\u0449\u0435\u043c \u0438 \u0446\u0435\u043b\u043e\u043c \u044d\u0442\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0430\u0441\u044c \u0432\u0435\u0441\u044c\u043c\u0430 \u043f\u043e\u0437\u0438\u0442\u0438\u0432\u043d\u043e, \u0445\u043e\u0442\u044c \u0438 \u043d\u0435 \u0432 Google. \u041d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438. \u0412 \u044d\u0442\u043e\u0439 \u0436\u0435 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0442\u0440\u0435\u0445 \u0432\u0435\u0449\u0430\u0445: \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b \u043c\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438, \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":52951,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-52950","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/news\/kak-podgotovitsya-k-sobesedovaniyu-v-google-i-ne-projti-ego-dvazhdy\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043a \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044e \u0432 Google \u0438 \u043d\u0435 \u043f\u0440\u043e\u0439\u0442\u0438 \u0435\u0433\u043e. \u0414\u0432\u0430\u0436\u0434\u044b | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/news\/kak-podgotovitsya-k-sobesedovaniyu-v-google-i-ne-projti-ego-dvazhdy\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-11-19T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:00:46+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Jak przygotowa\u0107 si\u0119 do rozmowy kwalifikacyjnej w Google i jej nie zda\u0107. Podw\u00f3jnie | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/news\/kak-podgotovitsya-k-sobesedovaniyu-v-google-i-ne-projti-ego-dvazhdy","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043a \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044e \u0432 Google \u0438 \u043d\u0435 \u043f\u0440\u043e\u0439\u0442\u0438 \u0435\u0433\u043e. \u0414\u0432\u0430\u0436\u0434\u044b | ProHoster","og:url":"https:\/\/prohoster.info\/pl\/blog\/news\/kak-podgotovitsya-k-sobesedovaniyu-v-google-i-ne-projti-ego-dvazhdy","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-11-19T21:00:00+00:00","article:modified_time":"2020-02-18T11:00:46+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"52950","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 05:32:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 16:55:29","updated":"2026-01-24 05:32:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/52950","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=52950"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/52950\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/52951"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=52950"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=52950"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=52950"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}