Kaip pasiruošti pokalbiui „Google“ ir jam nepavykti. Du kartus

Kaip pasiruošti pokalbiui „Google“ ir jam nepavykti. Du kartus

Straipsnio pavadinimas skamba kaip epinė nesėkmė, tačiau iš tikrųjų viskas nėra taip paprasta. Ir apskritai ši istorija baigėsi labai teigiamai, nors ir ne Google. Bet tai jau kito straipsnio tema. Tame pačiame straipsnyje pakalbėsiu apie tris dalykus: kaip vyko mano pasiruošimo procesas, kaip vyko interviu Google ir kodėl, mano nuomone, viskas nėra taip aišku, kaip gali atrodyti.

Kaip viskas prasidėjo

Vieną šaltą Kipro žiemos vakarą man staiga šovė į galvą mintis, kad mano klasikinės informatikos žinios labai toli nuo vidutinių, todėl reikia kažką daryti. Jei, beje, kas nors dar neskaitė, kodėl vakaras kiprietiškas ir šaltas, galite apie tai sužinoti čia. Kiek pagalvojus, buvo nuspręsta pradėti nuo algoritmų ir duomenų struktūrų internetinio kurso. Iš vieno iš savo buvusių kolegų girdėjau apie Roberto Sedgewicko kursą „Coursera“. Kursas susideda iš dviejų dalių (Dalis 1 и Dalis 2). Jei staiga pasikeičia nuorodos, visada galite „Google“ surasti autoriaus vardą. Kiekviena dalis trunka 6 savaites. Paskaitos skaitomos savaitės pradžioje, o per savaitę dar reikia daryti pratimus. Pirmoji kurso dalis apima pagrindines duomenų struktūras, pagrindinius rūšiavimo tipus ir algoritmų sudėtingumą. Antroji dalis jau pažangesnė, pradedant grafikais ir baigiant tokiais dalykais kaip tiesinis programavimas ir nesuderinamas. Pagalvojęs apie visa tai, kas išdėstyta aukščiau, padariau išvadą, kad tai yra būtent tai, ko man reikia. Beje, smalsus skaitytojas gali paklausti, ką su tuo turi „Google“? Ir iš tikrųjų iki šios akimirkos jis neturėjo su tuo nieko bendra. Bet man reikėjo tikslo, nes mokytis 12 savaičių vakarais be tikslo yra šiek tiek sunku. Koks galėtų būti naujų žinių įgijimo tikslas? Žinoma, jų pritaikymas praktikoje. Kasdieniame gyvenime tai gana problematiška, tačiau pokalbio su didele įmone metu tai lengva. Greita „Google“ parodė, kad „Google“ (atleiskite už tautologiją) yra viena didžiausių kompanijų Europoje (o aš žvelgiau būtent į Europą), kuri atlieka tokius interviu. Būtent jų biuras yra Ciuriche, Šveicarijoje. Taigi nuspręsta – mokykimės ir eikime interviu „Google“.

Pasiruošimas pirmajam priėjimui

12 savaičių prabėgo greitai ir baigiau abu kursus. Mano įspūdžiai apie kursus daugiau nei teigiami, galiu juos rekomenduoti visiems besidomintiems. Kursai man patiko dėl šių priežasčių:

  • Lektorius gana aiškiai kalba angliškai
  • Medžiaga gerai struktūrizuota
  • Puikūs pristatymai, parodantys kiekvieno algoritmo vidų
  • Kompetentingas medžiagos pasirinkimas
  • Įdomūs pratimai
  • Svetainėje automatiškai tikrinami pratimai, po kurių sugeneruojama ataskaita

Mano darbas kursuose dažniausiai vykdavo taip. Paskaitas išklausiau per 1-2 dienas. Tada jie greitai išbandė savo žinias apie medžiagą. Likusią savaitės dalį pratimą atlikau keliomis kartomis. Po pirmojo gavau savo 30-70%, paskesni atnešė rezultatą iki 97-100%. Pratimas dažniausiai buvo susijęs su kokio nors algoritmo įgyvendinimu, pvz. Siūlių drožyba arba bzip.

Baigęs kursus supratau, kad daug žinių ateina su dideliu sielvartu. Jei anksčiau tiesiog žinojau, kad nieko nežinau, tai dabar pradėjau suprasti, kad tai aš nežinau.

