Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2011-10-06 13:41:21.
Revizia anterioară   Revizia următoare  

Sfaturi pentru interviuri de programare

Cosmin
Cosmin Negruseri
06 octombrie 2011

Postul cum sa scrii un CV a trezit interes, continui cu sfaturi pentru interviuri tehnice. La Google o parte a jobului oricarui inginer e sa intervieveze cativa candidati pe saptamana, asa ca in ultimii ani am ajuns sau dau mai mult de 100 de astfel de interviuri.

Studentii din state de la universitati bune pe langa faptul ca au profesori tari au si avantajul recrutarilor direct din campusul universitar. In sezonul de recrutari dau 5 - 10 serii de interviuri si sunt in forma. Romanii nu au luxul asta, desi anul trecut au fost Facebook si Google la recrutari in Bucuresti. Sfatul meu e sa luati interviurile tehnice in serios si sa va pregatiti cateva saptamani intens pentru ele. Pe vremea mea daca cautam Google Interview Questions nu gaseam nimic pe net, dar voi nu aveti nici o scuza sa fiti nepregatiti :P.

Nuantez putin ce am zis in postul cu CVul: daca ai facut o facultate de profil si ai note mari sau daca ai fost la concursuri de info sau de mate si ai facut bine la nivel national sau daca ai participat la proiecte open source sau daca ai multe proiecte personale sau daca ai facut deja internshipuri in facultate ai sanse bune sa ajungi la faza de interviuri. E mai bine sa nu ai doar una dintre cele enuntate in CV dar deja cu una ai sanse bune. Alta chestie importanta e sa fi recomandat de cineva din firma, chiar daca ai un CV care nu arata extraordinar, o recomandare interna aproape sigur iti asigura un interviu.

In Bay Area interviurile tehnice sunt standardizate. Cele la Facebook, Google, Microsoft, Twitter, Quora, Palantir sunt similare. Ele dureaza 45 de minute si contin intrebari de coding care trebuie rezolvate pe tabla, intrebari de algoritmica sau intrebari de system design. Pentru studenti se insista pe algoritmica si coding, pentru ca inca nu au asa 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
Adevarul trist e ca un curs in facultate nu e de ajuns ca sa te simti confortabil in nici un domeniu, chiar daca ai luat 10 la examen. Aici cei care au facut la viata lor concursuri de programare au un avantaj clar. Dar pentru un om pasionat, care nu a avut interes sau contacte cu olimpiada, putin antrenament ajuta foarte mult. Daca ai probleme sa zici pe loc complexitatile la operatiile unui hash table, unui binary search tree, unui heap sau cum functioneaza o cautare in latime atunci trebuie sa mai muncesti. Recomand sa parcurgi o carte de algoritmica cu multe probleme: Problems on algorithms E gratis si e mult mai scurta decat Cormen.
Oricarui inginer ii e util sa aiba o intelegere mai clara a algoritmilor, a structurilor de date si a complexitatii lor. Sfatul e bun si pentru cei ce nu sunt interesati de interviuri.

Coding
Aici apar probleme in majoritatea interviurilor. Problemele de coding din interviu nu sunt foarte grele pentru ca trebuie terminate in 10-20 de minute de un programator decent. Fiecare candidat variaza la viteza si corectitudinea codului chiar in aceiasi zi, mai ales sub presiunea interviurilor. Fie el olimpic international, sau programator senior fara putina incalzire sunt sanse bune sa busheasca. Eu le recomand prietenilor sa intre pe Topcoder si sa faca 30 de concursuri in practice room, concursuri de divizia a 2-a. Problemele de acolo sunt foarte apropiate ca dificultate ca problemele de coding de la companiile din state. Cand incepi sa rezolvi toate 3 problemele din un concurs consistent in 75 de minute inseamna ca esti aproape de interviuri. Ar fi misto sa pot recomanda probleme de pe infoarena dar din pacate platforma infoarena e prea mult formata de si pentru olimpici care vor sa participe la concursuri internationale. Astfel nu adreseaza prea bine nevoia de a iti testa viteza si corectitudinea la probleme ceva mai simple.

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 guilde 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.

Bafta mare si daca aveti intrebari va raspund in comentarii.

Categorii:
remote content