Kiel prepari por intervjuo ĉe Google kaj malsukcesi ĝin. Dufoje

Kiel prepari por intervjuo ĉe Google kaj malsukcesi ĝin. Dufoje

La titolo de la artikolo sonas kiel epopea fiasko, sed fakte ĉio ne estas tiel simpla. Kaj ĝenerale, ĉi tiu rakonto finiĝis tre pozitive, kvankam ne en Guglo. Sed ĉi tio estas temo por alia artikolo. En ĉi tiu sama artikolo, mi parolos pri tri aferoj: kiel iris mia preparprocezo, kiel okazis la intervjuoj ĉe Guglo, kaj kial, laŭ mi, ĉio ne estas tiel klara kiel ĝi povus ŝajni.

Kiel ĉio komencis

En unu malvarma cipra vintra vespero, subite venis al mi la penso, ke mia scio pri klasika Komputado estas tre malproksime de eĉ meza, kaj necesas io fari pri tio. Se, cetere, iu ankoraŭ ne legis kial la vespero estas cipra kaj malvarma, tiam vi povas ekscii pri ĝi tie. Post iom da pripensado, oni decidis komenci farante interretan kurson pri algoritmoj kaj datumstrukturoj. De unu el miaj iamaj kolegoj mi aŭdis pri la kurso de Robert Sedgewick pri Coursera. La kurso konsistas el du partoj (parto 1 и parto 2). Se subite la ligiloj ŝanĝiĝas, vi ĉiam povas Google la nomon de la aŭtoro. Ĉiu parto daŭras 6 semajnojn. Prelegoj okazas komence de la semajno, kaj dum la semajno oni ankoraŭ bezonas fari ekzercojn. La unua parto de la kurso kovras bazajn datumstrukturojn, bazajn specojn de ordigo kaj la kompleksecon de algoritmoj. La dua parto jam estas pli progresinta, komencante per grafikaĵoj kaj finiĝante per tiaj aferoj kiel Lineara Programado kaj Netraktebleco. Pensinte pri ĉio ĉi-supra, mi alvenis al la konkludo, ke ĝuste ĉi tio mi bezonas. Cetere, scivola leganto povas demandi, kion Guglo devas fari kun ĝi? Kaj efektive, ĝis ĉi tiu momento li tute ne havis rilaton al ĝi. Sed mi bezonis celon, ĉar studi dum 12 semajnoj vespere sen celo estas iom malfacila. Kio povus esti la celo akiri novajn sciojn? Kompreneble, ilia apliko en la praktiko. En la ĉiutaga vivo tio estas sufiĉe problema, sed dum intervjuo kun granda kompanio estas facila. Rapida Guglo montris, ke Guglo (pardonu la taŭtologion) estas unu el la plej grandaj kompanioj en Eŭropo (kaj mi rigardis specife Eŭropon) kiu faras tiajn intervjuojn. Nome ilia oficejo situas en Zuriko, Svislando. Do estas decidite - ni studu kaj iru por intervjuo ĉe Guglo.

Preparante por la unua alproksimiĝo

La 12 semajnoj pasis rapide kaj mi plenumis ambaŭ kursojn. Miaj impresoj pri la kursoj estas pli ol pozitivaj, kaj mi povas rekomendi ilin al iu ajn interesata. Mi ŝatis la kursojn pro la jenaj kialoj:

  • La preleganto parolas sufiĉe klaran la anglan
  • La materialo estas bone strukturita
  • Belegaj prezentoj montrantaj la internojn de ĉiu algoritmo
  • Kompetenta elekto de materialo
  • Interesaj ekzercoj
  • Ekzercoj estas aŭtomate kontrolataj en la retejo, post kio raporto estas generita

Mia laboro pri kursoj kutime iris tiel. Mi aŭskultis prelegojn en 1-2 tagoj. Poste ili faris rapidan teston pri sia scio pri la materialo. La resto de la semajno mi faris la ekzercon en pluraj ripetoj. Post la unua mi ricevis mian 30-70%, la postaj alportis la rezulton al 97-100%. La ekzerco kutime implikis efektivigi iun algoritmon, ekz. Kudra ĉizadobzip.

Fininte la kursojn, mi konstatis, ke multe da scio venas kun multe da malĝojo. Se antaŭe mi simple sciis, ke mi nenion scias, nun mi ekkomprenis, ke estas mi, kiu ne sciis.

