Kako se pripraviti na razgovor pri Googlu in na njem ne uspeti. Dvakrat

Kako se pripraviti na razgovor pri Googlu in na njem ne uspeti. Dvakrat

Naslov članka zveni kot epic fail, a v resnici vse ni tako preprosto. In na splošno se je ta zgodba končala zelo pozitivno, čeprav ne v Googlu. Toda to je tema za drug članek. V tem istem članku bom govoril o treh stvareh: kako je potekal moj proces priprav, kako so potekali razgovori v Googlu in zakaj po mojem mnenju ni vse tako jasno, kot se morda zdi.

Kako se je vse začelo

Nekega mrzlega ciprskega zimskega večera se mi je nenadoma porodila misel, da je moje znanje klasičnega računalništva zelo daleč od povprečja in da je treba glede tega nekaj narediti. Če, mimogrede, kdo še ni prebral, zakaj je večer ciprski in hladen, potem lahko o tem izveste tukaj. Po premisleku je bilo odločeno, da začnemo s spletnim tečajem o algoritmih in podatkovnih strukturah. Od enega svojih nekdanjih kolegov sem slišal za tečaj Roberta Sedgewicka na Courseri. Tečaj je sestavljen iz dveh delov (Del 1 и Del 2). Če se povezave nenadoma spremenijo, lahko vedno poiščete ime avtorja v Googlu. Vsak del traja 6 tednov. Predavanja potekajo v začetku tedna, med tednom pa je treba opraviti še vaje. Prvi del predmeta zajema osnovne podatkovne strukture, osnovne tipe razvrščanja in kompleksnost algoritmov. Drugi del je že bolj napreden, začenši z grafi in konča s stvarmi, kot sta linearno programiranje in intraktabilnost. Po premisleku o vsem naštetem sem prišel do zaključka, da je to točno tisto, kar potrebujem. Mimogrede, se lahko radovedni bralec vpraša, kaj ima Google s tem? In res, do tega trenutka s tem sploh ni imel nič. Potreboval pa sem cilj, saj je 12 tednov učenja zvečer brez cilja kar težko. Kaj bi lahko bil namen pridobivanja novega znanja? Seveda njihova uporaba v praksi. V vsakdanjem življenju je to precej problematično, med razgovorom v velikem podjetju pa enostavno. Hiter Google je pokazal, da je Google (oprostite tavtologiji) eno največjih podjetij v Evropi (in gledal sem ravno na Evropo), ki izvaja tovrstne intervjuje. Njihova pisarna se namreč nahaja v Zürichu v Švici. Odločili smo se – preučimo in pojdimo na razgovor v Google.

Priprava na prvi pristop

12 tednov je hitro minilo in zaključila sem oba tečaja. Moji vtisi o tečajih so več kot pozitivni in jih lahko priporočam vsem zainteresiranim. Tečaji so mi bili všeč iz naslednjih razlogov:

  • Predavatelj govori dokaj jasno angleško
  • Material je dobro strukturiran
  • Čudovite predstavitve, ki prikazujejo notranjost vsakega algoritma
  • Pristojna izbira materiala
  • Zanimive vaje
  • Vaje se samodejno preverijo na spletnem mestu, nato pa se ustvari poročilo

Moje delo na tečajih je običajno potekalo tako. Predavanja sem poslušal v 1-2 dneh. Nato so opravili še hitri preizkus znanja o snovi. Preostanek tedna sem vajo izvajal v več ponovitvah. Po prvem sem dosegel svojih 30-70%, naslednji so prinesli rezultat na 97-100%. Vaja je običajno vključevala izvajanje nekega algoritma, npr. Rezbarenje šivov ali bzip.

Po opravljenih tečajih sem spoznal, da veliko znanja prinaša tudi veliko žalosti. Če sem prej preprosto vedela, da ničesar ne vem, sem se zdaj začela zavedati, da sem jaz tista, ki ne vem.

