Hoe u zich kunt voorbereiden op een sollicitatiegesprek bij Google en er niet in slaagt. Tweemaal

Hoe u zich kunt voorbereiden op een sollicitatiegesprek bij Google en er niet in slaagt. Tweemaal

De titel van het artikel klinkt als een epische mislukking, maar in werkelijkheid is alles niet zo eenvoudig. En over het algemeen eindigde dit verhaal zeer positief, hoewel niet in Google. Maar dit is een onderwerp voor een ander artikel. In hetzelfde artikel zal ik het over drie dingen hebben: hoe mijn voorbereidingsproces verliep, hoe de interviews bij Google plaatsvonden en waarom naar mijn mening alles niet zo duidelijk is als het lijkt.

Hoe het allemaal begon

Op een koude Cypriotische winteravond kwam de gedachte plotseling bij me op dat mijn kennis van de klassieke informatica verre van zelfs maar gemiddeld was, en dat daar iets aan gedaan moest worden. Als iemand trouwens nog niet heeft gelezen waarom de avond Cypriotisch en koud is, dan kun je daar meer over te weten komen hier. Na enig nadenken werd besloten om te beginnen met het volgen van een online cursus over algoritmen en datastructuren. Van een van mijn voormalige collega’s hoorde ik over de cursus van Robert Sedgewick op Coursera. De cursus bestaat uit twee delen (Deel 1 и Deel 2). Als de links plotseling veranderen, kun je altijd de naam van de auteur googlen. Elk onderdeel duurt 6 weken. Aan het begin van de week worden hoorcolleges gegeven en doordeweeks moet je nog oefeningen doen. Het eerste deel van de cursus behandelt basisdatastructuren, basistypen van sorteren en de complexiteit van algoritmen. Het tweede deel is al geavanceerder, beginnend met grafieken en eindigend met zaken als lineaire programmering en eigenzinnigheid. Nadat ik over al het bovenstaande had nagedacht, kwam ik tot de conclusie dat dit precies is wat ik nodig heb. Trouwens, een nieuwsgierige lezer zou zich kunnen afvragen: wat heeft Google ermee te maken? En inderdaad, tot op dit moment had hij er helemaal niets mee te maken. Maar ik had een doel nodig, aangezien 12 weken 's avonds studeren zonder doel toch wat lastig is. Wat zou het doel kunnen zijn van het verwerven van nieuwe kennis? Natuurlijk, de toepassing ervan in de praktijk. In het dagelijks leven is dit behoorlijk problematisch, maar tijdens een sollicitatiegesprek bij een groot bedrijf is het gemakkelijk. Een snelle Google-sessie liet zien dat Google (excuseer de tautologie) een van de grootste bedrijven in Europa is (en ik keek specifiek naar Europa) die dergelijke interviews afneemt. Hun kantoor is namelijk gevestigd in Zürich, Zwitserland. Dus er is besloten: laten we studeren en gaan voor een interview bij Google.

Voorbereiding op de eerste aanpak

De 12 weken gingen snel voorbij en ik heb beide cursussen afgerond. Mijn indrukken van de cursussen zijn meer dan positief en ik kan ze iedereen die geïnteresseerd is aanbevelen. Ik vond de cursussen leuk om de volgende redenen:

  • De docent spreekt redelijk duidelijk Engels
  • Het materiaal is goed gestructureerd
  • Prachtige presentaties die de binnenkant van elk algoritme laten zien
  • Competente materiaalkeuze
  • Interessante oefeningen
  • Oefeningen worden automatisch gecontroleerd op de site, waarna er een rapport wordt gegenereerd

Mijn werk aan cursussen ging meestal als volgt. Ik luisterde naar lezingen in 1-2 dagen. Daarna ondergingen ze een snelle test van hun kennis van de stof. De rest van de week deed ik de oefening in verschillende iteraties. Na de eerste kreeg ik mijn 30-70%, de daaropvolgende brachten het resultaat op 97-100%. De oefening omvatte meestal de implementatie van een algoritme, b.v. Naad snijwerk of bzip.

Na het voltooien van de cursussen besefte ik dat veel kennis gepaard gaat met veel verdriet. Als ik voorheen gewoon wist dat ik niets wist, begon ik nu te beseffen dat ik het was die het niet wist.

