
Titulli i artikullit tingëllon si dështim epik, por në realitet gjithçka nuk është aq e thjeshtë. Dhe në përgjithësi, kjo histori përfundoi shumë pozitivisht, megjithëse jo në Google. Por kjo është një temë për një artikull tjetër. Në të njëjtin artikull, unë do të flas për tre gjëra: si shkoi procesi im i përgatitjes, si u zhvilluan intervistat në Google dhe pse, për mendimin tim, gjithçka nuk është aq e qartë sa mund të duket.
Si ajo filloi të gjithë
Një mbrëmje të ftohtë dimri qipriot, papritur më lindi mendimi se njohuritë e mia për shkencën klasike të kompjuterave ishin shumë larg nga mesatarja dhe duhej bërë diçka për këtë. Nëse, meqë ra fjala, dikush nuk e ka lexuar ende pse mbrëmja është qipriote dhe e ftohtë, atëherë mund të mësoni për të . Pas disa mendimeve, u vendos që të fillonim duke ndjekur një kurs online mbi algoritmet dhe strukturat e të dhënave. Nga një nga ish-kolegët e mi kam dëgjuar për kursin e Robert Sedgewick në Coursera. Kursi përbëhet nga dy pjesë ( и ). Nëse papritmas lidhjet ndryshojnë, gjithmonë mund të kërkoni në Google emrin e autorit. Secila pjesë zgjat 6 javë. Ligjëratat jepen në fillim të javës dhe gjatë javës duhet të bëni ende ushtrime. Pjesa e parë e lëndës mbulon strukturat bazë të të dhënave, llojet bazë të renditjes dhe kompleksitetin e algoritmeve. Pjesa e dytë është tashmë më e avancuar, duke filluar me grafikë dhe duke përfunduar me gjëra të tilla si Programimi Linear dhe Pazgjidhshmëria. Pasi mendova për të gjitha sa më sipër, arrita në përfundimin se kjo është pikërisht ajo që më duhet. Nga rruga, një lexues kureshtar mund të pyesë, çfarë ka të bëjë Google me të? Dhe në të vërtetë, deri në këtë moment ai nuk kishte asnjë lidhje me të. Por më duhej një gol, pasi të studiosh 12 javë në mbrëmje pa gol është disi e vështirë. Cili mund të jetë qëllimi i marrjes së njohurive të reja? Sigurisht, zbatimi i tyre në praktikë. Në jetën e përditshme kjo është mjaft problematike, por gjatë një interviste me një kompani të madhe është e lehtë. Një Google i shpejtë tregoi se Google (falni tautologjinë) është një nga kompanitë më të mëdha në Evropë (dhe unë po shikoja veçanërisht Evropën) që bën intervista të tilla. Përkatësisht, zyra e tyre gjendet në Cyrih të Zvicrës. Pra, është vendosur - le të studiojmë dhe të shkojmë për një intervistë në Google.
Përgatitja për qasjen e parë
12 javët kaluan shpejt dhe unë i përfundova të dyja kurset. Përshtypjet e mia për kurset janë më se pozitive dhe mund t'ia rekomandoj të gjithë të interesuarve. Më pëlqyen kurset për arsyet e mëposhtme:
- Lektori flet anglisht mjaft qartë
- Materiali është i strukturuar mirë
- Prezantime të mrekullueshme që tregojnë brendësinë e secilit algoritëm
- Përzgjedhja kompetente e materialit
- Ushtrime interesante
- Ushtrimet kontrollohen automatikisht në sit, pas së cilës krijohet një raport
Puna ime në kurse zakonisht shkonte kështu. Kam dëgjuar leksione në 1-2 ditë. Më pas ata bënë një test të shpejtë për të testuar njohuritë e tyre për materialin. Pjesën tjetër të javës e bëra ushtrimin në disa përsëritje. Pas të parës mora 30-70%, ato të mëpasshme e sollën rezultatin në 97-100%. Ushtrimi zakonisht përfshinte zbatimin e ndonjë algoritmi, p.sh. ose .
Pas përfundimit të kurseve, kuptova se shumë njohuri vijnë me shumë pikëllim. Nëse më parë thjesht e dija se nuk dija asgjë, tani fillova të kuptoj se isha unë që nuk dija.
Duke qenë se ishte vetëm muaji maj dhe intervistën e caktova për vjeshtë, vendosa të vazhdoj shkollimin. Pas shqyrtimit të kërkesave për vendin e lirë, u vendos që të shkohet në dy drejtime paralelisht: të vazhdojë studimi i algoritmeve dhe të marrë një kurs bazë në mësimin e makinerive. Për qëllimin e parë, vendosa të kaloj nga kurset në një libër dhe zgjodha veprën monumentale të Steven Skiena "Algoritmet. Manuali i Projektimit të Algoritmit. Jo aq monumentale sa ajo e Knutit, por gjithsesi. Për golin e dytë, u ktheva në Coursera dhe u regjistrova në kursin e Andrew Ng. .
Kaluan edhe 3 muaj dhe mbarova kursin dhe rezervimin.
Le të fillojmë me librin. Leximi doli të ishte mjaft interesant, por jo i lehtë. Në parim, unë do ta rekomandoja librin, por jo menjëherë. Në përgjithësi, libri ofron një vështrim më të thellë të asaj që mësova në kurs. Plus, zbulova (nga një këndvështrim formal) gjëra të tilla si heuristika dhe programimi dinamik. Natyrisht, i kisha përdorur më parë, por nuk e dija si quheshin. Libri përmban gjithashtu një sërë tregimesh nga jeta e autorit (Lufta Story), të cilat e zbehin disi natyrën akademike të prezantimit. Nga rruga, gjysma e dytë e librit mund të hiqet, ai përmban më tepër një përshkrim të problemeve ekzistuese dhe metodave për zgjidhjen e tyre. Është e dobishme nëse përdoret rregullisht në praktikë, përndryshe do të harrohet menjëherë.
Unë isha më se i kënaqur me kursin. Autori i di qartë gjërat e tij dhe flet në një mënyrë interesante. Plus një sasi të mjaftueshme të saj, domethënë algjebër lineare dhe bazat e rrjeteve nervore, më kujtuan nga universiteti, kështu që nuk përjetova ndonjë vështirësi të veçantë. Struktura e kursit është mjaft standarde. Kursi është i ndarë në javë. Çdo javë ka leksione të përziera me teste të shkurtra. Pas leksioneve, ju jepet një detyrë që duhet të bëni, dorëzoni dhe do të kontrollohet automatikisht. Shkurtimisht, lista e gjërave të mësuara në këtë kurs është si më poshtë:
- funksioni i kostos
- regresionit linear
- zbritje gradient
- shkallëzimi i veçorive
- ekuacioni normal
- regresioni logjistik
— Klasifikimi me shumë klasa (një kundër të gjithëve)
- rrjetet nervore
- përhapja prapa
- rregullimi
- paragjykim/variancë
— kurbat e të mësuarit
- matjet e gabimit (preciziteti, rikujtimi, F1)
— Makinat e vektorit mbështetës (klasifikimi i marzhit të madh)
- K-do të thotë
—Analiza e komponentëve kryesorë
- zbulimi i anomalive
— filtrim bashkëpunues (sistemi rekomandues)
- zbritje stokastike, mini-batch, batch gradient
— mësimi online
- zvogëlimi i hartës
- analiza e tavanit
Pas përfundimit të kursit, ishte i pranishëm një kuptim i të gjitha këtyre temave. Pas 2 vitesh, pothuajse gjithçka u harrua natyrshëm. Unë ua rekomandoj atë atyre që nuk janë të njohur me mësimin e makinerive dhe duan të kuptojnë mirë gjërat themelore për të vazhduar përpara.
Vrapimi i parë
Tashmë ishte shtatori dhe ishte koha për të menduar për një intervistë. Duke qenë se aplikimi përmes faqes është mjaft katastrofik, fillova të kërkoj miq që punojnë në Google. Zgjedhja ra , meqenëse ishte i vetmi që e njihja drejtpërdrejt (edhe pse jo personalisht). Ai pranoi të përcillte rezymenë time dhe së shpejti mora një letër nga rekrutuesi që më ofronte të rezervoja një vend në kalendarin e tij për bisedën e parë. Ne u përpoqëm të komunikonim përmes Hangouts, por cilësia ishte e tmerrshme, kështu që kaluam në telefon. Së pari, diskutuam shpejt standardin si, pse dhe pse, dhe më pas kaluam në shqyrtimin teknik. Ai përbëhej nga një duzinë pyetjesh në frymën e "cilës është vështirësia e futjes në një hartë hash", "çfarë pemësh të balancuara dini". Nuk është e vështirë nëse keni njohuri bazë për këto gjëra. Shfaqja shkoi mirë dhe në bazë të rezultateve vendosën të organizojnë intervistën e parë brenda një jave.
Intervista u zhvillua edhe përmes Hangouts. Fillimisht ata folën për mua për rreth 5 minuta, pastaj kaluan te problemi. Problemi ishte në grafikët. E kuptova shpejt se çfarë duhej bërë, por zgjodha algoritmin e gabuar. Kur fillova të shkruaj kodin e kuptova këtë dhe kalova në një opsion tjetër, të cilin e plotësova. Intervistuesi bëri disa pyetje në lidhje me kompleksitetin e algoritmit dhe pyeti nëse mund të bëhej më shpejt. U bëra disi e mërzitshme dhe nuk mund ta bëja. Në këtë pikë, koha kishte mbaruar dhe ne i thamë lamtumirë. Më pas, pas rreth 10 minutash, më kuptova se në vend të algoritmit Dijkstra që përdora, në këtë problem të veçantë mund të përdorja kërkimin e parë në gjerësi dhe do të ishte më i shpejtë. Pas ca kohësh, rekrutuesi thirri dhe tha se intervista në përgjithësi shkoi mirë dhe se duhej organizuar një tjetër. Ne ramë dakord për një javë tjetër.
Këtë herë gjërat u përkeqësuan. Nëse herën e parë intervistuesi ishte miqësor dhe i shoqërueshëm, këtë herë ai ishte disi i zymtë. Nuk mund ta kuptoja menjëherë problemin, megjithëse idetë që dola, në parim, mund të çonin në zgjidhjen e tij. Në fund, pas disa nxitjeve nga intervistuesi, zgjidhja më erdhi. Kësaj radhe doli të ishte sërish një kërkim i gjerë, vetëm nga disa pika. I shkrova zgjidhjet, i takova me kohë, por harrova për rastet e skajeve. Pas ca kohësh, rekrutuesi thirri dhe tha se këtë herë intervistuesi ishte i pakënaqur, sepse sipas tij më duheshin shumë sugjerime (3 ose 4 pjesë) dhe vazhdimisht ndryshoja kodin gjatë shkrimit. Në bazë të rezultateve të dy intervistave, u vendos që të mos shkohet më tej, por të shtyhet për një vit intervista e radhës, nëse do të doja. Prandaj i thamë lamtumirë.
Dhe nga kjo histori nxora disa përfundime:
- Teoria është e mirë, por duhet ta lundroni shpejt
- Teoria pa praktikë nuk do të ndihmojë. Ne duhet të zgjidhim problemet dhe ta sjellim kodimin në automatizëm.
- Shumë varet nga intervistuesi. Dhe asgjë nuk mund të bëhet për këtë.
Përgatitja për garën e dytë
Pasi mendova për situatën, vendosa të provoj përsëri pas një viti. Dhe e modifikoi pak qëllimin. Nëse më parë qëllimi kryesor ishte të studionte, dhe një intervistë në Google ishte si një karotë e largët, tani kalimi i një interviste ishte qëllimi, dhe studimi ishte mjeti.
Pra, u zhvillua një plan i ri, i cili përfshinte pikat e mëposhtme:
- Vazhdoni të studioni teorinë duke lexuar libra dhe artikuj.
- Zgjidh problema algoritmike në sasinë 500-1000 copë.
- Vazhdoni të mësoni teorinë duke shikuar video.
- Vazhdoni të studioni teorinë përmes kurseve.
- Studioni përvojat e njerëzve të tjerë me intervistat në Google.
Planin e përfundova brenda një viti. Më pas do të përshkruaj se çfarë kam bërë saktësisht për secilën nga pikat.
Libra dhe artikuj
Nuk e mbaj mend numrin e artikujve që kam lexuar, si në rusisht ashtu edhe në anglisht. Ndoshta faqja më e dobishme . Këtu mund të gjeni një përshkrim të një numri të madh algoritmesh interesante me shembuj kodesh.
Kam lexuar 5 libra: Algoritmet, botimi i 4-të (Sedgewick, Wayne), Hyrje në Algoritmet Botimi i 3-të (Cormen, Leiserson, Rivest, Stein), Cracking the Coding Intervista edicioni i 4-të (Gayle Laakmann), Intervistat e Programimit Ekspozuar 2nd, Suedi i dytë, , Giguere), Elemente të intervistave programuese (Aziz, Lee, Prakash). Ato mund të ndahen në 2 kategori. E para përfshin libra nga Sedgwick dhe Corman. Kjo është një teori. Pjesa tjetër është përgatitja për intervistën. Sedgwick tregon për të njëjtën gjë në libër si në kurset e tij. Vetëm me shkrim. Nuk ka shumë kuptim ta lexosh me kujdes nëse e ke ndjekur kursin, por gjithsesi ia vlen ta kalosh. Nëse nuk e keni parë kursin, ka kuptim ta lexoni atë. Cormen më dukej shumë i mërzitshëm. Të them të drejtën, e kisha të vështirë ta zotëroja. Sapo e nxora nga aty , dhe disa struktura të dhënash të përdorura rrallë (grumbull Fibonacci, pemë van Emde Boas, grumbull radix).
Ia vlen të lexoni të paktën një libër për t'u përgatitur për një intervistë. Të gjithë janë ndërtuar mbi të njëjtin parim. Ata përshkruajnë procesin e intervistave në kompanitë e mëdha të teknologjisë, japin gjëra themelore nga Shkenca Kompjuterike, probleme për këto gjëra themelore, zgjidhje për problemet dhe analiza të zgjidhjeve. Nga tre të mësipërmet, unë ndoshta do të rekomandoja "Cracking the Coding Interview" si kryesore, dhe pjesa tjetër janë opsionale.
Probleme algoritmike
Kjo ishte ndoshta pika më interesante e përgatitjes. Ju, sigurisht, mund të uleni dhe t'i zgjidhni problemet me marrëzi. Ka shumë site të ndryshme për këtë. Kam përdorur kryesisht tre: , и . Në CodeChef, problemet ndahen sipas vështirësisë, por jo sipas temës. Në Hackerrank si nga kompleksiteti ashtu edhe nga tema.
Por siç e kuptova menjëherë vetë, ka një mënyrë më interesante. Dhe këto janë konkurse (sfida programimi ose konkurse programimi). Të tre faqet i ofrojnë ato. Vërtetë, ka një problem me LeetCode - një zonë kohore e papërshtatshme. Kjo është arsyeja pse unë nuk kam marrë pjesë në këtë faqe. Hackerrank dhe CodeChef ofrojnë një numër mjaft të madh konkursesh të ndryshme, që zgjasin nga 1 orë në 10 ditë. Formate të ndryshme kanë rregulla të ndryshme, por ne mund të flasim për këtë për një kohë të gjatë. Pika kryesore pse konkurset janë të mira është futja e një elementi konkurrues (dhe përsëri tautologji) në procesin e të mësuarit.
Në total, kam marrë pjesë në 37 konkurse në Hackerrank. Nga këto, 32 ishin vlerësime, dhe 5 ishin ose të sponsorizuara (madje mora 25 dollarë në njërën prej tyre) ose për argëtim. Në renditje kam qenë në top 10% 4 herë, në top 11% 12 herë dhe në top 5% 25 herë. Rezultatet më të mira ishin 27/1459 në 3 orë dhe 22/9721 në javë.
Unë kalova në CodeChef kur Hackerrank filloi të presë garat më rrallë. Në total kam arritur të marr pjesë në 5 gara. Rezultati më i mirë ishte 426/5019 në garën dhjetëditore.
Në total, në konkurse dhe ashtu, kam zgjidhur pak më shumë se 1000 probleme, të cilat përshtaten në plan. Tani, për fat të keq, nuk ka kohë të lirë për të vazhduar aktivitetet konkurruese, ashtu siç nuk ka asnjë qëllim për të cilin mund të fshihet koha jo e lirë. Por ishte argëtuese. Unë rekomandoj që ata që janë të interesuar për këtë të gjejnë njerëz me mendje të njëjtë. Së bashku ose në grup është shumë më interesante. U argëtova me këtë me një mik, kështu që ndoshta shkoi mirë.
Shikoni videon
Pasi lexova librin e Skienës, u interesova për atë që po bënte. Ashtu si Sedgwick, ai është një profesor universiteti. Në këtë drejtim, videot e kurseve të tij mund të gjenden në internet. Vendosa të rishikoj kursin . Nuk mund të them se më ka pëlqyer shumë. Para së gjithash, cilësia e videos nuk është shumë e mirë. Së dyti, nuk u përpoqa t'i zgjidhja vetë problemet e diskutuara në kurs. Pra, fejesa nuk ishte shumë e lartë.
Gjithashtu, gjatë zgjidhjes së problemeve, duke u përpjekur për të gjetur algoritmin e duhur, hasa në videon e Tushar Roy. Ai ka punuar në Amazon dhe tani punon në Apple. Siç e kuptova më vonë vetë, ai e ka , ku poston një analizë të algoritmeve të ndryshme. Në kohën e shkrimit, kanali përmban 103 video. Dhe duhet të them se analiza e tij është bërë shumë mirë. U përpoqa të shikoja autorë të tjerë, por disi nuk funksionoi. Kështu që unë mund ta rekomandoj patjetër këtë kanal për shikim.
Marrja e kurseve
Nuk kam bërë asgjë të veçantë këtu. Pashë një video nga Nanodegree zhvilluesi i Android i Google dhe mora një kurs nga ITMO . Nanodegree është mjaft i mirë, megjithëse natyrisht nuk mësova asgjë të re prej tij. Kursi nga ITMO është pak i anuar në aspektin teorik, por problemet ishin interesante. Unë nuk do të rekomandoja fillimin me të, por në parim ishte koha e shpenzuar mirë.
Mësoni nga përvojat e njerëzve të tjerë
Sigurisht, shumë njerëz u përpoqën të futeshin në Google. Disa e kuptuan, disa jo. Disa kanë shkruar artikuj për këtë. Nga gjërat interesante që ndoshta do të përmend и . Në rastin e parë, personi përgatiti për vete një listë të asaj që duhet të mësojë në mënyrë që të bëhet Inxhinier Softuerësh dhe të futet në Google. Më në fund përfundoi në Amazon, por kjo nuk është më aq e rëndësishme. Manuali i dytë u shkrua nga inxhinierja e Google, Larisa Agarkova (). Përveç këtij dokumenti, ju gjithashtu mund të lexoni .
Ka kuptim të lexoni komente të intervistave në Glassdoor. Ata janë të gjithë pak a shumë të ngjashëm, por ju mund të merrni disa informacione të dobishme.
Unë nuk do të jap lidhje me artikuj të tjerë të vegjël që mund t'i gjeni lehtësisht në Google.
Vrapimi i dytë
Dhe tani ka kaluar një vit. Ka rezultuar shumë intensive për sa i përket studimeve. Por vjeshtës së re iu afrova me njohuri shumë më të thella teorike dhe me aftësi praktike të zhvilluara. Kishin mbetur edhe pak javë para fundit të vitit të caktuar për përgatitjen time, kur papritmas një letër nga një rekrutues nga Google ra në postë, në të cilën ai më pyeti nëse kisha ende dëshirë të punoja në Google dhe do të Më intereson të flas me të. Natyrisht, nuk e kisha problem. Ne ramë dakord të telefononim brenda një jave. Më kërkuan edhe një rezyme të përditësuar, së cilës i shtova një përshkrim të shkurtër të asaj që kisha bërë gjatë vitit në punë dhe në përgjithësi.
Pasi komunikuam për jetë, vendosëm që brenda një jave të kishte një intervistë Hangout, ashtu si vitin e kaluar. Kaloi një javë, ishte koha e intervistës, por intervistuesi nuk u shfaq. Kaluan 10 minuta, tashmë kisha filluar të nervozohesha, kur papritur dikush shpërtheu në muhabet. Siç doli pak më vonë, intervistuesi im për disa arsye nuk mund të paraqitej dhe u gjet urgjentisht një zëvendësues për të. Personi ishte disi i papërgatitur si për vendosjen e kompjuterit ashtu edhe për realizimin e intervistës. Por më pas gjithçka shkoi mirë. E zgjidha problemin shpejt, përshkrova se ku ishin të mundshme kurthet dhe si mund të anashkaloheshin ato. Ne diskutuam disa versione të ndryshme të problemit dhe kompleksitetin e algoritmit. Pastaj folëm edhe 5 minuta të tjera, inxhinieri na tregoi përshtypjet e tij nga puna në Mynih (me sa duket nuk gjetën një zëvendësim urgjent në Cyrih), dhe më pas u ndamë.
Në të njëjtën ditë, rekrutuesi më kontaktoi dhe tha se intervista shkoi mirë dhe ata ishin gati të më ftonin në një intervistë në zyrë. Të nesërmen telefonuam përmes Hangouts dhe diskutuam detajet. Meqenëse më duhej të aplikoja për vizë, vendosëm të caktonim një intervistë brenda një muaji.
Ndërsa po përgatisja dokumentet, diskutova njëkohësisht intervistën e ardhshme me rekrutuesin. Një intervistë standarde në Google përbëhet nga 4 intervista algoritmike dhe një intervistë e Dizajnit të Sistemit. Por, duke qenë se po aplikoja për një punë si zhvillues Android, më thanë që një pjesë e intervistës do të ishte specifike për Android. Nuk mund ta shkundja atë nga rekrutuesi saktësisht se cilat dhe cilat do të ishin specifikat. Me sa kuptoj unë, kjo është futur relativisht kohët e fundit dhe ai vetë nuk ishte shumë i vetëdijshëm. Unë gjithashtu u regjistrua për dy sesione trajnimi: si të kaloj një intervistë algoritmike dhe si të kaloj një intervistë të Dizajnit të Sistemit. Seancat ishin me dobi mesatare. Edhe atje, askush nuk mund të më thoshte se çfarë pyesin zhvilluesit e Android. Prandaj, përgatitja ime për këtë muaj u përmbajt në sa vijon:
- Blerja e një tabele shënuesi dhe shkrimi i 2-3 dhjetëra algoritmeve më të njohura në të nga kujtesa. 3-5 copë çdo ditë. Në total, secila është shkruar disa herë.
- Rifresko kujtesën për informacione të ndryshme në Android që nuk i përdorni çdo ditë
- Shikimi i disa videove rreth Big Scale dhe gjëra të tilla
Siç thashë tashmë, në të njëjtën kohë isha duke përgatitur dokumente për udhëtimin. Si fillim, më kërkuan informacion për të bërë një letër ftese. Pastaj u përpoqa për një kohë të gjatë të zbuloja se kush në Qipro jep viza për në Zvicër, pasi ambasada zvicerane nuk merret me këtë. Siç doli, konsullata austriake po e bën këtë. Telefonova dhe caktova nje takim. Ata kërkuan një mori dokumentesh, por asgjë veçanërisht interesante. Foto, pasaportë, leje qëndrimi, një sërë certifikatash të ndryshme dhe, sigurisht, një letër ftese. Ndërkohë letra nuk ka mbërritur. Në fund shkova me një printim të rregullt dhe funksionoi mjaft mirë. Vetë letra mbërriti 3 ditë më vonë, dhe FedEx i Qipros nuk mundi të gjente adresën time dhe unë duhej të shkoja ta merrja vetë. Në të njëjtën kohë, mora një parcelë nga i njëjti FedEx, të cilin ata gjithashtu nuk mundën ta dorëzonin tek unë, pasi nuk e gjetën adresën, dhe e cila ishte shtrirë atje që nga qershori (5 muaj, Karl). Meqenëse nuk dija për të, natyrisht, nuk supozova se ata e kishin atë. E mora vizën në kohë, pas së cilës më rezervuan një hotel dhe më ofruan opsione fluturimi. Unë i kam rregulluar opsionet për ta bërë atë më të përshtatshëm. Nuk kishte më fluturime direkte, kështu që përfundova duke fluturuar atje përmes Athinës dhe kthimit përmes Vjenës.
Pasi u rregulluan të gjitha formalitetet me udhëtimin, kaluan edhe disa ditë dhe unë në fakt fluturova për në Cyrih. Arriti atje pa incidente. Nga aeroporti në qytet mora trenin - shpejt dhe me lehtësi. Pasi bredha pak nëpër qytet, gjeta një hotel dhe u vendosa. Meqenëse hoteli ishte rezervuar pa ushqim, unë darkova pranë dhe shkova në shtrat, sepse fluturimi ishte në mëngjes dhe unë tashmë doja të flija. Të nesërmen hëngra mëngjes në hotel (për para shtesë) dhe shkova në zyrën e Google. Google ka disa zyra në Cyrih. Intervista ime nuk ishte në atë qendrore. Dhe në përgjithësi, zyra dukej mjaft e zakonshme, kështu që nuk pata mundësinë të shikoja të gjitha të mirat e një zyre "normale" të Google. U regjistrova te administratori dhe u ula të pres. Pas ca kohësh doli rekrutuesi dhe më tregoi planin e ditës dhe më pas më çoi në dhomën ku do të zhvilloheshin intervistat. Në fakt, plani përfshinte 3 intervista, drekë dhe 2 intervista të tjera.
Intervista numër një
Intervista e parë ishte vetëm në Android. Dhe nuk kishte të bënte fare me algoritmet. Surprizë, megjithatë. Epo, në rregull, është edhe më e zakonshme në këtë mënyrë. Na kërkuan të bënim një komponent të caktuar të ndërfaqes së përdoruesit. Fillimisht diskutuam se çfarë dhe si. Ai ofroi të bënte një zgjidhje duke përdorur RxJava, përshkroi se çfarë saktësisht do të bënte dhe pse. Ata thanë se kjo është sigurisht e mirë, por le ta bëjmë atë duke përdorur kornizën Android. Dhe në të njëjtën kohë ne do të shkruajmë kodin në tabelë. Dhe jo vetëm një komponent, por i gjithë Aktiviteti që përdor këtë komponent. Kjo është ajo për të cilën nuk isha gati. Është një gjë të shkruash një algoritëm 30-50 rreshtash në tabelë dhe tjetër gjë të shkruash petë të kodit Android, qoftë edhe me shkurtesa dhe komente në frymën e "epo, nuk do ta shkruaj këtë, pasi tashmë është e qartë". Rezultati ishte një lloj vinegrette për 3 dërrasa. Ato. E zgjidha problemin, por më dukej budalla.
Intervista numër dy
Këtë herë intervista kishte të bënte me algoritmet. Dhe ishin dy intervistues. Njëri është intervistuesi aktual dhe i dyti është një padawan i ri (intervistues në hije). Ishte e nevojshme të dilte me një strukturë të dhënash me veti të caktuara. Së pari, ne diskutuam problemin si zakonisht. Unë bëra pyetje të ndryshme, u përgjigj intervistuesi. Pas ca kohësh, atyre iu kërkua të shkruanin në tabelë disa metoda të strukturës së shpikur. Këtë herë pata pak a shumë sukses, ndonëse me disa gabime të vogla, të cilat i korrigjova me nxitjen e intervistuesit.
Intervista numër tre
Këtë herë System Design, i cili papritmas doli gjithashtu të ishte Android. Ishte e nevojshme të zhvillohej një aplikacion me funksionalitet të caktuar. Ne diskutuam kërkesat për aplikacionin, serverin dhe protokollin e komunikimit. Më pas, fillova të përshkruaj se çfarë komponentësh ose bibliotekash do të përdorja gjatë ndërtimit të aplikacionit. Dhe më pas, kur përmendej Job Scheduler, pati një konfuzion. Çështja është se nuk e kam përdorur kurrë në praktikë, pasi në kohën e lëshimit sapo kisha kaluar në aplikacione mbështetëse ku nuk kishte detyra për përdorimin e tij. E njëjta gjë ndodhi kur zhvilloheshin ato të mëvonshme. Dmth teorikisht e di cfare eshte kjo gje, kur dhe si perdoret, por nuk kam eksperience ne perdorimin e saj. Dhe intervistuesit dukej se nuk i pëlqente shumë. Pastaj më kërkuan të shkruaj një kod. Po, kur zhvilloni një aplikacion, menjëherë duhet të shkruani kod. Përsëri kodi Android në tabelë. Doli përsëri e frikshme.
Drekë
Një person tjetër duhej të vinte, por ai nuk erdhi. Dhe Google bën gabime. Si rezultat, shkova në drekë me intervistuesin e mëparshëm, kolegun e saj dhe pak më vonë u bashkua intervistuesi tjetër. Dreka ishte mjaft e mirë. Përsëri, duke qenë se kjo nuk është zyra kryesore në Cyrih, dhoma e ngrënies dukej krejt e zakonshme, edhe pse shumë e bukur.
Intervista numër katër
Së fundi, algoritmet në formën e tyre më të pastër. E zgjidha problemin e parë mjaft shpejt dhe menjëherë në mënyrë efektive, megjithëse humba një rast, por me kërkesën e intervistuesit (ai dha këtë rast shumë të fundit) e gjeta problemin dhe e korrigjova. Sigurisht, më duhej të shkruaja kodin në tabelë. Pastaj u dha një detyrë e ngjashme, por më e vështirë. Për të, gjeta disa zgjidhje jo optimale dhe pothuajse gjeta atë optimale, 5-10 minuta nuk mjaftuan për të përfunduar mendimin. Epo, nuk pata kohë të shkruaj kodin për të.
Intervista numër pesë
Dhe përsëri intervistë Android. Pyes veten pse kam studiuar algoritme gjatë gjithë vitit?
Në fillim kishte disa pyetje të thjeshta. Më pas intervistuesi shkroi kodin në tabelë dhe kërkoi të gjente probleme në të. E gjeta, e shpjegoi, e rregulloi. Diskutuar. Dhe pastaj filluan disa pyetje të papritura në frymën e "çfarë bën metoda Y në klasën X", "çfarë është brenda metodës Y", "çfarë bën klasa Z". Sigurisht, unë u përgjigja diçka, por më pas thashë se nuk e kam hasur këtë në punën time kohët e fundit dhe natyrisht nuk mbaj mend se kush çfarë dhe si po bën në detaje. Pas kësaj, intervistuesi më pyeti se çfarë po bëja tani. Dhe pyetjet shkuan në këtë temë. Unë tashmë jam përgjigjur shumë më mirë këtu.
Pas përfundimit të intervistës së fundit, më morën lejen, më uruan fat dhe më nisën. Shëtita pak nëpër qytet, darkova dhe shkova në hotel, ku shkova në shtrat, pasi fluturimi ishte përsëri herët në mëngjes. Të nesërmen arrita shëndoshë e mirë në Qipro. Me kërkesë të rekrutuesit, shkrova komente për intervistën dhe plotësova një formular në një shërbim special për të kthyer paratë e shpenzuara. Nga të gjitha shpenzimet, Google paguan drejtpërdrejt vetëm për biletat. Hoteli, ushqimi dhe udhëtimi paguhen nga kandidati. Më pas plotësojmë formularin, bashkëngjitni faturat dhe e dërgojmë në një zyrë të veçantë. Ata e përpunojnë këtë dhe transferojnë para në llogari mjaft shpejt.
U deshën një javë e gjysmë për të përpunuar rezultatet e intervistës. Pas së cilës u informova se isha "pak poshtë shiritit". Dmth rashë pak. Më konkretisht, 2 intervista shkuan mirë, 2 pak jo dhe aq mirë dhe System Design jo shumë mirë. Tani, nëse të paktën 3 do të kishin shkuar mirë, atëherë do të kishim mundur të konkurronim, përndryshe nuk ka asnjë shans. Ata ofruan të ktheheshin pas një viti tjetër.
Në fillim, natyrisht, u mërzita, sepse ishte bërë shumë përpjekje për përgatitjen, dhe në kohën e intervistës tashmë po mendoja të largohesha nga Qipro. Anëtarësimi në Google dhe transferimi në Zvicër dukej si një opsion i shkëlqyeshëm.
Përfundim
Dhe këtu kemi ardhur në pjesën e fundit të artikullit. Po, dështova dy herë në intervistën e Google. Është e trishtueshme. Ndoshta do të ishte interesante të punoje atje. Por, ju mund ta shikoni këtë çështje nga ana tjetër.
- Në një vit e gjysmë, mësova një sasi të madhe gjërash në lidhje me zhvillimin e softuerit.
- U kënaqa shumë duke marrë pjesë në konkurse programimi.
- Unë shkova në Cyrih për disa ditë. Kur do të shkoj përsëri atje?
- Kam pasur një përvojë interesante interviste në një nga kompanitë më të mëdha të IT në botë.
Kështu, gjithçka që ndodhi gjatë këtyre një viti e gjysmë thjesht mund të konsiderohet trajnim, ose trajnim. Dhe rezultatet e këtij trajnimi u ndjenë. Ideja ime për t'u larguar nga Qiproja u pjekur (për shkak të disa rrethanave familjare), kalova me sukses disa intervista me një kompani tjetër të njohur dhe u zhvendosa pas 8 muajsh. Por kjo është një histori krejtësisht tjetër. Megjithatë, mendoj se duhet të falënderoj Google si për një vit e gjysmë që punova për veten time, ashtu edhe për 2 ditë interesante në Cyrih.
Çfarë mund të them më në fund? Nëse punoni në IT, përgatituni për intervista në Google (Amazon, Microsoft, Apple, etj.). Ndoshta një ditë do të shkoni atje për të arritur atje. Edhe nëse nuk dëshironi, më besoni, një përgatitje e tillë nuk do t'ju bëjë më keq. Në momentin që kuptoni se mund (edhe vetëm me fat) të merrni një intervistë me një nga këto kompani, shumë më tepër rrugë do të hapen për ju sesa përpara se të fillonit përgatitjen tuaj. Dhe gjithçka që ju nevojitet gjatë rrugës është qëllimi, këmbëngulja dhe koha. te uroj suksese :)
Burimi: www.habr.com