Kadangi buvo tik gegužės mėnuo, o pokalbį paskyriau rudeniui, nusprendžiau tęsti mokslus. Peržiūrėjus reikalavimus laisvai vietai, buvo nuspręsta lygiagrečiai eiti dviem kryptimis: toliau mokytis algoritmų ir išklausyti pagrindinį mašininio mokymosi kursą. Pirmajam tikslui nusprendžiau iš kursų pereiti prie knygos ir pasirinkau monumentalų Steveno Skienos kūrinį „Algoritmai. Algoritmo projektavimo vadovas. Ne toks monumentalus kaip Knuto, bet vis tiek. Dėl antrojo įvarčio grįžau į Coursera ir užsiregistravau Andrew Ng kursui. Mašininis mokymasis.

Praėjo dar 3 mėnesiai ir aš baigiau kursus ir užsisakiau.

Pradėkime nuo knygos. Skaitymas pasirodė gana įdomus, nors ir nelengvas. Iš principo knygą rekomenduočiau, bet ne iš karto. Apskritai, knygoje pateikiamas išsamesnis žvilgsnis į tai, ko išmokau kurse. Be to, atradau (formaliu požiūriu) tokius dalykus kaip euristika ir dinaminis programavimas. Natūralu, kad anksčiau juos naudojau, bet nežinojau, kaip jie vadinasi. Knygoje taip pat yra nemažai pasakų iš autoriaus gyvenimo („War Story“), kurios kiek atsveria akademinį pristatymo pobūdį. Beje, antrąją knygos pusę galima praleisti, joje veikiau aprašomos esamos problemos ir jų sprendimo būdai. Naudinga, jei jis reguliariai naudojamas praktikoje, kitaip jis bus nedelsiant pamirštas.

Likau daugiau nei patenkinta kursu. Autorius aiškiai išmano savo dalykus ir kalba įdomiai. Be to, nemaža dalis, būtent tiesinė algebra ir neuroninių tinklų pagrindai, prisiminiau iš universiteto, todėl nepatyriau jokių ypatingų sunkumų. Kurso struktūra yra gana standartinė. Kursas suskirstytas į savaites. Kiekvieną savaitę vyksta paskaitos su trumpais testais. Po paskaitų jums suteikiama užduotis, kurią turite atlikti, pateikti ir ji bus automatiškai patikrinta. Trumpai, kurse dėstomų dalykų sąrašas yra toks:
- išlaidų funkcija
- tiesinė regresija
- gradiento nusileidimas
- funkcijos mastelio keitimas
- normali lygtis
- logistinė regresija
- kelių klasių klasifikacija (vienas prieš visus)
- neuroniniai tinklai
- dauginimas atgal
- sureguliavimas
- šališkumas / dispersija
- mokymosi kreivės
- klaidų metrika (tikslumas, atšaukimas, F1)
— Palaikykite vektorines mašinas (didelės paraštės klasifikacija)
— K reiškia
– pagrindinių komponentų analizė
- anomalijų aptikimas
- bendradarbiavimo filtravimas (rekomendavimo sistema)
— stochastiniai, mini partiniai, paketiniai gradiento nusileidimai
- mokymasis internetu
- sumažinti žemėlapį
- lubų analizė
Baigę kursą, suprato visas šias temas. Po 2 metų beveik viskas buvo natūraliai pamiršta. Rekomenduoju tiems, kurie nėra susipažinę su mašininiu mokymusi ir nori gerai suprasti pagrindinius dalykus, kad galėtų judėti toliau.

Pirmas bėgimas

Jau buvo rugsėjis ir atėjo laikas galvoti apie interviu. Kadangi kreiptis per svetainę yra gana pražūtinga, pradėjau ieškoti draugų, kurie dirba Google. Pasirinkimas krito datacompboy, nes jis buvo vienintelis, kurį pažinojau tiesiogiai (net jei ne asmeniškai). Jis sutiko persiųsti mano gyvenimo aprašymą, netrukus gavau laišką iš verbuotojo, siūlančio rezervuoti vietą jo kalendoriuje pirmam pokalbiui.Po poros dienų skambutis įvyko. Bandėme bendrauti per „Hangout“, bet kokybė buvo baisi, todėl perėjome prie telefono. Pirmiausia greitai aptarėme standartą kaip, kodėl ir kodėl, o tada perėjome prie techninės patikros. Jį sudarė keliolika klausimų, kurių dvasia buvo „koks sunku įterpti į maišos žemėlapį“, „kokius subalansuotus medžius žinote“. Tai nėra sunku, jei turite pagrindinių žinių apie šiuos dalykus. Atranka praėjo gerai ir, remdamiesi rezultatais, jie nusprendė surengti pirmąjį pokalbį po savaitės.