Omdat het nog maar de maand mei was en ik het sollicitatiegesprek voor het najaar had gepland, besloot ik door te gaan met mijn opleiding. Nadat we de vereisten voor de vacature hadden bekeken, werd besloten om parallel twee richtingen in te slaan: doorgaan met het bestuderen van algoritmen en het volgen van een basiscursus machine learning. Voor het eerste doel besloot ik over te stappen van cursussen naar een boek en koos voor het monumentale werk ‘Algorithms’ van Steven Skiena. Het algoritmeontwerphandboek. Niet zo monumentaal als dat van Knut, maar toch. Voor het tweede doel ging ik terug naar Coursera en schreef me in voor de cursus van Andrew Ng. Machine leren.

Nog eens 3 maanden gingen voorbij en ik voltooide de cursus en boekte.

Laten we beginnen met het boek. Het lezen bleek behoorlijk interessant, hoewel niet gemakkelijk. In principe zou ik het boek aanbevelen, maar niet meteen. Over het geheel genomen geeft het boek een dieper inzicht in wat ik tijdens de cursus heb geleerd. Bovendien ontdekte ik (formeel gezien) zaken als heuristiek en dynamisch programmeren. Natuurlijk had ik ze al eerder gebruikt, maar ik wist niet hoe ze heetten. Het boek bevat ook een aantal verhalen uit het leven van de auteur (War Story), waardoor het academische karakter van de presentatie enigszins wordt afgezwakt. Overigens kan de tweede helft van het boek worden weggelaten; deze bevat eerder een beschrijving van bestaande problemen en methoden om deze op te lossen. Het is handig als het in de praktijk regelmatig wordt gebruikt, anders wordt het meteen vergeten.

Ik was meer dan tevreden over de cursus. De auteur heeft duidelijk verstand van zaken en vertelt op een interessante manier. Plus een behoorlijk deel ervan, namelijk lineaire algebra en de basisprincipes van neurale netwerken, herinnerde ik me van de universiteit, dus ik ondervond geen bijzondere problemen. De opbouw van de cursus is vrij standaard. De cursus is verdeeld in weken. Elke week zijn er hoorcolleges afgewisseld met korte toetsen. Na de colleges krijg je een opdracht die je moet doen, inleveren en deze wordt automatisch gecontroleerd. In het kort ziet de lijst met dingen die in de cursus worden geleerd er als volgt uit:
- kostenfunctie
- lineaire regressie
- gradiënt afdaling
- functieschaling
- normale vergelijking
- logistieke regressie
— classificatie in meerdere klassen (één versus allemaal)
– neurale netwerken
- backpropagatie
- regularisatie
— bias/variantie
– leercurven
— foutstatistieken (precisie, terugroepen, F1)
— Ondersteuning van vectormachines (classificatie met grote marges)
- K-betekent
– Analyse van hoofdcomponenten
- onregelmatigheidsdetectie
— collaboratieve filtering (aanbevelingssysteem)
— stochastische, mini-batch, batchgradiëntdalingen
- online leren
- kaart verkleinen
- plafondanalyse
Na voltooiing van de cursus was inzicht in al deze onderwerpen aanwezig. Na 2 jaar was bijna alles natuurlijk vergeten. Ik raad het aan aan degenen die niet bekend zijn met machinaal leren en een goed inzicht willen krijgen in de basiszaken om verder te gaan.

Eerste loop

Het was alweer september en het werd tijd om na te denken over een interview. Omdat solliciteren via de site behoorlijk rampzalig is, ben ik op zoek gegaan naar vrienden die bij Google werken. De keuze viel op datacompboy, aangezien hij de enige was die ik rechtstreeks kende (ook al was het niet persoonlijk). Hij stemde ermee in mijn cv door te sturen en al snel ontving ik een brief van de recruiter waarin hij aanbood een plekje in zijn agenda te reserveren voor het eerste gesprek. Een paar dagen later vond het telefoontje plaats. We probeerden te communiceren via Hangouts, maar de kwaliteit was verschrikkelijk, dus schakelden we over op de telefoon. Eerst bespraken we snel het hoe, waarom en waarom van de standaard, en daarna gingen we over tot de technische screening. Het bestond uit een tiental vragen in de geest van “wat is de moeilijkheid om in een hashkaart in te voegen”, “welke gebalanceerde bomen ken jij.” Het is niet moeilijk als je een basiskennis van deze dingen hebt. De screening verliep goed en op basis van de resultaten besloten ze over een week het eerste interview te organiseren.

