Hur man förbereder sig för en intervju pÄ Google och inte klarar det. TvÄ gÄnger

Hur man förbereder sig för en intervju pÄ Google och inte klarar det. TvÄ gÄnger

Artikeltiteln lÄter som ett episkt misslyckande, men sÄ Àr faktiskt inte fallet. Generellt sett slutade denna historia ganska positivt, Àven om det inte var pÄ Google. Men det Àr redan ett Àmne för en annan artikel. I den hÀr artikeln kommer jag att berÀtta om tre saker: hur min förberedelseprocess gick till, hur intervjuerna pÄ Google gick till och varför jag anser att allt inte Àr sÄ entydigt som det kan verka.

SÄ hur började allt

En kall cypriotisk vinterkvĂ€ll fick jag plötsligt tanken att mina kunskaper i klassisk datavetenskap Ă€r ganska lĂ„ngt ifrĂ„n genomsnittliga, och att nĂ„got mĂ„ste göras Ă„t det. Om nĂ„gon förresten inte har lĂ€st varför kvĂ€llen Ă€r cypriotisk och kall, kan man ta reda pĂ„ det hĂ€r. Efter lite eftertanke bestĂ€mde jag mig för att först gĂ„ en onlinekurs i algoritmer och datatyper. Jag hade hört om Robert Sedgewicks kurs pĂ„ Coursera frĂ„n en av mina tidigare kollegor. Kursen bestĂ„r av tvĂ„ delar (del 1 och del 2). Om lĂ€nkarna skulle Ă€ndras kan man alltid googla efter författarens namn. Varje del pĂ„gĂ„r i 6 veckor. I början av veckan ges förelĂ€sningar, och under veckan mĂ„ste man ocksĂ„ göra övningar. Den första delen av kursen tĂ€cker grundlĂ€ggande datatyper, olika sorteringstekniker och algoritmers komplexitet. Den andra delen Ă€r mer avancerad, börjar med grafer och slutar med Ă€mnen som linjĂ€r programmering och svĂ„rberĂ€knelighet. Efter att ha tĂ€nkt igenom allt detta kom jag fram till att detta Ă€r precis vad jag behöver. HĂ€r kan nyfikna lĂ€sare frĂ„ga sig, vad har Google med detta att göra? Och verkligen, fram till denna punkt var det inte relevant. Men jag behövde ett mĂ„l, eftersom det Ă€r ganska svĂ„rt att studera 12 veckor pĂ„ kvĂ€llarna utan ett mĂ„l. Vad kan mĂ„let vara med att skaffa sig nya kunskaper? SjĂ€lvklart deras praktiska tillĂ€mpning. I det dagliga livet Ă€r det ganska problematiskt, men under en intervju pĂ„ ett stort företag Ă€r det helt enkelt. Snabb googling visade att Google (förlĂ„t för tautologin) Ă€r ett av de största företagen i Europa (och jag fokuserade just pĂ„ Europa), dĂ€r sĂ„dana intervjuer genomförs. Deras kontor ligger i ZĂŒrich, Schweiz. SĂ„ nu var det bestĂ€mt — vi lĂ€r oss och gĂ„r pĂ„ intervju hos Google.

Förberedelse för första försöket

Tolv veckor har gÄtt snabbt, och jag har avslutat bÄda kurserna. Mina intryck av kurserna Àr mer Àn positiva, och jag kan rekommendera dem till alla intresserade. Jag gillade kurserna av följande skÀl:

  • FörelĂ€saren talar pĂ„ en tillrĂ€ckligt klar engelska
  • Materialet Ă€r vĂ€lstrukturerat
  • Fantastiska presentationer som visar detaljerna i varje algoritm
  • GenomtĂ€nkt materialval
  • Intressanta övningar
  • Övningarna rĂ€ttas automatiskt pĂ„ webbplatsen, varefter en rapport skapas

Min arbetsprocess med kurserna sĂ„g vanligtvis ut sĂ„ hĂ€r. Under 1-2 dagar lyssnade jag pĂ„ förelĂ€sningarna. DĂ€refter gjorde jag ett snabbt test för att kontrollera kunskaperna. Resterande vecka genomförde jag övningen i flera iterationer. Efter första gĂ„ngen fick jag 30-70%, de följande iterationerna tog mig upp till 97-100%. Övningen handlade vanligtvis om att implementera en algoritm, till exempel Seam carving eller bzip.

