Interviu la Google (I)

Un e-mail ciudat

google_logo_vechiÎn seara zilei de 6 decembrie 2007, când tocmai sărbătoream pe Sfântul Nicolae, primesc un e-mail ciudat de la o adresă cu nume de utilizator având drept domeniu google.com. O tânără (cu nume turcesc şi care semna ca fiind un director zonal de resurse umane) îmi spune că a găsit pe Internet profilul meu şi că de o vreme încearcă să mă contacteze şi să mă întrebe dacă nu aş dori să mă alătur echipei Google. Iniţial am crezut că e o gluma, vreo surpriză făcută de vreun prieten informatician, numai bună de trimis de Sfântul Nicolae. La o analiză mai atentă a sursei mesajului, mesajul chiar venea de la Google şi era o invitaţie de a aplica pentru această companie, în sediul lor din Zurich. Google Zurich este cel mai mare şi mai important centru Google din Europa, al doilea ca importanţă după cel din Mountain View, California.

Deşi niciodată nu m-am gândit să lucrez în altă parte decât în domeniul academic, am zis să răspund invitaţiei, aşa că le-am trimis CV-ul şi ulterior am primit un răspuns privind un interviu telefonic, pe care urma să mi-l ia un recruiter („recrutator”). Mi se părea că este o minune, nu-mi venea să cred că o companie aşa importantă din domeniul IT să mă contacteze tocmai pe mine. Deşi nu mă gândeam să plec din învăţământul superior, atunci am hotărât să intru în joc. Niciodată nu aplicasem pentru vreo firmă sau pentru vreun alt job, aşa că am zis că nu pot să dau cu piciorul la o asemenea invitaţie. Mă interesasem că pentru Google se trimit zilnic 1300 de CV-uri şi doar 1% din ele sunt luate în considerare.

Primul interviu – ce post ar fi mai potrivit

Recruiterul mă contactează prin e-mail în ianuarie 2008 şi, după un schimb de mesaje stabilim o zi pentru un interviu scurt (20-30 minute), netehnic, prin Skype. Până atunci foloseam doar Yahoo Messenger pentru discuţii online, aşa că mi-am instalat Skype şi am rămas plăcut surprins de facilităţile pe care le are. Cu engleza mă descurc eu bine, dar pentru a evita emoţiile, am apelat la colega de la Litere Ioana Boghian (pe atunci Ioana Nica), să mă asiste şi, eventual, să mă ajute, atunci când voi da interviul. Dacă mă întreabă recruiterul ceva şi eu nu mă voi descurca? Dacă voi dori eu să-l întreb sau să-i zic ceva şi nu voi găsi cuvintele potrivite, din cauza emoţiilor?

La ora şi ziua stabilite, recruiterul mă contactează prin Skype şi începe să mă întrebe câte una, alta despre mine, probabil ca să-şi facă o idee despre ce-mi doresc, cum mi-ar plăcea să lucrez şi, în mod evident, dacă stăpânesc limba engleză. Ioana era lângă mine, dar întrebările şi ideile mele şi ale recruiterului curgeau foarte repede, încât nu mai apelam la ea, ca să mă ajute. Recruiterul mi-a vorbit mult despre atmosfera de lucru de la Google Zurich, despre faptul că este o companie americană într-un spaţiu elveţian, dar cultura companiei este tipic americană, că sunt români pe acolo, că toţi sunt tineri şi formează o echipă, că sunt automate de cafea peste tot şi nu costă nimic… Apoi a insistat pe faptul că există săli de sport şi de distracţie, jocuri mecanice şi altele, pentru recreere, scaune pentru masaj şi, după cum se ştia, mâncarea era gratuită.

Grozav, mi-am zis, dar când auzi că toate sunt grozave, probabil că ceva trebuia să scârţie. În fond, chiar şi la puşcărie mâncarea e gratuită :) În fine, am trecut cu bine de acest interviu şi am stabilit pentru începutul lui februarie un prim interviu tehnic, în care urma să mi se testeze cunoştinţele de informatică, mai precis de algoritmi şi structuri de date. Jobul potrivit era de software engineer, adică programator.

Primul interviu tehnic, prin telefon

Înaintea primului interviu tehnic, am fost rugat să-mi creez un cont pe Google Docs, un sistem ce permite elaborarea de documente în comun. Astfel, urma să scriu fragmente de cod, iar intervievatorul (care era tot un googler) să îl poată vedea sau să poată interveni asupra lui, pentru eventuale corecturi.

Am căutat (pe Google :)) ce au fost întrebaţi alţii la asemenea interviuri, pentru postul de programator. Am observat atunci accentul care se punea pe algoritmi şi structuri de date şi nu pe tehnologie sau limbaje de programare. Mi-am dat seama atunci cât de important este că la liceu, la profilul matematică-informatică, se studiază tehnici de programare, structuri dinamice de date şi algoritmică multă, ca la olimpiade se dau problemele de gândire care se dau şi cât de importantă este matematica pentru un programator de la Google. Am observat că şi alte companii folosesc acelaşi gen de întrebări, de exemplu Yahoo, IBM sau Amazon.

