
Titulli i artikullit mund të tingëllojë si një dështim epik, por në të vërtetë situata nuk është aq e thjeshtë. Në tërësi, kjo histori përfundoi mjaft pozitivisht, megjithëse jo në Google. Por kjo është një temë tjetër për një artikull tjetër. Në këtë artikull, do të flas për tre gjëra: si u zhvillua procesi im i përgatitjes, si kaluan intervistat në Google dhe pse mendoj se gjithçka nuk është aq e qartë sa mund të duket.
Si filloi gjithçka
NjĂ« natĂ« tĂ« ftohtĂ« dimri nĂ« Qipro, mĂ« ra nĂ« mendje se njohuritĂ« e mia nĂ« ShkencĂ«n Kompjuterike ishin shumĂ« larg mesatares, dhe duhej tĂ« bĂ«nja diçka pĂ«r kĂ«tĂ«. NĂ«se ndonjĂ« njeri tjetĂ«r ende nuk e di pse ishte njĂ« natĂ« dimri e ftohtĂ« nĂ« Qipro, mund tĂ« mĂ«soni pĂ«r kĂ«tĂ«. . Pasi mendova pĂ«rsĂ«ri, vendosa qĂ« nĂ« fillim tĂ« ndiqja njĂ« kurs online pĂ«r algoritmet dhe strukturat e tĂ« dhĂ«nave. Kam dĂ«gjuar nga njĂ« nga ish-kolegĂ«t pĂ«r kursin e Robert Sedgewick nĂ« Coursera. Kursi pĂ«rbĂ«het nga dy pjesĂ« ( dhe ). NĂ«se ndodhin ndonjĂ«herĂ« ndryshime nĂ« lidhje, gjithmonĂ« mund tĂ« kĂ«rkoni me emrin e autorit. Ădo pjesĂ« zgjat 6 javĂ«. NĂ« fillim tĂ« javĂ«s, jepen ligjĂ«rata, dhe gjatĂ« javĂ«s duhet tĂ« bĂ«ni ushtrime. Pjesa e parĂ« e kursit mbulon strukturat e tĂ« dhĂ«nave bazike, llojet kryesore tĂ« renditjes dhe kompleksitetin e algoritmeve. Pjesa e dytĂ« Ă«shtĂ« mĂ« e avancuar, duke filluar me grafet dhe pĂ«rfunduar me gjĂ«ra si Programimi Linear dhe Intractability. Pas tĂ« gjitha kĂ«tyre, kam arritur nĂ« pĂ«rfundimin se kjo Ă«shtĂ« pikĂ«risht ajo qĂ« mĂ« nevojitej. Tani, ndoshta lexuesi kurioz mund tĂ« pyesĂ«, çfarĂ« ka tĂ« bĂ«jĂ« kjo me Google. NĂ« tĂ« vĂ«rtetĂ«, deri nĂ« kĂ«tĂ« pikĂ«, ai nuk kishte lidhje fare. Por mĂ« nevojitej njĂ« qĂ«llim, sepse tĂ« merresha me 12 javĂ« nĂ« mbrĂ«mje pa njĂ« qĂ«llim Ă«shtĂ« disi e vĂ«shtirĂ«. Dhe çfarĂ« mund tĂ« jetĂ« qĂ«llimi nĂ« marrjen e njohurive tĂ« reja? Sigurisht, aplikimi i tyre nĂ« praktikĂ«. NĂ« jetĂ«n e pĂ«rditshme, kjo Ă«shtĂ« mjaft problematike, por nĂ« intervista nĂ« kompani tĂ« mĂ«dha Ă«shtĂ« e thjeshtĂ«. NjĂ« kĂ«rkim i shpejtĂ« nĂ« Google tregoi se Google (falni pĂ«r tautologji) Ă«shtĂ« njĂ« nga kompanitĂ« mĂ« tĂ« mĂ«dha nĂ« EvropĂ« (dhe unĂ« e kisha parasysh pikĂ«risht EvropĂ«n), ku zhvillohen intervista tĂ« tilla. SaktĂ«sisht, zyrat e tyre ndodhen nĂ« Cyrih, ZvicĂ«r. Pra, u vendos â do tĂ« mĂ«soj dhe do tĂ« shkoj pĂ«r njĂ« intervistĂ« nĂ« Google.
Përgatitja për raundin e parë
12 javët kaluan pa u ndier, dhe unë përfundova të dy kurset. Përshtypjet e mia nga kursi janë më shumë se pozitive, dhe mund t'i rekomandoj ato për të gjithë të interesuarit. Më pëlqyen këto kurse për disa arsye:
- Lectori flet anglisht mjaft qartë
- Materiali është i strukturuar mirë
- Prezantime të shkëlqyera, që tregojnë brendësinë e çdo algoritmi
- Përzgjedhje e mençur e materialeve
- Ushtrime interesante
- Ushtrimet kontrollohen automatikisht në faqen e internetit, pas së cilës krijohet një raport
Oborri im në kurse zakonisht përfshinte mënyrë si vijon. Për 1-2 ditë, kam ndjekur ligjëratat. Pastaj, kalova një test të shpejtë për njohuritë e materialit. Pjesa tjetër e javës e shpenzova duke bërë ushtrime në disa iteracione. Pas iteraionit të parë, merrja 30-70%, dhe iteracionet e tjera e çonin rezultatin deri në 97-100%. Ushtrimi zakonisht përfshinte realizimin e ndonjë algoritmi, si për shembull ose .
Pas përfundimit të kurseve, kuptova se shumë njohuri sjellin shumë brenga. Nëse më parë e dija se nuk dija asgjë, tani fillova të kuptoj se çfarë saktësisht nuk dija.
Duke qenë se ishte vetëm maji, dhe intervista e kisha planifikuar për vjeshtë, vendosa të vazhdoj edukimin tim. Pas shikimit të kërkesave për pozitat, vendosa të vazhdoj paralelisht në dy drejtime: të vazhdoj të studioj algoritme dhe të ndjek një kurs bazë për mësimin e makinave. Për qëllimin e parë, vendosa të kaloj nga kurset në libër dhe zgjodha veprën monumentale të Steven Skiena "Algoritmet. Manuali i zhvillimit". Nuk është aq monumentale sa e Knuth-it, por gjithsesi është. Për qëllimin e dytë, përsëri shkuan në Coursera dhe regjistrova në kursin e Andrew Ng .
Kaluan edhe 3 muaj, dhe përfundova kursin dhe librin.
Le tĂ« fillojmĂ« me librin. Leximi rezultoi mjaft interesant, megjithĂ«se nuk ishte i lehtĂ«. NĂ« thelb, do ta rekomandoja librin, por jo menjĂ«herĂ«. PĂ«rgjithĂ«sisht, libri ofron njĂ« analizĂ« mĂ« tĂ« thellĂ« tĂ« asaj qĂ« kam mĂ«suar nĂ« kurse. Po ashtu, zbulova pĂ«r veten time (nga njĂ« kĂ«ndvĂ«shtrim formal) disa gjĂ«ra si heuristikĂ«t dhe programimin dinamik. Natyrisht, mĂ« parĂ« kisha pĂ«rdorur kĂ«to, por nuk dija si quheshin. Gjithashtu, libri pĂ«rmban disa tregime nga jeta e autorit (War Story), tĂ« cilat e lehtĂ«sojnĂ« disi ekspozimin akademik. Pjesa e dytĂ« e librit mund tĂ« kalojĂ«, pasi pĂ«rmban kryesisht pĂ«rshkrime tĂ« problemeve ekzistuese dhe metodave pĂ«r zgjidhjen e tyre. ĂshtĂ« e dobishme nĂ«se aplikohet rregullisht nĂ« praktikĂ«, pĂ«rndryshe do harrohet menjĂ«herĂ«.
Kursi mĂ« kĂ«naqi mĂ« se shumĂ«. Autori padyshim e njeh punĂ«n e tij dhe flet me interes. Po ashtu, njĂ« pjesĂ« tĂ« konsiderueshme, konkretisht algebra lineare dhe bazat e rrjeteve neurale, i mbaja akoma mend nga universiteti, prandaj nuk kisha hasur ndonjĂ« vĂ«shtirĂ«si tĂ« veçantĂ«. Struktura e kursit Ă«shtĂ« mjaft standarde. Kursi Ă«shtĂ« e ndarĂ« nĂ« javĂ«. Ădo javĂ« fillimisht ka leksione tĂ« shoqĂ«ruara me teste tĂ« shkurtra. Pas leksioneve, jepet njĂ« detyrĂ«, e cila duhet realizuar, dĂ«rguar dhe do tĂ« kontrollohet automatikisht. NĂ« pĂ«rmbledhje, lista e mĂ«simeve nĂ« kurs Ă«shtĂ« si mĂ« poshtĂ«:
â cost function
â linear regression
â gradient descent
â feature scaling
â normal equation
â logistic regression
â multiclass classification (one vs all)
â neural networks
â backpropagation
â regularization
â bias/variance
â learning curves
â error metrics (precision, recall, F1)
â Support Vector Machines (large margin classification)
â K-means
â Principal Components Analysis
â anomaly detection
â collaborative filtering (recommender system)
â stochastic, mini-batch, batch gradient descents
â online learning
â map reduce
â ceiling analysis
Pas përfundimit të kursit, kuptimi i të gjitha këtyre temave ishte prezent. Pasi kaluan 2 vjet, pothuajse gjithçka ishte harruar natyrshëm. Rekomandoj për ata që nuk janë të njohur me mësimin e makinave dhe duan të kenë një kuptim të mirë të gjërave bazë për të avancuar më tej.
Këndi i parë
Ishte tashmë shtator dhe erdhi koha të mendohej për intervistat. Duke qenë se aplikimi përmes faqes ishte një punë mjaft e vështirë, fillova të kërkoj për njohuritë që punonin në Google. Zgjedha e rënë ishte , pasi ai ishte i vetmi që e dija drejtpërdrejt (përkundër faktit që nuk e njihja personalisht). Ai pranoi të transferonte CV-në time, dhe shpejt mora një letër nga rekrutuesi, që ofronte të rezervonte një slot në kalendarin e tij për bisedën e parë. Pas disa ditësh u realizua një thirrje. Provuan të flisnin përmes Hangouts, por cilësia ishte e tmerrshme, kështu që kaluam në telefon. Fillimisht diskutuam shpejt për standardet si, pse dhe përse, pastaj kaluam në skanimin teknik. Ai përbëhej nga një duzinë pyetjesh në stilin e "cila është kompleksi i futjes në hash map", "cilat pemë të balancuara njihni". Nuk ishte e vështirë, nëse ke një njohuri bazë për këto gjëra. Skanimi kaloi mirë dhe në bazë të rezultateve vendosëm të organizonim intervistën e parë pas një jave.
Intervista gjithashtu ishte përmes Hangouts. Fillimisht folëm për rreth 5 minuta për mua, pastaj kaluam në problemin. Problemi ishte mbi grafët. Shpejt kuptova çfarë duhej të bëja, por zgjodha algoritmin e gabuar. Kur fillova të shkruaj kodin e kuptova këtë dhe kalova në një variant tjetër, të cilin e përfundova. Intervistuesi më bëri disa pyetje në lidhje me kompleksitetin e algoritmit dhe pyeti, nëse mund të ishte më shpejt. Siç duket, isha disi i ngadaltë dhe nuk mu desh. Në këtë pikë kohe mbaroi dhe ne u përshëndetëm. Më vonë, pas rreth 10 minutash, kuptova që në vend të algoritmit të Dijkstra-s, të cilin e përdorja, konkretisht në këtë problem mund të përdorej kërkimi në gjerësi, dhe do të ishte më shpejt. Pas pak koha, rekrutuesi më telefonoi dhe tha që intervista kaloi në përgjithësi mirë dhe do të duhej të organizonim një tjetër.
Këtë herë gjërat shkuan më keq. Nëse herën e parë intervistuesi ishte miqësor dhe komunikues, kësaj here doli të ishte disi mërzitur. Problemin nuk arrita ta zbuloja menjëherë, megjithatë idetë që ofrova në thelb mund të çonin në zgjidhjen e tij. Në fund, pas disa sugjerimeve nga intervistuesi, kuptova shpëtimin. Këtë herë ishte sërish kërkimi në gjerësi, vetëm se nga disa pika. E shkrova zgjidhjen, u përmbaja në kohë, por harrova rreth rasteve të kufirit. Pas pak, rekrutuesi më telefonoi dhe tha se kësaj here intervistuesi ishte i pakënaqur, pasi, sipas mendimit të tij, më duhej shumë ndihmë (3 ose 4 herë) dhe vazhdoja të ndryshoja kodin gjatë shkruajes. Pas rezultateve të dy intervistave, u mor vendimi që të mos vazhdoja më tej, dhe ta zgjatja intervistën tjetër për një vit, nëse do të kisha një dëshirë të tillë. Kështu u ndamë.
Në këtë histori, kam nxjerrë disa përfundime:
- Teoria është e mirë, por duhet të orientohesh shpejt në të.
- Teoria pa praktikë nuk ndihmon. Duhet të zgjidhni probleme dhe të arrini që shkruajtja e kodit të bëhet automatike.
- Shumë gjëra varen nga intervistuesi. Dhe nuk mund të bësh asgjë për këtë.
Përgatitja për raundin e dytë
Duke menduar për situatën, vendosa të provoj përsëri pas një viti. Dhe pak e përmirësova qëllimin. Nëse më parë qëllimi kryesor ishte të studioja, dhe intervista në Google si një karrotë e largët, tani kalimi i intervistës ishte qëllimi, dhe studimi ishte mjeti.
Kështu u zhvillua një plan i ri, i cili përmbante pikë të tilla:
- Të vazhdoj të studioj teorinë përmes leximit të librave dhe artikujve.
- TĂ« zgjidh 500-1000 detyra algoritmike.
- Të vazhdoj të studioj teorinë përmes shikimit të videove.
- Të vazhdosh të studiosh teorinë përmes kurseve.
- Të hetojmë përvojën e të tjerëve në zhvillimin e intervistave në Google.
Plani u realizua nga unë për një vit. Më tutje do të përshkruaj se çfarë kam bërë në secilën nga pika.
Libra dhe artikuj
Numri i artikujve të lexuar është kaq i madh saqë as nuk e mbaj mend, i kam lexuar si në rusisht ashtu edhe në anglisht. Ndër faqet më të dobishme, ndoshta ishte . Këtu është mbledhur një përshkrim i një numri të madh algoritmesh interesante me shembuj kodi.
Kam lexuar 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). Ato mund të ndahen në 2 kategori. Në kategorinë e parë përfshihen librat e Sedgewick-ut dhe Cormen-it. Këto janë teorike. Të tjerët janë përgatitje për intervista. Sedgewick në libër përshkruan afërsisht të njëjtën gjë si në kurset e tij. Thjesht në formë të shkruar. Nuk ka kuptim të lexosh me kujdes, nëse e ke ndjekur kursin, por ia vlen të shfletoj. Nëse nuk e ke ndjekur kursin, atëherë ia vlen ta lexosh. Cormen më duket se ishte paksa i mërzitshëm. Ndonjëherë e përfundova me vështirësi. Nga aty munda të nxjerr vetëm , po ashtu disa struktura të dhënash të rralla (Fibonacci heap, van Emde Boas tree, radix heap).
Duhet të lexosh të paktën një libër për përgatitjen e intervistave. Të gjitha ato janë ndërtuar mbi një parim të ngjashëm. Përshkruajnë procesin e intervistës në kompanitë e mëdha teknologjike, japin baza nga Informatika, detyra për këto baza, zgjidhje të detyrave dhe analiza të zgjidhjeve. Nga tre të dhëna, mendoj se rekomandoj Cracking the Coding Interview si të parin, dhe të tjerët sipas dëshirës.
Detyrat algoritmike
Ky ndoshta ishte pika më interesante e përgatitjes. Mund të ulesh dhe thjesht të zgjidhësh detyra. Për këtë ka shumë faqe të ndryshme. Unë zakonisht kam përdorur tre: , dhe . Në CodeChef, detyrat janë të ndara sipas nivelit të vështirësisë, por jo sipas temave. Në Hackerrank janë të ndara si sipas vështirësisë, ashtu edhe sipas temave.
Por siç e kuptova menjĂ«herĂ«, ka njĂ« mĂ«nyrĂ« mĂ« tĂ«rheqĂ«se. Dhe kjo janĂ« garat (sfidat programore ose konkurrencat). TĂ« gjitha tre faqet i ofrojnĂ« ato. MegjithatĂ«, me LeetCode ka njĂ« problem â zona e kohĂ«s jo e pĂ«rshtatshme. Prandaj, unĂ« nuk kam marrĂ« pjesĂ« nĂ« kĂ«tĂ« faqe. Hackerrank dhe CodeChef ofrojnĂ« njĂ« numĂ«r tĂ« madh sfidash tĂ« ndryshme, nga 1 orĂ« deri nĂ« 10 ditĂ«. Formate tĂ« ndryshme kanĂ« rregulla tĂ« ndryshme, por mund tĂ« flas shumĂ« pĂ«r kĂ«tĂ«. KĂ«tu qĂ«ndron thelbĂ«sorja, pse garat janĂ« tĂ« mira, Ă«shtĂ« se ndihmojnĂ« nĂ« futjen e njĂ« elementi konkurrues nĂ« procesin e mĂ«simit.
Në total kam marrë pjesë në 37 gara në Hackerrank. Nga ato, 32 ishin me vlerësim dhe 5 ose sponosruara (madje kam fituar 25$ në një nga to) ose për argëtim. Në sfidat me vlerësim, kam qenë 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 gara në Hackerrank filluan të organizoheshin më rrallë. Në total kam marr pjesë në 5 gara. Rezultati më i mirë ishte 426/5019 në një garë dhjetë-ditore.
Në total, kam zgjidhur pak më shumë se 1000 detyra, si për gara ashtu edhe thjesht kështu sipas planit. Tani, për fat të keq, nuk kam kohë të lirë për të vazhduar aktivitetin për konkurrencë, as nuk ka qëllim për të cilin mund të shpenzoj kohën time të lirë. Por ishte shumë argëtuese. Rekomandoj atyre që janë të interesuar, të gjejnë shokë të mendimit. Në dy ose në grup është shumë më interesante. Unë kam argëtuar me një mik, prandaj ndoshta shkoi kaq mirë.
Shikimi i videos
Pas leximit të librit të Skiena-s, u interesova në parim për atë që ai bën. Si Sedgewick, ai është profesor në universitet. Në këtë lidhje, në internet mund të gjesh videoklipet e kurseve të tij. Vendosa të shikoj kursin . Nuk do të them se më pëlqeu shumë. Së pari, cilësia e videos nuk ishte shumë e mirë. Së dyti, nuk e provoja vetë të zgjidhja detyrat që u shqyrtuan në kuadër të kursit. Pra, angazhimi nuk ishte shumë i lartë.
Gjithashtu, gjatë procesit të zgjidhjes së problemeve, duke u përpjekur të gjej algoritmin e duhur, ndesha në video të Tushar Roy. Ai punoi në Amazon dhe tani punon në Apple. Siç e kuptova më vonë, ai ka , ku publikonte analizat e algoritmeve të ndryshme. Në momentin e shkruajtjes së artikullit, kanali përmban 103 video. Dhe duhet të them se analiza e tij është bërë shumë mirë. Provoj të shikoj autorë të tjerë, por ashtu nuk më pëlqeu. Pra, ky kanal e rekomandoj me siguri për t'u parë.
Pjesëmarrja në kurse
Këtu nuk kam bërë asgjë të veçantë. Kam parë video nga Android Developer Nanodegree nga Google dhe kam ndjekur kursin nga ITMO . Nanodegree është mjaft mirë, megjithëse nuk kam mësuar asgjë të re nga aty. Kështu që kursi nga ITMO për sa i përket teorisë ishte diçka i ngjeshur, por problemet ishin interesante. Nuk do e rekomandoja për të nisur, por në thelb, koha për të është shpenzuar jo kot.
Të studioj përvojën e të tjerëve
Natyrisht, shumë njerëz kanë përpjekur të hyjnë në Google. Disa arritën, disa jo. Disa shkruan artikuj rreth kësaj. Nga gjërat interesante mendoj se duhet theksuar dhe . Në rastin e parë, një person përgatiti një listë të asaj që i duhej të mësonte për të bërë Software Engineer dhe për të hyre në Google. Në fund ai hyri në Amazon, por kjo nuk është aq e rëndësishme. Manuali i dytë është shkruar nga inxhinieri i Google, Larisa Agarova (). Përveç këtij dokumenti, mund të lexoni gjithashtu .
Ka kuptim të lexoni rishikimet e intervistave në Glassdoor. Të gjitha janë më shumë-më pak të ngjashme, por mund të nxirrni disa informacione të dobishme.
Nuk do të sjell lidhje për artikuj të tjerë të vegjël, ju vetë mund t'i gjeni ata lehtësisht në Google.
TĂ« dyta
Dhe kaloi një vit. Ky vit ishte shumë i ngjeshur në aspektin e studimeve. Por me ardhjen e vjeshtës së re, po i qasem kësaj periudhe me njohuri teorike shumë më të thella dhe me aftësi praktike të zhvilluara. Para se të përfundonte periudha e caktuar për të studiuar, mbeteshin edhe disa javë dhe papritmas më erdhi një email nga një rekruter në Google, i cili më pyeste nëse ende kisha dëshirë të punoja në Google dhe nëse isha i gatshëm të flisja me të. Sigurisht, nuk kisha asnjë kundërshtim. U dakorduam të bisedonim përmes telefonit pas një jave. Gjithashtu, më kërkuan një CV të përmirë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.
Pas një bisede mbi jetë, vendosëm që pas një jave do të kishim një intervistë në Hangouts, gjithçka ashtu si vitin e kaluar. Kaloi java, erdhi koha e intervistës, por intervistuesi nuk u shfaq. Kaloi 10 minuta, unë fillova të shqetësohem, kur papritmas dikush hyri në bisedë. Siç doli më vonë, intervistuesi im nuk mundi të shfaqej për një arsye dhe urgjentisht iu gjet një zëvendës. Njeriu nuk ishte shumë i gatshëm, si për sa i përket konfigurimit të kompjuterit ashtu edhe për sa i përket zhvillimit të intervistës. Por më pas gjithçka shkoi mirë. Problemin e zgjidhja shpejt, përshkrova ku mund të ishin kurthe, si mund të shmangeshin ato. Diskutuam disa variante të ndryshme të problemit dhe kompleksitetin e algoritmit. Më pas biseduam për 5 minuta të tjera, inxhinieri më tregoi përshtypjet e tij nga puna në Mynih (duket se në Zvicër nuk gjetën ndonjë zëvendës urgjent) dhe aty u ndamë.
Në të njëjtën ditë, më kontaktoi rekruter dhe më njoftoi se intervista kaloi shkëlqyeshëm dhe ishin gati të më ftonin për një intervistë në zyrë. Tjetër ditë u thirrëm përmes Hangouts dhe diskutuam detajet. Duke qenë se më duhej të bëja një vizë, u vendos të caktoheshin intervistat një muaj më vonë.
Ndërsa përgatitesha dokumentet, vazhdoja të diskutonja me rekruterin rreth intervistës që po vinin. Intervista standarde në Google përbëhet nga 4 intervista algoritmike dhe një System Design. Por, duke qenë se po aplikohesha si zhvillues Android, më thanë se një pjesë e intervistës do të ishte me specifikën e Androidit. Cilat saktësisht dhe në çfarë do të ishte specifika, nuk munda ta nxjerr nga rekruterja. Sa kuptova, këtë e kanë 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ë kaloja intervistën algoritmike dhe si të kaloja intervistën e Dizenjit të Sistemit. Sesionet ishin të dobishme mesatare. Po ashtu, askush nuk mundi të më tregonte se çfarë pyesin për zhvilluesit Android. Prandaj, përgatitja ime në këtë muaj përfundoi me sa vijon:
- Blerjen e një tabelë me markerë dhe shkrimin e 2-3 dhjetra algoritmave më të njohur në të në memorje. Nga 3-5 secila ditë. Pra, secili u shkrua disa herë.
- Përrefresh qëndrimin tim me informacion të ndryshëm mbi Android, të cilin nuk e përdor çdo ditë
- Shikimin e disa videove për Big Scale dhe të gjitha këto
Si po e thashë, paralelisht po përgatitesha për dokumentet e udhëtimit. Në fillim më kërkuan të dhënat për të përgatitur një ftesë. Më pas, për një kohë të gjatë përpiqesha të kuptoja se kush në Qipro bën vizat për Zvicër, pasi ambasada zvicerane nuk merret me këtë çështje. Siç doli, kjo rregullohet nga konsullata e Austrisë. E thirra dhe bëra një takim. Aty kërkuan një sërë dokumentesh, por asgjë të veçantë. Foto, pasaportë, leje qëndrimi, një grumbull çertifikatash dhe, natyrisht, ftesa. Mes kohës, letra gjithë kohës vonohej. Në fund, shkova me një printim të zakonshëm dhe kjo ishte më thanë e mjaftueshme. Letra vetë arrin pas tre ditësh, por FedEx i Qipros nuk mundi të gjente adresën time dhe më duhet të shkonte ta merrja vetë. Përveç kësaj, mora në të njëjtin FedEx një paketë që gjithashtu ata nuk kishin arritur të më dërgonin, pasi nuk e gjetën adresën dhe ajo kishte mbetur aty që nga qershori (5 muaj!). Siç unë nuk e dija për të, e natyrshme është që nuk e mendoja se ata e kishin atë. Viza e mora në kohë, pas së cilës më rezervuan një hotel dhe më ofruan mundësi fluturimi. Opsionet i rregullova që të ishin më të përshtatshme. Fluturime direkte nuk kishte më, kështu që fluturova atje përmes Athinës, dhe kthimin përmes Vienës.
Pasi qĂ« tĂ« gjitha formalitetet pĂ«r udhĂ«timin ishin rregulluar, kaluan disa ditĂ« dhe unĂ« nĂ« fund fluturova pĂ«r nĂ« ZvicĂ«r. Arrita pa aventura. Nga aeroporti nĂ« qytet udhĂ«tova me tren â shpejt dhe komod. Pas pak kĂ«rkimesh nĂ« qytet, gjeta hotelin dhe u vendosa. Duke qenĂ« se hoteli ishte rezervuar pa gjellĂ«, darkova nĂ« afĂ«rsi dhe u shtriva pĂ«r tĂ« fjetur, pasi fluturimi ishte i mĂ«ngjesit dhe kisha nevojĂ« pĂ«r gjumĂ«. NĂ« ditĂ«n tjetĂ«r mĂ«ngjessa e kam bĂ«rĂ« nĂ« hotel (pĂ«r para tĂ« veçanta) dhe u dĂ«rgova nĂ« zyrĂ«n e Google. NĂ« ZvicĂ«r, Google ka disa zyra. Intervista ime nuk ishte nĂ« atĂ« qendrore. Dhe nĂ« pĂ«rgjithĂ«si, zyrat dukeshin mjaft normale, kĂ«shtu qĂ« nuk pata rastin tĂ« shoh tĂ« gjitha tĂ« mirat e njĂ« zyre
Intervista numër një
Intervista e parë ishte pikërisht për Android. Dhe nuk kishte të bënte fare me algoritmet. Një surprizë, megjithatë. Tani, mirë, ishte më e njohur kështu. Më kërkuan të krijoja një komponent të caktuar UI. Fillimisht diskutova çfarë dhe si. Propozova të bëj një zgjidhje në RxJava, e përshkrova se çfarë dhe pse do ta bëja. Thanë se, sigurisht, kjo është mirë, por le të bëjmë përmes kornizës Android. Dhe po ashtu, le të shkruajmë kodin në bord. Jo vetëm një komponent, por tërë Activity-në që e përdor këtë komponent. Për këtë nuk isha i gatshëm. Një gjë është të shkruash në bord një algoritëm prej 30-50 rreshtash, dhe tjetër gjë është grumbulli i kodit Android, edhe nëse me shkurtime dhe komente si 'nuk do ta shkruaj këtë, sepse është e qartë'. Rezultoi një përzierje në 3 bordin. Domethënë, e zgjidhja problemin, por dukej disi çuditshëm.
Intervista e dytë
Këtë herë intervista ishte për algoritmet. Dhe kishte dy intervistues. Njëri ishte intervistuesi real, dhe tjetri një padawan i ri (intervistuesi në hijen). Duhej të krijoja një strukturë të dhënash me disa karakteristika të caktuara. Fillimisht, si zakonisht, diskutuam problemin. Unë bëja pyetje të ndryshme, intervistuesi përgjigjej. Pas një kohe më kërkuan të shkruaja disa metoda të strukturës së shpikur në bord. Këtë herë arrita më mirë, megjithëse me disa gabime të vogla, të cilat i korrigjova me ndihmën e intervistuesit.
Intervista e tretë
Këtë herë ishte System Design, i cili papritmas 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ë ose biblioteka do të përdorja gjatë ndërtimit të aplikacionit. Kur përmenda Job Scheduler ndodhi një ngërç i caktuar. E vërteta është se kurrë nuk e kam përdorur atë në praktikë, pasi në momentin e daljes së tij, pikërisht kalova në mbështetje të aplikacioneve, ku nuk kishte aspak detyra për ta përdorur. Gjatë zhvillimeve të mëtejshme ndodhi po të njëjtën gjë. Pra, në teori e di se çfarë është, kur dhe si aplikohet, por nuk kam përvojë në aplikim. Dhe intervistuesit duket se nuk i pëlqeu shumë kjo. Më pas më kërkuan të shkruaja kod. Po, gjatë zhvillimit të aplikacionit, menjëherë duhet të shkruaj kod. Sërish kod Android në bord. Sërish doli disi i frikshëm.
Dreka
Duhej të kishte ardhur edhe një person tjetër, por nuk erdhi. Edhe Google ka gabime. Në fund, shkova në drekë me intervistuesin e mëparshëm, një koleg të saj dhe më vonë iu bashkua intervistuesi tjetër. Dita e drekës ishte mjaft e mirë. Po ashtu, pasi nuk ishte zyra kryesore në Cyrih, kantina dukej mjaft normale, edhe pse shumë e këndshme.
Intervista numër katër
MĂ« nĂ« fund algoritmet nĂ« formĂ«n e pastĂ«r. Problemin e parĂ« e zgjida mjaft shpejt dhe efektivisht, megjithatĂ« gabova me njĂ« rast kufitar, por sipas sugjerimit tĂ« intervistuesit (ai dha kĂ«tĂ« rast kufitar) e gjeta problemin dhe e korrigjova. Natyrisht, duhej tĂ« shkruaja kodin nĂ« tavolinĂ«. MĂ« pas u dha njĂ« problem i ngjashĂ«m, por mĂ« i komplikuar. PĂ«r tĂ«, gjetĂ«m disa zgjidhje jo optimale dhe pothuajse e gjetĂ«m atĂ« optimale, mâu deshĂ«n 5-10 minuta pĂ«r ta finalizuar mendimin. Dhe natyrisht, nuk arrita ta shkruaj kodin pĂ«r tĂ«.
Intervista numër pesë
Dhe përsëri intervista për Android. E çuditshme, pse e mësova algoritmet gjithë vitin?
Fillimisht kishte disa pyetje të thjeshta. Më pas, intervistuesi shkroi kod në tavolinë dhe kërkoi të gjeja problemet. I gjetëm, i shpjegova, i korigjova. Diskutuam. Pastaj filluan disa pyetje të papritura si "çfarë bën metoda Y në klasën X", "çfarë ka brenda metodës Y", "çfarë bën klasa Z". Diku përgjigja, por më pas thashë se në punën e fundit nuk kam përballur këto dhe natyrisht nuk mbaj mend, kush, çfarë dhe si bënte në detaje. Pas kësaj, intervistuesi pyeti se çfarë po bëja tani. Dhe pyetjet filluan në këtë temë. Këtë herë përgjigja shumë më mirë.
Pas përfundimit të intervistës së fundit, më morën kartën e identitetit, më uruan fat dhe më dërguan. Krijova pak duar në qytet, darkova dhe shkova në hotel, ku edhe ranë në gjumë, pasi fluturimi ishte sërish herët në mëngjes. Të nesërmen, arrita pa probleme në Qipro. Në kërkesën e rekrutuesit, shkrova një feedback për intervistën dhe plotësova një formular në një shërbim të veçantë për kthimin e shpenzimeve. Nga të gjitha shpenzimet, Google paguan vetëm biletat direkte. Hoteli, ushqimi dhe transporti paguhen nga kandidati. Pastaj plotësojmë formularin, bashkëngjitim faturat dhe dërgojmë në një agjensi të veçantë. Ata e përpunojnë dhe mjaft shpejt transferojnë paratë në llogarinë.
Më duhej një javë e gjysmë për të përpunuar rezultatet e intervistave. Pas kësaj, më njoftuan se isha "pak poshtë nivelit". Pra, isha pak jashtë. Nëse ishim më konkretë, 2 intervista ishin të mira, 2 jo shumë, dhe System Design ishte shumë jo shumë. Sikur të isha kaluar të paktën 3 mirë, do të kisha pasur mundësi për të luftuar, por kështu nuk kishte shanse. Më ofruan të kthehem pas një viti.
Fillimisht isha natyrisht i shqetësuar, sepse kishte kaluar shumë energji për përgatitjen dhe, në momentin e intervistës, kishte arritur mendimi për të lënë Qipron. Punësimi në Google dhe transferimi në Zvicër dukej si një opsion i shkëlqyer.
Përfundimi
Dhe këtu arrijmë në pjesën përfundimtare të artikullit. Po, dështova dy herë në intervistat në Google. 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ë numër të madh gjërash të lidhura me zhvillimin e softuerit.
- Kam pasur kënaqësi të madhe duke marrë pjesë në garat e programimit.
- Bëra një udhëtim për disa ditë në Cyrih. Kur do të shkoj përherë atje?
- Kam fituar një përvojë interesante intervistash në një nga kompanitë më të mëdha të IT-së në botë.
Prandaj, e gjithë ajo që ndodhi gjatë këtyre një viti e gjysmë mund të merren si një mësim, ose si stërvitje. Dhe rezultatet e kësaj stërvitjeje kanë dhënë frytet e veta. Mendimi im për të lënë Qipron ishte zhvilluar (për disa arsye të natyrës familjare), kalova me sukses disa intervista të tjera në një kompani tjetër të njohur dhe pas 8 muajsh u transferova. Por kjo është një histori krejtësisht e ndryshme. Megjithatë, mendoj se duhet t'i falenderoj Google për këto një vit e gjysmë, në të cilat punova mbi veten time, si dhe për 2 ditë interesante në Cyrih.
ĂfarĂ« mund tĂ« them nĂ« fund. NĂ«se punoni nĂ« IT, pĂ«rgatituni pĂ«r intervistat nĂ« Google (Amazon, Microsoft, Apple etj.). MundĂ«sisht, ndoshta ndonjĂ«herĂ« do t'ju dalĂ« tĂ« hyni atje. Edhe nĂ«se nuk dĂ«shironi, besoni se tĂ« tillĂ« pĂ«rgatitje s'ka pĂ«r t'ju dĂ«mtuar. NĂ« momentin kur kuptoni se mund tĂ« kaloni intervistat nĂ« njĂ« nga kĂ«to kompani (madje edhe vetĂ«m nĂ«n rrethana tĂ« favorshme), para jush do tĂ« hapen shumĂ« mĂ« shumĂ« mundĂ«si se sa nĂ« fillim tĂ« pĂ«rgatitjes suaj. Dhe gjithçka qĂ« ju nevojitet nĂ« kĂ«tĂ« rrugĂ« Ă«shtĂ« njĂ« qĂ«llim, kĂ«mbĂ«ngulje dhe kohĂ«. Ju uroj suksese đ
Burimi: habr.com