Interviu taip pat vyko per „Hangout“. Iš pradžių jie kalbėjo apie mane apie 5 minutes, tada perėjo prie problemos. Problema buvo diagramose. Greitai supratau, ką reikia padaryti, bet pasirinkau netinkamą algoritmą. Kai pradėjau rašyti kodą, tai supratau ir perėjau į kitą parinktį, kurią užbaigiau. Pašnekovas uždavė keletą klausimų apie algoritmo sudėtingumą ir paklausė, ar būtų galima tai padaryti greičiau. Kažkaip pasidariau nuobodu ir negalėjau to padaryti. Šiuo metu laikas baigėsi ir mes atsisveikinome. Tada, maždaug po 10 minučių, supratau, kad vietoj Dijkstra algoritmo, kurį naudojau, šioje konkrečioje užduotyje galėčiau naudoti paiešką pagal plotį, ir tai būtų greitesnė. Po kurio laiko darbdavys paskambino ir pasakė, kad pokalbis iš esmės pavyko ir reikėtų organizuoti kitą. Sutarėme dėl kitos savaitės.

Šį kartą reikalai pablogėjo. Jei pirmą kartą pašnekovas buvo draugiškas ir bendraujantis, tai šį kartą – kiek niūrus. Negalėjau iš karto išsiaiškinti problemos, nors mano sugalvotos idėjos iš esmės galėtų padėti ją išspręsti. Galiausiai, po kelių pašnekovo raginimų, aš atėjau sprendimą. Šį kartą vėl pasirodė, kad buvo ieškoma plačiau, tik iš kelių taškų. Rašiau sprendimus, laiku juos sutikau, bet pamiršau kraštutinius atvejus. Po kiek laiko paskambino verbuotojas ir pasakė, kad šį kartą pašnekovas nepatenkintas, nes jo nuomone man reikia per daug užuominų (3 ar 4 vnt.) ir rašydama nuolat keisdavau kodą. Remiantis dviejų pokalbių rezultatais, buvo nuspręsta toliau nežengti, o kitą pokalbį nukelti metams, jei to norėsiu. Todėl ir atsisveikinome.

Ir iš šios istorijos padariau keletą išvadų:

  • Teorija gera, bet reikia greitai joje naršyti
  • Teorija be praktikos nepadės. Turime išspręsti problemas ir automatizuoti kodavimą.
  • Daug kas priklauso nuo pašnekovo. Ir nieko negalima padaryti.

Pasiruošimas antrajam važiavimui

Pagalvojęs apie situaciją, nusprendžiau po metų pabandyti dar kartą. Ir šiek tiek pakoregavo tikslą. Jei anksčiau pagrindinis tikslas buvo studijuoti, o interviu „Google“ buvo kaip tolima morka, tai dabar tikslas buvo išlaikyti interviu, o studijos – priemonė.
Taigi buvo sukurtas naujas planas, kuriame buvo šie punktai:

  • Tęskite teorijos studijas skaitydami knygas ir straipsnius.
  • Išspręskite 500-1000 vienetų algoritminius uždavinius.
  • Toliau mokykitės teorijos žiūrėdami vaizdo įrašus.
  • Toliau studijuoti teoriją per kursus.
  • Išstudijuokite kitų žmonių patirtį interviu sistemoje „Google“.

Planą įvykdžiau per metus. Toliau aprašysiu, ką tiksliai padariau su kiekvienu tašku.

Knygos ir straipsniai

Net nepamenu, kiek straipsnių perskaičiau, skaičiau juos ir rusų, ir anglų kalbomis. Turbūt pati naudingiausia svetainė tai. Čia galite rasti daugybės įdomių algoritmų aprašymą su kodų pavyzdžiais.