Ĉar estis nur la monato majo, kaj mi planis la intervjuon por la aŭtuno, mi decidis daŭrigi mian edukadon. Post revizio de la postuloj por la vakanto, oni decidis paralele iri en du direktoj: daŭrigi studi algoritmojn kaj fari bazan kurson pri maŝinlernado. Por la unua celo, mi decidis ŝanĝi de kursoj al libro kaj elektis la monumentan verkon de Steven Skiena "Algoritmoj. La Algoritma Dezajna Manlibro. Ne tiel monumenta kiel tiu de Knut, sed tamen. Por la dua celo, mi reiris al Coursera kaj aliĝis al la kurso de Andrew Ng. maŝino Lernado.

Pliaj 3 monatoj pasis kaj mi finis la kurson kaj libron.

Ni komencu per la libro. La legado montriĝis sufiĉe interesa, kvankam ne facila. Principe mi rekomendus la libron, sed ne tuj. Ĝenerale, la libro provizas pli profundan rigardon al tio, kion mi lernis en la kurso. Krome, mi malkovris (de formala vidpunkto) tiajn aferojn kiel heŭristiko kaj dinamika programado. Kompreneble, mi antaŭe uzis ilin, sed mi ne sciis kiel ili nomiĝas. La libro enhavas ankaŭ kelkajn rakontojn el la vivo de la aŭtoro (Militrakonto), kiuj iom diluas la akademian naturon de la prezento. Cetere, la dua duono de la libro povas esti preterlasita; ĝi enhavas prefere priskribon de ekzistantaj problemoj kaj metodoj por solvi ilin. Ĝi estas utila se ĝi estas regule uzata en la praktiko, alie ĝi estos tuj forgesita.

Mi estis pli ol kontenta pri la kurso. La aŭtoro klare scias siajn aferojn kaj parolas en interesa maniero. Plie sufiĉe da ĝi, nome lineara algebro kaj la bazaĵoj de neŭralaj retoj, mi memoris el universitato, do mi ne spertis apartajn malfacilaĵojn. La strukturo de la kurso estas sufiĉe norma. La kurso estas dividita en semajnoj. Ĉiusemajne okazas prelegoj miksitaj kun mallongaj provoj. Post la prelegoj, vi ricevas taskon, kiun vi devas fari, sendi, kaj ĝi estos aŭtomate kontrolita. Mallonge, la listo de aferoj instruitaj en la kurso estas jena:
- kostfunkcio
- lineara regreso
- gradienta malsupreniro
- trajto skalo
- normala ekvacio
- logistika regreso
- multklasa klasifiko (unu kontraŭ ĉiuj)
- neŭralaj retoj
- malantaŭa disvastigo
- reguligo
— biaso/varianco
— lernkurboj
— eraraj metrikoj (precizeco, revoko, F1)
— Subtenaj Vektoraj Maŝinoj (granda marĝena klasifiko)
— K- signifas
—Analizo de Ĉefaj Komponentoj
- detekto de anomalioj
- kunlabora filtrado (rekomendinda sistemo)
— stokastikaj, mini-bataj, grupaj gradientaj devenoj
— reta lernado
- mapo redukti
- plafona analizo
Post kompletigo de la kurso, kompreno de ĉiuj tiuj temoj ĉeestis. Post 2 jaroj, preskaŭ ĉio estis nature forgesita. Mi rekomendas ĝin al tiuj, kiuj ne konas maŝinlernadon kaj volas akiri bonan komprenon pri bazaj aferoj por pluiri.

Unua kurado

Jam estis septembro kaj estis tempo pensi pri intervjuo. Ĉar kandidatiĝi per la retejo estas sufiĉe katastrofa, mi komencis serĉi amikojn, kiuj laboras ĉe Guglo. La elekto falis plu datacompboy, ĉar li estis la sola, kiun mi konis rekte (eĉ se ne persone). Li konsentis plusendi mian vivresumon, kaj balda mi ricevis leteron de la rekrutisto proponante rezervi sloton en sia kalendaro por la unua konversacio.Post kelkaj tagoj la voko okazis. Ni provis komuniki per Hangouts, sed la kvalito estis terura, do ni ŝanĝis al la telefono. Unue, ni rapide diskutis la normon kiel, kial kaj kial, kaj poste ni pluiris al teknika ekzamenado. Ĝi konsistis el dekduo demandoj en la spirito de "kio estas la malfacileco enmeti en haŝmapon", "kiajn ekvilibrajn arbojn vi scias." Ne malfacilas, se vi havas bazan scion pri ĉi tiuj aferoj. La projekcio iris bone kaj surbaze de la rezultoj, ili decidis organizi la unuan intervjuon post semajno.