Het interview vond ook plaats via Hangouts. Eerst praatten ze ongeveer vijf minuten over mij en gingen toen verder met het probleem. Het probleem lag bij grafieken. Ik besefte al snel wat er moest gebeuren, maar ik koos het verkeerde algoritme. Toen ik begon met het schrijven van code besefte ik dit en schakelde over naar een andere optie, die ik voltooide. De interviewer stelde verschillende vragen over de complexiteit van het algoritme en vroeg of het sneller kon. Op de een of andere manier werd ik saai en kon het niet. Op dit punt was de tijd om en namen we afscheid. Toen, na ongeveer tien minuten, drong het tot me door dat ik in dit specifieke probleem in plaats van het Dijkstra-algoritme dat ik gebruikte, eerst in de breedte kon zoeken, en dat zou sneller zijn. Na enige tijd belde de recruiter en zei dat het interview over het algemeen goed was verlopen en dat er nog een moest worden georganiseerd. We hebben nog een week afgesproken.

Deze keer werd het nog erger. Was de interviewer de eerste keer vriendelijk en sociaal, deze keer was hij enigszins somber. Ik kon het probleem niet meteen doorgronden, hoewel de ideeën die ik bedacht in principe tot de oplossing ervan konden leiden. Uiteindelijk kwam de oplossing, na verschillende aanwijzingen van de interviewer, bij mij terecht. Ook dit keer bleek het weer een breedteonderzoek te zijn, alleen vanuit meerdere punten. Ik schreef de oplossingen, ontmoette ze op tijd, maar vergat de randgevallen. Na een tijdje belde de recruiter en zei dat de interviewer deze keer niet tevreden was, omdat ik naar zijn mening te veel hints nodig had (3 of 4 stuks) en ik de code voortdurend veranderde tijdens het schrijven. Op basis van de uitkomsten van twee interviews werd besloten om niet verder te gaan, maar het volgende interview een jaar uit te stellen, als ik dat wilde. Daarom hebben we afscheid genomen.

En uit dit verhaal heb ik verschillende conclusies getrokken:

  • Theorie is goed, maar je moet er snel doorheen navigeren
  • Theorie zonder praktijk zal niet helpen. We moeten problemen oplossen en codering automatiseren.
  • Veel hangt af van de interviewer. En er kan niets aan gedaan worden.

Voorbereiden op de tweede run

Nadat ik over de situatie had nagedacht, besloot ik het over een jaar opnieuw te proberen. En het doel iets aangepast. Was studeren vroeger het hoofddoel en was een sollicitatiegesprek bij Google een verre wortel, nu was het slagen voor een sollicitatiegesprek het doel en studeren het middel.
Daarom werd een nieuw plan ontwikkeld, dat de volgende punten omvatte:

  • Ga door met het bestuderen van de theorie door boeken en artikelen te lezen.
  • Los algoritmische problemen op in een hoeveelheid van 500-1000 stukjes.
  • Blijf de theorie leren door video's te bekijken.
  • Blijf theorie studeren via cursussen.
  • Bestudeer de ervaringen van anderen met interviews bij Google.

Binnen een jaar heb ik het plan afgerond. Vervolgens beschrijf ik per punt wat ik precies heb gedaan.

Boeken en artikelen

Ik kan me niet eens herinneren hoeveel artikelen ik heb gelezen; ik las ze zowel in het Russisch als in het Engels. Waarschijnlijk de meest bruikbare site deze. Hier vindt u een beschrijving van een groot aantal interessante algoritmen met codevoorbeelden.