În ziua şi la ora stabilită eram iar (cu Ioana alături) în faţa calculatorului şi de data aceasta cu telefonul Romtelecom în mână. M-a sunat o tânără (româncă!) de la Zurich, despre care am aflat ulterior că, înainte de a lucra pentru Google Zurich, a lucrat ca asistentă universitară în Universitatea Tehnică din Zurich, care este o universitate de prim rang din Elveţia şi din Europa. Aşadar, nu aş fi fost primul care aş lucra la Google, plecând din mediul academic.

Au urmat 3 întrebări de algoritmică, probleme foarte drăguţe, cu „şmecherii” de gândire în ele. Google nu-mi permite să vă dezvălui conţinutul problemelor, pot doar să vă spun că sunt probleme cu vectori, rezolvabile simplu, după ce te gândeşti bine, probleme de algoritmi şi structuri de date. Nu trebuia să scrii rezolvarea într-un limbaj de programare neapărat, puteai să o descrii, telefonic, prin cuvinte. După ce dai o soluţie, eşti întrebat ce complexitate are algoritmul tău şi dacă nu ştii ce e aia complexitatea în timp a algoritmilor sau nu ştii să o stabileşti, pici automat la interviu. Soluţia găsită de mine a fost optimă, avea O(n) şi goggleriţa a trecut la o altă problemă, ceva mai complicată. Aici trebuia să folosesc quick-sort pentru o complexitate în timp de O(nlogn) şi am rezolvat cu bine şi această problemă. Am înţeles ulterior că există şi o solutie mai rapidă, în O(n), dacă foloseam o tabelă hash bine gândită. Oricum, doamna care mă intervieva a fost mulţumită de răspuns şi a trecut la o a treia problemă, de data aceasta am fost întrebat cum gândesc o arhitectură pentru a rezolva o anumită problema în care apăreau mai multe calculatoare. Trebuia dat un râspuns pur descripitiv, complet netehnic şi făra detalii de implementare. După interviul propriu-zis, care a durat cam 45 minute, a urmat o parte de 15 minute în care am discutat liber despre viaţa şi munca la Google şi despre cât de bine este acolo. Aceste 15 minut au putut fi „petrecute” în limba română, nu în engleză.

Al doilea interviu tehnic, prin telefon

Am primit în 5-6 zile un răspuns pozitiv, cum că am trecut de primul hop şi mi s-a propus un al doilea interviu tehnic, în circa 7 zile. De data aceasta urma să fie un interviu mult mai greu şi, dacă l-aş fi trecut, aş fi fost invitat la Zurich să văd campusul şi să fiu intervievat la faţa locului, de mai mulţi googleri şi să iau şi o masă gratuită acolo. Sa mă simt pentru o zi un googler :)

De data aceasta am început să revăd anumite aspecte din algoritmică şi tehnici de programare, structuri dinamice de date şi alte chestii pe care, sincer, le-am mai uitat de când am rupt legătura cu profesorii şi elevii de liceu, care la olimpiadele de informatică judeţene, naţionale şi internaţionale pregătesc asemenea probleme.

La al doilea interviu tehnic telefonic problemele au fost cam în aceeaşi manieră, de fiecare dată mi se cerea să precizez complexitatea în timp a algoritmului şi dacă pot veni cu o variantă mai bună. De data aceasta a trebuit să rezolv o problemă clasică, pe care o ştiam de când predam la liceu şi m-am descurcat bine. Am scris în cod în limbajul C rezolvarea problemei şi recrutatorul a putut vedea şi chiar interveni. Deşi m-a corectat, eu l-am corectat înapoi, pentru că el nu înţelesese ce doream eu să fac. A doua problemă a fost mai dificilă, dar am reuşit să dau un răspuns mulţumitor. Cei de la Google, când te intervievează, te pot întreba orice doresc ei. Nu ai nicio tematică specială de pregătit, pe ei îi interesează doar să vadă cum gândeşti.

Vreo 10 zile am aşteptat cu sufletul la gură să văd dacă am trecut testul, că, la urma urmei, puteam să mă aleg măcar cu o excursie gratuită până la Zurich. Dacă treceam de acest interviu, urma să fiu invitat la un interviu on-site, adică la faţa locului, iar cheltuielile de deplasare cu avionul, de şedere la hotel şi de masă urmau să fie suportate de ei.

În toată perioada dintre interviuri ţineam legătura cu recruiterul, care îmi vorbea despre nivelul ridicat de civilizaţie din Zurich, despre cât de curat este oraşul, cam care sunt preţurile caselor pe acolo, coşul zilnic şi alte lucruri şi chiar îmi spunea că imediat ce voi primi oferta de angajare, va merge cu mine să găsim un apartament confortabil şi bun în care să pot sta chiar cu întreaga familie.

Acasă era forfotă mare, dar eu eram foarte tensionat pentru că, pe de o parte nu mă simţeam compatibil cu munca dintr-o companie, pe de altă parte mi-aş fi dorit să plec acolo.

Ce a urmat? Vă voi spune în curând…

Bogdan Pătruţ