La intervjuo ankaŭ okazis per Hangouts. Unue ili parolis pri mi dum ĉirkaŭ 5 minutoj, poste pluiris al la problemo. La problemo estis sur grafikaĵoj. Mi rapide komprenis, kion oni devas fari, sed mi elektis la malĝustan algoritmon. Kiam mi komencis skribi kodon mi konstatis tion kaj ŝanĝis al alia opcio, kiun mi kompletigis. La intervjuanto demandis plurajn demandojn pri la komplekseco de la algoritmo kaj demandis ĉu ĝi povus esti farita pli rapide. Mi iel iĝis obtuza kaj ne povis fari ĝin. Je ĉi tiu punkto, la tempo finiĝis kaj ni adiaŭis. Tiam, post ĉirkaŭ 10 minutoj, ekkomprenis al mi, ke anstataŭ la Dijkstra-algoritmo kiun mi uzis, en ĉi tiu aparta problemo mi povus uzi larĝ-unuan serĉon, kaj ĝi estus pli rapida. Post iom da tempo, la rekrutisto vokis kaj diris, ke la intervjuo entute iris bone kaj ke alia devus esti organizita. Ni interkonsentis pri alia semajno.

Ĉi-foje aferoj plimalboniĝis. Se la unuan fojon la intervjuanto estis amika kaj societema, ĉi-foje li estis iom morna. Mi ne povis tuj eltrovi la problemon, kvankam la ideoj, kiujn mi elpensis, povus principe konduki al ĝia solvo. Fine, post pluraj instigoj de la intervjuanto, venis al mi la solvo. Ĉi-foje ĝi rezultis esti larĝo-unua serĉo denove, nur de pluraj punktoj. Mi skribis la solvojn, renkontis ilin ĝustatempe, sed forgesis pri la randkazoj. Post iom da tempo, la varbanto vokis kaj diris, ke ĉi-foje la intervjuanto estas malfeliĉa, ĉar laŭ lia opinio mi bezonis tro da sugestoj (3 aŭ 4 pecoj) kaj mi konstante ŝanĝis la kodon skribante. Surbaze de la rezultoj de du intervjuoj, estis decidite ne iri plu, sed prokrasti la sekvan intervjuon por jaro, se mi tiel deziris. Tial ni adiaŭis.

Kaj el ĉi tiu rakonto mi faris plurajn konkludojn:

  • Teorio estas bona, sed vi devas rapide navigi ĝin
  • Teorio sen praktiko ne helpos. Ni devas solvi problemojn kaj alporti kodigon al aŭtomateco.
  • Multe dependas de la intervjuanto. Kaj nenio povas esti farita pri ĝi.

Preparante por la dua kuro

Pensinte pri la situacio, mi decidis provi denove post unu jaro. Kaj iomete redaktis la celon. Se pli frue la ĉefa celo estis studi, kaj intervjuo ĉe Guglo estis kiel malproksima karoto, nun pasigi intervjuon estis la celo, kaj studi estis la rimedo.
Do, nova plano estis evoluigita, kiu inkludis la sekvajn punktojn:

  • Daŭre studu teorion legante librojn kaj artikolojn.
  • Solvu algoritmajn problemojn en la kvanto de 500-1000 pecoj.
  • Daŭrigu la lernadon de la teorio rigardante videojn.
  • Daŭre studu teorion per kursoj.
  • Studu la spertojn de aliaj homoj kun intervjuoj ĉe Guglo.

Mi kompletigis la planon ene de unu jaro. Poste mi priskribos, kion precize mi faris por ĉiu el la punktoj.

Libroj kaj artikoloj

Mi eĉ ne memoras la nombron da artikoloj, kiujn mi legis; mi legis ilin kaj en la rusa kaj en la angla. Verŝajne la plej utila retejo ĉi tio. Ĉi tie vi povas trovi priskribon de granda nombro da interesaj algoritmoj kun kodaj ekzemploj.