Ik heb 5 boeken gelezen: Algorithms, 4e editie (Sedgewick, Wayne), Introduction to Algorithms 3e editie (Cormen, Leiserson, Rivest, Stein), Cracking the Coding Interview 4e editie (Gayle Laakmann), Programming Interviews Exposed 2e editie (Mongan, Suojanen , Giguere), Elementen van programmeerinterviews (Aziz, Lee, Prakash). Ze kunnen worden onderverdeeld in 2 categorieën. De eerste bevat boeken van Sedgwick en Corman. Dit is een theorie. De rest is voorbereiding op het interview. Sedgwick vertelt in het boek hetzelfde als in zijn cursussen. Gewoon schriftelijk. Het heeft niet veel zin om het aandachtig te lezen als je de cursus hebt gevolgd, maar het is toch de moeite waard om even door te lezen. Als je de cursus nog niet hebt gezien, is het zinvol om deze te lezen. Cormen leek mij te saai. Eerlijk gezegd had ik moeite om het onder de knie te krijgen. Ik heb het daar gewoon weggehaald meesterstelling, en verschillende zelden gebruikte datastructuren (Fibonacci-heap, van Emde Boas-boom, radix-heap).

Het is de moeite waard om ten minste één boek te lezen ter voorbereiding op een interview. Ze zijn allemaal gebouwd op ongeveer hetzelfde principe. Ze beschrijven het interviewproces bij grote technologiebedrijven, geven basiszaken uit de informatica, problemen voor deze basiszaken, oplossingen voor problemen en analyse van oplossingen. Van de drie hierboven zou ik Cracking the Coding Interview waarschijnlijk als belangrijkste aanbevelen, en de rest is optioneel.

Algoritmische problemen

Dit was waarschijnlijk het meest interessante voorbereidingspunt. Je kunt natuurlijk gaan zitten en problemen dom oplossen. Er zijn veel verschillende sites hiervoor. Ik heb er vooral drie gebruikt: Hackerrank, CodeChef и LeetCode. Op CodeChef worden problemen ingedeeld op moeilijkheidsgraad, maar niet op onderwerp. Op Hackerrank zowel op complexiteit als op onderwerp.

Maar zoals ik meteen zelf ontdekte, is er een interessantere manier. En dit zijn competities (programmeeruitdagingen of programmeerwedstrijden). Alle drie de sites bieden ze aan. Het is waar dat er een probleem is met LeetCode: een ongemakkelijke tijdzone. Daarom heb ik niet deelgenomen aan deze site. Hackerrank en CodeChef bieden een vrij groot aantal verschillende competities, die van 1 uur tot 10 dagen duren. Verschillende formaten hebben verschillende regels, maar daar kunnen we nog lang over praten. Het belangrijkste punt waarom competities goed zijn, is de introductie van een competitief (en opnieuw tautologie) element in het leerproces.

In totaal heb ik deelgenomen aan 37 wedstrijden op Hackerrank. Hiervan waren er 32 met beoordelingscriteria, en 5 waren ofwel gesponsord (in één daarvan ontving ik zelfs $ 25) of voor de lol. In het klassement stond ik 10 keer in de top 4%, 11 keer in de top 12% en 5 keer in de top 25%. De beste resultaten waren 27/1459 in het 3 uur en 22/9721 in de week.

Ik ben overgestapt naar CodeChef toen Hackerrank minder vaak wedstrijden begon te organiseren. In totaal heb ik aan 5 wedstrijden kunnen deelnemen. De beste score was 426/5019 in de tiendaagse competitie.

In totaal heb ik op wedstrijden en zomaar iets meer dan 1000 problemen opgelost, die in het plan pasten. Nu is er helaas geen vrije tijd om competitieve activiteiten voort te zetten, net zoals er geen doel is waarvoor de onvrije tijd kan worden afgeschreven. Maar het was leuk. Ik raad degenen die hierin geïnteresseerd zijn aan om gelijkgestemde mensen te vinden. Samen of in een groep is het veel interessanter. Ik heb hier plezier mee gehad met een vriend, dus misschien ging het goed.

Bekijk video

