Acest articol este destinat celor care încearcă să-și înceapă cariera în programare sau se pregătesc să intervieveze pentru munca lor de vis. Ca cineva care a participat ambele părți ale mesei de intervievare, Înțeleg ce simți să fii intervievat.

Acest listă neexhaustivă de întrebări mi-au plutit tot timpul prin minte.

  • „Ar trebui să vorbesc prin codul meu?”
  • „Cât de des ar trebui să comunic cu intervievatorul?”
  • „O, Doamne, am uitat să instanțiez variabila mea! Sunt condamnat ?! ”
  • „Ce crede intervievatorul despre răspunsul meu?”
  • „Este în regulă dacă fac asta?”

… Și lista continuă …

Este o experiență foarte înfricoșătoare. Este foarte dificil. Și este extrem de greu să funcționezi în acest vid atunci când ești analizat pentru fiecare lucru pe care îl spui și pentru fiecare lucru pe care îl scrii.

Interviezi pentru slujba ta de vis, lucru la care ai visat încă de la 12 ani. Și totul se rezumă la impresia cuiva pe care nu l-ai întâlnit niciodată în decurs de 60 de minute.

Lupta e real.

5 lucruri pe care trebuie sa le stiti intr un interviu
5 lucruri pe care trebuie să le cunoașteți într-un interviu de programare

1. Gândește-te mereu înainte

Adesea, veți auzi un intervievator întrebându-l: „OK, cred că arată bine. Acum, cum ați îmbunătăți acest cod? ”

Aceasta este o întrebare criminală. Și asta pentru că nu este doar un material de umplutură pentru a trece timpul. Intervievatorul încearcă să evalueze modul în care vă gândiți la:

  • calitatea codului
  • unele îngrijorări / blocaje care nu au fost ridicate în sesiunea de planificare a algoritmilor
  • cum ați scări soluția la îndemână.

Doar pentru că ați rezolvat problema nu înseamnă că veți primi automat o ofertă.

De exemplu, când te uiți la această bucată de cod de mai jos, ce face? Cum l-ați îmbunătăți? Ce ar putea provoca ruperea acestuia?

Anunță-mă în comentariile de mai jos. Mi-ar plăcea să vă aud gândurile.

1611176347 149 5 lucruri pe care trebuie sa le stiti intr un interviu
Codul Python pentru a face X

Surprinde?: Posibilitatea de a veni cu o soluție de lucru este bsunt minime pentru a fi luate în considerare pentru acest post. Taceste întrebări sunt teste de competență de bază. Ceea ce separă candidații buni de mari este abilitatea de a gândi dincolo de ceea ce este necesar.

Ce înseamnă asta într-o sesiune de codare

Gândiți-vă la cazuri de margine, probleme de scalare, zone cu probleme. Gândiți-vă întotdeauna cu un pas înainte. Dacă utilizați o abordare recursivă, ce s-ar întâmpla dacă aveți un set mare de date? Dacă utilizați un algoritm de hash, cum faceți față coliziunilor? Cât de probabil se întâmplă acest lucru și care este cel mai rău scenariu?

2. Există mai multe răspunsuri

Există întotdeauna mai multe modalități de a rezolva o problemă de interviuri de programare. Mereu. Există, de obicei, mai multe modalități de abordare a unei probleme, dintre care unele ar putea să nu fie optime.

Una dintre preferatele mele Youtuberi tehnologici m-a învățat că un interviu de codare este un exercițiu mental pentru a vedea cum gândește un candidat. Din perspectiva intervievatorului, nu caut să verific dacă știți care este răspunsul corect. Da, este important să puteți scrie o soluție de lucru, dar nu este singurul lucru.

Mai mult decât atât, caut cât de inteligentă este această persoană, cum derivă soluția și la ce alte soluții creative s-ar putea gândi această persoană.

Un exercițiu de programare pentru a ilustra punctul meu de vedere:

Combinați două liste conectate sortate. (Este legat de Leetcode dacă doriți să încercați să rezolvați). Practic, puteți aborda acest lucru în mai multe moduri:

  1. Puneți toate nodurile într-o matrice și apoi sortați-le. Apoi, creați un pointer și conectați fiecare element din matrice.
  2. Îmbinați-le folosind manipularea indicatorului. Comparați-le pe cele două, urmărind care este mai mic, apoi întoarceți rezultatele la final.

Ce alte moduri te poți gândi?

3. OOP nu este mort

Programarea orientată pe obiecte nu este moartă. Este o relație de iubire-ură pentru unii oameni, totuși este o abilitate valoroasă. Aceasta este una dintre abilitățile fundamentale – o tehnică de programare pe care fiecare programator ar trebui să o cunoască.

Mulți candidați intră într-o problemă de programare fără să se gândească la simplificarea codului. Obișnuiam să fiu în această grămadă și, desigur, o mai fac uneori.

Cu toate acestea, abilitatea de a transforma problemele complexe în bucăți mai simple și mai ușor de gestionat prin programarea orientată pe obiecte este o abilitate rară și prețuită.

Scrierea codului pentru ca computerele să fie înțelese este ușoară. Scrierea codului pentru oameni este dificilă.

4. Creați-vă relua

Imaginați-vă că vă îndreptați spre noaptea balului cu persoana din visele voastre și vă prezentați la pragul lor în flip flops și un tricou fără mâneci.

5 lucruri pe care trebuie sa le stiti intr un interviu
Credite către Futurama și Imgflip.com

CV-ul dvs. este cartea dvs. de vizită. Este prima impresie a companiei despre tine.