Efter att jag avslutat kurserna insÄg jag att mÄnga kunskaper ocksÄ medför mÄnga bekymmer. Tidigare visste jag bara att jag inte visste nÄgot, men nu har jag börjat förstÄ vad det Àr jag inte vet.

Eftersom det fortfarande bara var i maj mÄnad och jag hade planerat intervjun till hösten, beslutade jag mig för att fortsÀtta min utbildning. Efter att ha lÀst igenom kravspecifikationen för tjÀnsten beslutade jag mig för att parallellt fokusera pÄ tvÄ riktningar: fortsÀtta studera algoritmer och genomföra en grundkurs i maskininlÀrning. För det första syftet bestÀmde jag mig för att byta frÄn kurser till en bok och valde Stephen Skienas monumentala verk 'Algoritmer. En vÀgledning för utveckling' (The Algorithm Design Manual). Inte sÄ monumentalt som Knuths verk, men ÀndÄ. För det andra syftet gick jag Äterigen till Coursera och anmÀlde mig till Andrew Ng:s kurs Machine Learning.

Tre mÄnader till har gÄtt, och jag har avslutat bÄde kursen och boken.

Vi börjar med boken. LÀsningen visade sig vara rÀtt intressant, Àven om den inte var helt enkel. I princip skulle jag rekommendera boken, men inte direkt. Sammanfattningsvis ger boken en djupare analys av vad jag lÀrde mig pÄ kurserna. Dessutom upptÀckte jag (ur ett formellt perspektiv) sÄdana begrepp som heuristik och dynamisk programmering. Tidigare har jag anvÀnt dem, men jag visste inte vad de kallades. Boken innehÄller Àven en del anekdoter frÄn författarens liv (War Story), vilket lite bryter av den akademiska framstÀllningen. Den andra halvan av boken kan för övrigt skippas, dÀr handlar det mest om att beskriva existerande problem och deras lösningsmetoder. Nyttigt om man tillÀmpar det regelbundet i praktiken, annars glöms det bort genast.

Kursen gjorde mig mer Àn nöjd. Författaren kan sitt Àmne och förklarar pÄ ett intressant sÀtt. Dessutom mindes jag en hel del, nÀmligen linjÀr algebra och grunderna i neurala nÀtverk, frÄn universitetet, sÄ jag stötte inte pÄ nÄgra större svÄrigheter. Kursens struktur Àr ganska standard. Kursen Àr uppdelad i veckor. Varje vecka inleds med förelÀsningar blandat med korta tester. Efter förelÀsningarna ges en uppgift som ska göras, skickas in och som bedöms automatiskt. Kort sagt, listan över vad som lÀrs ut under kursen Àr följande:
— kostnadsfunktion
— linjĂ€r regression
— gradientnedstigning
— funktionsskalning
— normalekvation
— logistisk regression
— flerklassklassificering (one vs all)
— neurala nĂ€tverk
— bakĂ„tpropagering
— regularisering
— bias/variation
— inlĂ€rningskurvor
— felmĂ„tt (precision, Ă„terkallelse, F1)
— Support Vector Machines (stor marginalklassificering)
— K-means
— huvudkomponentanalys
— anomaliesökning
— samarbetande filtrering (rekommendationssystem)
— stokastisk, mini-batch, batch gradientnedstigning
— onlineinlĂ€rning
— map reduce
— takanalys
Efter att ha genomgÄtt kursen hade jag en förstÄelse för alla dessa Àmnen. Efter 2 Är hade jag nÀstan glömt bort allt naturligt. Jag rekommenderar det till dem som inte Àr bekanta med maskininlÀrning och vill fÄ en bra förstÄelse för grundlÀggande koncept för att kunna gÄ vidare.

Första försöket

Det var redan september och det var dags att tÀnka pÄ intervjun. Eftersom det var ganska meningslöst att ansöka via hemsidan, började jag söka efter bekanta som arbetar pÄ Google. Valet föll pÄ datacompboy, eftersom han var den enda jag kÀnde direkt (Àven om inte personligen). Han gick med pÄ att vidarebefordra mitt CV, och snart fick jag ett mejl frÄn rekryteraren som erbjöd mig att boka en tid i hans kalender för det första samtalet. NÄgra dagar senare hade vi vÄrt samtal. Vi försökte kommunicera via Hangouts, men kvaliteten var fruktansvÀrd, sÄ vi bytte till telefon. Först diskuterade vi snabbt standardfrÄgor om varför och hur, och sedan gick vi vidare till den tekniska granskningen. Den bestod av ett tiotal frÄgor, sÄsom