Na het lezen van Skiena’s boek raakte ik geïnteresseerd in wat hij deed. Net als Sedgwick is hij hoogleraar aan de universiteit. In dit verband zijn video's van zijn cursussen online te vinden. Ik besloot de cursus te herzien COMP300E - Programmeeruitdagingen - 2009 HKUST. Ik kan niet zeggen dat ik het erg leuk vond. Allereerst is de videokwaliteit niet erg goed. Ten tweede heb ik niet geprobeerd de in de cursus besproken problemen zelf op te lossen. De betrokkenheid was dus niet erg hoog.
Terwijl ik problemen oploste en probeerde het juiste algoritme te vinden, kwam ik ook de video van Tushar Roy tegen. Hij werkte bij Amazon en werkt nu bij Apple. Zoals ik later zelf ontdekte, heeft hij dat ook gedaan Youtube kanaal, waar hij een analyse van verschillende algoritmen plaatst. Op het moment van schrijven bevat het kanaal 103 video's. En ik moet zeggen dat zijn analyse heel goed is uitgevoerd. Ik probeerde naar andere auteurs te kijken, maar op de een of andere manier werkte het niet. Ik kan dit kanaal dus zeker aanbevelen om te bekijken.

Cursussen volgen

Ik heb hier niets bijzonders gedaan. Een video bekeken van Google's Android Developer Nanodegree en een cursus gevolgd van ITMO Hoe u codeerwedstrijden kunt winnen: Secrets of Champions. Nanodegree is best goed, al heb ik er uiteraard niets nieuws van geleerd. De cursus van ITMO is qua theorie een beetje scheef, maar de problemen waren interessant. Ik zou niet aanraden om ermee te beginnen, maar in principe was het een goed bestede tijd.

Leer van de ervaringen van anderen

Natuurlijk probeerden veel mensen in Google te komen. Sommigen kwamen binnen, anderen niet. Sommigen hebben hier artikelen over geschreven. Van de interessante dingen die ik waarschijnlijk zal noemen deze и deze. In het eerste geval stelde de persoon voor zichzelf een lijst op van wat hij moet leren om Software Engineer te worden en bij Google terecht te komen. Uiteindelijk kwam het bij Amazon terecht, maar dat is niet zo belangrijk meer. De tweede handleiding is geschreven door Google-ingenieur Larisa Agarkova (Larr). Naast dit document kunt u ook lezen haar blog.

Het is zinvol om recensies van sollicitatiegesprekken op Glassdoor te lezen. Ze lijken allemaal min of meer op elkaar, maar je kunt wel wat nuttige informatie krijgen.

Ik geef geen links naar andere kleine artikelen; die kun je gemakkelijk vinden op Google.

Tweede run

En nu is er een jaar voorbij. Qua studie bleek het heel heftig te zijn. Maar ik ging de nieuwe herfst tegemoet met veel diepere theoretische kennis en ontwikkelde praktische vaardigheden. Er restten me nog een paar weken voor het einde van het jaar ter voorbereiding, toen er plotseling een brief van een recruiter van Google in de bus viel, waarin hij me vroeg of ik nog steeds zin had om bij Google te werken en dat ik Ik vind het erg om met hem te praten. Natuurlijk vond ik dat niet erg. We spraken af ​​om binnen een week te bellen. Ze vroegen me ook om een ​​bijgewerkt CV, waaraan ik een korte beschrijving heb toegevoegd van wat ik gedurende het jaar heb gedaan op het werk en in het algemeen.

Nadat we voor het leven hadden gecommuniceerd, besloten we dat er over een week een Hangout-interview zou plaatsvinden, net als vorig jaar. Een week ging voorbij, het was tijd voor het interview, maar de interviewer kwam niet opdagen. Er gingen 10 minuten voorbij, ik begon al zenuwachtig te worden, toen plotseling iemand de chat binnenstormde. Even later bleek dat mijn interviewer om de een of andere reden niet kon verschijnen en dat er met spoed een vervanger voor hem werd gezocht. De persoon was enigszins onvoorbereid, zowel wat betreft het instellen van de computer als wat betreft het afnemen van het interview. Maar toen ging alles goed. Ik loste het probleem snel op, beschreef waar valkuilen mogelijk waren en hoe deze konden worden omzeild. We bespraken verschillende versies van het probleem en de complexiteit van het algoritme. Daarna praatten we nog 5 minuten, de ingenieur vertelde ons zijn indrukken van het werken in München (ze hadden blijkbaar geen dringende vervanging gevonden in Zürich), en toen gingen we uit elkaar.

Diezelfde dag nam een ​​recruiter contact met mij op en zei dat het sollicitatiegesprek goed was verlopen en dat ze bereid waren mij uit te nodigen voor een sollicitatiegesprek op kantoor. De volgende dag hebben we via Hangouts gebeld en de details besproken. Omdat ik een visum moest aanvragen, besloten we om over een maand een interview te plannen.

