Interviu la Google (II)

Citeşte aici prima parte din articolul Interviu la Google

Cum rezolvă Google problemele

google_logo_vechiA trecut ceva timp de când am promis că voi spune ce a urmat după al doilea interviu tehnic, telefonic, pentru Google Zurich. După vreo două săptămâni, însă, într-adevăr am văzut că sunt (încă) destul de deştept, pentru că, într-adevăr, am fost invitat la un interviu on-site (la faţa locului). M-a contactat recruiterul, prin e-mail şi m-a felicitat că am trecut cu brio acest al doilea interviu şi dacă putem stabili o perioadă, cam peste vreo două săptămâni în care să vin la Zurich. Dacă ar fi fost după mine, aş fi aşteptat ceva mai mult, timp în care să mă mai pun la punct cu unele tehnici de programare sau algoritmi sofisticaţi. Am căutat pe Google cam ce fel de probleme ar putea să mă întrebe acolo, am contactat un vechi prieten, care a lucrat pentru o vreme la Google în Mountain View, iar el m-a testat cu o serie de probleme de algoritmică. La aceste probleme predominau soluțiile cu tabelele de dispersie, sortările rapide şi rezolvarea de probleme în timp liniar. De pildă, una din probleme avea o aplicabilitate foarte directă la Youtube. Am constatat că cei de la Google au un mod foarte inventiv de a rezolva unele probleme, care aparent se rezolvă în O (nxn), dar ei le rezolvă chiar în O(n), dacă trebuie să le rezolvi de mai multe ori. La unele probleme la care eu aveam o soluţie în O(log(n)) ei vin adesea cu o soluţie în O(1), încât uneori te întrebi dacă ceea ce se predă la algoritmică prin liceu sau facultate sunt cele mai avansate metode.

Adesea, fiecare problemă ce trebuie rezolvată de Google are o anumită particularitate, iar noi de multe ori aplicăm orbeşte un algoritm, bine învăţat, fără să studiem bine particularităţile acelei probleme şi să observăm că, deşi algoritmul este foarte bun, poate că în acele cazuri speciale există ceva şi mai bun.

Idei furate sau coincidenţe?

Dorind să le fac o impresie bună, le-am trimis şi câteva idei de-ale mele, din preocupările mele din domeniul limbajului natural, publicate sau care au fost ulterior publicate în articole de reviste sau la conferinţe internaţionale. Recruiterul m-a încurajat în acest sens, iar eu m-am gândit că e bine să trimit o serie de materiale reprezentative ale ultimelor mele preocupări academice, ca să fac impresie bună. Ulterior m-am convins că nu le sunt de mare folos, ei preocupându-se mai mult de problemele de bază ale informaticii (căutare şi ordonare) sau arhitecturi generale distribuite şi mai puţin de inteligenţa artificială. Pe de altă parte, mi-am asumat riscul ca să-mi fie furate ideile şi un googler să şi le însuşească, ca fiind ale lui. De fapt, Google e o firmă foarte isteaţă din punct de vedere juridic, au nişte contracte de confidenţialitate foarte deştepte, aşa încât am fost nevoit să semnez două asemenea contracte şi să le trimit lor. Unul se referea la faptul că nu voi spune ce probleme mi-au dat la interviuri (aşadar nu vă voi spune!), iar al doilea că sunt de acord să nu am pretenţii asupra a ceea ce le-am trimis benevol, dacă se întâmplă ca ei să descopere sau să inventeze ceva similar lucrărilor mele. E normal, din moment ce ei cercetează permanent şi uneori e posibil ca ideile să se suprapună :). Cu alte cuvinte, dacă mâine o să vedeţi vreo tehnologie implementată de Google, să nu fiţi convinşi că au făcut-o angajaţii permanenţi, ci poate vreun candidat intervievat.

În fine, am fost pus în legătura cu o altă persoană, o domnişoara care s-a ocupat de rezervarea biletelor de avion: mi-a trimis nişte variante din care să aleg, atât pentru dus, cât şi pentru întors şi mi-a spus că pot veni cu soţia şi că pot sta încă o zi sau două pentru a vizita oraşul. Ei puteau să-mi rezerve camera la hotel pentru două nopţi sau mai multe, dar ei îmi plăteau doar o noapte de cazare pentru o cameră (double) şi drumul cu avionul dus-întors doar pentru mine. Am ales să merg singur, după ce am discutat în familie problema. Mai ales că domnişoara de la Google a ales companiile aeriene şi nu unele foarte ieftine, ci Swiss Air şi Lufthansa. Am primit un ultim telefon în ziua de 10 martie şi mi s-a spus că totul este OK, interviul urma să fie pe 14 martie, iar eu să ajung acolo pe 13 martie.

Continuă să citești Interviu la Google (II)

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.

Continuă să citești Interviu la Google (I)

Să ne jucăm cu Scratch!

scratch-logoNici mai știu câți ani sunt de când m-am supărat pe matematică. Flirtând eu ba cu româna, ba cu muzica, ba cu… ei, păi nu a mai mers așa și m-a pus să decid. Și-am ajuns în liceu la filologie, lăsând-o pe ea să umple inimile altor elevi, mult mai fideli și mai îndrăgostiți. Sora ei, informatica, pesemne că era mai nestatornică. Îi plăcea să bată pe la ușile altor specializări și să intre în viața studenților. A vrut să mă tulbure și pe mine, dar între timp înțelesesem durerea matematicii și-am devenit și eu fidelă, ca să nu-mi supăr iubitele științe umaniste. Așa că gata cu flirtul, domn’le! Să mergem la Facultatea de Litere! Asta a fost ca și cum aș fi mers la starea civilă să fac contract de căsătorie cu limba și literatura… După a început căsnicia, căci mi-am luat un job la care, iată… scriu.