Intervjun var ocksÄ via Hangouts. Först pratade vi i fem minuter om mig, och sedan gick vi över till uppgiften. Uppgiften handlade om grafer. Jag förstod snabbt vad jag skulle göra, men valde inte rÀtt algoritm. NÀr jag började skriva koden insÄg jag detta och bytte till ett annat alternativ som jag sedan kompletterade. Intervjuaren stÀllde nÄgra frÄgor om algoritmens komplexitet och frÄgade om det fanns nÄgot sÀtt att göra det snabbare. Jag kÀnde mig lite dum och kunde inte svara. Vid det laget var tiden slut och vi skiljdes Ät. Efter ungefÀr tio minuter kom jag pÄ att i stÀllet för Dijkstras algoritm, som jag anvÀnt, kunde jag ha anvÀnt bredden först, vilket hade varit snabbare för just den hÀr uppgiften. NÄgra dagar senare ringde rekryteraren och sa att intervjun i stort sett hade gÄtt bra och att vi behövde ordna en till. Vi kom överens om att ses igen om en vecka.

Denna gÄng gick det sÀmre. Om intervjuaren första gÄngen var vÀnlig och pratsam, sÄ var denne den hÀr gÄngen ganska dyster. Jag kunde inte direkt lösa uppgiften, Àven om de idéer jag kom med i princip skulle kunna leda till en lösning. Efter flera ledtrÄdar frÄn intervjuaren kom jag pÄ lösningen. Den hÀr gÄngen handlade det Äterigen om en bred sökning, men frÄn flera punkter. Jag skrev ner lösningarna och höll mig inom tidsramen, men glömde av grÀnsfallen. Efter en stund ringde rekryteraren och meddelade att intervjuaren den hÀr gÄngen var missnöjd, eftersom han ansÄg att jag behövde för mÄnga ledtrÄdar (3 eller 4 stycken) och att jag stÀndigt Àndrade koden under skrivandet. Efter de tvÄ intervjuerna beslutades det att jag inte skulle gÄ vidare, utan istÀllet skjuta upp nÀsta intervju i ett Är, om jag skulle ha lust. SÄ vi sa adjö.

Och av denna historia drog jag nÄgra slutsatser:

  • Teori Ă€r bra, men man mĂ„ste snabbt kunna orientera sig i den.
  • Teori utan praktik hjĂ€lper inte. Man mĂ„ste lösa uppgifter och nĂ„ ett automatiskt kodskrivande.
  • Mycket beror pĂ„ intervjuaren. Och det finns inget att göra Ă„t det.

Förberedelser inför den andra försöket.

Efter att ha funderat pÄ situationen beslutade jag mig för att prova igen om ett Är. Och jag gjorde en liten justering av mÄlet. Tidigare var det frÀmsta mÄlet att studera, och intervjun pÄ Google var en avlÀgsen morot, men nu var mÄlet att klara intervjun, medan studierna blev medlet.
SÄ, en ny plan utvecklades, som innehöll följande punkter:

  • FortsĂ€tta studera teori genom att lĂ€sa böcker och artiklar.
  • Lösa algoritmiska uppgifter i mĂ€ngden 500-1000 stycken.
  • FortsĂ€tta studera teori genom att titta pĂ„ videor.
  • FortsĂ€tta studera teori genom kurser.
  • Studera andras erfarenheter av intervjuer hos Google.

Planen genomfördes av mig under ett Är. Jag kommer nu att beskriva vad exakt jag gjorde för varje punkt.

Böcker och artiklar

Antalet artiklar jag har lÀst minns jag faktiskt inte ens, jag lÀste dem bÄde pÄ ryska och engelska. Den mest anvÀndbara webbplatsen var kanske den hÀr. HÀr finns en samling av mÄnga intressanta algoritmer med kodexempel.