Terwijl ik de documenten aan het voorbereiden was, besprak ik tegelijkertijd het komende interview met de recruiter. Een standaard interview bij Google bestaat uit 4 algoritmische interviews en één System Design interview. Maar aangezien ik solliciteerde naar een baan als Android-ontwikkelaar, kreeg ik te horen dat een deel van het sollicitatiegesprek Android-specifiek zou zijn. Ik kon de recruiter niet duidelijk maken wat en wat de details zouden zijn. Voor zover ik het begrijp is dit relatief recent geïntroduceerd en was hij er zelf niet erg van op de hoogte. Ik was ook aangemeld voor twee trainingen: hoe je slaagt voor een algoritmisch interview en hoe je slaagt voor een System Design-interview. De sessies waren van gemiddeld nut. Ook daar kon niemand mij vertellen wat ze aan Android-ontwikkelaars vragen. Daarom kwam mijn voorbereiding voor deze maand op het volgende neer:

  • Een markeerbord kopen en er vanuit het geheugen 2-3 dozijn van de meest populaire algoritmen op schrijven. Elke dag 3-5 stuks. In totaal zijn ze allemaal meerdere keren geschreven.
  • Fris uw geheugen op van verschillende informatie op Android die u niet elke dag gebruikt
  • Een paar video's bekijken over Big Scale en dat soort dingen

Zoals ik al zei, was ik tegelijkertijd bezig met het voorbereiden van documenten voor de reis. Om te beginnen vroegen ze mij om informatie voor het maken van een uitnodigingsbrief. Vervolgens heb ik lange tijd geprobeerd erachter te komen wie op Cyprus visa aan Zwitserland afgeeft, aangezien de Zwitserse ambassade hier niet mee bezig is. Het bleek dat het Oostenrijkse consulaat dit doet. Ik belde en maakte een afspraak. Ze vroegen om een ​​heleboel documenten, maar niets bijzonders interessants. Foto, paspoort, verblijfsvergunning, een heleboel verschillende certificaten en natuurlijk een uitnodigingsbrief. Ondertussen is de brief niet aangekomen. Uiteindelijk heb ik voor een gewone afdruk gekozen en dat werkte best goed. De brief zelf arriveerde drie dagen later en de Cypriotische FedEx kon mijn adres niet vinden en ik moest hem zelf gaan ophalen. Tegelijkertijd ontving ik een pakket van dezelfde FedEx, dat ze ook niet bij mij konden afleveren, omdat ze het adres niet konden vinden, en dat daar al sinds juni lag (3 maanden, Karl). Omdat ik er niets van wist, ging ik er natuurlijk niet vanuit dat ze het hadden. Ik kreeg mijn visum op tijd, waarna ze een hotel voor mij boekten en mij vluchtopties aanboden. Ik heb de opties aangepast om het handiger te maken. Er waren geen directe vluchten meer, dus ik vloog uiteindelijk via Athene heen en via Wenen terug.

Nadat alle formaliteiten met betrekking tot de reis waren geregeld, gingen er nog een paar dagen voorbij en vloog ik daadwerkelijk naar Zürich. Ik ben daar zonder incidenten aangekomen. Van het vliegveld naar de stad nam ik de trein - snel en gemakkelijk. Na een beetje door de stad te hebben rondgezworven, vond ik een hotel en checkte in. Omdat het hotel zonder eten was geboekt, heb ik naast de deur gegeten en naar bed gegaan, omdat de vlucht 's ochtends was en ik al wilde slapen. De volgende dag ontbeten in het hotel (voor extra geld) en ging naar het Google-kantoor. Google heeft verschillende kantoren in Zürich. Mijn interview vond niet op het centrale interview plaats. En over het algemeen zag het kantoor er nogal gewoon uit, dus ik had niet de kans om al het lekkers van een ‘normaal’ Google-kantoor te bekijken. Ik meldde mij aan bij de beheerder en ging zitten wachten. Na enige tijd kwam de recruiter naar buiten en vertelde me het plan voor de dag, waarna hij me meenam naar de kamer waar de interviews zouden plaatsvinden. Eigenlijk omvatte het plan 3 interviews, een lunch en nog 2 interviews.

