Revizia anterioară Revizia următoare
Sfaturi pentru interviuri de programare
Postul cum sa scrii un CV a trezit interes si continui pe tema asta. Ca inginer la Google am trecut deja prin cam 100 de interviuri, asa că m-am gândit să continui si cu niste sfaturi despre interviuri în sine.
In primul rand, este foarte util sa fi incalzit. În US se recrutează mult în campus asa că studentii au experienta interviurilor de la mai multe companii. În Romania nu există luxul ăsta, desi anul trecut au fost Facebook si Google la recrutari in Bucuresti.
Luati interviurile tehnice in serios pregatiti-va cateva saptamani intens pentru ele. Dacă cautati “Google Interview Questions” se găsesc suficiente resurse pe net, intrebari deja banate dar care sunt un exemplu excelent de încălzire.
In faza de interviuri ajungi foarte probabil daca ai una sau mai multe dintre urmatoarele:
- facultate de profil si note mari
- concursuri de info sau de mate si ai facut bine la nivel national
- participari la proiecte open source
- multe proiecte personale
- internshipuri
O recomandare interna iti asigura un interviu aproape sigur, chiar daca CVul nu e foarte bine facut.
In Bay Area interviurile tehnice sunt standardizate. Facebook, Google, Microsoft, Twitter, Quora, Palantir, toate au interviuri similare.
Un interviu dureaza 45 de minute si contine intrebari de coding care trebuie rezolvate pe tabla, intrebari de algoritmica sau intrebari de system design. Pentru studenti sau proaspat absolventi se insista pe algoritmica si coding, pentru ca ei nu au multa experienta practica.
In general poti coda in ce limbaj iti place daca pe fisa postului pe care aplici nu se specifica un anumit limbaj.
Algoritmica
Ca inginer e important sa ai o intelegere o intelegere clara a algoritmilor, a structurilor de date si a complexitatii lor.
Din pacate cursurile din facultate nu sunt de ajuns ca sa te simti confortabil in nici un domeniu, chiar daca ai luat 10 la examen. Asa că ai două variante.
Unu: concursurile de programare. Dacă ai trecut prin olimpiade ai deja un avantaj. Multe din problemele de la olimpiade sunt pe acelasi stil (si mult mai grele :-) ).
Doi: antrenamentul ajuta foarte mult. Treci prin o carte de algoritmica cu multe probleme: Problems on algorithms E gratis si e mult mai scurta decat Cormen. Scopul tau este să ajungi la un nivel la care poti analiza pe loc complexitatile la operatiile unui hash table, unui binary search tree, unui heap sau cum functioneaza o cautare in latime. Citeste chestiile de baza. Cauta pe cineva cu care sa discuti. Verifica daca intelegi si poti aplica notiunile invatate pe probleme noi.
Coding
Orice inginer trebuie sa demonstreze in interviu ca stie coda. Totusi asta e locul cel mai frecvent unde apar probleme.
Nivelul intrebarilor de coding nu e dificil. Ele ca trebuie terminate in 10-20 de minute de un programator decent. Dar sub presiunea interviului si ingineri seniori sau olimpici internationali fac greseli.
Faceti 20 de concursuri de divizia 2 pe Topcoder Problemele de acolo sunt apropiate ca dificultate de cele din interviuri. Cand incepi sa rezolvi problemele consistent esti aproape de nivelul bun pentru interviuri.
Nu se dau puzzleuri cum ar fi 'cate mingi de golf ar umple un autobuz' desi apar prin ziare, deci nu va pierdeti vremea cu asa ceva.
Ar mai fi o gramada de sfaturi utile: foloseste nume de variabile bune nu i, i1, ii1, x, y, z; sa scrii codul modular; sa citesti ceva de design; testing; threading etc, dar cel mai important e sa poti codezi o solutie corecta in un timp limitat.
Daca sunteti interesati de companii din state ma puteti contacta la cosminn at gmail.com
S-a scris mult pe subiectul asta asa ca in loc sa repet sfaturile altora va recomand ca lectura obligatorie:
- Cracking the coding interview carte foarte buna scrisa de o fosta inginera Google.
- Ea are si un video care simuleaza experienta unei bucati din un interviu
- Cum e sezon de recrutare, Palantir, un startup tare din zona a publicat recent doua articole foarte bune despre coding si algoritmica in interviuri
Interviul de algoritmi
Interviul de coding
Sfaturile lor sunt utile chiar in timpul interviului. Dar nivelul interviurilor la ei e dur si toate sfaturile astea nu te ajuta prea mult daca la chestiile fundamentale de care ziceam mai sus nu esti in forma.
- Guerilla guide to interviewing Joel(unul din fondatorii stackoverflow, fost Product Manager pe Excel, fondator a fogcreek si blogger cunoscut) scrie articolul de capatai al interviurilor tehnice, probabil inspirat din structura interviurilor Microsoft. Concluzia articolului este ca, daca esti angajator vrei sa te prinzi daca intervievatul e destept si productiv.
- Steve Yegge e un inginer Google care a lucrat inainte la Amazon. El avea un blog destul de popular si are niste articole foarte tari pe tema noastra.
- Cum sa prinzi un job la Google explica structura interviurilor, despre ce se testeaza si despre cum sa fi pregatit.
- Cinci intrebari esentiale pentru phone screen cand Steve angajat Amazon explica ce cauta de la candidati in faza de phone screen.
- Zece sfaturi pentru un CV mai ok.
- CVuri decente e scris de Yonatan Zunger, inginerul ce e responsabil de directia tehnica a proiectului Google Plus.
- Reteta pentru angajare la Google un manager care a lucrat la Microsoft si la Google crede ca a gasit reteta pentru a fi angajat la cele doua companii.
- Hiring process Dodge, angajat Google explica procesul de angajare pentru full time.
Sfaturile astea merg in practica. Asa ca spor la munca si bafta mare!
Daca aveti intrebari va raspund in comentarii.