Jag har lÀst 5 böcker: 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). Dessa kan delas in i 2 kategorier. Den första kategorin inkluderar böckerna av Sedgewick och Cormen. Detta Àr teori. De andra Àr förberedelser för intervjuer. Sedgewick berÀttar i boken ungefÀr detsamma som han gör i sina kurser. Bara i skriftlig form. Det Àr inte sÀrskilt meningsfullt att lÀsa noggrant om du har gÄtt kursen, men det Àr vÀrt att snabbt gÄ igenom. Om du inte har tagit kursen Àr det vÀrt att lÀsa. Cormen verkade i överkant trÄkig för mig. Jag tog mig Àrligt talat igenom den med svÄrighet. Jag fick bara ut master theorem, ja nÄgra sÀllan anvÀnda datastrukturer (Fibonacci heap, van Emde Boas tree, radix heap).

Boken för att förbereda sig inför intervjuer bör lÀsas, om inte annat sÄ en. De Àr alla uppbyggda pÄ ungefÀr samma princip. De beskriver intervjuprocessen i stora teknikföretag, ger grundlÀggande kunskaper inom datavetenskap, uppgifter relaterade till dessa grundlÀggande kunskaper, lösningar pÄ uppgifterna och en genomgÄng av lösningarna. Av de tre nÀmnda skulle jag nog rekommendera Cracking the Coding Interview som huvudsaklig, medan de andra kan lÀsas om man vill.

Algoritmiska uppgifter

Detta var förmodligen den mest intressanta delen av förberedelsen. Man kan naturligtvis sÀtta sig ner och bara lösa problem. Det finns mÄnga olika hemsidor för detta. Jag anvÀnde frÀmst tre: Hackerrank, CodeChef och LeetCode. PÄ CodeChef Àr uppgifterna indelade efter svÄrighetsgrad, men inte efter Àmnen. PÄ Hackerrank bÄde efter svÄrighetsgrad och Àmnen.

Men som jag snabbt insĂ„g finns det ett mer intressant sĂ€tt. Och det Ă€r tĂ€vlingar (programming challenges eller programming contests). Alla tre sidor erbjuder sĂ„dana. Men med LeetCode finns det ett problem — obekvĂ€m tidzon. DĂ€rför deltog jag inte pĂ„ den sidan. Hackerrank och CodeChef erbjuder ett tillrĂ€ckligt stort antal olika tĂ€vlingar, som kan pĂ„gĂ„ frĂ„n 1 timme till 10 dagar. Olika format har olika regler, men det hĂ€r kan man prata om lĂ€nge. HuvudpoĂ€ngen Ă€r att dessa tĂ€vlingar tillför ett tĂ€vlingsmoment (och Ă„terigen en tautologi) i inlĂ€rningsprocessen.

Totalt har jag deltagit i 37 tÀvlingar pÄ Hackerrank. Av dessa var 32 rankade och 5 var sponsrade (jag fick till och med 25$ i en av dem) eller för skojs skull. I de rankade tÀvlingarna kom jag 10 gÄnger in i topp 4%, 11 gÄnger i topp 12% och 5 gÄnger i topp 25%. Mina bÀsta resultat var 27/1459 i en 3-timmars tÀvling och 22/9721 i en veckolÄng.

Jag flyttade till CodeChef nÀr tÀvlingarna pÄ Hackerrank blev mer sÀllsynta. Totalt deltog jag i 5 tÀvlingar. Det bÀsta resultatet var 426/5019 i en tio dagar lÄng tÀvling.

Totalt har jag löst lite mer Àn 1000 uppgifter i tÀvlingar och bara för skojs skull, vilket passade in i min plan. TyvÀrr har jag nu ingen ledig tid för fortsatt tÀvlingsverksamhet, och inte heller nÄgot mÄl som jag kan avsÀtta min lediga tid för. Men det var roligt. Jag rekommenderar till dem som Àr intresserade att hitta likasinnade. Tillsammans Àr det mycket mer intressant. Jag hade kul med en vÀn, sÄ kanske dÀrför gick det sÄ bra.

Titta pÄ video

Efter att ha lĂ€st Skienas bok blev jag överlag intresserad av det han sysslar med. Precis som Sedgwick Ă€r han professor vid ett universitet. DĂ€rför finns det videoinspelningar av hans kurser tillgĂ€ngliga online. Jag beslutade mig för att titta pĂ„ kursen COMP300E — Programming Challenges — 2009 HKUST. Jag kan inte sĂ€ga att jag gillade det sĂ€rskilt mycket. För det första var videokvaliteten inte sĂ„ bra. För det andra försökte jag inte sjĂ€lv lösa uppgifterna som diskuterades inom ramen för kursen. SĂ„ engagemanget var inte sĂ„ högt.
Under tiden jag löste uppgifter och försökte hitta rÀtt algoritm stötte jag pÄ Tushar Roys videor. Han arbetade pÄ Amazon och arbetar nu pÄ Apple. Som jag senare insÄg har han en YouTube-kanal, dÀr han laddar upp genomgÄngar av olika algoritmer. Vid tidpunkten för artikelskrivandet innehöll kanalen 103 videor. Och jag mÄste sÀga att hans genomgÄngar Àr mycket vÀlgjorda. Jag har försökt titta pÄ andra författare, men det funkade inte sÄ bra. SÄ jag kan definitivt rekommendera denna kanal.

