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

Intrebarile de coding nu sunt dificile. Ele trebuie terminate in 10-20 de minute de un programator decent. Dar sub presiunea interviului si ingineri seniori sau olimpici internationali fac greseli.

Fa 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 pregatit.

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
  • 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 Don 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.

Categorii:
remote content