
Interviurile de codificare tehnică sunt notorii de dificile – aproape la limită ca un test pentru cei nepregătiți. Uneori poate fi o sarcină descurajantă navigarea tuturor resurselor tehnice de pregătire a codificării disponibile online și s-ar putea întreba: există o singură carte / resursă care să se pregătească cel mai bine pentru interviurile de codificare tehnică?
Cel mai bun, este relativ desigur în acest caz. Dacă sunteți în căutarea unei cărți care să vă învețe cum să rezolvați orice întrebare de codare, să vă ghideze cum să proiectați ceva de genul Instagram, care ajunge la un miliard de utilizatori și vă face sandwich-ul în timp ce sunteți la ea, atunci această carte cu siguranță nu-i așa?
Dar pentru a vă lustrui cotletele tehnice și pentru a vă asigura că sunteți bine pregătit să faceți față provocărilor de programare într-un interviu, această carte se apropie de ea.
În recenzia de carte de astăzi, trec peste detaliu bun si rău a uneia dintre cele mai vândute cărți de pe Amazon pentru interviuri de codificare tehnică: Elemente de programare a interviurilor (aka EPI, și va fi menționat ca atare în restul acestui articol).

Despre ce este această carte?
EPI este o carte care se concentrează pe pregătirea pentru întrebări de interviu de inginerie tehnică software care sunt adresate în mod obișnuit la companiile de tehnologie. Dacă sunteți în căutarea unui post de inginer software, această carte va avea ceva pentru dvs.
EPI a fost scris de 3 oameni care au lucrat în unele dintre cele mai cunoscute companii de tehnologie din lume, precum Facebook, Google, Uber și Microsoft. Autorii au medii tehnice foarte puternice, iar acest lucru este demonstrat de accentul tehnic din conținutul cărții.
Cartea în sine este de natură extrem de tehnică și se scufundă profund în informatica fundamentală. Tipurile de întrebări tehnice de codare variază foarte mult de la manipularea șirurilor până la traversările grafice. Cartea oferă, de asemenea, sfaturi și trucuri concrete pentru rezolvarea anumitor tipuri de probleme de codare și include o foaie de cheats pentru a ajuta la întrebările tehnice.
Binele
Pe scurt: EPI este o carte extrem de tehnică, care este potrivită pentru oricine dorește să se pregătească pentru întrebări de codare tehnică care se învârt în jurul structurilor de date și algoritmilor.
Lucrurile care mi-au plăcut în mod special:
- are multe întrebări (300+) cu răspunsuri detaliate, comparativ cu o altă carte populară (Cracking The Coding Interview) care are doar 170+
- vine în 3 versiuni diferite: Java, Python și C ++. Potrivit pentru persoanele care doresc să folosească limba dorită
- are o foaie de cheats excelentă (capitolul 4) care rezumă toate tehnicile și structurile de date de care aveți nevoie
- acoperă în detaliu fiecare structură de date de care aveți nevoie, algoritmi pe care ar trebui să îi cunoașteți și tehnici pe care ar trebui să le cunoașteți într-un format simplu, ușor de înțeles
- acoperă subiecte tehnice relevante pe care s-ar putea să vi le întrebați într-un interviu de codificare, cum ar fi ce este TCP / IP, cum funcționează internetul și cum să captați relații între diferite entități în proiectarea schemelor
Acestea sunt câteva dintre punctele de nivel superior de care m-am bucurat în legătură cu cartea. Ceea ce eu într-adevăr bucura este că răspunsurile sunt foarte, foarte bine construit.
Răspunsurile adoptă adesea o forță brută / abordare simplistă a problemelor. Autorii oferă apoi exemple concrete despre cum puteți îmbunătăți abordarea forței brute. Cu fiecare iterație, autorii indică unde sunt limitele și cum le puteți rezolva cu optimizări incrementale.
De exemplu, EPI explică modul de detectare a unui ciclu într-o listă legată. Prima abordare: utilizați o hartă hash pentru a stoca fiecare nod pe care îl traversați, apoi verificați cu harta hash pentru a vedea dacă ați văzut-o. Aceasta face treaba, deși necesită spațiu suplimentar (așa-numita complexitate a spațiului O (N) și complexitatea timpului O (N)).
Apoi, cartea subliniază că spațiul suplimentar nu este necesar și sugerează că detectarea ciclurilor într-o listă legată se poate face fără spațiu suplimentar prin manipularea indicatoarelor.
Este nevoie de aceeași abordare pentru a explica aproape toate întrebările, astfel încât toată lumea să poată înțelege cum să treacă de la o soluție brută la una optimizată.
Pentru cineva care este ruginit și vrea să înceapă pregătirea pentru interviuri, EPI face o treabă excelentă – fiecare capitol începe cu un rezumat al structurii datelor sau algoritmului pe care îl veți învăța, de ce structura datelor este specială, care sunt punctele tari / punctele slabe ale structura de date menționată și ceea ce trebuie să luați în considerare.
Pe scurt, EPI este caietul pe care mi-aș fi dorit-o când mă pregăteam pentru interviuri tehnice. Aceasta este cartea pe care aș da-o unui prieten care vrea să se pregătească pentru interviuri tehnice – în afară de best-seller-ul meu curs de intervievare (Acing The Tech Interview), care pregătește orice candidat pentru întreaga experiență a interviului, de la pregătirea CV-ului, întrebări comportamentale până la modul de rezolvare a problemelor de codare în mod creativ. Cursurile se completează rapid, așa că rezervați-vă slotul aici astăzi.
Răul
EPI are și dezavantajele sale. Fiind o carte extrem de tehnică, acest lucru înseamnă că cartea se concentrează asupra întrebărilor de codificare.
Acest lucru, din greșeală, înseamnă că cartea este scurtă în ceea ce privește alte aspecte ale procesului de interviu tehnic, care sunt, fără îndoială, la fel de importante – negocierea ofertei, cum să scrieți un CV persuasiv, ce să faceți când primiți o ofertă, cum să se ocupă de întrebări comportamentale etc.
În plus, cartea intră în detalii profunde cu structuri de date și algoritmi, dar oferă doar o imagine de ansamblu la nivel înalt, până la a fi confuză din cauza lipsei de context, a diferitelor alte concepte importante, cum ar fi SQL, NoSQL, cum să proiectezi un schema adecvată pentru o aplicație simplă și multe altele.
Cartea acoperă proiectarea SQL explicând modul de structurare a tabelelor pentru a capta relațiile entității, dar nu explică mai multe despre JOIN-uri sau cum să interogăm tabelele în mod corespunzător. Cred că înțelegerea ce (Tabelele SQL) este la fel de important ca Cum (întrebări).
EPI are și un capitol despre proiectarea sistemelor, dar capitolul nu acoperă proiectele distribuite. Mi-ar fi plăcut mai bine dacă cartea ar fi descris în mai multe detalii ce sunt sistemele distribuite sau unde să găsesc mai multe informații despre acestea.
Este o carte bună pentru mine?
Dacă aveți ~ 40 de dolari de rezervă și un mare poftă de învățat, aș spune așa.
Cartea se vinde în medie cu 36 USD (există 3 versiuni). Această carte este foarte apreciată pe Amazon.com, cu o medie de 4,53 stele în toate cele 3 versiuni. Statisticile sunt după cum urmează:
Pe Amazon.com:

3 versiuni (începând cu 12 martie):
- Python: 169 de rating 4,3 av
- Java: 203 evaluări 4,6 ave
- C ++: 436 evaluări 4,7 ave
În total, au existat un total de 808 recenzii.
Unele dintre recenzii:
„.. cel mai bun algoritm / structură de date pe care am luat-o vreodată”
„Codul este de înaltă calitate, folosind nume variabile semnificative”
„Aceasta este o carte obligatorie”
Acum, ar trebui să-l cumperi?
cred ca EPI este una dintre cele mai bune resurse pentru a vă pregăti pentru interviurile de codificare tehnică. Indiferent de nivelul de experiență, există ceva pentru tine. Îmi place în mod deosebit să citesc cartea pentru explicațiile sale clare și concise și folosesc această carte ca referință în cursul meu de programare.
Dacă doriți toate structurile de date, algoritmii pe care trebuie să îi cunoașteți într-o singură carte ușor de citit, atunci EPI este cartea pentru dvs.

Pentru proiectele de sisteme distribuite, vă recomand să căutați în altă parte. Un început bun este Proiectarea aplicațiilor intensive pentru date.
Îmi place pentru profunzime și înțelegeri și îl recomand multor studenți care mă iau cursuri de asemenea.
Resurse pe care le recomand
Proiectarea aplicațiilor intensive pentru date– resursă excelentă pentru învățarea despre sistemele distribuite și modul în care funcționează sistemele la scară largă.
Acing Interviul tehnic– Cursul meu cel mai bine vândut de coaching personal despre cum să iau interviuri tehnice. Acoperim revizuirea CV-urilor, interviul de codificare tehnică, întrebări de comportament și multe altele.
Acing Interviu de proiectare a sistemelor distribuite– cursul meu personal de coaching privind proiectarea sistemelor distribuite la scară largă. Aflați despre cum să proiectați caracteristici precum Instagram Stories, Groupon, site-uri de streaming de filme precum Netflix la scară largă.