Dar știți că viața devine monotonă, inima poftește aventură, iar omul mai calcă strâmb. Și uite așa mi s-a strecurat în minte ispita… și tot așa am invitat-o și-n casă: pe nimeni alta decât pe eterna nestatornică, informatica! Sub pretextul unei vizite în interes de serviciu, l-a luat de mânuță pe Robert, un tânăr student al Facultății de Științe din Bacău, și l-a adus la ușa mea însoțit de o aparatură demnă de un respectabil informatician.

Robert e amorezat pe vecie, având o minte ageră prin care circulă numai calcule, formule, cifre și coduri,RobertSpataru așa cum mișună în capul unui filolog amețit de lectură versurile lui Eminescu. Băiatul e pus pe treabă. Știți vorba aia cum că omul, ca să fie fericit în viață, trebuie să facă ce-i place. Ei bine, el a cam atins idealul, căci pasiunea i s-a convertit în drumul sigur al carierei. Deja implicat în multe proiecte, căutat de angajatori, voluntar la EduSoft, student eminent… tânăr, frumos, deștept (dar fetelor, tot informatica e prima iubire)… Robert Spătaru se pregătește să treacă în anul al II-lea de facultate, când va pleca în Emden, Germania, cu o bursă de studiu Erasmus. Deși e mai mic decât mine cu doi ani, băiatul ăsta e un om mare. Are o minte sclipitoare ce te eclipsează cu inteligența sa rapidă. Dacă vreo clipă l-am privit ca pe un adolescent oarecare, iată că Robert se afla acum lângă mine, inspirându-mi admirație și respect. Știam că niciodată nu voi ajunge să înțeleg tot ceea ce știe și va ajunge să știe el.

Continuă să citești Să ne jucăm cu Scratch!

Personalităţi din lumea informaticii (I)

AlanTuring Alan Mathison Turing (23 iunie 1912 – 7 iunie 1954), cunoscut în zilele noastre ca părintele informaticii moderne și al inteligenței artificiale, a fost un informatician, matematician, logician şi criptanalist britanic. Alan Turing a inventat un dispozitiv (mașina Turing) bazat pe lucrul cu cifrele 0 şi 1, care a formalizat conceptul de algoritm şi calcul. Citeşte mai mult aici…
Ada_Lovelace_Chalon_portrait Ada Lovelace (nascută Augusta Ada Byron, la 10 Decembrie 1815), considerată primul programator al lumii, a fost fiica dintr-un scurt mariaj a poetului romantic George Gordon Byron sau mai pe scurt, Lord Byron și Anne Isabella Milbanke, care a fost ea însăși un matematician expert într-o epocă în care femeile nu aveau astfel de practici. Citeşte mai mult aici…

Continuă să citești Personalităţi din lumea informaticii (I)

Epilog (nepublicat) la un manual din 1998

În 1998 publicasem la Editura Teora un manual de Programarea calculatoarelor electronice bogdan_tanarsi stiind ca nu toti copiii de la profilul informatica inteleg programarea, m-am gandit sa includ la finalul cartii un epilog, dar editorii au spus ca nu da bine. Peste 10 ani de la aparitia manualului, am trimis acest epilog lui Cristian Strat de la Infoarena.ro, care l-a publicat la adresa http://www.infoarena.ro/blog/epilog-bogdan-patrut. Mesajul meu a starnit multe discutii printre cititori. Mentionez ca Infoarena.ro este „o comunitate de tineri pasionaţi de informatică şi programare.” „Învăţăm împreună participând la concursuri online de programare, citind ştiri şi articole despre informatică sau discutând pe forum.”

Redau mai jos textul epilogului meu.

Continuă să citești Epilog (nepublicat) la un manual din 1998

Aplicatii în Delphi si Visual Basic

De multe ori am propus ca elevii sa fie introdusi in programare prin alte limbaje si alte teme decat cele aplicatii-delphi.p aplicatii_vb_marefolosite acum in liceu: limbajul C si probleme de algoritmica, metode de programare etc. De multe ori ele indeparteaza pe multi elevi de programare si de informatica si, desi sunt elevi la profilul de matematica-informatica, nu ajung sa-si doreasca sa dea bacalaureatul la informatica si nici sa opteze pentru o facultate de profil, cand ajung in clasa a XII-a. Evident, nu toti sunt cei facuti pentru informatica, dar e posibil ca  pe multi sa-i pierdem „pe traseu”, in timpul liceului, pentru ca, desi ei au potential, sunt bombardati cu probleme seci, in care tot felul de vectori si matrice sunt sucite si rasucite in fel si chip, aparent fara nicio noima.

Continuă să citești Aplicatii în Delphi si Visual Basic

Programare – particular si general, concret si abstract

pce_cursCazuri particulare si generale. De la concret la abstract si invers. Constante si variabile
• Concret si abstract
Un programator trebuie sa gandeasca abstract. Acest lucru este atat de important in programare, incat orice incercare de a invata sa programezi, fara a avea o gandire abstracta, este sortita esecului.
Cine nu poate intelege abstractiunile matematice din scoala generala sau liceu, de pilda, nu poate sa ajunga sa programeze (bine). Ca programatori, va trebui sa realizati diferite programe pentru oameni foarte diferiti ca nivel cultural, pregatire.

Continuă să citești Programare – particular si general, concret si abstract