GenomgÄng av kurser

HÀr har jag inte gjort sÀrskilt mycket. Jag har tittat pÄ videor frÄn Android Developer Nanodegree frÄn Google och genomfört en kurs frÄn ITMO How to Win Coding Competitions: Secrets of Champions. Nanodegrees Àr helt okej, Àven om jag naturligtvis inte fick nÄgon ny information dÀrifrÄn. Kursen frÄn ITMO var lite hastig i teorin, men uppgifterna var intressanta. Jag skulle inte rekommendera att börja med den, men i princip var tiden som spenderades inte bortkastad.

Utforska andra mÀnniskors erfarenheter

SjÀlvklart har mÄnga försökt komma in pÄ Google. NÄgra lyckades, andra inte. Vissa har skrivit artiklar om detta. Av intressanta saker kanske jag nÀmner detta och detta. I första fallet hade personen förberett sig med en lista över vad han behövde lÀra sig för att bli Software Engineer och komma till Google. Han hamnade till slut pÄ Amazon, men det Àr inte sÄ viktigt. Den andra guiden Àr skriven av Google-ingenjören Larisa Agarova (Larrr). Förutom detta dokument kan man ocksÄ lÀsa hennes blogg.

Det Àr vÀrt att lÀsa recensioner om intervjuer pÄ Glassdoor. De Àr mer eller mindre liknande, men man kan fÄ ut nÄgon nyttig information.

Jag kommer inte att ge lÀnkar till andra smÄ artiklar, ni kan sjÀlva hitta dem i Google.

Andra försöket

Och ett Är har gÄtt. Det har varit ett ganska intensivt Är av lÀrande. Men inför den nya hösten hade jag mycket djupare teoretiska kunskaper och praktiska fÀrdigheter. Det var fortfarande nÄgra veckor kvar till slutet av Äret jag hade tilldelats för att förbereda mig, nÀr jag plötsligt fick ett mejl frÄn en rekryterare pÄ Google, som frÄgade om jag fortfarande var intresserad av att arbeta pÄ Google och om jag ville prata med honom. SjÀlvklart var jag intresserad. Vi kom överens om att ringas om en vecka. Jag bads ocksÄ om ett uppdaterat CV, till vilket jag lade till en kort beskrivning av vad jag hade gjort under Äret pÄ jobbet och i största allmÀnhet.

Efter vĂ„rt samtal om livet kom vi överens om att vi skulle ha en Hangouts-intervju om en vecka, precis som förra Ă„ret. Veckan gick, det var dags för intervjun, men intervjuaren dök inte upp. Tio minuter hade passerat, jag började bli nervös, nĂ€r plötsligt nĂ„gon kom in i chatten. Som det senare visade sig, kunde min intervjuare av nĂ„gon anledning inte dyka upp och hastigt fick de tag pĂ„ en ersĂ€ttare. Den personen var inte riktigt förberedd vare sig tekniskt eller för intervjun. Men sedan gick allt bra. Jag löste uppgiften snabbt, beskrev var fallen kunde finnas och hur man kan undvika dem. Vi diskuterade flera olika alternativ till uppgiften och svĂ„righetsgraden av algoritmen. Sedan pratade vi i fem minuter till, ingenjören delade sina intryck av att arbeta i MĂŒnchen (det verkar som om de inte hittade nĂ„gon brĂ„dskande ersĂ€ttning i ZĂŒrich), och sĂ„ skildes vi.

Samma dag kontaktade en rekryterare mig och meddelade att intervjun hade gÄtt utmÀrkt och att de var redo att bjuda in mig till en intervju pÄ kontoret. Dagen efter pratade vi via Hangouts och diskuterade detaljerna. Eftersom jag behövde ansöka om visum bestÀmde vi att schemalÀgga intervjun en mÄnad senare.