Mi legis 5 librojn: Algoritmoj, 4-a eldono (Sedgewick, Wayne), Introduction to Algorithms 3-a Eldono (Cormen, Leiserson, Rivest, Stein), Cracking the Coding Interview 4-a eldono (Gayle Laakmann), Programming Interviews Exposed 2-a eldono (Mongan, Suojanen) , Giguere), Elementoj de Programming Interviews (Aziz, Lee, Prakash). Ili povas esti dividitaj en 2 kategoriojn. La unua inkludas librojn de Sedgwick kaj Corman. Ĉi tio estas teorio. La resto estas preparo por la intervjuo. Sedgwick rakontas pri la sama aĵo en la libro kiel en siaj kursoj. Nur skribe. Ne multe utilas legi ĝin atente, se vi sekvis la kurson, sed ĝi ĉiuokaze indas trarigardi. Se vi ne spektis la kurson, estas senco legi ĝin. Cormen ŝajnis al mi tro enuiga. Verdire, mi malfacile regis ĝin. Mi nur elprenis ĝin de tie majstra teorio, kaj pluraj malofte uzataj datumstrukturoj (Fibonacci-amaso, van Emde Boas-arbo, radiksego).

Indas legi almenaŭ unu libron por prepariĝi por intervjuo. Ili ĉiuj estas konstruitaj laŭ proksimume la sama principo. Ili priskribas la intervjuan procezon en grandaj teknologiaj kompanioj, donas bazajn aferojn de Komputado, problemojn por ĉi tiuj bazaj aferoj, solvojn al problemoj kaj analizon de solvoj. El la tri supre, mi verŝajne rekomendus Cracking the Coding Interview kiel la ĉefa, kaj la ceteraj estas laŭvolaj.

Algoritmaj problemoj

Ĉi tio verŝajne estis la plej interesa preparpunkto. Vi povas, kompreneble, sidiĝi kaj solvi problemojn stulte. Estas multaj malsamaj retejoj por ĉi tio. Mi ĉefe uzis tri: hackerrank, CodeChef и LeetCode. Ĉe CodeChef, problemoj estas dividitaj laŭ malfacileco, sed ne laŭ temo. Pri Hackerrank kaj laŭ komplekseco kaj laŭ temo.

Sed kiel mi tuj eksciis por mi, ekzistas pli interesa maniero. Kaj ĉi tiuj estas konkursoj (programaj defioj aŭ programaj konkursoj). Ĉiuj tri retejoj provizas ilin. Vere, estas problemo kun LeetCode - maloportuna horzono. Tial mi ne partoprenis en ĉi tiu retejo. Hackerrank kaj CodeChef provizas sufiĉe grandan nombron da malsamaj konkursoj, daŭrantaj de 1 horo ĝis 10 tagoj. Malsamaj formatoj havas malsamajn regulojn, sed pri tio ni povus longe paroli. La ĉefa punkto, kial la konkursoj estas bonaj, estas la enkonduko de konkurenciva (kaj denove taŭtologia) elemento en la lernadon.

Entute mi partoprenis en 37 konkursoj pri Hackerrank. El tiuj, 32 taksis, kaj 5 estis aŭ sponsoritaj (mi eĉ ricevis $25 en unu el ili) aŭ por amuzo. En la rangotabeloj mi estis en la supraj 10% 4 fojojn, en la supraj 11% 12 fojojn kaj en la supraj 5% 25 fojojn. La plej bonaj rezultoj estis 27/1459 en la 3-horo kaj 22/9721 en la semajno.

Mi ŝanĝis al CodeChef kiam Hackerrank komencis gastigi konkursojn malpli ofte. Entute mi sukcesis partopreni en 5 konkursoj. La plej bona poentaro estis 426/5019 en la dek-taga konkurso.

Entute, ĉe konkursoj kaj ĝuste tiel, mi solvis iom pli ol 1000 problemojn, kiuj kongruas en la plano. Nun, bedaŭrinde, ne ekzistas libera tempo por daŭrigi konkurencivajn agadojn, same kiel ne ekzistas celo por kiu la senlibera tempo povas esti forigita. Sed estis amuza. Mi rekomendas, ke tiuj, kiuj interesiĝas pri tio, trovu samideanojn. Kune aŭ en grupo ĝi estas multe pli interese. Mi amuziĝis kun ĉi tio kun amiko, do eble ĝi iris bone.

Spektu filmeton

Leginte la libron de Skiena, mi interesiĝis pri tio, kion li faras. Kiel Sedgwick, li estas universitata profesoro. Ĉi-rilate videoj de liaj kursoj troviĝas interrete. Mi decidis revizii la kurson COMP300E - Programaj Defioj - 2009 HKUST. Mi ne povas diri, ke mi tre ŝatis ĝin. Antaŭ ĉio, la videokvalito ne estas tre bona. Due, mi ne provis solvi mem la problemojn priparolatajn en la kurso. Do la gefianĉiĝo ne estis tre alta.
Ankaŭ, solvante problemojn, provante trovi la ĝustan algoritmon, mi trovis la videon de Tushar Roy. Li laboris ĉe Amazon kaj nun laboras ĉe Apple. Kiel mi poste eksciis por mi mem, li havas Jutuba kanalo, kie li afiŝas analizon de diversaj algoritmoj. En la momento de la skribado, la kanalo enhavas 103 filmetojn. Kaj mi devas diri, ke lia analizo estis farita tre bone. Mi provis rigardi aliajn aŭtorojn, sed iel ĝi ne funkciis. Do mi certe povas rekomendi ĉi tiun kanalon por vidi.

Prenante kursojn

Mi faris nenion specialan ĉi tie. Rigardis videon de la Android Developer Nanodegree de Google kaj prenis kurson de ITMO Kiel Gajni Kodigajn Konkursojn: Sekretoj de Ĉampionoj. Nanodegree estas sufiĉe bona, kvankam mi nature lernis nenion novan de ĝi. La kurso de ITMO estas iom misformita laŭ teorio, sed la problemoj estis interesaj. Mi ne rekomendus komenci per ĝi, sed principe ĝi estis tempo bone elspezita.

Lernu el la spertoj de aliaj homoj

Kompreneble, multaj homoj provis eniri Guglon. Iuj eniris, iuj ne. Iuj skribis artikolojn pri tio. El la interesaj aferoj mi verŝajne mencios ĉi tiun и ĉi tiun. En la unua kazo, la persono preparis por si liston de tio, kion li bezonas lerni por fariĝi Programaro-Inĝeniero kaj eniri Guglon. Ĝi finfine finiĝis en Amazono, sed tio ne plu gravas. La dua manlibro estis verkita de Guglo-inĝeniero, Larisa Agarkova (Larrr). Krom ĉi tiu dokumento, vi ankaŭ povas legi ŝia blogo.

Estas senco legi recenzojn pri intervjuoj ĉe Glassdoor. Ili ĉiuj estas pli-malpli similaj, sed vi povas ricevi kelkajn utilajn informojn.

Mi ne provizos ligilojn al aliaj malgrandaj artikoloj; vi povas facile trovi ilin en Guglo.

Dua kuro

Kaj nun jaro pasis. Ĝi montriĝis tre intensa laŭ studoj. Sed mi alproksimiĝis al la nova aŭtuno kun multe pli profundaj teoriaj scioj kaj evoluintaj praktikaj kapabloj. Restis ankoraŭ kelkaj semajnoj antaŭ la fino de la jaro asignita al mi por preparo, kiam subite falis en la poŝton letero de rekrutisto de Guglo, en kiu li demandis min ĉu mi ankoraŭ havas deziron labori ĉe Guglo kaj volus. Mi ĝenas paroli kun li. Nature, mi ne ĝenis. Ni konsentis telefoni post semajno. Ili ankaŭ petis de mi ĝisdatigitan vivresumon, al kiu mi aldonis mallongan priskribon de tio, kion mi faris dum la jaro en la laboro kaj ĝenerale.

Post komunikiĝo dumvive, ni decidis, ke post unu semajno okazos Hangout-intervjuo, same kiel pasintjare. Pasis semajno, estis tempo por la intervjuo, sed la intervjuanto ne aperis. Pasis 10 minutoj, mi jam komencis nervoziĝi, kiam subite iu eksplodis en la babilejo. Kiel montriĝis iom poste, mia intervjuanto ial ne povis aperi kaj oni urĝe trovis anstataŭaĵon por li. La persono estis iom nepreparita kaj rilate agordon de la komputilo kaj rilate al la intervjuo. Sed tiam ĉio iris bone. Mi solvis la problemon rapide, priskribis kie kaptiloj estis eblaj, kaj kiel ili povus esti evititaj. Ni diskutis plurajn malsamajn versiojn de la problemo kaj la kompleksecon de la algoritmo. Poste ni parolis ankoraŭ 5 minutojn, la inĝeniero rakontis al ni siajn impresojn pri laboro en Munkeno (oni ŝajne ne trovis urĝan anstataŭaĵon en Zuriko), kaj tiam ni disiĝis.

En la sama tago, la rekrutisto kontaktis min kaj diris ke la intervjuo iris bone kaj ili pretas inviti min al intervjuo en la oficejo. La sekvan tagon ni telefonis per Hangouts kaj diskutis la detalojn. Ĉar mi devis peti vizon, ni decidis plani intervjuon post monato.

Dum mi preparis la dokumentojn, mi samtempe diskutis la venontan intervjuon kun la rekrutanto. Norma intervjuo ĉe Google konsistas el 4 algoritmaj intervjuoj kaj unu System Design-intervjuo. Sed, ĉar mi kandidatiĝis kiel Android-programisto, oni diris al mi, ke parto de la intervjuo estus specifa por Android. Mi ne povis forskui ĝin de la rekrutanto ĝuste kio kaj kiaj estus la specifaĵoj. Laŭ mia kompreno, tio estis enkondukita relative lastatempe kaj li mem ne tre konsciis. Mi ankaŭ estis registrita por du trejnaj sesioj: kiel pasigi algoritman intervjuon kaj kiel pasigi System Design-intervjuon. La kunsidoj estis de meza utileco. Ankaŭ tie neniu povus diri al mi, kion ili demandas al Android-programistoj. Tial mia preparo por ĉi tiu monato resumiĝis al la jena:

  • Aĉetante markilon kaj skribante 2-3 dekduojn da la plej popularaj algoritmoj sur ĝi el memoro. 3-5 pecoj ĉiutage. Entute, ĉiu estis skribita plurfoje.
  • Refreŝigu vian memoron pri diversaj informoj pri Android, kiujn vi ne uzas ĉiutage
  • Rigardante kelkajn filmetojn pri Granda Skalo kaj tiaj aferoj

Kiel mi jam diris, mi samtempe preparis dokumentojn por la vojaĝo. Komence oni petis de mi informojn por fari invitleteron. Tiam mi longe provis ekscii, kiu en Kipro donas vizojn al Svislando, ĉar la svisa ambasado ne traktas tion. Kiel evidentiĝis, la aŭstra konsulejo faras tion. Mi vokis kaj faris rendevuon. Ili petis amason da dokumentoj, sed nenio aparte interesa. Foto, pasporto, restadpermeso, amaso da diversaj atestiloj kaj, kompreneble, invitletero. Dume la letero ne alvenis. En la fino, mi iris kun regula presado kaj ĝi funkciis sufiĉe bone. La letero mem alvenis 3 tagojn poste, kaj la cipra FedEx ne povis trovi mian adreson kaj mi devis iri mem preni ĝin. Samtempe mi ricevis pakaĵon de la sama FedEx, kiun ili ankaŭ ne povis liveri al mi, ĉar ili ne trovis la adreson, kaj kiu kuŝis tie ekde junio (5 monatoj, Karl). Ĉar mi ne sciis pri ĝi, nature, mi ne supozis, ke ili havas ĝin. Mi ricevis mian vizon ĝustatempe, post kio ili mendis al mi hotelon kaj proponis al mi flugopciojn. Mi alĝustigis la opciojn por igi ĝin pli oportuna. Ne plu estis rektaj flugoj, do mi finfine flugis tien tra Ateno kaj reen tra Vieno.

Post kiam ĉiuj formalaĵoj kun la vojaĝo estis aranĝitaj, ankoraŭ kelkaj tagoj pasis kaj mi efektive flugis al Zuriko. Ĝi alvenis sen incidento. De la flughaveno al la urbo mi prenis la trajnon - rapide kaj oportune. Iom vagante ĉirkaŭ la urbo, mi trovis hotelon kaj enregistriĝis. Ĉar la hotelo estis mendita sen manĝo, mi vespermanĝis apude kaj enlitiĝis, ĉar la flugo estis matene kaj mi jam volis dormi. La sekvan tagon mi matenmanĝis en la hotelo (por kroma mono) kaj iris al la Guglo-oficejo. Guglo havas plurajn oficejojn en Zuriko. Mia intervjuo ne estis ĉe la centra. Kaj ĝenerale, la oficejo aspektis sufiĉe ordinara, do mi ne havis ŝancon rigardi ĉiujn bonaĵojn de "normala" Gugla oficejo. Mi registriĝis ĉe la administranto kaj sidiĝis por atendi. Post iom da tempo, la rekrutisto eliris kaj rakontis al mi la planon por la tago, post kio li kondukis min al la ĉambro, kie la intervjuoj devis okazi. Fakte, la plano inkludis 3 intervjuojn, tagmanĝon kaj 2 pliajn intervjuojn.

Intervjuo numero unu

La unua intervjuo estis nur en Android. Kaj ĝi tute ne rilatis al algoritmoj. Surprizo, tamen. Nu, bone, ĝi estas eĉ pli ofta ĉi tiel. Ni estis petitaj fari certan UI-komponenton. Unue ni diskutis pri kio kaj kiel. Li proponis fari solvon uzante RxJava, priskribis kion precize li farus kaj kial. Ili diris, ke ĉi tio certe estas bona, sed ni faru ĝin uzante la Android-kadron. Kaj samtempe ni skribos la kodon sur la tabulo. Kaj ne nur komponanto, sed la tuta Agado, kiu uzas ĉi tiun komponanton. Por tio mi ne estis preta. Unu afero estas skribi 30-50 linion algoritmon sur la tabulo, kaj alia afero skribi nudelojn de Android-kodo, eĉ kun mallongigoj kaj komentoj en la spirito de "nu, mi ne skribos tion, ĉar ĝi jam estas evidenta." La rezulto estis ia vinagreto por 3 tabuloj. Tiuj. Mi solvis la problemon, sed ĝi aspektis muta.

Intervjuo numero du

Ĉi-foje la intervjuo temis pri algoritmoj. Kaj estis du intervjuantoj. Unu estas la fakta intervjuanto, kaj la dua estas juna padawan (ombra intervjuanto). Necesis elpensi datumstrukturon kun certaj propraĵoj. Unue, ni diskutis la problemon kiel kutime. Mi faris malsamajn demandojn, respondis la intervjuanto. Post iom da tempo, ili estis petitaj skribi plurajn metodojn de la elpensita strukturo sur la tabulo. Ĉi-foje mi pli-malpli sukcesis, kvankam kun kelkaj etaj eraroj, kiujn mi korektis laŭ instigo de la intervjuanto.

Intervjuo numero tri

Ĉi-foje System Design, kiu subite ankaŭ rezultis esti Android. Necesis evoluigi aplikaĵon kun certa funkcieco. Ni diskutis la postulojn por la aplikaĵo, la servilo kaj la komunika protokolo. Poste, mi komencis priskribi kiajn komponantojn aŭ bibliotekojn mi uzus dum konstruado de la aplikaĵo. Kaj tiam, menciante Job Scheduler, estis iom da konfuzo. La afero estas, ke mi neniam uzis ĝin praktike, ĉar en la momento de ĝia liberigo mi ĵus ŝanĝis al subtenaj aplikaĵoj kie ne estis taskoj por ĝia uzo. La sama afero okazis dum evoluigado de postaj. Tio estas, teorie, mi scias kio estas ĉi tiu afero, kiam kaj kiel ĝi estas uzata, sed mi ne havas sperton pri uzado de ĝi. Kaj la intervjuanto ŝajnis ne multe ŝati ĝin. Tiam ili petis min skribi kodon. Jes, dum disvolvado de aplikaĵo vi tuj devas skribi kodon. Denove Android-kodo sur la tabulo. Ĝi denove fariĝis timiga.

Luno

Alia persono devis veni, sed li ne venis. Kaj Guglo faras erarojn. Sekve mi iris tagmanĝi kun la antaŭa intervjuanto, ŝia kolegino, kaj iom poste aliĝis la sekva intervjuanto. La tagmanĝo estis sufiĉe deca. Denove, ĉar ĉi tio ne estas la ĉefa oficejo en Zuriko, la manĝoĉambro aspektis sufiĉe ordinara, kvankam tre bela.

Intervjuo numero kvar

Fine, algoritmoj en sia plej pura formo. Mi solvis la unuan problemon sufiĉe rapide kaj tuj efike, kvankam mi maltrafis unu randan kazon, sed je la instigo de la intervjuanto (li donis ĉi tiun ĉi randan kazon) mi trovis la problemon kaj korektis ĝin. Kompreneble, mi devis skribi la kodon sur la tabulo. Tiam simila tasko estis donita, sed pli malfacila. Por ĝi, mi trovis kelkajn neoptimumajn solvojn kaj preskaŭ trovis la optimuman, 5-10 minutoj ne sufiĉis por fini la penson. Nu, mi ne havis tempon por skribi la kodon por ĝi.

Intervjuo numero kvin

Kaj denove Android-intervjuo. Mi scivolas kial mi studis algoritmojn la tutan jaron?
Komence estis kelkaj simplaj demandoj. Tiam la intervjuanto skribis kodon sur la tabulo kaj petis trovi problemojn en ĝi. Trovis, klarigis, riparis. Diskutita. Kaj tiam kelkaj neatenditaj demandoj komenciĝis en la spirito de "kion faras metodo Y en klaso X", "kio estas ene de metodo Y", "kion faras klaso Z". Kompreneble, mi respondis ion, sed tiam mi diris, ke mi ne renkontis ĉi tion en mia laboro lastatempe kaj nature mi ne memoras, kiu faras kion kaj kiel detale. Post tio, la intervjuanto demandis, kion mi faras nun. Kaj la demandoj iris pri ĉi tiu temo. Mi jam multe pli bone respondis ĉi tie.

Post la fino de la lasta intervjuo, ili prenis mian enirpermesilon, deziris al mi bonan sorton kaj sendis min sur la vojon. Mi iom ĉirkaŭiris la urbon, vespermanĝis kaj iris al la hotelo, kie mi enlitiĝis, ĉar la flugo denove estis frumatene. La sekvan tagon mi alvenis sekure en Kipron. Laŭ la peto de la rekrutanto, mi skribis komentojn pri la intervjuo kaj plenigis formularon en speciala servo por redoni la elspezitan monon. El ĉiuj elspezoj, Guglo rekte pagas nur biletojn. Hotelo, manĝaĵo kaj vojaĝoj estas pagataj de la kandidato. Poste ni plenigas la formularon, almetas la kvitancojn kaj sendas ĝin al speciala oficejo. Ili procesas ĉi tion kaj transdonas monon al la konto sufiĉe rapide.

Necesis unu semajno kaj duono por prilabori la intervjuajn rezultojn. Post tio mi estis informita, ke mi estas "iom sub la stango". Tio estas, mi iom mankis. Pli specife, 2 intervjuoj iris bone, 2 iomete ne tiel bone, kaj System Design ne tre bone. Nun, se almenaŭ 3 estus irintaj bone, tiam ni estus povintaj konkuri, alie ne estas ŝanco. Ili proponis reveni post alia jaro.

Komence, kompreneble, mi estis ĉagrenita, ĉar multe da peno estis elspezita por preparo, kaj je la tempo de la intervjuo mi jam pensis pri forlasi Kipron. Aliĝi al Guglo kaj translokiĝi al Svislando ŝajnis bonega eblo.

konkludo

Kaj jen ni venas al la fina parto de la artikolo. Jes, mi malsukcesis la Guglan intervjuon dufoje. Estas malgaja. Verŝajne estus interese labori tie. Sed, vi povas rigardi la aferon de la alia flanko.

  • En jaro kaj duono, mi lernis grandegan kvanton da aferoj rilataj al programaro.
  • Mi tre amuziĝis partoprenante programajn konkursojn.
  • Mi iris al Zuriko dum kelkaj tagoj. Kiam mi denove iros tien?
  • Mi havis interesan intervjuan sperton ĉe unu el la plej grandaj IT-kompanioj en la mondo.

Tiel, ĉio, kio okazis dum ĉi tiuj unu kaj duono jaroj, povas esti simple konsiderata trejnado, aŭ trejnado. Kaj la rezultoj de ĉi tiu trejnado sentis sin. Mia ideo forlasi Kipron maturiĝis (pro iuj familiaj cirkonstancoj), mi sukcese trapasis plurajn intervjuojn kun alia konata firmao kaj translokiĝis post 8 monatoj. Sed tio estas tute alia historio. Tamen mi pensas, ke mi ankoraŭ devas danki Guglon kaj pro la jaro kaj duono, kiun mi laboris pri mi mem, kaj dum 2 interesaj tagoj en Zuriko.

Kion mi povas fine diri? Se vi laboras en IT, preparu vin por intervjuoj ĉe Google (Amazon, Microsoft, Apple, ktp.). Eble iam vi iros tien por alveni. Eĉ se vi ne volas, kredu min, tia preparo ne plimalbonigos vin. En la momento, kiam vi rimarkos, ke vi povas (eĉ se nur kun sorto) akiri intervjuon kun unu el ĉi tiuj kompanioj, multaj pli da vojoj estos malfermitaj al vi ol antaŭ ol vi komencis vian preparon. Kaj ĉio, kion vi bezonas survoje, estas celo, persisto kaj tempo. Mi deziras al vi sukceson :)

fonto: www.habr.com

Aldoni komenton