Ker je bil šele mesec maj, razgovor pa sem predvidela za jesen, sem se odločila nadaljevati izobraževanje. Po pregledu zahtev za prosto delovno mesto je bilo odločeno, da gremo vzporedno v dve smeri: nadaljujemo s študijem algoritmov in opravimo osnovni tečaj strojnega učenja. Za prvi cilj sem se odločil zamenjati tečaje za knjigo in izbral monumentalno delo Stevena Skiene »Algoritmi. Priročnik za načrtovanje algoritmov. Ne tako monumentalno kot Knutovo, a vseeno. Za drugi cilj sem se vrnil na Coursero in se prijavil na tečaj Andrewa Nga. strojno učenje.

Minili so še 3 meseci in končala sem tečaj in knjigo.

Začnimo s knjigo. Branje se je izkazalo za precej zanimivo, čeprav ne enostavno. Načeloma bi knjigo priporočila, a ne takoj. Na splošno knjiga ponuja bolj poglobljen pogled na to, kar sem se naučil na tečaju. Poleg tega sem (s formalnega vidika) odkril stvari, kot sta hevristika in dinamično programiranje. Seveda sem jih že uporabljal, vendar nisem vedel, kako se imenujejo. Knjiga vsebuje tudi številne zgodbe iz avtorjevega življenja (Vojna zgodba), ki nekoliko razredčijo akademskost podajanja. Mimogrede, drugo polovico knjige lahko izpustimo, saj vsebuje opis obstoječih problemov in načinov za njihovo reševanje. Koristno je, če se redno uporablja v praksi, sicer bo takoj pozabljeno.

S tečajem sem bil več kot zadovoljen. Avtor očitno pozna svoje stvari in govori na zanimiv način. Poleg tega sem se precej tega, in sicer linearne algebre in osnov nevronskih mrež, spomnil z univerze, tako da nisem imel posebnih težav. Struktura tečaja je precej standardna. Tečaj je razdeljen na tedne. Vsak teden so predavanja pomešana s kratkimi testi. Po predavanjih dobiš nalogo, ki jo moraš narediti, oddati in avtomatsko bo preverjena. Na kratko, seznam stvari, ki se učijo na tečaju, je naslednji:
- stroškovna funkcija
- linearna regresija
- gradientni spust
- skaliranje funkcij
- normalna enačba
- logistična regresija
— večrazredna klasifikacija (eden proti vsem)
— nevronske mreže
- širjenje nazaj
- ureditev
— pristranskost/varianca
— krivulje učenja
— meritve napak (natančnost, priklic, F1)
— Podporni vektorski stroji (razvrstitev z velikimi maržami)
— K-pomeni
— Analiza glavnih komponent
- odkrivanje nepravilnosti
— sodelovalno filtriranje (sistem priporočevalcev)
— stohastični, mini šaržni, serijski gradientni spusti
— spletno učenje
- zmanjšanje zemljevida
- analiza stropa
Po zaključenem tečaju je bilo prisotno razumevanje vseh teh tem. Po 2 letih je bilo skoraj vse seveda pozabljeno. Priporočam ga tistim, ki niso seznanjeni s strojnim učenjem in želijo dobro razumeti osnovne stvari za nadaljevanje.

Prva vožnja

Bil je že september in čas je bil za razmišljanje o intervjuju. Ker je prijava preko spletne strani precej katastrofalna, sem začel iskati prijatelje, ki delajo v Googlu. Izbira je padla na datacompboy, saj je bil edini, ki sem ga neposredno poznal (četudi ne osebno). Privolil je v posredovanje mojega življenjepisa in kmalu sem prejela pismo kadrovnika, ki mi je ponudil, da rezerviram mesto na njegovem koledarju za prvi pogovor.Čez nekaj dni je bil klic. Poskušali smo komunicirati prek pogovorov Hangouts, vendar je bila kakovost grozljiva, zato smo preklopili na telefon. Najprej smo na hitro razpravljali o standardu, kako, zakaj in zakaj, nato pa prešli na tehnični pregled. Sestavljen je bil iz ducata vprašanj v duhu "kaj je težavno vstaviti v hash map", "katera uravnotežena drevesa poznate." Ni težko, če imate osnovno znanje o teh stvareh. Preverjanje je potekalo dobro in na podlagi rezultatov so se odločili, da prvi intervju organizirajo čez teden dni.

Intervju je potekal tudi preko pogovorov Hangouts. Najprej sta približno 5 minut govorila o meni, nato pa prešla na problem. Problem je bil na grafih. Hitro sem ugotovil, kaj je treba narediti, a sem izbral napačen algoritem. Ko sem začel pisati kodo, sem to ugotovil in preklopil na drugo možnost, ki sem jo dokončal. Anketar je zastavil več vprašanj o zapletenosti algoritma in vprašal, ali bi bilo mogoče narediti hitreje. Nekako sem postal dolgočasen in nisem mogel. Na tej točki se je čas iztekel in poslovili smo se. Potem pa se mi je po približno 10 minutah posvetilo, da bi namesto Dijkstra algoritma, ki sem ga uporabil, v tem konkretnem problemu lahko uporabil iskanje v širino in bi bilo hitreje. Čez nekaj časa je poklical nabornik in povedal, da je razgovor na splošno dobro potekal in da je treba organizirati še enega. Dogovorili smo se za drug teden.

Tokrat so se stvari poslabšale. Če je bil spraševalec prvič prijazen in družaben, je bil tokrat nekoliko mrk. Težave nisem mogel takoj ugotoviti, čeprav bi ideje, ki sem jih dobil, načeloma lahko pripeljale do njene rešitve. Na koncu, po več pozivih anketarja, je rešitev prišla do mene. Tokrat se je spet izkazalo iskanje v širino, le iz več točk. Napisal sem rešitve, se z njimi pravočasno srečal, pozabil pa na robne primere. Čez nekaj časa je poklical rekruter in povedal, da je bil tokratni anketar nezadovoljen, ker po njegovem mnenju potrebujem preveč namigov (3 ali 4 kose) in med pisanjem nenehno spreminjam kodo. Na podlagi rezultatov dveh razgovorov je bilo odločeno, da ne grem naprej, ampak da naslednji razgovor preložim za eno leto, če tako želim. Zato sva se poslovila.

In iz te zgodbe sem naredil več sklepov:

  • Teorija je dobra, vendar je treba hitro krmariti
  • Teorija brez prakse ne bo pomagala. Težave moramo rešiti in avtomatizirati kodiranje.
  • Veliko je odvisno od anketarja. In nič se ne da narediti glede tega.

Priprave na drugo vožnjo

Po premisleku o situaciji sem se odločil, da poskusim znova čez eno leto. In malce uredil gol. Če je bil prej glavni cilj študij in je bil razgovor pri Googlu kot daljni korenček, je bil sedaj cilj opraviti razgovor, študij pa sredstvo.
Tako je bil razvit nov načrt, ki je vključeval naslednje točke:

  • Nadaljujte s študijem teorije z branjem knjig in člankov.
  • Rešite algoritemske probleme v količini 500-1000 kosov.
  • Nadaljujte z učenjem teorije z gledanjem videoposnetkov.
  • Nadaljujte s študijem teorije prek tečajev.
  • Preučite izkušnje drugih ljudi z intervjuji v Googlu.

Načrt sem dokončal v enem letu. Nato bom opisal, kaj točno sem naredil za vsako od točk.

Knjige in članki

Sploh se ne spomnim, koliko člankov sem prebral, bral sem jih tako v ruščini kot v angleščini. Verjetno najbolj uporabno spletno mesto ta. Tukaj lahko najdete opis velikega števila zanimivih algoritmov s primeri kod.

Prebral sem 5 knjig: Algoritmi, 4. izdaja (Sedgewick, Wayne), Uvod v algoritme 3. izdaja (Cormen, Leiserson, Rivest, Stein), Cracking the Coding Interview 4. izdaja (Gayle Laakmann), Programming Interviews Exposed 2. izdaja (Mongan, Suojanen) , Giguere), Elementi programskih intervjujev (Aziz, Lee, Prakash). Razdelimo jih lahko v 2 kategoriji. Prva vključuje knjige Sedgwicka in Cormana. To je teorija. Ostalo so priprave na razgovor. Sedgwick v knjigi govori o istem kot v svojih tečajih. Samo pisno. Nima smisla, da bi ga pozorno brali, če ste že obiskovali tečaj, vendar se ga vseeno splača preleteti. Če tečaja niste gledali, ga je smiselno prebrati. Cormen se mi je zdel preveč dolgočasen. Če sem iskren, sem ga težko obvladal. Pravkar sem ga vzel od tam magistrska teorija, in več redko uporabljenih podatkovnih struktur (Fibonaccijeva kopica, van Emde Boasovo drevo, radix kopica).

Za pripravo na razgovor je vredno prebrati vsaj eno knjigo. Vsi so zgrajeni po približno istem principu. Opisujejo potek razgovora v velikih tehnoloških podjetjih, podajo osnove računalništva, probleme za te osnovne stvari, rešitve problemov in analize rešitev. Od treh zgornjih bi verjetno priporočil Cracking the Coding Interview kot glavno, ostali pa so neobvezni.

Algoritemske težave

To je bila verjetno najbolj zanimiva točka priprav. Lahko pa se seveda usedeš in neumno rešuješ probleme. Za to obstaja veliko različnih spletnih mest. Uporabljal sem predvsem tri: Hackerrank, CodeChef и LeetCode. Na CodeChefu so težave razdeljene po težavnosti, ne pa tudi po temah. Na Hackerrank tako po kompleksnosti kot po temi.

A kot sem takoj ugotovil sam, obstaja bolj zanimiv način. In to so tekmovanja (programerski izzivi ali programerska tekmovanja). Vse tri strani jih zagotavljajo. Res je, obstaja težava z LeetCode - neprijeten časovni pas. Zato nisem sodeloval na tej strani. Hackerrank in CodeChef ponujata precej veliko število različnih tekmovanj, ki trajajo od 1 ure do 10 dni. Različni formati imajo različna pravila, a o tem bi lahko še dolgo govorili. Bistvo, zakaj so tekmovanja dobra, je vnos tekmovalnega (in spet tavtološkega) elementa v učni proces.

Skupaj sem sodeloval na 37 tekmovanjih na Hackerrank. Od tega jih je bilo 32 ocenjevalnih, 5 pa bodisi sponzoriranih (v enem od njih sem prejel celo 25 $) bodisi za zabavo. Na lestvici sem bil 10-krat med 4% najboljših, 11-krat med 12% najboljših in 5-krat med 25% najboljših. Najboljši rezultati so bili 27/1459 v 3-urnem in 22/9721 v tednu.

Na CodeChef sem prešel, ko je Hackerrank začel manj pogosto gostiti tekmovanja. Skupaj sem se uspel udeležiti 5 tekmovanj. V desetdnevnem tekmovanju je bil najboljši rezultat 426/5019.

Skupaj sem na tekmovanjih in kar tako rešil nekaj več kot 1000 nalog, ki so sodile v plan. Sedaj pa žal ni prostega časa za nadaljevanje tekmovalnih aktivnosti, kot tudi ni cilja, ki bi mu neprosti čas odpisali. Ampak bilo je zabavno. Priporočam, da tisti, ki jih to zanima, najdejo somišljenike. Skupaj ali v skupini je veliko bolj zanimivo. Pri tem sem se zabaval s prijateljem, zato je morda šlo dobro.

Oglejte si video

Ko sem prebral Skienino knjigo, me je začelo zanimati, kaj počne. Tako kot Sedgwick je tudi on univerzitetni profesor. V zvezi s tem je na spletu mogoče najti videoposnetke njegovih tečajev. Odločil sem se pregledati tečaj COMP300E - Programski izzivi - 2009 HKUST. Ne morem reči, da mi je bilo zelo všeč. Prvič, kakovost videa ni zelo dobra. Drugič, sam nisem poskušal rešiti problemov, ki so bili obravnavani na tečaju. Angažma torej ni bil zelo velik.
Tudi med reševanjem problemov in iskanjem pravega algoritma sem naletel na video Tusharja Roya. Delal je pri Amazonu, zdaj pa dela pri Applu. Kot sem pozneje sam ugotovil, ga ima youtube kanal, kjer objavlja analizo različnih algoritmov. V času pisanja je na kanalu 103 videa. In moram reči, da je bila njegova analiza narejena zelo dobro. Poskušal sem gledati druge avtorje, pa nekako ni šlo. Tako da lahko ta kanal vsekakor priporočam za ogled.

Obiskovanje tečajev

Tukaj nisem naredil nič posebnega. Ogledal sem si videoposnetek iz Googlovega programa Android Developer Nanodegree in opravil tečaj ITMO Kako zmagati na tekmovanjih v kodiranju: Skrivnosti prvakov. Nanodegree je kar dober, čeprav se iz njega seveda nisem naučil nič novega. Predmet iz ITMO je teoretično malo zamaknjen, a so bile težave zanimive. Ne bi priporočal, da začnem z njim, a načeloma je bil čas dobro porabljen.

Učite se iz izkušenj drugih ljudi

Seveda je veliko ljudi poskušalo priti v Google. Nekateri so vstopili, nekateri ne. Nekateri so o tem napisali članke. Od zanimivih stvari, ki jih bom verjetno omenil tale и tale. V prvem primeru si je oseba pripravila seznam, kaj se mora naučiti, da postane programski inženir in pride v Google. Na koncu je končal v Amazonu, vendar to ni več tako pomembno. Drugi priročnik je napisala Googlova inženirka Larisa Agarkova (Larrr). Poleg tega dokumenta lahko preberete tudi njen blog.

Smiselno je prebrati ocene intervjujev na Glassdoorju. Vsi so bolj ali manj podobni, vendar lahko dobite nekaj koristnih informacij.

Ne bom navedel povezav do drugih manjših člankov; zlahka jih najdete v Googlu.

Drugi tek

In zdaj je minilo eno leto. Študijsko se je izkazalo za zelo intenzivno. V novo jesen pa sem pristopila z veliko globljim teoretičnim znanjem in razvitimi praktičnimi veščinami. Do konca leta, ki mi je bil namenjen za priprave, je ostalo še nekaj tednov, ko je nenadoma po pošti padlo pismo Googlovega zaposlovalca, v katerem me je vprašal, ali imam še vedno željo delati v Googlu in bi Rad bi govoril z njim. Seveda me ni motilo. Dogovorili smo se, da pokličemo čez en teden. Prosili so me tudi za posodobljen življenjepis, ki sem mu dodal kratek opis, kaj sem počel med letom v službi in nasploh.

Po doživljenjski komunikaciji sva se odločila, da bo čez teden dni pogovor Hangout, tako kot lani. Minil je teden dni, napočil je čas za razgovor, a anketarja ni bilo. 10 minut je minilo, že sem bil živčen, ko je nenadoma nekdo vdrl v klepet. Kot se je izkazalo malo kasneje, se moj anketar iz neznanega razloga ni mogel pojaviti in zanj je bila nujno najdena zamenjava. Oseba je bila nekoliko nepripravljena tako glede nastavitve računalnika kot tudi glede izvedbe intervjuja. Potem pa je šlo vse dobro. Težavo sem hitro rešil, opisal, kje so možne pasti in kako jih je mogoče obiti. Razpravljali smo o več različnih različicah problema in kompleksnosti algoritma. Nato sva se pogovarjala še 5 minut, inženir nama je povedal svoje vtise o delu v Münchnu (v Zürichu očitno niso našli nujne zamenjave), potem pa sva se razšla.

Še isti dan me je kontaktiral kadrovik in povedal, da je razgovor potekal dobro in so me pripravljeni povabiti na razgovor v pisarno. Naslednji dan sva poklicala prek pogovorov Hangouts in se pogovorila o podrobnostih. Ker sem moral zaprositi za vizum, sva se odločila, da se razgovor dogovoriva čez en mesec.

Medtem ko sem pripravljal dokumente, sem se istočasno pogovarjal o prihajajočem razgovoru z nabornikom. Standardni intervju pri Googlu je sestavljen iz 4 algoritemskih intervjujev in enega razgovora o sistemski zasnovi. Ker pa sem se prijavljal kot razvijalec za Android, so mi povedali, da bo del razgovora specifičen za Android. Od zaposlovalca se nisem mogel otresti, kaj točno in kakšne bi bile posebnosti. Kolikor razumem, je bilo to uvedeno relativno nedavno in se sam ni dobro zavedal. Prijavljen sem bil tudi na dve izobraževalni seji: kako opraviti algoritemski intervju in kako opraviti razgovor System Design. Seje so bile povprečno koristne. Tudi tam mi nihče ni znal povedati, kaj sprašujejo razvijalce za Android. Zato so se moje priprave na ta mesec skrčile na naslednje:

  • Kupite označevalno tablo in nanjo po spominu napišite 2-3 ducate najbolj priljubljenih algoritmov. 3-5 kosov vsak dan. Skupaj je bila vsaka napisana večkrat.
  • Osvežite spomin na različne informacije o Androidu, ki jih ne uporabljate vsak dan
  • Ogled nekaj videov o Big Scale in podobnih stvareh

Kot sem že povedal, sem istočasno pripravljal dokumente za pot. Za začetek so me prosili za podatke za izdelavo vabilnega pisma. Potem sem dolgo poskušal izvedeti, kdo na Cipru izdaja vizume za Švico, saj se švicarska ambasada s tem ne ukvarja. Kot se je izkazalo, to počne avstrijski konzulat. Poklical sem in se dogovoril za termin. Zahtevali so kup dokumentov, a nič posebej zanimivega. Slika, potni list, dovoljenje za prebivanje, kup različnih potrdil in seveda vabilo. Medtem pismo ni prispelo. Na koncu sem šel z običajnim izpisom in delovalo je kar dobro. Pismo je prispelo 3 dni pozneje in ciprski FedEx ni mogel najti mojega naslova, zato sem moral sam iti ponj. Hkrati sem od istega FedExa prejel paket, ki mi ga tudi niso mogli dostaviti, ker niso našli naslova in je tam ležal od junija (5 mesecev, Karl). Ker zanj nisem vedel, seveda nisem predvideval, da ga imajo. Vizo sem prejel pravočasno, nakar so mi rezervirali hotel in mi ponudili možnosti leta. Možnosti sem prilagodil, da je bolj priročno. Ni bilo več direktnih letov, tako da sem na koncu letel tja preko Aten in nazaj čez Dunaj.

Po ureditvi vseh formalnosti s potovanjem je minilo še nekaj dni in res sem odletel v Zürich. Prišel brez incidenta. Z letališča v mesto sem se peljal z vlakom – hitro in ugodno. Ko sem malo potepal po mestu, sem našel hotel in se prijavil. Ker je bil hotel rezerviran brez hrane, sem zraven večerjala in šla spat, ker je bil let zjutraj in sem že hotela spati. Naslednji dan sem zajtrkoval v hotelu (za dodaten denar) in šel v Googlovo pisarno. Google ima več pisarn v Zürichu. Moj intervju ni bil na osrednjem. In na splošno je bila pisarna videti precej običajna, tako da nisem imel priložnosti pogledati vseh dobrot "navadne" Googlove pisarne. Registriral sem se pri administratorju in sedel čakati. Čez nekaj časa je nabornik prišel ven in mi povedal načrt za ta dan, nakar me je odpeljal v sobo, kjer naj bi potekali razgovori. Pravzaprav je načrt vključeval 3 razgovore, kosilo in še 2 intervjuja.

Intervju številka ena

Prvi intervju je bil ravno na Androidu. In to sploh ni imelo nobene zveze z algoritmi. Presenečenje pa. No, v redu, tako je še pogosteje. Prosili so nas, da naredimo določeno komponento uporabniškega vmesnika. Najprej smo se pogovorili, kaj in kako. Ponudil je izdelavo rešitve z uporabo RxJave, opisal, kaj točno bi naredil in zakaj. Rekli so, da je to vsekakor dobro, vendar naredimo to z uporabo ogrodja Android. In hkrati bomo napisali kodo na tablo. In ne samo komponenta, ampak celotna dejavnost, ki uporablja to komponento. To je tisto, na kar nisem bil pripravljen. Ena stvar je napisati 30-50 vrstični algoritem na tablo, druga stvar pa je napisati rezance Androidove kode, tudi z okrajšavami in komentarji v duhu "no, tega ne bom napisal, saj je že očitno." Rezultat je bil nekakšen vinaigrette za 3 deske. Tisti. Težavo sem rešil, vendar je izgledalo neumno.

Intervju številka dve

Tokratni intervju je bil o algoritmih. In bila sta dva anketarja. Eden je dejanski anketar, drugi pa mlad padawan (anketar v senci). Treba je bilo oblikovati podatkovno strukturo z določenimi lastnostmi. Najprej smo o problemu razpravljali kot običajno. Postavljal sem različna vprašanja, anketar je odgovarjal. Čez nekaj časa so jih prosili, naj na tablo napišejo več metod izumljene strukture. Tokrat sem bil bolj ali manj uspešen, čeprav z nekaj manjšimi napakami, ki sem jih popravil na poziv anketarja.

Intervju številka tri

Tokrat System Design, ki se je nenadoma izkazal tudi za Android. Treba je bilo razviti aplikacijo z določeno funkcionalnostjo. Pogovarjali smo se o zahtevah za aplikacijo, strežnik in komunikacijski protokol. Nato sem začel opisovati, katere komponente ali knjižnice bi uporabil pri gradnji aplikacije. In potem je pri omembi Job Schedulerja prišlo do zmede. Gre za to, da ga v praksi nikoli nisem uporabljal, saj sem ob izidu ravno prešel na podporne aplikacije, kjer ni bilo nobenih nalog za njegovo uporabo. Enako se je zgodilo pri razvoju naslednjih. Se pravi, teoretično vem, kaj je ta stvar, kdaj in kako se uporablja, nimam pa izkušenj z uporabo. In anketarju to ni bilo preveč všeč. Potem so me prosili, naj napišem kodo. Da, ko razvijate aplikacijo, morate takoj napisati kodo. Spet koda Android na plošči. Spet je izpadlo strašljivo.

Kosilo

Druga oseba bi morala priti, pa ni. In Google dela napake. Posledično sem šla na kosilo s prejšnjo anketarko, njeno kolegico, malo kasneje pa se je pridružila naslednja anketarka. Kosilo je bilo čisto spodobno. Spet, ker to ni glavna pisarna v Zürichu, je bila jedilnica videti precej navadna, čeprav zelo lepa.

Intervju številka štiri

Končno algoritmi v najčistejši obliki. Prvo težavo sem rešil dokaj hitro in takoj učinkovito, čeprav sem zgrešil en robni primer, vendar sem na poziv anketarja (navedel je prav ta robni primer) našel problem in ga popravil. Seveda sem moral kodo napisati na tablo. Potem je bila dana podobna naloga, vendar težja. Zanj sem našel par neoptimalnih rešitev in skoraj našel optimalno, 5-10 minut je bilo premalo, da bi zaključil misel. No, nisem imel časa napisati kode zanj.

Intervju številka pet

In spet intervju za Android. Sprašujem se, zakaj sem se celo leto učil algoritme?
Sprva je bilo nekaj preprostih vprašanj. Nato je anketar napisal kodo na tablo in prosil, naj v njej poišče težave. Našel, razložil, popravil. Razpravljali. In potem so se začela nekatera nepričakovana vprašanja v duhu “kaj počne metoda Y v razredu X”, “kaj je znotraj metode Y”, “kaj počne razred Z”. Seveda sem nekaj odgovoril, potem pa sem rekel, da se s tem pri svojem delu v zadnjem času nisem srečal in se seveda ne spomnim, kdo kaj dela in kako natančno. Po tem me je anketar vprašal, kaj zdaj počnem. In vprašanja so šla na to temo. Tukaj sem že veliko bolje odgovoril.

Po koncu zadnjega razgovora so mi vzeli izkaznico, mi zaželeli vso srečo in me poslali na pot. Malo sem se sprehodil po mestu, povečerjal in odšel v hotel, kjer sem šel spat, saj je bil let spet zgodaj zjutraj. Naslednji dan sem varno prispel na Ciper. Na zahtevo zaposlovalca sem napisal povratne informacije o intervjuju in v posebni storitvi izpolnil obrazec za vračilo porabljenega denarja. Od vseh stroškov Google neposredno plača samo vstopnice. Hotel, hrano in pot plača kandidat. Nato izpolnimo obrazec, priložimo potrdila in ga pošljemo v posebno pisarno. To obdelajo in dokaj hitro nakažejo denar na račun.

Obdelava rezultatov intervjuja je trajala teden in pol. Potem sem bil obveščen, da sem "malo pod letvico." Se pravi, malo mi je zmanjkalo. Natančneje, 2 intervjuja sta potekala dobro, 2 malo manj dobro in System Design ne zelo dobro. Zdaj, če bi šlo vsaj 3 dobro, potem bi lahko tekmovali, sicer ni šans. Ponudili so se, da se vrnejo čez drugo leto.

Sprva sem bil seveda razburjen, saj je bilo veliko truda vloženega v priprave in v času intervjuja sem že razmišljal o odhodu s Cipra. Pridružitev Googlu in selitev v Švico se je zdela odlična možnost.

Zaključek

In tu smo prišli do zadnjega dela članka. Da, dvakrat sem padel na razgovoru za Google. Žalostno je. Verjetno bi bilo tam zanimivo delati. Lahko pa zadevo pogledate tudi z druge strani.

  • V letu in pol sem se naučil ogromno stvari povezanih z razvojem programske opreme.
  • Na tekmovanjih iz programiranja sem se zelo zabaval.
  • Za nekaj dni sem šel v Zürich. Kdaj grem spet tja?
  • Imel sem zanimivo izkušnjo intervjuja v enem največjih IT podjetij na svetu.

Tako lahko vse, kar se je zgodilo v tem letu in pol, preprosto štejemo za trening ali trening. In rezultati tega usposabljanja so se poznali. Dozorela je moja ideja, da zapustim Ciper (zaradi nekaterih družinskih okoliščin), uspešno sem opravil več razgovorov pri drugem znanem podjetju in se po 8 mesecih preselil. A to je povsem druga zgodba. Mislim pa, da se vseeno moram zahvaliti Googlu tako za leto in pol, na katerem sem delal sam, kot za 2 zanimiva dneva v Zürichu.

Kaj naj na koncu rečem? Če delate v IT, se pripravite na razgovore v Googlu (Amazon, Microsoft, Apple itd.). Morda boste nekega dne šli tja, da pridete tja. Tudi če tega ne želite, verjemite, zaradi takšne priprave vam ne bo nič slabše. V trenutku, ko se boste zavedli, da lahko (čeprav le s srečo) dobite razgovor v enem od teh podjetij, bo pred vami odprtih veliko več poti kot pred začetkom priprav. In vse, kar potrebujete na tej poti, je namen, vztrajnost in čas. Želim ti uspeh :)

Vir: www.habr.com

Dodaj komentar