Medan jag förberedde dokumenten diskuterade jag samtidigt den kommande intervjun med rekryteraren. En standardintervju pÄ Google bestÄr av 4 algoritmiska och en System Design intervju. Men eftersom jag ansökte som Android-utvecklare fick jag veta att en del av intervjun skulle handla om Android-specifika Àmnen. Vilka exakt och vad som skulle vara specifikt kunde jag inte riktigt fÄ ur rekryteraren. SÄvitt jag förstod har de infört det relativt nyligen och han var sjÀlv inte sÄ insatt. Jag blev ocksÄ inbokad för tvÄ trÀningssessioner: hur man gÄr igenom en algoritmisk intervju och hur man genomför en System Design intervju. Sessionerna var av medelhög nytta. Ingen kunde heller berÀtta för mig vad man frÄgar Android-utvecklare. SÄ min förberedelse den hÀr mÄnaden blev följande:

  • Att köpa en whiteboard och skriva 2-3 dussin av de mest populĂ€ra algoritmerna pĂ„ den frĂ„n minnet. 3-5 stycken varje dag. Totalt skrev jag varje gĂ„ng flera gĂ„nger.
  • Att frĂ€scha upp olika kunskaper om Android som jag inte anvĂ€nder varje dag.
  • Att titta pĂ„ nĂ„gra videor om Big Scale och allt sĂ„dant.

Som jag redan nÀmnde sÄ gjorde jag parallellt dokument för resan. Först behövde de information för att skapa inbjudningsbrevet. Sedan försökte jag lÀnge ta reda pÄ vem som utfÀrdar visum till Schweiz pÄ Cypern, eftersom den schweiziska ambassaden inte hanterar detta. Det visade sig att det Àr den österrikiska konsulatet som gör detta. Jag ringde och bokade en tid. De krÀvde en hög med dokument, men inget sÀrskilt intressant. Foto, pass, uppehÄllstillstÄnd, en massa olika intyg och sÄ klart inbjudningsbrevet. Under tiden kom brevet aldrig. Till slut Äkte jag dit med en vanlig utskrift och det funkade bra. SjÀlva brevet kom först tre dagar senare, och cypriotiska FedEx kunde inte hitta min adress, sÄ jag fick Äka dit sjÀlv för att hÀmta det. PÄ samma gÄng hÀmtade jag ett paket frÄn FedEx som de ocksÄ kört pÄ mig för att de inte kunde hitta adressen, och som legat dÀr sedan juni (5 mÄnader, Karl). Eftersom jag inte visste om det, förvÀntade jag mig sÄ klart inte att de hade det. Jag fick mitt visum i tid, efter vilket jag bokade hotell och fick alternativ för flyg. Jag justerade alternativen för att göra det mer bekvÀmt. Det fanns inga direkta flyg lÀngre, sÄ jag flög dit via Aten och tillbaka via Wien.

Efter att alla formaliteter med resan var klara gick det ytterligare nĂ„gra dagar och jag flög alltsĂ„ till ZĂŒrich. Jag kom dit utan nĂ„gra Ă€ventyr. FrĂ„n flygplatsen till staden Ă„kte jag tĂ„g - snabbt och bekvĂ€mt. Efter att ha svamlat runt lite i staden hittade jag hotellet och checkade in. Eftersom hotellet var bokat utan mat Ă„t jag middag i nĂ€rheten och dĂ€ckade, eftersom flygningen var tidig pĂ„ morgonen och jag var trött. NĂ€sta dag Ă„t jag frukost pĂ„ hotellet (för en extra kostnad) och Ă„kte till Google-kontoret. Google har flera kontor i ZĂŒrich. Mitt intervall var inte pĂ„ det centrala kontoret. Och kontoret sĂ„g ganska vanligt ut, sĂ„ jag fick inte se alla de fördelar som ett 'normalt' Google-kontor har. Jag registrerade mig hos administratören och satte mig för att vĂ€nta. Efter en stund kom rekryteraren ut och berĂ€ttade planen för dagen, och sedan tog han mig till rummet dĂ€r intervjuerna skulle Ă€ga rum. Planen inkluderade 3 intervjuer, lunch och ytterligare 2 intervjuer.

Intervju nummer ett

