ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 142
Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 140
Abonament PDF

Cum să te pregătești pentru un interviu de design de sistem

Dan Boncuț
Senior Engineering Manager @ Betfair Development Romania



PROGRAMARE


Pe măsură ce progresăm în carierele noastre de ingineri software, pe lângă interviurile de competențe sau cele comportamentale, foarte curând vei avea de-a face cu interviurile de system design. Aceste interviuri îți vor testa abilitatea de a defini sisteme complexe, atât la nivel macro, cât și la nivel de detalii necesare pentru a face un sistem scalabil, rezilient și eficient. În primii mei ani de carieră nu am avut expunerea necesară pentru a putea să mă dezvolt. Prin urmare, și curba de învățare a fost mai abruptă atunci când, în final, am avut nevoie. În acest articol, vreau să vă prezint câteva dintre strategiile care mi-au fost de ajutor.

Înțelege bazele

Primul pas este învățarea noțiunilor fundamentale. Asigură-te că ai o înțelegere foarte bună a principiilor de bază a unui design de sistem:

  1. Scalabilitatea se referă la capacitatea unui sistem de a gestiona creșterea volumului de muncă prin adăugarea de resurse, fără a compromite performanța sau calitatea serviciului.

  2. Disponibilitatea reprezintă procentul de timp în care un sistem este funcțional și accesibil utilizatorilor.

  3. Fiabilitatea se referă la capacitatea unui sistem de a funcționa corect și de a îndeplini cerințele specificate, în condiții date, pentru o perioadă de timp determinată.

  4. Consistența în contextul sistemelor distribuite se referă la starea în care toate nodurile sistemului afișează aceleași date în același moment.

  5. Toleranța la eroare se referă la capacitatea unui sistem de a continua să funcționeze satisfăcător în cazul în care apar defecțiuni sau erori în unele componente.

  6. Manevrabilitatea (managebility) se referă la ușurința cu care un sistem poate fi administrat și monitorizat. Acest principiu implică proiectarea unui sistem cu instrumente și interfețe care permit operatorilor să detecteze și să remedieze rapid problemele.

  7. Performanța măsoară eficacitatea unui sistem în îndeplinirea sarcinilor sale, în termeni de timp de răspuns, debit și utilizare eficientă a resurselor. Optimizarea performanței poate implica reducerea latenței, maximizarea vitezei de procesare și gestionarea eficientă a resurselor.

Al doilea pas vizează familiarizarea cu modele de design de sistem des întâlnite precum arhitecturile de tip monolit, micro servicii sau serverless. Ia în considerare că, pe lângă aspectele tehnice, alegerea unei arhitecturi trebuie să țină cont și de mărimea aplicației (are un scop finit sau trebuie extinsă pe viitor), rapiditatea cu care trebuie să ajungi pe piață cu un produs sau resursele disponibile (ai o platforma de cloud la dispoziție sau un server on-premise).

Stăpânește conceptele cheie

În funcție de aria în care profesezi (web, data, machine learning etc.), conceptele cheie pot să difere. Câteva dintre cel mai frecvent întâlnite indiferent de arie sunt:

Studiază sisteme existente și exersează

Un mod excelent de a învăța este să studiezi sistemele de design ale unor companii mari, precum Google, Amazon sau Netflix. Încearcă să înțelegi arhitectura lor, deciziile de design și compromisurile pe care le-au făcut. Există multe resurse disponibile online, inclusiv studii de caz, articole de blog și videoclipuri care îți pot oferi o perspectivă valoroasă.

Practica este esențială. Poți utiliza platforme online (LeetCode, ByteByteGo etc.) pentru a face mock interviuri cu alți ingineri sau chiar cu prieteni care sunt dispuși să te ajute. Acest lucru îți va îmbunătăți abilitățile de gândire critică și te va ajuta să devii mai abil în exprimarea ideilor tale. Poți de asemenea să urmărești mock interviuri online sau să citești despre experiența altora în astfel de interviuri.

Dacă ai început să participi la interviuri de design de sistem, cere feedback după interviu. Un intervievator bun își va lua notițe pentru a putea transmite un feedback precis, lucra care te va ajuta pe tine să îți ajustezi abordarea pentru următoarele interviuri.

Încearcă regulat pe cont propriu să gândești arhitectura unor sisteme pe care le folosești în fiecare zi: un sistem de vot, o aplicație pentru parcări ori pentru rezervarea unui bilet la cinema.

Încheiere

Recomandarea mea cea mai mare este să începi această pregătire înainte să ai nevoie de ea. Dacă obiectivul tău în carieră este progresezi într-un rol de arhitect, sau chiar și de manager de inginerie software, inevitabil te vei lovi de sarcini de design. Cu investiții de timp mici, dar constante în direcția asta, mai rămâne de valorificat doar oportunitatea potrivită.

Resurse

  1. https://bytebytego.com/

  2. https://netflixtechblog.com/

  3. https://www.uber.com/blog/engineering/

  4. https://engineering.fb.com/

  5. https://engineering.atspotify.com/

  6. https://www.youtube.com/\@ByteByteGo/videos

  7. https://www.youtube.com/watch?v=NtMvNh0WFVM&ab_channel=Exponent

  8. https://www.youtube.com/watch?v=q0KGYwNbf-0

Conferință

NUMĂRUL 142 - Robotics & AI

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • Yardi
  • P3 group
  • Ing Hubs
  • Colors in projects

INTERVIURI VIDEO