Interview nummer één

Het eerste interview was alleen op Android. En het had helemaal niets met algoritmen te maken. Verrassing toch. Nou ja, het komt op deze manier nog vaker voor. We werden gevraagd om een ​​bepaald UI-onderdeel te maken. Eerst hebben we besproken wat en hoe. Hij bood aan een oplossing te maken met behulp van RxJava, beschreef wat hij precies zou doen en waarom. Ze zeiden dat dit zeker goed is, maar laten we het doen met behulp van het Android-framework. En tegelijkertijd schrijven we de code op het bord. En niet zomaar een onderdeel, maar de gehele Activiteit die gebruik maakt van dit onderdeel. Dit is waar ik niet klaar voor was. Het is één ding om een ​​algoritme van 30 tot 50 regels op het bord te schrijven, en iets anders om noedels Android-code te schrijven, zelfs met afkortingen en opmerkingen in de geest van “nou, dat zal ik niet schrijven, omdat het al duidelijk is.” Het resultaat was een soort vinaigrette voor 3 planken. Die. Ik heb het probleem opgelost, maar het zag er dom uit.

Interview nummer twee

Dit keer ging het interview over algoritmen. En er waren twee interviewers. De ene is de daadwerkelijke interviewer en de tweede is een jonge padawan (schaduwinterviewer). Er moest een datastructuur komen met bepaalde eigenschappen. Eerst hebben we zoals gewoonlijk het probleem besproken. Ik stelde verschillende vragen, de interviewer antwoordde. Na enige tijd werd hen gevraagd verschillende methoden van de uitgevonden structuur op het bord te schrijven. Deze keer was ik min of meer succesvol, zij het met een paar kleine foutjes, die ik op aandringen van de interviewer corrigeerde.

Interview nummer drie

Dit keer System Design, wat ineens ook Android bleek te zijn. Het was noodzakelijk om een ​​applicatie te ontwikkelen met bepaalde functionaliteit. We bespraken de vereisten voor de applicatie, de server en het communicatieprotocol. Vervolgens begon ik te beschrijven welke componenten of bibliotheken ik zou gebruiken bij het bouwen van de applicatie. En toen er over Job Scheduler werd gesproken, ontstond er enige verwarring. Het punt is dat ik het in de praktijk nooit heb gebruikt, omdat ik op het moment van de release net was overgestapt op het ondersteunen van applicaties waarbij er geen taken waren voor het gebruik ervan. Hetzelfde gebeurde bij het ontwikkelen van volgende. Dat wil zeggen, in theorie weet ik wat dit ding is, wanneer en hoe het wordt gebruikt, maar ik heb geen ervaring met het gebruik ervan. En de interviewer leek het niet zo leuk te vinden. Toen vroegen ze me om wat code te schrijven. Ja, bij het ontwikkelen van een applicatie moet je direct code schrijven. Opnieuw Android-code op het bord. Het bleek weer eng.

Lunch

Er zou nog iemand komen, maar die kwam niet. En Google maakt fouten. Het gevolg was dat ik ging lunchen met de vorige interviewer, haar collega, en even later kwam de volgende interviewer erbij. De lunch was heel behoorlijk. Nogmaals, aangezien dit niet het hoofdkantoor in Zürich is, zag de eetkamer er heel gewoon uit, hoewel erg leuk.

Interview nummer vier

Eindelijk algoritmen in hun puurste vorm. Ik loste het eerste probleem vrij snel en onmiddellijk effectief op, hoewel ik één randgeval miste, maar op verzoek van de interviewer (hij gaf dit zeer randgeval) vond ik het probleem en corrigeerde het. Natuurlijk moest ik de code op het bord schrijven. Toen werd een soortgelijke taak gegeven, maar moeilijker. Daarvoor vond ik een aantal niet-optimale oplossingen en vond bijna de optimale, 5-10 minuten waren niet genoeg om de gedachte af te ronden. Nou, ik had geen tijd om de code ervoor te schrijven.

Interview nummer vijf

