
Titulli i artikullit tingëllon si një dështim epik, por në të vërtetë gjithçka nuk është aq e qartë. Në fakt, ky tregim përfundoi mjaft pozitivisht, ndonëse jo për Google. Por kjo është një temë për një artikull tjetër. Në këtë artikull do të flas për tri gjëra: si kaloi procesi im i përgatitjes, si u zhvilluan intervistat në Google dhe pse mendimi im është se gjithçka nuk është aq e qartë sa mund të duket.
Si filloi gjithçka
NjĂ« mbrĂ«mje tĂ« ftohtĂ« dimri nĂ« Qipros, mĂ« ra nĂ« mendje mendimi se njohuritĂ« e mia nĂ« shkencĂ«n kompjuterike ishin shumĂ« larg even nga mesatarja, dhe duhej tĂ« bĂ«ja diçka rreth kĂ«saj. NĂ«se ndonjĂ«herĂ« dikush nuk e ka lexuar se pse mbrĂ«mja Ă«shtĂ« qipriote dhe e ftohtĂ«, mund tĂ« mĂ«sojĂ« pĂ«r kĂ«tĂ«. . Pas disa reflektimeve, u vendos qĂ« nĂ« fillim tĂ« ndjek njĂ« kurs online pĂ«r algoritmet dhe strukturat e tĂ« dhĂ«nave. Nga njĂ« ish-kolegu dĂ«gjoja pĂ«r kursin e Robert Sedgewick nĂ« Coursera. Kursi ka dy pjesĂ« ( dhe ). NĂ«se ndonjĂ«herĂ« lidhjet ndryshojnĂ«, mund tĂ« kĂ«rkoni gjithmonĂ« sipas emrit tĂ« autorit. Ădo pjesĂ« zgjat 6 javĂ«. NĂ« fillim tĂ« javĂ«s publikohen ligjĂ«ratat, dhe gjatĂ« javĂ«s duhet tĂ« bĂ«ni edhe ushtrime. Pjesa e parĂ« e kursit mbulon strukturat bazĂ« tĂ« tĂ« dhĂ«nave, llojet kryesore tĂ« renditjeve dhe kompleksitetin e algoritmeve. Pjesa e dytĂ« Ă«shtĂ« mĂ« e avancuar, fillon me grafĂ«t dhe pĂ«rfundon me gjĂ«ra si Programimi Lineare dhe Intractability. Pas tĂ« gjithĂ« kĂ«tij shqyrtimi, arrita nĂ« pĂ«rfundimin se kjo Ă«shtĂ« ajo qĂ« mĂ« nevojitej. KĂ«tu lexuesi kurioz mund tĂ« pyesĂ«, çfarĂ« lidhje ka kjo me Google. Dhe nĂ« tĂ« vĂ«rtetĂ«, deri nĂ« kĂ«tĂ« pikĂ« nuk kishte lidhje. Por mĂ« duhej njĂ« qĂ«llim, pasi tĂ« studionit pĂ«r 12 javĂ« nĂ« mbrĂ«mje pa njĂ« qĂ«llim Ă«shtĂ« mjaft e vĂ«shtirĂ«. Dhe cili mund tĂ« jetĂ« qĂ«llimi i fitimit tĂ« njohurive tĂ« reja? Sigurisht, aplikimi i tyre nĂ« praktikĂ«. NĂ« jetĂ«n e pĂ«rditshme Ă«shtĂ« mjaft problematike, por nĂ« njĂ« intervistĂ« nĂ« njĂ« kompani tĂ« madhe Ă«shtĂ« e lehtĂ«. NjĂ« shfletim i shpejtĂ« nĂ« Google tregoi se Google Ă«shtĂ« njĂ« nga kompanitĂ« mĂ« tĂ« mĂ«dha nĂ« EuropĂ« (me falni pĂ«r tautologjinĂ«), ku zhvillohen kĂ«to intervista. Konkretisht, zyra e tyre ndodhet nĂ« ZvicĂ«r, nĂ« Cyrih. Pra, vendosĂ«m â mĂ«sojmĂ« dhe shkojmĂ« pĂ«r njĂ« intervistĂ« nĂ« Google.
Përgatitja për tentativën e parë
12 javë kaluan pa u vënë re, dhe përfundova të dy kurset. Mendimet e mia për kurset janë më shumë se pozitive, dhe mund t'i rekomandoj të gjithë atyre që janë të interesuar. Më pëlqen kjo kurs për arsyet në vijim:
- Ligjëruesi flet në një anglisht mjaft të qartë
- Materiali është mirë i strukturuar
- Prezantime të shkëlqyera, që tregojnë thelbin e çdo algoritmi
- Një përzgjedhje e mirë e materialeve
- Ushtërat interesante
- Ushtërat kontrollohen automatikisht në faqen e internetit, pas së cilës krijohet një raport
Puna ime mbi kurset zakonisht kalonte si në vijim. Në 1-2 ditë, dëgjoja ligjëratat. Pastaj kaloja një test të shpejtë për njohuritë e materialit. Pjesa tjetër e javës e kaloja duke bërë ushtrimet në disa iteracione. Pas të parës merrja 30-70%, ndërsa të tjerat e çonin rezultatin në 97-100%. Ushtrimi zakonisht konsistonte në realizimin e ndonjë algoritmi, për shembull ose .
Pas përfundimit të kurseve, e kuptova se shumë njohuri janë shumë brenga. Nëse më parë e dija thjesht se nuk dija asgjë, tani fillova të kuptoj se çfarë saktësisht nuk dija.
Duke qenë se ishte ende maj, dhe intervista e punës e kisha planifikuar për në vjeshtë, vendosa të vazhdoj edukimin tim. Pas shqyrtimit të kërkesave për pozita, u mor vendimi të vazhdoj paralelisht në dy drejtima: të vazhdoj studimin e algoritmeve dhe të kaloj një kurs bazik mbi 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" (The Algorithm Design Manual). Nuk është aq monumentale sa e Knuth-it, por megjithatë. Për qëllimin e dytë shkova përsëri në Coursera dhe u regjistrova në kursin e Andrew Ng .
Kaluan edhe 3 muaj, dhe përfundova kursin dhe librin.
Të fillojmë me librin. Leximi u duk mjaft interesant, megjithatë i vështirë. Në parim, do ta rekomandoja librin, por jo ashtu papritmas. Në përgjithësi, libri ofron një analizë më të thellë të asaj që mësova në kurse. Përveç kësaj, zbulova për vete (nga një këndvështrim formal) gjëra si heuristika dhe programim dinamik. Natyrisht, më parë i kisha përdorur ato, por nuk e dija si quheshin. Gjithashtu, libri përmban disa tregime nga jeta e autorit (War Story), të cilat disi e balancojnë akademikën e përmbajtjes. Gjysma e dytë e librit mund të injorohet, aty përshkruhen më shumë problemet ekzistuese dhe metodat e zgjidhjes së tyre. E dobishme është nëse aplikohet rregullisht në praktikë, përndryshe do të harrohet menjëherë.
Kurset mĂ« gĂ«zuan tej pĂ«rtej. Autori duket se di çfarĂ« bĂ«n dhe tregon nĂ« mĂ«nyrĂ« interesante. PĂ«r mĂ« tepĂ«r, njĂ« pjesĂ« tĂ« konsiderueshme, konkretisht algebra lineare dhe bazat e rrjeteve nervore, i mbaja mend nga universiteti, prandaj nuk kam hasur ndonjĂ« vĂ«shtirĂ«si tĂ« veçantĂ«. Struktura e kursit Ă«shtĂ« mjaft standarde. Kursi Ă«shtĂ« i ndarĂ« nĂ« muaj. Ădo javĂ« fillimisht vijne ligjĂ«rata tĂ« shoqĂ«ruara me teste tĂ« shkurtra. Pas ligjĂ«ratave jepet njĂ« detyrĂ« e cila duhet bĂ«rĂ«, dĂ«rguar dhe do tĂ« kontrollohet automatikisht. NĂ« pĂ«rmbledhje, lista e mĂ«simeve qĂ« jepen nĂ« kurs Ă«shtĂ« si mĂ« poshtĂ«:
â funksioni i kostos
â regresioni linear
â zbritja gradiente
â shkallĂ«zimi i karakteristikave
â ekuacioni normal
â regresioni logjistik
â klasifikimi shumĂ«klasor (njĂ« kundĂ«r tĂ« gjitha)
â rrjetet nervore
â pastrimi prapa
â rregullim
â ndjenja/bias
â kurbat e tĂ« mĂ«suarit
â metrikat e gabimeve (saktĂ«sia, rikujtimi, F1)
â MakineritĂ« e Supportit (klasifikimi me margjin tĂ« madh)
â K-means
â Analiza e KomponentĂ«ve KryesorĂ«
â zbulimi i anomalive
â filtrimi kolaborativ (sistemi i rekomandimeve)
â zbritjet gradiente stohastike, mini-grup, grup
â mĂ«simi online
â map reduce
â analiza e tavaneve
Pas përfundimit të kursit, e kuptova të gjitha këto tema. Pasi kaluan 2 vjet, pothuajse gjithçka ishte natyrshëm harruar. E rekomandoj për ata që nuk janë të njohur me mësimin makina dhe duan të fitojnë një kuptim të mirë të gjërave bazë për të avansuar më tej.
Konstrukt i parë
Ishin duke kaluar muajt e shtatorit dhe kishte ardhur koha të mendoja për intervistat. Pasiguria e aplikimeve përmes faqes, ishte një aventurë e komplikuar, kështu që fillova të kërkoj miq që punonin në Google. Zgjedhja ra mbi , pasi ai ishte i vetmi që kisha njohur drejtpërdrejt (pavarësisht se jo personalisht). Ai pranoi të transmetonte CV-në time dhe së shpejti mora një letër nga rekrutuesi, duke ofruar një slot në kalendarin e tij për bisedën e parë. Pas disa ditësh ndodhi biseda. Provuam të flisnim përmes Hangouts, por cilësia ishte e tmerrshme, prandaj kaluam në telefon. Fillimisht diskutuan shpejt për standartet si, përse dhe pse, pastaj kaluam në filtrin teknik. Ai përbëhej nga dhjetë pyetje të tilla si
Intervista gjithashtu ishte pĂ«rmes Hangouts. Fillimisht biseduam pĂ«r rreth 5 minuta pĂ«r mua, pastaj kaluam nĂ« problemin. Problemi ishte mbi grafet. E kuptova shpejt se çfarĂ« duhej tĂ« bĂ«ja, por zgjodha algoritmin e gabuar. Kur fillova tĂ« shkruaja kodin e kuptova kĂ«tĂ« dhe kalova nĂ« njĂ« variant tjetĂ«r, qĂ« e pĂ«rfundova. Intervistuesi bĂ«ri disa pyetje nĂ« lidhje me kompleksitetin e algoritmit, pyeti, nĂ«se ndonjĂ«herĂ« mund tĂ« ishim mĂ« tĂ« shpejtĂ«. Diku humba dhe nuk mund tĂ« pĂ«rgjigja. NĂ« kĂ«tĂ« moment, koha mbaroi dhe u nda. MĂ« pas, rreth 10 minuta mĂ« vonĂ«, arrita tĂ« kuptoj se nĂ« vend tĂ« algoritmit tĂ« Dijkstra-s, qĂ« pĂ«rdora, nĂ« kĂ«tĂ« problem konkret do tĂ« ishte mĂ« e shpejtĂ« tĂ« pĂ«rdorja kĂ«rkimin nĂ« gjćźœshtĂ«. Pas njĂ« kohe, mĂ« telefonoi rekrutuesi dhe tha se intervisa nĂ« pĂ«rgjithĂ«si kishte shkuar mirĂ« dhe do tĂ« nevojitej tĂ« organizohej njĂ« tjetĂ«r. RĂ«nĂ« dakord pĂ«r njĂ« tjetĂ«r pas njĂ« jave.
Këtë herë gjërat shkuan më keq. Nëse herën e parë intervistuesi ishte miqësor dhe komunikativ, kësaj rradhe ishte disi i zymtë. Detyrën nuk ia kuptova menjëherë, megjithëse idetë që japja në parim mund të çonin në zgjidhjen e saj. Në fund, pas disa sugjerimeve nga intervistuesi, arrita në zgjidhjen. Këtë herë ishte sërish një kërkim në gjerësi, vetëm se nga disa pika. Shkrova zgjidhjen, u përmbaja kohës, por harrova për rastet kufitare. Pas një kohe më telefonoi rekrutuesi dhe më njoftoi se këtë herë intervistuesi kishte mbetur i pakënaqur, pasi sipas tij më nevojiteshin shumë sugjerime (3 ose 4) dhe unë vazhdoja ta ndryshoja kodin gjatë shkruarjes. Pas dy intervistave u mor vendimi që të mos vazhdoja më tej, por të shtyja intervistën e ardhshme për një vit, nëse do ta kisha dëshirën. Kështu u ndamë.
Nga kjo histori kam bërë disa përfundime:
- Teoria është e mirë, por duhet të orientohemi shpejt në të.
- Teoria pa praktikë nuk ndihmon. Duhet të zgjidhësh detyra dhe të arrish ta shkruash kodin deri në automatizëm.
- Shumë varet nga intervistuesi. Dhe për këtë nuk mund të bësh asgjë.
Përgatitja për një përpjekje të dytë
Pasi e mendova situatën, mora vendimin të provoj përsëri pas një viti. Disaçka e redaktova qëllimin. Nëse më përpara qëllimi kryesor ishte studimi, ndërsa intervista në Google si një karotë e largët, tani kalimi i intervistës ishte qëllimi, ndërsa studimi ishte mjeti.
Pra, u zhvillua një plan i ri, në të cilin përfshiheshin këto pika:
- Të vazhdoj të studioj teorinë përmes leximit të librave dhe artikujve.
- Të zgjidhja detyra algoritmike në numër prej 500-1000 copë.
- Të vazhdoj të studioj teorinë përmes shikimit të videove.
- Të vazhdoj të studioj teorinë përmes kurseve.
- Të studjoj përvojën e të tjerëve për kalimin e intervistave në Google.
Plani u realizua nga unë brenda një viti. Më tej do të përshkruaj se çfarë bëja për secilën prej pikave.
Libra dhe artikuj
Numri i artikujve që kam lexuar as që e mbaj mend, i kam lexuar si në rusisht ashtu edhe në anglisht. Site më të dobishëm rezultoi ndoshta . Këtu është mbledhur përshkrimi i një numri të madh algoritmesh interesante me shembuj kodi.
Kam lexha 5 libra: Algorithms, 4th edition (Sedgewick, Wayne), Introduction to Algorithms 3rd Edition (Cormen, Leiserson, Rivest, Stein), Cracking the Coding Interview 4th edition (Gayle Laakmann), Programming Interviews Exposed 2nd edition (Mongan, Suojanen, Giguere), Elements of Programming Interviews (Aziz, Lee, Prakash). Atohet mund të ndahen në 2 kategori. Në të parën bien librat e Sedgewick dhe Cormen. Kjo është teori. Të tjerat janë përgatitje për intervista. Sedgewick në libër përshkruan përafërsisht atë që tregon në kurset e tij. Thjesht në formë të shkruar. Nuk ka shumë kuptim të lexosh me kujdes, nëse ke ndjekur kursin, por duhet ta shfletojë në çdo rast. Nëse nuk e ke ndjekur kursin, atëherë ka kuptim ta lexosh. Cormen më duket mjaft i mërzitshëm. E kam përfunduar me vështirësi, sinqerisht. , po disa struktura të dhënash që përdoren rrallë (Fibonacci heap, van Emde Boas tree, radix heap).
Një libër për përgatitje për intervista ia vlen të lexosh të paktën një. Të gjitha janë ndërtuar përafërsisht sipas të njëjtit parim. Përshkruajnë procesin e intervistës në kompanitë e mëdha teknologjike, japin shkencat bazë të Kompjuterëve, detyra në këto shkenca bazë, zgjidhjet e detyrave dhe analizat e zgjidhjeve. Nga tre të përmendurat, ndoshta do të rekomandoja Cracking the Coding Interview si të parin, ndërsa të tjerat sipas dëshirës.
Detyrat algoritmike
Kjo ndoshta ishte pika më interesante e përgatitjes. Mund të ulesh dhe thjesht të zgjidhesh detyrat. Ka shumë faqe të ndryshme për këtë. Unë kryesisht kam përdorur tre: , dhe . Në CodeChef detyrat janë të ndara sipas vështirësisë, por jo sipas temave. Në Hackerrank janë ndarë si sipas vështirësisë, ashtu edhe sipas temave.
Por, siç e kam kuptuar menjĂ«herĂ« pĂ«r veten time, ka njĂ« mĂ«nyrĂ« mĂ« interesante. Dhe kjo janĂ« garat (programming challenges ose programming contests). TĂ« tri faqet ofrojnĂ« kĂ«to. MegjithatĂ«, me LeetCode ka njĂ« problem â zona e kohĂ«s Ă«shtĂ« e pakĂ«ndshme. Prandaj nuk kam marrĂ« pjesĂ« nĂ« atĂ« faqe. Hackerrank dhe CodeChef ofrojnĂ« njĂ« numĂ«r tĂ« mjaftueshĂ«m garash tĂ« ndryshme, nga 1 orĂ« deri nĂ« 10 ditĂ«. Formate tĂ« ndryshme kanĂ« rregulla tĂ« ndryshme, por po, pĂ«r kĂ«tĂ« mund tĂ« flas pĂ«r njĂ« kohĂ« tĂ« gjatĂ«. Esenca kryesore, pse garat janĂ« tĂ« mira, Ă«shtĂ« se ato sjellin njĂ« element konkurrues (dhe pĂ«rsĂ«ri tautologji) nĂ« procesin e tĂ« mĂ«suarit.
Pas kam pjesë në 37 gara në Hackerrank. Nga këto, 32 ishin me vlerësim dhe 5 ishin sponsorizuar (madje fitova 25$ në një prej tyre) ose për argëtim. Në gara me vlerësim, kam qëndruar 10 herë në top 4%, 11 herë në top 12% dhe 5 herë në top 25%. Rezultatet më të mira ishin 27/1459 në një garë tre-orëshe dhe 22/9721 në një garë javore.
Kam kaluar në CodeChef kur në Hackerrank garat filluan të organizohen më rrallë. Në total, kam marrë pjesë në 5 gara. Rezultati më i mirë ishte 426/5019 në një garë dhjetë-ditore.
Në total, në gara dhe thjesht kështu kam zgjidhur pak më shumë se 1000 probleme, që përputhej me planin. Tani për fat të keq, nuk kam kohë të lirë për të vazhduar aktivitetet garuese, as nuk kam një objektiv për të cilin mund të shpenzoj kohën e papunë. Por ishte argëtim. Rekomandoj atyre që janë të interesuar të gjejnë shokë të mendimit. Me dy ose në grup është shumë më interesante. Unë e kam bërë këtë me një mik, kështu që ndoshta kjo ka ndihmuar që të eci kaq mirë.
Shikimi i videove
Pas leximit të librit të Skienen, u interesova në thelb për atë që ai bën. Siç është edhe Sejgwik, ai është profesor në universitet. Me këtë rast, në internet mund të gjejmë video nga kurset e tij. Kam vendosur të shikoj kursin . Nuk mund të them se më pëlqeu shumë. Në radhë të parë, cilësia e videos nuk ishte shumë e mirë. Në radhë të dytë, nuk provova të zgjidhja vetë problemet që ishin trajtuar në kuadër të kursit. Prandaj angazhimi ishte i ulët.
Po ashtu, gjatë zgjidhjes së problemeve, duke u munduar të gjeja algorithmin e duhur, kam hasur në videot e Tushar Roy. Ai ka punuar në Amazon, dhe tani punon në Apple. Siç e kam mësuar më vonë, ai ka , ku publikon analiza të ndryshme algoritmesh. Në momentin e shkruarjes së artikullit, kanali përmbante 103 video. Dhe duhet të them se analiza në ekzekutimin e tij është bërë shumë mirë. Kam provuar të shikoj autorsit të tjerë, por nuk më pëlqyen. Pra, këtë kanal në mënyrë të qartë mund ta rekomandoj për tu parë.
Kursi
Këtu nuk kam bërë asgjë të veçantë. Kam shikuar videot nga Android Developer Nanodegree nga Google dhe kam përfunduar kursin nga ITMO . Nanodegree është mjaft i mirë, edhe pse natyrisht nuk munda të mësoj ndonjë gjë të re nga aty. Kursi nga ITMO në planin teorik ishte pak i çrregullt, por problemet ishin interesante. Nuk do të rekomandoja që të filloni me të, por në thelb koha për të ishte e shpenzuar mirë.
Të studioj përvojën e të tjerëve
Natyrisht, shumĂ« njerĂ«z pĂ«rpiqen tĂ« hyjnĂ« nĂ« Google. Disa arritĂ«n, disa jo. Disa shkruan artikuj pĂ«r kĂ«tĂ«. Nga gjĂ«rat interesante, ndoshta dallohet dhe . NĂ« rastin e parĂ«, personi pĂ«rgatiti njĂ« listĂ« tĂ« asaj qĂ« duhej tĂ« mĂ«sonte pĂ«r tâu bĂ«rĂ« Software Engineer dhe pĂ«r tĂ« hyrĂ« nĂ« Google. Ai pĂ«rfundimisht arriti nĂ« Amazon, por kjo nuk ka aq rĂ«ndĂ«si. UdhĂ«zimi i dytĂ« Ă«shtĂ« shkruar nga inxhinierja e Google, LarisĂ« Agarova (). PĂ«rveç kĂ«tij dokumenti, gjithashtu mund tĂ« lexoni .
Ka kuptim të lexoni edhe komentet për intervistat në Glassdoor. Ato janë më shumë-më pak të ngjashme, por mund të nxjerrni disa informacione të vlefshme.
Nuk do të sjell lidhje për artikuj të tjerë të vogla, pasi mund t'i gjeni me lehtësi në Google.
Qasja e dytë
Dhe ja, kaloi një vit. Ai ishte shumë i ngarkuar në lidhje me studimin. Por në këtë vjeshtë të re, isha përgatitur me njohuri më të thella teorike dhe aftësi praktike të përmirësuara. Pasi kishin mbetur disa javë deri në përfundimin e afatit të caktuar për përgatitjen time, papritmas mora një email nga një rekrutues në Google, në të cilin më pyeti nëse ende kisha dëshirë të punoja në Google dhe nëse isha i gatshëm të flisja me të. Natyrisht, isha i gatshëm. U dakordëm për një bisedë telefonike pas një jave. Më kërkuan gjithashtu një CV të përditësuar, së bashku me një përshkrim të shkurtër të atij që kam bërë gjatë vitit në punë dhe në përgjithësi.
Pas bisedës mbi jetën, vendosëm që pas një jave do të kishte një intervistë në Hangouts, çdo gjë si vitin e kaluar. Java kaloi, erdhi koha e intervistës, por intervistuesi nuk u shfaq. Kaluan 10 minuta, unë isha duke u shqetësuar, kur papritmas dikush hyri në bisedë. Siç doli më vonë, intervistuesi im për një arsye nuk arriti të shfaqej dhe urgjentisht i gjetën një zëvendësim. Njeriu ishte paksa jo i gatshëm në lidhje me konfigurimin e kompjuterit dhe zhvillimin e intervistës. Por më pas gjithçka shkoi mirë. Zgjidhjen e problemit e zgjidhja shpejt, përshkrova se ku mund të ishin kapacitetet, si mund të shmangeshin ato. Diskutuam disa variante të ndryshme të problemit, kompleksitetin e algoritmit. Më pas biseduam edhe 5 minuta, inxhinieri ndau përshtypjet e tij nga puna në Mynih (në Zvicër duket se nuk gjetën zëvendësim urgent), dhe këtu u ndamë.
Në të njëjtën ditë, rekrutuesi më kontaktoi dhe më njoftoi se intervista kishte shkuar shkëlqyer dhe ata ishin të gatshëm të më ftonin për një intervistë në zyrë. Të nesërmen biseduam përmes Hangouts dhe diskutuam detajet. Duke qenë se më duhej të aplikonja për vizë, vendosëm të caktonim intervistën për një muaj më vonë.
NdĂ«rsa pĂ«rgatitja e dokumenteve, gjithashtu diskutova me rekrutuesin mbi intervistĂ«n qĂ« do tĂ« ndodhte. Intervista standarde nĂ« Google pĂ«rbĂ«het nga 4 intervista algoritmike dhe njĂ« pĂ«r Projektimin e Sistemit. Por, duke qenĂ« se po aplikohja si zhvillues Android, mĂ« thanĂ« se njĂ« pjesĂ« e intervistĂ«s do tĂ« kishte specifikĂ«n e Android-it. ĂfarĂ« saktĂ«sisht dhe nĂ« çfarĂ« do tĂ« pĂ«rfshinte spesifikĂ«n, sĂ«rish nuk arrita ta kuptoj nga rekrutuesi. Sipas atij qĂ« kuptova, ky ndryshim ishte futur relativisht kohĂ«t e fundit dhe ai vetĂ« nuk ishte shumĂ« i informuar. Gjithashtu, mĂ« regjistruan pĂ«r dy sesione stĂ«rvitore: si tĂ« kaloj njĂ« intervistĂ« algoritmike dhe si tĂ« kaloj njĂ« intervistĂ« pĂ«r Projektimin e Sistemit. Sesionet ishin tĂ« dobishme nĂ« masĂ« tĂ« mesme. Askush aty nuk mundi tĂ« mĂ« thoshte se çfarĂ« pyesin zhvilluesit Android. Prandaj, pĂ«rgatitja ime gjatĂ« kĂ«tij muaji u reduktua nĂ« kĂ«tĂ«:
- Blirin një tablo me shënues dhe shkruar 2-3 dhjetëra algoritemesh më të njohura në të nga kujtesa. Nga 3-5 çdo ditë. Pra, gjithsej çdo algoritem u shkrua disa herë.
- Rifreskimin e kujtesës për informacionin e ndryshëm mbi Android, që nuk e përdor çdo ditë.
- Shikimi i disa videove mbi Big Scale dhe të gjitha ato gjëra.
Si sa e kam thënë, paralelisht po përgatitesha dokumentet për udhëtim. Fillimisht më kërkuan të dhënat për të bërë një letrën e ftesës. Më pas, shumë u mundova të kuptoja kush në Qipro merret me viza për Zvicër, pasi ambasada zvicerane nuk merret me këtë. Siç doli, kjo bëhej nga konsullata austriake. Telefonom dhe rezervova një takim. Atje kërkuan një mori dokumentesh, por asgjë veçanërisht interesante. Fotografi, pasaportë, leje qëndrimi, një sërë dëshmie dhe sigurisht, letra e ftesës. Ndërkohë, letër akoma nuk kishte mbërritur. Në fund shkova me një print të zakonshëm dhe kjo mjaftoi. Letra vetë mb arrived më vonë pas 3 ditësh, ndërsa FedEx i Qipros nuk arriti të gjente adresën time dhe iu desh të shkoja vetë për të. Ndërkohë mora gjithashtu në të njëjtin FedEx një paketë që ata gjithashtu nuk arritën ta dorëzonin, pasi nuk gjetën adresën, dhe që kishte qëndruar atje që nga qershori (5 muaj, Karl). Sipas informacionit tim, nuk dija për të, natyrisht, as nuk e kisha menduar se ata e kishin. Viza e mora në kohë, pas së cilës më rezervuan një hotel dhe m'u ofruan mundësi fluturimi. Unë i përmirësova opsionet, për ta bërë më të përshtatshme. Nuk kishte fluturime direkte, kështu që në fund fluturova për atje përmes Athinës dhe u ktheva përmes Vjenës.
Pasi u rregulluan të gjitha formalitetet për udhëtimin, kaluan edhe disa ditë dhe në fakt fluturova për Zvicër. Arrita pa aventura. Nga aeroporti në qytet, shkova me tren - shpejt dhe lehtë. Pasi u humba pak në qytet, e gjeta hotelin dhe u akomodova. Sepse hoteli ishte rezervuar pa ushqim, darkova në një restorant afër dhe u hodha në gjumë, pasi fluturimi ishte në mëngjes dhe isha i lodhur. Në ditën e nesërme, bëra mëngjes në hotel (për një pagesë shtesë) dhe shkuan në zyrën e Google. Në Zvicër, Google ka disa zyra. Intervista ime nuk ishte në atë qendrore. Dhe në përgjithësi, zyra dukej mjaft zakonshme, kështu që nuk pata mundësi të shihja të gjitha avantazhet e një
Intervista numër një
Intervista e parë ishte pikërisht për Android. E cila nuk kishte të bëjë fare me algoritmet. Një surprizë, megjithatë. Por, mirë, kështu është edhe më e njohur. Më kërkuan të krijoja një komponent të caktuar UI. Fillimisht diskutuam se çfarë dhe si. Proposal i një zgjidhjeje me RxJava, e përshkrova se çfarë do të bëja dhe pse. Më thanë që kjo është mirë, por le të bëjmë me mjete të kornizës Android. Në të njëjtën kohë, do të shkruajmë kodin në tabllo. Dhe jo thjesht për komponentin, por për gjithë Activity-në që e përdor atë komponent. Për një gjë të tillë nuk isha i gatshëm. Një gjë është të shkruash një algoritëm 30-50 rreshta në tabllo, ndryshe është të shkruash kodin Android, edhe pse me shkurtime dhe komente si 'eh, këtë nuk do ta shkruaj, sepse është e qartë'. Doli një lloj përzierjeje në 3 tabllo. Pra, problemin e zgjidhja, por dukej e çuditshme.
Intervista numër dy
Këtë herë intervista ishte për algoritmet. Dhe kishte dy intervistues. Një intervistues dhe një të ri që e shoqëronte (shadow interviewer). Duhej të krijonim një strukturë të dhënash me disa veti të caktuara. Fillimisht diskutuam problemin si zakonisht. Unë bëra disa pyetje, intervistuesi u përgjigj. Pas disa kohësh më kërkuan të shkruaja disa metoda të strukturës së menduar në tabllo. Këtë herë ia doli më shumë, megjithatë me disa gabime të vogla, të cilat i korrigjova me ndihmën e intervistuesit.
Intervista numër tre
Këtë herë ishte dizajni i sistemit, i cili për çudi doli të ishte gjithashtu për Android. Duhej të zhvilloja një aplikacion me një funksionalitet të caktuar. Diskutuam kërkesat për aplikacionin, për serverin, për protokollin e komunikimit. Më pas fillova të përshkruaja se cilat komponentë apo biblioteka do të përdorja për ndërtimin e aplikacionit. Më pas, duke përmendur Job Scheduler, ndodhi një ngatërrim. Problemi është se nuk e kam përdorur kurrë atë në praktikë, sepse në momentin e daljes së tij u kalova në mbështetje të aplikacioneve, ku nuk kishte aspak detyra për përdorimin e tij. E njëjta gjë ndodhi me zhvillimin e aplikacioneve të tjera. Pra, në teorinë e di se çfarë është ai, kur dhe si përdoret, por nuk kam përvojë në përdorim. Dhe duket se intervistuesit nuk iu pëlqye shumë kjo. Më pas më kërkuan të shkruaja kod. Po, gjatë zhvillimit të aplikacionit duhet të shkruash menjëherë kodin. Përsëri, kodin Android në tabllo. Doli përsëri e frikshme.
Drekë
Duhej të vinte edhe një person tjetër, por nuk erdhi. Edhe Google ka gabime. Si rezultat, shkova për drekë me intervistuesin e mëparshëm, kolegen e saj, dhe pak më vonë iu bashkua intervistuesi tjetër. Dreka ishte mjaft e mirë. Edhe një herë, pasi nuk është zyra kryesore në Zvicër, shkalla dukej mjaft normale, ndonëse shumë e këndshme.
Intervista numër katër
Më në fund algoritmet në formën e pastër. U zgjidh të parën detyrë mjaft shpejt dhe menjëherë në mënyrë efektive, megjithatë gabova me një rast kufitar, por me sugjerimin e intervistuesit (ai dha pikërisht atë rast kufitar) e gjetëm problemin dhe e korigova. Sigurisht, duhej të shkruaja kodin në tabelë. Më pas u dha një detyrë e ngjashme, por më e komplikuar. Për të, gjetëm disa zgjidhje jo optimale dhe pothuajse e gjetëm optimale, më mungonin 5-10 minuta për ta përfunduar mendimin. Po ashtu, kodin për të nuk arrita ta shkruaj.
Intervista numër pesë
Dhe përsëri intervista për Android. E çuditshme, pse i mësova algoritmet gjithë vitin?
Fillimisht pati disa pyetje të thjeshta. Më pas intervistuesi shkroi në tabelë kodin dhe kërkoi të gjeja problemet në të. I gjeta, i shpjegova, i korrigova. Diskutuam. Pastaj filluan disa pyetje të papritura në frymën e «çfarë bën metoda Y në klasën X», «çfarë ka brenda metodës Y», «çfarë bën klasa Z». Disa gjëra naturalisht iu përgjigja, por më pas thashë se në punë kohët e fundit nuk kisha hasur këto dhe natyrisht nuk mbaja mend, kush, çfarë dhe si bënte në detaje. Pas kësaj, intervistuesi pyeti se çfarë bëj tani. Dhe pyetjet u orientuan në këtë temë. Këtu iu përgjigja ndjeshëm më mirë.
Pas përfundimit të intervistës së fundit, më morën kartelën e hyrjes, më uruan fat dhe më dërguan në rrugë. Pak shkova për një shëtitje në qytet, darkova dhe shkova në hotel, ku u shemb për të fjetur, pasi fluturimi sërish ishte herët në mëngjes. Të nesërmen arrita me sukses në Qipro. Nga kërkesa e rekrutuesit, shkrova një feedback për intervistën dhe plotësova një formular në një shërbim të veçantë për rikthimin e shpenzimeve të bëra. Nga të gjitha shpenzimet, Google paguan drejtpërdrejt vetëm biletat. Hoteli, ushqimi dhe transporti paguhen nga kandidati. Pastaj plotësojmë formularin, bashkëngjitëm çeqet dhe ia dërgojmë një institucioni të veçantë. Ata e përpunojnë dhe mjaft shpejt transferojnë paratë në llogari.
Për të përpunuar rezultatet e intervistave ne duheshin një javë e gjysmë. Pas kësaj, më njoftuan se isha "pak më poshtë nivelit". Domethënë, pak nuk kam arritur. Nëse do të isha më konkret, 2 intervista shkuan mirë, 2 ndonjëherë jo shumë mirë, dhe System Design nuk shkoi aspak mirë. Po të paktën 3 të kishin shkuar mirë, do të isha më afër, por kështu nuk kishte shanse. Më ofruan të rikthehem pas një viti.
Në fillim isha natyrisht i shqetësuar, sepse përgatitja kishte kërkuar shumë përpjekje, dhe në momentin e intervistës, kisha një mendim në zhvillim për të lënë Qipron. Punësimi në Google dhe zhvendosja në Zvicër dukeshin si një mundësi e shkëlqyer.
Përfundim
Dhe këtu arritëm në pjesën përfundimtare të artikullit. Po, nuk kalova intervistat në Google dy herë. Kjo është e trishtueshme. Ndoshta do të ishte interesante të punoja atje. Por, mund të shohim çështjen edhe nga një këndvështrim tjetër.
- Gjatë një viti e gjysmë kam mësuar një sasi të madhe informacioni lidhur me zhvillimin e softuerit.
- Kam pasur shumë kënaqësi duke marrë pjesë në konkurse programimi.
- Kam shkuar për disa ditë në Zyrih. Kur do të kem mundësinë të shkoj përsëri atje?
- Kam fituar një përvojë interesante intervistimi në një nga kompanitë më të mëdha IT në botë.
Kështu, gjithçka që ndodhi gjatë këtyre një vit e gjysmë mund të mendohet si një mësim ose trajnim. Dhe rezultatet e këtij trajnimi u dukën. Ideja ime për të lënë Qipron u konsolidua (për disa arsye familjare), kalova me sukses disa intervista në një kompani tjetër të njohur dhe pas 8 muajsh u zhvendosa. Por kjo është një histori krejt tjetër. Megjithatë, mendoj se ende e meritoj të falënderoj Google për këto një vit e gjysmë, gjatë të cilave punova mbi veten time, si dhe për 2 ditë interesante në Zyrih.
ĂfarĂ« mund tĂ« them nĂ« fund. NĂ«se punoni nĂ« IT, pĂ«rgatituni pĂ«r intervista nĂ« Google (Amazon, Microsoft, Apple etj.). Ndoshta njĂ« ditĂ« do tĂ« keni kĂ«tĂ« mundĂ«si. Edhe nĂ«se nuk dĂ«shironi, besoni, njĂ« pĂ«rgatitje e tillĂ« nuk do t'ju dĂ«mtojĂ«. NĂ« momentin qĂ« do tĂ« kuptoni se mund tĂ« jeni (madje vetĂ«m nĂ« rrethana tĂ« favorshme) tĂ« kaloni njĂ« intervistĂ« nĂ« njĂ« nga kĂ«to kompani, do t'ju hapen shumĂ« mĂ« shumĂ« mundĂ«si se sa nĂ« fillim tĂ« pĂ«rgatitjes tuaj. Dhe gjithçka qĂ« do t'ju duhet nĂ« rrugĂ« Ă«shtĂ« njĂ« qĂ«llim, kĂ«mbĂ«ngulje dhe kohĂ«. Ju uroj suksese đ
Burimi: habr.com
