Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2011-10-07 03:42:07.
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 si continui pe tema asta. La Google o parte a jobului oricarui inginer e sa intervieveze cativa candidati pe saptamana si sa recomande programatori buni, astfel in ultimii ani dat peste de 100 de interviuri. Am cateva idei adunate de-a lungul timpului si e cazul sa le pun si in scris.

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 cand ma uitam dupa 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. Ai sanse bune sa ajungi in faza de interviuri 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

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 treci prin 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. Chiar daca problemele par abordabile e diferenta mare intre avea o idee si a o aborda corect sub presiune. 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 20 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 problemele consistent esti aproape de nivelul bun pentru 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:

  • 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.
  • CVuri decente e scris de Yonatan Zunger, inginerul ce e responsabil de directia tehnica a proiectului Google Plus.
  • Hiring process Dodge, angajat Google explica procesul de angajare pentru full time.

Am vazut ca sfaturile astea merg in practica, mai ales cel cu concursurile pe topcoder. Asa ca spor la munca si bafta mare!
Daca aveti intrebari va raspund in comentarii.

Categorii:
remote content