Perskaičiau 5 knygas: Algoritmai, 4-asis leidimas (Sedgewick, Wayne), Algoritmų įvadas 3-asis leidimas (Cormen, Leiserson, Rivest, Stein), Cracking the Coding Interview 4-asis leidimas (Gayle Laakmann), Programing Interviews Exposed 2nd edition (Mongan, Suojanen). , Giguere), programavimo interviu elementai (Aziz, Lee, Prakash). Juos galima suskirstyti į 2 kategorijas. Pirmasis apima Sedgwicko ir Cormano knygas. Tai yra teorija. Likusi dalis – pasiruošimas pokalbiui. Sedgwickas knygoje pasakoja apie tą patį, kaip ir savo kursuose. Tiesiog raštu. Nėra prasmės atidžiai jį skaityti, jei išklausėte kursą, bet vis tiek verta perskaityti. Jei kurso nežiūrėjote, prasminga jį perskaityti. Kormenas man pasirodė pernelyg nuobodus. Tiesą sakant, man buvo sunku tai įvaldyti. Aš ką tik išėmiau jį iš ten meistro teorija, ir kelios retai naudojamos duomenų struktūros (Fibonačio krūva, van Emde Boas medis, radix krūva).

Norint pasiruošti pokalbiui verta perskaityti bent vieną knygą. Visi jie sukurti maždaug tuo pačiu principu. Jie aprašo interviu procesą didelėse technologijų įmonėse, pateikia pagrindinius dalykus iš informatikos, šių pagrindinių dalykų problemas, problemų sprendimus ir sprendimų analizę. Iš trijų aukščiau pateiktų tikriausiai rekomenduočiau kaip pagrindinį „Cracking the Coding Interview“, o kiti yra neprivalomi.

Algoritminės problemos

Tai turbūt buvo įdomiausias pasiruošimo momentas. Žinoma, galite sėsti ir kvailai spręsti problemas. Tam yra daug įvairių svetainių. Daugiausia naudojau tris: Hackerrank, CodeChef и „LeetCode“. „CodeChef“ problemos skirstomos pagal sunkumą, bet ne pagal temą. „Hackerrank“ tiek pagal sudėtingumą, tiek pagal temą.

Bet kaip iš karto sužinojau pati, yra ir įdomesnis būdas. Ir tai yra konkursai (programavimo iššūkiai arba programavimo konkursai). Jas teikia visos trys svetainės. Tiesa, yra problema su LeetCode – nepatogi laiko juosta. Štai kodėl aš nedalyvavau šioje svetainėje. „Hackerrank“ ir „CodeChef“ pateikia gana daug įvairių varžybų, trunkančių nuo 1 valandos iki 10 dienų. Skirtingi formatai turi skirtingas taisykles, tačiau apie tai galėtume kalbėti ilgai. Pagrindinis dalykas, kodėl konkursai yra naudingi, yra konkurencinio (ir vėlgi tautologijos) elemento įvedimas į mokymosi procesą.

Iš viso „Hackerrank“ platformoje dalyvavau 37 varžybose. Iš jų 32 buvo reitinginiai, o 5 buvo arba remiami (viename iš jų gavau net 25 USD) arba dėl pramogos. Reitinguose 10 kartų patekau į 4%, 11 kartų - 12% ir 5 kartus - 25%. Geriausi rezultatai buvo 27/1459 per 3 valandas ir 22/9721 per savaitę.

Perėjau prie CodeChef, kai Hackerrank pradėjo rečiau rengti konkursus. Iš viso pavyko dalyvauti 5 konkursuose. Geriausias rezultatas buvo 426/5019 dešimties dienų varžybose.

Iš viso varžybose ir panašiai išsprendžiau kiek daugiau nei 1000 problemų, kurios tilpo į planą. Dabar, deja, nėra laisvo laiko tęsti konkurencinę veiklą, kaip ir nėra tikslo, kuriam būtų galima nurašyti nelaisvą laiką. Bet buvo smagu. Besidomintiems tuo rekomenduoju susirasti bendraminčių. Kartu ar grupėje daug įdomiau. Man tai buvo smagu su draugu, tai gal ir gerai.

Žiūrėti vaizdo įrašą

Perskaičiusi Skienos knygą, susidomėjau, ką jis veikia. Kaip ir Sedgwickas, jis yra universiteto profesorius. Šiuo atžvilgiu jo kursų vaizdo įrašus galima rasti internete. Nusprendžiau peržiūrėti kursą COMP300E – Programavimo iššūkiai – 2009 m. HKUST. Negaliu pasakyti, kad man labai patiko. Visų pirma, vaizdo kokybė nėra labai gera. Antra, kurse aptartų problemų nebandžiau spręsti pati. Taigi sužadėtuvės nebuvo labai didelės.
Be to, spręsdamas problemas, bandydamas rasti tinkamą algoritmą, aptikau Tushar Roy vaizdo įrašą. Jis dirbo „Amazon“, o dabar dirba „Apple“. Kaip vėliau pati išsiaiškinau, jis turi „YouTube“ kanalas, kur jis skelbia įvairių algoritmų analizę. Rašymo metu kanale yra 103 vaizdo įrašai. Ir turiu pasakyti, kad jo analizė buvo atlikta labai gerai. Bandžiau žiūrėti kitus autorius, bet kažkaip nepavyko. Tad tikrai galiu rekomenduoti pažiūrėti šį kanalą.

Lanko kursus

Nieko ypatingo čia nepadariau. Žiūrėjo vaizdo įrašą iš Google Android Developer Nanodegree ir lankė ITMO kursą Kaip laimėti kodavimo konkursus: čempionų paslaptys. Nanodegree yra gana geras, nors aš natūraliai nieko naujo iš ten nesužinojau. ITMO kursas yra šiek tiek ankštas teorijos požiūriu, tačiau problemos buvo įdomios. Nerekomenduočiau nuo to pradėti, bet iš esmės tai buvo gerai praleistas laikas.

Mokykitės iš kitų žmonių patirties

Žinoma, daug žmonių bandė patekti į „Google“. Vieni pateko, kiti ne. Kai kurie apie tai parašė straipsnius. Iš įdomiausių dalykų tikriausiai paminėsiu šitas и šitas. Pirmuoju atveju asmuo parengė sau sąrašą, ko jam reikia išmokti, kad taptų programinės įrangos inžinieriumi ir patektų į Google. Galiausiai tai atsidūrė „Amazon“, bet tai nebėra taip svarbu. Antrąjį vadovą parašė Google inžinierė Larisa Agarkova (Larrr). Be šio dokumento, taip pat galite skaityti jos dienoraštį.

Tikslinga skaityti „Glassdoor“ interviu apžvalgas. Visi jie daugiau ar mažiau panašūs, tačiau galite gauti naudingos informacijos.

Nuorodų į kitus smulkius straipsnius nepateiksiu, nesunkiai jas rasite Google.

Antras bėgimas

O dabar praėjo metai. Studijų prasme ji pasirodė labai intensyvi. Bet į naująjį rudenį priėjau kur kas gilesnių teorinių žinių ir išugdytų praktinių įgūdžių. Iki pasirengimui skirtų metų pabaigos dar buvo likusios kelios savaitės, kai staiga į paštą nukrito laiškas iš Google verbuotojo, kuriame jis manęs paklausė, ar dar turiu noro dirbti Google. Aš nenoriu su juo pasikalbėti. Natūralu, kad aš neprieštarauju. Sutarėme paskambinti po savaitės. Taip pat paprašė atnaujinto gyvenimo aprašymo, prie kurio pridėjau trumpą aprašymą, ką nuveikiau per metus darbe ir apskritai.

Visą gyvenimą pabendravę nusprendėme, kad po savaitės bus „Hangout“ interviu, kaip ir pernai. Praėjo savaitė, atėjo laikas pokalbiui, tačiau pašnekovas nepasirodė. Praėjo 10 minučių, jau pradėjau nervintis, kai staiga kažkas įsiveržė į pokalbį. Kaip paaiškėjo kiek vėliau, mano pašnekovas kažkodėl negalėjo pasirodyti ir jam buvo skubiai rastas pakaitalas. Asmuo buvo kiek nepasiruošęs tiek dėl kompiuterio nustatymo, tiek dėl pokalbio atlikimo. Bet paskui viskas klostėsi gerai. Greitai išsprendžiau problemą, aprašiau, kur galimos spąstos ir kaip jas galima apeiti. Aptarėme kelias skirtingas problemos versijas ir algoritmo sudėtingumą. Tada pakalbėjome dar 5 minutes, inžinierius papasakojo įspūdžius apie darbą Miunchene (jie, matyt, nerado skubaus pakaitalo Ciuriche), ir tada išsiskyrėme.

Tą pačią dieną su manimi susisiekė personalo atrankos specialistė ir pasakė, kad pokalbis pavyko puikiai ir jie yra pasirengę pakviesti mane pokalbiui biure. Kitą dieną paskambinome per „Hangout“ ir aptarėme detales. Kadangi man reikėjo kreiptis dėl vizos, nusprendėme pokalbį suplanuoti po mėnesio.

Ruošdamas dokumentus tuo pat metu aptariau būsimą pokalbį su įdarbintoju. Standartinį interviu „Google“ sudaro 4 algoritminiai interviu ir vienas sistemos dizaino interviu. Tačiau, kadangi kreipiausi dėl „Android“ kūrėjo darbo, man buvo pasakyta, kad dalis pokalbio bus susijusi su „Android“. Negalėjau išjudinti iš verbuotojo, kas tiksliai ir kokia būtų specifika. Kiek suprantu, tai buvo įvesta palyginti neseniai ir jis pats nelabai žinojo. Taip pat buvau užsiregistravęs į dvi mokymo sesijas: kaip išlaikyti algoritminį pokalbį ir kaip išlaikyti sistemos dizaino pokalbį. Užsiėmimai buvo vidutiniškai naudingi. Ten taip pat niekas negalėjo man pasakyti, ko jie klausia „Android“ kūrėjų. Todėl mano pasiruošimas šiam mėnesiui susidarė taip:

  • Nusipirkti žymeklių lentą ir iš atminties į ją įrašyti 2-3 dešimtis populiariausių algoritmų. Kasdien po 3-5 vnt. Iš viso kiekvienas buvo parašytas kelis kartus.
  • Atnaujinkite savo atmintį įvairia informacija apie „Android“, kurios nenaudojate kiekvieną dieną
  • Žiūrėti kelis vaizdo įrašus apie „Big Scale“ ir panašius dalykus

Kaip jau sakiau, tuo pat metu ruošiau dokumentus kelionei. Pirmiausia jie manęs paprašė informacijos, kad galėčiau parašyti kvietimą. Tada ilgai bandžiau išsiaiškinti, kas Kipre išduoda vizas į Šveicariją, nes Šveicarijos ambasada tuo nesprendžia. Kaip paaiškėjo, tai daro Austrijos konsulatas. Paskambinau ir susitariau. Jie prašė krūvos dokumentų, bet nieko ypatingo. Nuotrauka, pasas, leidimas gyventi, krūva įvairių pažymų ir, žinoma, kvietimo laiškas. Tuo tarpu laiškas neatėjo. Galų gale aš pasirinkau įprastą spaudinį ir jis veikė gana gerai. Pats laiškas atkeliavo po 3 dienų, o Kipro FedEx negalėjo rasti mano adreso, todėl turėjau eiti pats jo pasiimti. Tuo pačiu metu gavau siuntinį iš to paties FedEx, kurio man taip pat negalėjo pristatyti, nes nerado adreso, ir kuris ten gulėjo nuo birželio mėnesio (5 mėn., Karlas). Kadangi aš apie tai nežinojau, natūralu, nemaniau, kad jie tai turi. Vizą gavau laiku, po to man užsakė viešbutį ir pasiūlė skrydžio variantus. Pakoregavau parinktis, kad būtų patogiau. Tiesioginių skrydžių nebebuvo, todėl ten skridau per Atėnus ir atgal per Vieną.

Sutvarkius visus formalumus su kelione, praėjo dar kelios dienos ir aš iš tikrųjų skridau į Ciurichą. Ten pateko be incidentų. Iš oro uosto į miestą važiavau traukiniu – greitai ir patogiai. Šiek tiek paklaidžiojęs po miestą susiradau viešbutį ir užsiregistravau. Kadangi viešbutis buvo užsakytas be maisto, vakarieniaudavau šalia ir nuėjau miegoti, nes skrydis buvo ryte ir jau norėjau miego. Kitą dieną papusryčiaujau viešbutyje (už papildomus pinigus) ir nuėjau į Google ofisą. „Google“ turi keletą biurų Ciuriche. Mano interviu nebuvo pagrindinis. Ir apskritai biuras atrodė gana įprastas, todėl neturėjau galimybės apžiūrėti visų „įprasto“ Google biuro gėrybių. Užsiregistravau pas administratorę ir atsisėdau laukti. Po kiek laiko išėjo verbuotojas ir papasakojo dienos planą, po kurio nuvedė į kambarį, kuriame turėjo vykti pokalbiai. Tiesą sakant, į planą buvo įtraukti 3 interviu, pietūs ir dar 2 interviu.

Interviu numeris vienas

Pirmasis interviu buvo tik „Android“. Ir tai neturėjo nieko bendra su algoritmais. Vis dėlto staigmena. Na, gerai, taip yra dar labiau įprasta. Mūsų buvo paprašyta sukurti tam tikrą vartotojo sąsajos komponentą. Pirmiausia aptarėme, kas ir kaip. Jis pasiūlė padaryti sprendimą naudojant RxJava, aprašė, ką tiksliai darys ir kodėl. Jie sakė, kad tai tikrai gerai, bet padarykime tai naudodami „Android“ sistemą. Ir tuo pačiu užrašysime kodą ant lentos. Ir ne tik komponentas, bet ir visa veikla, kuriai naudojamas šis komponentas. Štai kam aš nebuvau pasiruošęs. Vienas dalykas yra parašyti lentoje 30–50 eilučių algoritmą, o kitas dalykas yra „Android“ kodo makaronai, net su santrumpos ir komentarais „na, aš to nerašysiu, nes tai jau akivaizdu“. Rezultatas buvo kažkoks vinaigretas 3 lentoms. Tie. Išsprendžiau problemą, bet atrodė kvaila.

Interviu numeris du

Šį kartą interviu buvo apie algoritmus. Ir buvo du pašnekovai. Vienas yra tikrasis pašnekovas, o antrasis – jaunas padavanas (šešėlinis pašnekovas). Reikėjo sugalvoti duomenų struktūrą su tam tikromis savybėmis. Pirmiausia, kaip įprasta, aptarėme problemą. Uždaviau įvairius klausimus, atsakė pašnekovas. Po kurio laiko jie buvo paprašyti lentoje užrašyti keletą sugalvotos struktūros metodų. Šį kartą daugiau ar mažiau pasisekė, nors ir su keliomis smulkiomis klaidomis, kurias ištaisiau pašnekovo paragintas.

Interviu numeris trys

Šį kartą „System Design“, kuris staiga taip pat pasirodė esąs „Android“. Reikėjo sukurti programą su tam tikromis funkcijomis. Aptarėme reikalavimus programai, serveriui ir ryšio protokolui. Toliau pradėjau apibūdinti, kokius komponentus ar bibliotekas naudosiu kurdamas programą. Ir tada, paminėjus Darbo planuotoją, kilo painiava. Esmė ta, kad aš niekada jo nenaudojau praktiškai, nes jo išleidimo metu buvau ką tik perjungęs į palaikomas programas, kuriose nebuvo jokių užduočių. Tas pats nutiko kuriant vėlesnius. Tai yra, teoriškai aš žinau, kas tai yra, kada ir kaip jis naudojamas, bet neturiu jo naudojimo patirties. O pašnekovui tai nelabai patiko. Tada jie paprašė manęs parašyti kodą. Taip, kuriant programą iš karto reikia parašyti kodą. Vėl „Android“ kodas lentoje. Vėl pasirodė baisu.

Pietūs

Turėjo ateiti kitas žmogus, bet jis neatėjo. Ir Google daro klaidų. Dėl to nuėjau pietauti su ankstesne pašnekove, jos kolege, o kiek vėliau prisijungė ir kitas pašnekovas. Pietūs buvo visai neblogi. Vėlgi, kadangi tai nėra pagrindinis biuras Ciuriche, valgomasis atrodė gana įprastas, nors ir labai gražus.

Interviu numeris ketvirtas

Galiausiai, algoritmai jų gryniausia forma. Pirmąją problemą išsprendžiau gana greitai ir iš karto efektyviai, nors ir praleidau vieną kraštinį atvejį, bet pašnekovo paragintas (jis davė būtent šį kraštinį atvejį) radau problemą ir ją ištaisiau. Žinoma, kodą turėjau užrašyti lentoje. Tada buvo duota panaši užduotis, tik sunkesnė. Tam radau porą neoptimalių sprendimų ir beveik radau optimalų, 5-10 minučių neužteko minties užbaigimui. Na, aš neturėjau laiko parašyti jo kodo.

Interviu numeris penktas

Ir vėl Android interviu. Įdomu, kodėl visus metus mokiausi algoritmų?
Iš pradžių buvo keli paprasti klausimai. Tada pašnekovas lentoje užrašė kodą ir paprašė rasti joje problemų. Surado, paaiškino, sutvarkė. Diskutuota. Ir tada prasidėjo netikėti klausimai: „ką Y metodas veikia X klasėje“, „kas yra Y metodo viduje“, „ką daro Z klasė“. Žinoma, aš kažką atsakiau, bet tada pasakiau, kad pastaruoju metu savo darbe su tuo nesusidūriau ir, žinoma, neprisimenu, kas ką ir kaip daro. Po to pašnekovas paklausė, ką aš dabar veikiu. Ir klausimai buvo šia tema. Čia jau atsakiau daug geriau.

Pasibaigus paskutiniam interviu, jie paėmė mano leidimą, palinkėjo sėkmės ir išsiuntė mane į kelią. Šiek tiek pasivaikščiojau po miestą, pavakarieniavau ir nuėjau į viešbutį, kur nuėjau miegoti, nes skrydis vėl buvo anksti ryte. Kitą dieną saugiai atvykau į Kiprą. Darbuotojo prašymu parašiau atsiliepimą apie pokalbį ir specialioje tarnyboje užpildžiau anketą, kad grąžinčiau išleistus pinigus. Iš visų išlaidų „Google“ tiesiogiai sumoka tik už bilietus. Viešbutis, maistas ir kelionės apmoka kandidatas. Tada užpildome formą, pridedame kvitus ir išsiunčiame į specialų biurą. Jie tai apdoroja ir gana greitai perveda pinigus į sąskaitą.

Pokalbio rezultatams apdoroti prireikė pusantros savaitės. Po to man buvo pranešta, kad esu „šiek tiek žemiau juostos“. Tai yra, man šiek tiek pritrūko. Tiksliau, 2 interviu pavyko gerai, 2 šiek tiek ne taip gerai, o sistemos dizainas nelabai. Dabar, jei bent 3 būtų sekę gerai, mes būtume galėję konkuruoti, kitaip nėra šansų. Jie pasiūlė grįžti po metų.

Iš pradžių, žinoma, buvau nusiminusi, nes pasiruošimui buvo skirta daug jėgų, o pokalbio metu jau galvojau apie išvykimą iš Kipro. Prisijungimas prie „Google“ ir persikėlimas į Šveicariją atrodė puikus pasirinkimas.

išvada

Ir čia mes ateiname į paskutinę straipsnio dalį. Taip, „Google“ interviu man nepavyko du kartus. Liudna. Turbūt būtų įdomu ten dirbti. Bet jūs galite pažvelgti į reikalą iš kitos pusės.

  • Per pusantrų metų išmokau labai daug dalykų, susijusių su programinės įrangos kūrimu.
  • Man buvo labai smagu dalyvauti programavimo konkursuose.
  • Kelioms dienoms išvykau į Ciurichą. Kada vėl ten eisiu?
  • Turėjau įdomios interviu patirties vienoje didžiausių IT kompanijų pasaulyje.

Taigi viską, kas įvyko per šiuos pusantrų metų, galima tiesiog laikyti mokymu arba mokymu. Ir šių mokymų rezultatai pasijuto. Mano idėja išvykti iš Kipro subrendo (dėl kai kurių šeimyninių aplinkybių), sėkmingai praėjau keletą interviu su kita žinoma kompanija ir po 8 mėnesių persikėliau. Bet tai visiškai kita istorija. Tačiau manau, kad vis tiek turėčiau padėkoti Google ir už pusantrų metų, kuriuos dirbau pats, ir už 2 įdomias dienas Ciuriche.

Ką aš galiu pasakyti pagaliau? Jei dirbate IT srityje, pasiruoškite pokalbiams Google (Amazon, Microsoft, Apple ir kt.). Galbūt kada nors ten nuvyksite, kad ten patektumėte. Net jei ir nenorite, patikėkite, toks pasiruošimas jūsų nepablogins. Tą akimirką, kai suprasite, kad galėsite (net jei tik pasisekė) gauti interviu vienoje iš šių įmonių, jums atsivers daug daugiau kelių nei prieš pradėdami ruoštis. Ir viskas, ko jums reikia pakeliui, yra tikslas, užsispyrimas ir laikas. Linkiu sėkmės :)

Šaltinis: www.habr.com

Добавить комментарий