En opnieuw Android-interview. Ik vraag me af waarom ik het hele jaar algoritmen heb bestudeerd?
In eerste instantie waren er een paar eenvoudige vragen. Vervolgens schreef de interviewer code op het bord en vroeg of hij er problemen in kon vinden. Gevonden, uitgelegd, gerepareerd. Besproken. En toen begonnen enkele onverwachte vragen in de geest van “wat doet methode Y in klasse X”, “wat zit er in methode Y”, “wat doet klasse Z”. Natuurlijk heb ik iets geantwoord, maar toen zei ik dat ik dit de laatste tijd niet meer in mijn werk ben tegengekomen en ik weet natuurlijk niet meer tot in detail wie wat doet en hoe. Daarna vroeg de interviewer wat ik nu aan het doen was. En de vragen gingen over dit onderwerp. Ik heb hier al veel beter geantwoord.

Na afloop van het laatste interview namen ze mijn pas in, wensten me veel succes en stuurden me op weg. Ik liep een beetje door de stad, at en ging naar het hotel, waar ik naar bed ging, aangezien de vlucht weer vroeg in de ochtend was. De volgende dag kwam ik veilig aan op Cyprus. Op verzoek van de recruiter schreef ik feedback op het interview en vulde ik een formulier in bij een speciale dienst om het uitgegeven geld terug te geven. Van alle kosten betaalt Google alleen rechtstreeks voor tickets. Hotel, eten en reizen worden betaald door de kandidaat. Vervolgens vullen wij het formulier in, voegen de bonnen bij en sturen het naar een speciaal kantoor. Zij verwerken dit en maken vrij snel geld over op de rekening.

Het verwerken van de interviewresultaten duurde anderhalve week. Waarna ik te horen kreeg dat ik “een beetje onder de lat” zat. Dat wil zeggen, ik kwam een ​​beetje tekort. Meer specifiek gingen twee interviews goed, twee een beetje niet zo goed, en Systeemontwerp niet zo goed. Als er tenminste 2 goed waren gegaan, hadden we kunnen concurreren, anders is er geen kans. Ze boden aan om over een jaar terug te komen.

In het begin was ik natuurlijk van streek, omdat er veel moeite was gestoken in de voorbereiding, en tegen de tijd van het interview dacht ik er al over om Cyprus te verlaten. Lid worden van Google en naar Zwitserland verhuizen leek een goede optie.

Conclusie

En hier komen we bij het laatste deel van het artikel. Ja, ik ben twee keer gezakt voor het Google-interview. Het is zielig. Het zou waarschijnlijk interessant zijn om daar te werken. Maar je kunt de zaak ook van de andere kant bekijken.

  • In anderhalf jaar heb ik enorm veel dingen geleerd die te maken hebben met softwareontwikkeling.
  • Ik vond het erg leuk om aan programmeerwedstrijden deel te nemen.
  • Ik ben een paar dagen naar Zürich geweest. Wanneer ga ik daar weer heen?
  • Ik had een interessante sollicitatie-ervaring bij een van de grootste IT-bedrijven ter wereld.

Alles wat er in deze anderhalf jaar is gebeurd, kan dus eenvoudigweg als training of training worden beschouwd. En de resultaten van deze training lieten zich voelen. Mijn idee om Cyprus te verlaten werd volwassen (vanwege familieomstandigheden), ik slaagde met succes voor verschillende interviews bij een ander bekend bedrijf en verhuisde na 8 maanden. Maar dat is een heel ander verhaal. Ik denk echter dat ik Google toch moet bedanken voor het anderhalf jaar dat ik zelf aan heb gewerkt, en voor 2 interessante dagen in Zürich.

Wat kan ik uiteindelijk zeggen? Als je in de IT werkt, bereid je dan voor op sollicitatiegesprekken bij Google (Amazon, Microsoft, Apple, etc.). Misschien ga je er ooit heen om er te komen. Zelfs als je dat niet wilt, geloof me, een dergelijke voorbereiding zal je niet slechter maken. Op het moment dat je beseft dat je (al is het maar met een beetje geluk) een sollicitatiegesprek kunt krijgen bij een van deze bedrijven, liggen er veel meer wegen voor je open dan voordat je aan je voorbereiding begon. En alles wat je onderweg nodig hebt is een doel, doorzettingsvermogen en tijd. Ik wens je succes :)

Bron: www.habr.com

Voeg een reactie