Den första intervjun handlade just om Android. Den var verkligen inte relaterad till algoritmer. En överraskning, dock. NÄvÀl, det var nÀstan mer bekant sÄ. De bad mig att skapa en viss UI-komponent. Först diskuterade vi vad och hur. Jag föreslog att göra lösningen med RxJava och beskrev vad jag skulle göra och varför. De sa att det sjÀlvklart var bra, men lÄt oss göra det med Android-ramverket istÀllet. Dessutom skulle vi skriva koden pÄ tavlan. Det handlade inte bara om komponenten, utan hela aktiviteten som anvÀnde den komponenten. Det var nÄgot jag inte var beredd pÄ. Att skriva algoritm pÄ 30-50 rader pÄ tavlan Àr en sak, men nÄgot helt annat Àr att skriva Android-kod, Àven om den Àr förkortad med kommentarer som "ja, det hÀr skriver jag inte eftersom det Àr uppenbart". Det blev nÄgon slags blandning pÄ tre tavlor. Jag löste uppgiften, men det sÄg förskrÀckligt ut.

Intervju nummer tvÄ

Den hÀr gÄngen handlade intervjun om algoritmer. Det var tvÄ intervjuare. En var sjÀlva intervjuaren, och den andra en ung padawan (skugga intervjuare). Jag behövde komma pÄ en datakonstruktion med sÀrskilda egenskaper. Först diskuterade vi problemet, som vanligt. Jag stÀllde olika frÄgor, intervjuaren svarade. Efter en stund bad de mig att skriva nÄgra metoder för den pÄhittade strukturen pÄ tavlan. Den hÀr gÄngen gick det ganska bra, dock med nÄgra smÄ fel som jag rÀttade till efter intervjuarens ledtrÄd.

Intervju nummer tre

Den hĂ€r gĂ„ngen handlade det om System Design, som plötsligt ocksĂ„ visade sig vara Android. Jag behövde utveckla en app med specifik funktionalitet. Vi diskuterade krav pĂ„ appen, servern och kommunikationsprotokollet. Jag började beskriva vilka komponenter eller bibliotek jag skulle anvĂ€nda vid uppbyggnaden av appen. Sedan, nĂ€r jag nĂ€mnde Job Scheduler, kom jag av mig. PoĂ€ngen var att jag aldrig hade anvĂ€nt det praktiskt eftersom jag vid tidpunkten för dess utgivning just hade bytt till att stödja appar dĂ€r det inte ens fanns nĂ„gra uppgifter för dess tillĂ€mpning. Vid utvecklingen av efterföljande appar var det samma sak. SĂ„ i teorin vet jag vad det Ă€r, nĂ€r och hur det anvĂ€nds, men jag har ingen erfarenhet av tillĂ€mpningen. Och intervjuaren verkade inte tycka om det. Sen bad de mig att skriva kod. Ja, vid utvecklingen av appen mĂ„ste man skriva kod direkt. Återigen Android-kod pĂ„ tavlan. Det blev Ă„terigen ganska skrĂ€mmande.

Lunch

En annan person skulle ha kommit, men han dök inte upp. Även Google kan ha missar. I slutĂ€ndan gick jag pĂ„ lunch med den föregĂ„ende intervjuaren, hennes kollega, och lite senare anslöt nĂ€sta intervjuare. Lunchen var helt okej. Återigen, eftersom detta inte Ă€r huvudkontoret i ZĂŒrich, sĂ„g matsalen ganska vanlig ut, Ă€ven om den var mycket trevlig.

Intervju nummer fyra

Äntligen algoritmer i sin renaste form. Jag löste den första uppgiften ganska snabbt och effektivt, men missade en grĂ€nsfall, men med hjĂ€lp av intervjuaren (han gav just detta grĂ€nsfall) hittade jag problemet och rĂ€ttade det. SjĂ€lvklart behövde jag skriva koden pĂ„ en tavla. Sedan gavs en liknande men svĂ„rare uppgift. För den hittade jag ett par suboptimala lösningar och nĂ€stan en optimal, men jag saknade 5-10 minuter för att avsluta tanken. Och jag hann inte skriva koden för den.

Intervju nummer fem

Och Ànnu en Android-intervju. Jag undrar varför jag lÀrde mig algoritmer hela Äret?
Först var det nÄgra enkla frÄgor. Sedan skrev intervjuaren kod pÄ tavlan och bad mig hitta problem i den. Jag hittade, förklarade och rÀttade. Vi diskuterade det. Men sedan började ett par ovÀntade frÄgor i stil med "vad gör metod Y i klass X", "vad finns inuti metod Y", "vad gör klass Z". Jag svarade förstÄs pÄ nÄgot, men sa sedan att jag nyligen inte har arbetat med det och naturligtvis inte minns i detalj vem, vad och hur. Efter detta frÄgade intervjuaren vad jag gör nu. Och frÄgorna handlade om det. HÀr svarade jag mycket bÀttre.