Dacă începeți să căutați un loc de muncă, atunci primul lucru pe care ar trebui să-l faceți este pregătește un CV grozav. Asta este primul lucru care este adesea trecut cu vederea de către cei care caută un loc de muncă și, probabil, este cel mai scăzut fruct agățat.

Văd mulți candidați care au petrecut săptămâni, dacă nu luni, pregătindu-se pentru interviurile de codificare. Însă timpul pe care și l-au petrecut în elaborarea CV-ului lor devine mai ușor.

5. Comunicați devreme și comunicați des

Când am început să intervievez, greșeam din partea excesiv de comunicare. Acest lucru însemna că încercam să vorbesc prin fiecare linie de cod pe care o scria, chiar dacă era o simplă buclă pentru.

Nu sunt genul care este capabil să vorbească și să gândească în același timp. Unii oameni sunt înzestrați în felul în care pot gândi cu voce tare, dar eu nu pot.

Comunică de câte ori ai nevoie. Am încercat să comunic mai devreme și des. Ori de câte ori era o problemă, o ridicam la intervievator și îi anunțam. M-a ajutat să stabilesc dacă mă îndrept în direcția corectă și să mă îndrept corect dacă nu eram.

Un interviu de programare caută atât de greu și abilități ușoare. Lipsa uneia sau a celeilalte înseamnă un nu categoric. Pentru informații suplimentare, am scris un articol mai detaliat despre cum să îmbunătățim abilitățile soft ale unui inginer de software aici.

Nu vă presați să vorbiți prin fiecare linie de cod. Dacă utilizați câteva caracteristici ezoterice ale unui limbaj de programare, îl puteți explica odată ce ați terminat de scris totul.

Ce înseamnă asta într-o sesiune de codare

Dacă ați stabilit deja o modalitate de rezolvare a problemei, atunci puteți informa politicos intervievatorul că vă veți scufunda în scrierea codului. Nu simțiți că trebuie să explicați fiecare linie de cod.

6. [Extra] Folosiți abstractizarea

Iată un alt sfat suplimentar pe care l-am luat și care mi-a ajutat enorm când am intervievat: folosiți abstractizarea pentru metode complexe.

Folosirea abstractizării pentru a ascunde detaliile complicate de implementare nu înseamnă că împingeți detaliile murdare sub covor. Înseamnă că înțelegi mai puțin este mai mult. Amintiți-vă, scrieți cod pentru ca oamenii să înțeleagă. Arătând o judecată bună aici, cu siguranță veți câștiga puncte suplimentare de brownie cu intervievatorul.

Ce înseamnă asta într-o sesiune de codare

Să comparăm și să contrastăm aceste două bucăți de cod:

1611176348 366 5 lucruri pe care trebuie sa le stiti intr un interviu
Traversează o matrice

În opinia mea, cred că partea dreaptă arată mult mai curată și mult mai ușor de înțeles. Pot apoi să îmi iau timp să pun în aplicare getNeighbors, sau isEmpty, în funcție de ceea ce mi se solicită.

Important este că abstracția a contribuit acum la păstrarea codului meu curat, ușor de citit și ușor de înțeles. Cui nu-i place să-și ia tortul și să-l mănânce și el?

De ce vreau să împărtășesc experiența mea?

Am reușit cumva miraculos să depășesc obstacolele și să-mi găsesc drumul spre locul de muncă de vis. Acesta nu este în niciun caz modul meu de a mă lăuda. Nu este deloc intenția mea.

Vreau cu adevărat să-i ajut pe alții ca mine care se luptă să își obțină locul de muncă de vis. Am trecut prin asta. Înțeleg greutățile, transpirația și lacrimile pregătirii pentru un interviu de programare. Cred că lumea nu este un joc cu sumă zero – cu cât sunt mai mulți oameni care se descurcă mai bine în viață, cu atât societatea noastră devine mai bună și cu atât vom fi mai prosperi cu toții. Este o situație câștig-câștig.

Sperăm că aceste sfaturi pot ajuta un alt căutător de locuri de muncă! Mult noroc! ?

Dacă ți-a plăcut acest articol, iată câteva alte articole recomandate pe care le-am scris:

Resurse și instrumente pe care le recomand

  • Elemente de programare a interviurilor: Excelent pentru probleme mai dificile de codare
  • Cracking Interviu de codare: Excelent pentru acoperirea CS de bază
  • O nota: Folosesc acest lucru pentru a stoca toate fragmentele de cod
  • Evernote: Pentru orice altceva
  • CodeRunner: Îmi place această aplicație Mac! Am folosit acest lucru de mai multe ori pentru a rula scripturi / funcții Python ad-hoc și funcționează uimitor de bine. ?
  • Jobscan: Un prieten conduce această companie. Am auzit multe lucruri interesante despre asta și ar trebui să le încercați pentru instrumentul lor de screening pentru CV.
  • Refdash: Condus de o grămadă de foști googeri. Calitatea interviurilor simulate aici este. Intervievatorii sunt foști googeri. Vă recomand cu încredere să le încercați.
  • CodePath: O organizație non-profit care ajută oamenii să se pregătească pentru o carieră în tehnologie. Nathan și Tim sunt oameni minunați și am învățat multe de la ei. Comunitatea este foarte utilă și toată lumea este dispusă să dea o mână de ajutor.
  • Markeri în puncte fine: Aduceți-le la interviu. Le recomand cu drag!

Zhia Chong este inginer software la Twitter. Lucrează în echipa de măsurare a anunțurilor din Seattle, măsurând impactul anunțurilor și rentabilitatea investiției pentru agenții de publicitate.

Îl poți găsi Stare de nervozitate și LinkedIn.