Efter den sista intervjuens slut tog de min passerkort, önskade mig lycka till och skickade ivÀg mig. Jag promenerade lite i staden, Ät middag och gick till hotellet, dÀr jag somnade, eftersom flyget Äterigen var tidigt pÄ morgonen. Dagen efter kom jag fram till Cypern utan problem. Jag skrev feedback pÄ intervjun pÄ begÀran av rekryteraren och fyllde i ett formulÀr i en sÀrskild tjÀnst för att fÄ tillbaka mina utgifter. Av alla kostnader betalar Google bara för biljetterna direkt. Hotellet, maten och transporten betalas av kandidaten. Sedan fyller vi i formulÀret, bifogar kvitton och skickar till ett sÀrskilt kontor. De behandlar det och överför pengarna till kontot ganska snabbt.

Det tog en och en halv vecka att bearbeta intervjuresultaten. Efter det fick jag veta att jag var "a bit below the bar". Det vill sÀga, jag nÄdde inte riktigt upp. För att vara mer specifik, gick 2 intervjuer bra, 2 gick inte sÄ bra, och System Design gick vÀldigt dÄligt. Om Ätminstone 3 hade gÄtt bra skulle jag ha haft en chans, men nu utan nÄgra möjligheter. Jag blev erbjuden att prova igen om ett Är.

Till en början blev jag förstÄs besviken, eftersom jag lagt ner mycket arbete pÄ förberedelserna, och vid tidpunkten för intervjun hade jag redan börjat tÀnka pÄ att lÀmna Cypern. Att fÄ en anstÀllning pÄ Google och flytta till Schweiz verkade vara ett utmÀrkt alternativ.

Slutsats

Och hÀr nÀrmar vi oss den avslutande delen av artikeln. Ja, jag har misslyckats med intervjun tvÄ gÄnger pÄ Google. Det Àr trÄkigt. Det skulle sÀkert vara intressant att arbeta dÀr. Men man kan titta pÄ saken frÄn en annan sida.

  • Under ett och ett halvt Ă„r har jag lĂ€rt mig en oerhörd mĂ€ngd saker kopplade till mjukvaruutveckling.
  • Jag har haft stor glĂ€dje av att delta i programmeringstĂ€vlingar.
  • Jag gjorde en resa till ZĂŒrich i nĂ„gra dagar. NĂ€r fĂ„r jag chansen att Ă„ka dit igen?
  • Jag fick en intressant intervjuupplevelse hos ett av vĂ€rldens största IT-företag.

SĂ„ledes kan allt som hĂ€nt under dessa ett och ett halvt Ă„r enkelt betraktas som trĂ€ning, eller förberedelse. Och resultaten av denna trĂ€ning har visat sig. Min tanke om att lĂ€mna Cypern mognade (pĂ„ grund av vissa familjĂ€ra omstĂ€ndigheter), jag gick igenom flera intervjuer pĂ„ ett annat kĂ€nt företag och flyttade efter 8 mĂ„nader. Men det Ă€r en helt annan historia. ÄndĂ„ tycker jag att jag bör tacka Google för dessa ett och ett halvt Ă„r jag har arbetat med mig sjĂ€lv och för tvĂ„ intressanta dagar i ZĂŒrich.

Vad kan jag sĂ€ga till sist. Om du arbetar inom IT, förbered dig för intervjuer hos Google (Amazon, Microsoft, Apple osv.). Kanske kommer du en dag att kunna ta dig in dĂ€r. Även om du inte vill det, sĂ„ tro mig, du kommer inte att fĂ„ sĂ€mre av en sĂ„dan förberedelse. Just nĂ€r du inser att du kan (Ă€ven om det bara Ă€r under lyckliga omstĂ€ndigheter) klara en intervju hos ett av dessa företag, kommer mĂ„nga fler dörrar att öppna sig för dig Ă€n innan du började din förberedelse. Och allt du behöver pĂ„ vĂ€gen Ă€r ett mĂ„l, uthĂ„llighet och tid. Jag önskar er lycka till 🙂

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster