Top 10 întrebări și răspunsuri la interviul de design de sistem (Actualizat pentru 2019)

Cuprins:

Anonim

Introducere în proiectarea sistemului Răspunsuri și răspunsuri

Proiectarea sistemului este procedura de definire a elementelor unui sistem cum ar fi arhitectura, componentele și modulele, diferitele interfețe ale componentelor respective și statisticile care parcurg acest sistem. Prin intermediul ingineriei unui sistem logic și eficient, se urmărește satisfacerea cerințelor și nevoilor specifice ale unei afaceri sau organizații. Aceasta implică o abordare organizată a proiectării unui sistem. Abordarea de jos sau de sus în jos este necesară pentru a lua în considerare toate variabilele aferente ale sistemului. Limbile de modelare sunt utilizate de un proiectant pentru a transmite datele și cunoștințele într-o structură a unui sistem care este definit de un set de reguli și definiții compatibile. Modelele pot fi descrise în limbaje de modelare textuale sau grafice.

Unele dintre exemplele de limbaje grafice de modelare sunt:

  • Unified Modeling Language (UML): descrie software-ul atât comportamental, cât și structural, cu notație grafică.
  • Notare de modelare a proceselor de afaceri (BPMN): este utilizată pentru modelarea proceselor
  • Limbaj de modelare a sistemelor (SysML): este utilizat pentru inginerie de sisteme.
  • Organigrama: o reprezentare simbolică sau în trepte a unui algoritm.

Ce ar trebui să anticipezi într-un interviu de proiectare a sistemului?

Un astfel de interviu începe, în mod normal, cu o problemă foarte deschisă, cum ar fi proiectarea propriei rețele sociale (cum ar fi Facebook, Twitter). Pe măsură ce discuția progresează, intervievatorul va adăuga restricții sau ipoteze suplimentare pentru a reduce scopul problemei.

Pentru a aborda aceste întrebări, lucrurile care vă ajută să exersați și să aveți o abordare structurată.

Acum, dacă sunteți în căutarea unui loc de muncă legat de proiectarea sistemului, atunci trebuie să vă pregătiți pentru întrebările de interviu pentru proiectarea sistemului 2019. Este adevărat că fiecare interviu este diferit în funcție de diferitele profiluri de muncă. Aici, am pregătit întrebările și răspunsurile importante legate de proiectarea sistemului, care vă vor ajuta să obțineți succes în interviu.

În acest articol privind întrebările de interviu pentru proiectarea sistemului de 2019, vom prezenta cele mai importante și frecvente întrebări de interviu pentru proiectarea sistemului. Aceste întrebări sunt împărțite în două părți:

Partea 1 - Proiectare sistem InterviewQuestions (Basic)

Această primă parte acoperă întrebările și răspunsurile de bază ale proiectării sistemului de sistem

Q1) Design TinyURL sau bit.ly (un serviciu de scurtare a adreselor URL)?

Răspuns:
Vino cu funcții pe care sistemul trebuie să le suporte mai întâi. În al doilea rând, veniți cu numărul estimat de cât de scalabil poate fi sistemul.

În timp ce proiectăm un serviciu, există trei lucruri de luat în considerare:

  • API (API REST) ​​- Abordarea de comunicare a clientului cu serviciul împreună cu un echilibrator de sarcină care este partea frontală a serviciului.
  • Application Layer - thread-uri sau gazde de lucru care iau URL-ul și generează URL-ul minuscul pentru acesta și le stochează pe ambele în stratul de persistență.
  • Strat de persistență - Baza de date

Lucruri de analizat:

  • Generați un ID unic pentru fiecare URL și generați ID-urile la scară, deoarece 1000 de solicitări de scurtare a URL-urilor vin în fiecare secundă.
  • Redirecționarea serviciilor.
  • Suport URL-uri personalizate.
  • Urmăriți statisticile de clicuri
  • Ștergeți adresele URL expirate

2) Proiectați YouTube / Netflix (un serviciu de streaming video global)?

Răspuns:
Lucruri de analizat:

  • În videoclipuri, serviciul va stoca și transmite o cantitate imensă de date pe care un număr mare de utilizatori le pot urmări și partaja simultan.
  • Înregistrați statistici despre videoclipuri, de exemplu, numărul general de vizualizări, voturi ascendente / voturi reduse etc.
  • Adăugarea de comentarii la videoclipuri în timp real.

Componente:

  • OC - Nori precum AWS, OpenConnect, care acționează ca o rețea de livrare de conținut.
  • Backend - Baza de date
  • Client - Orice dispozitiv (desktop, Android, iPhone) de pe care redați videoclipul pe YouTube / Netflix.

Haideți să trecem la următoarea întrebare de interviu pentru proiectarea sistemului.

3) Proiectarea Quora / Reddit / HackerNews (o rețea socială + serviciu de mesaje)?

Răspuns:
Lucruri de analizat:

Persoanele care folosesc serviciile pot partaja linkuri sau posta întrebări. Alți utilizatori pot răspunde la întrebări sau să comenteze link-urile partajate. Deci serviciul ar trebui să facă următoarele:

  • Înregistrează statisticile pentru fiecare răspuns, de exemplu numărul general de vizualizări, voturi în sus / voturi reduse etc.
  • Utilizatorii ar trebui să fie în măsură să urmărească alți utilizatori sau subiecte
  • Lista întrebărilor de top din cronologie de la toți utilizatorii și subiectele pe care le urmează (similar cu generarea de newsfeed).

4) Proiectați Facebook Messenger sau WhatsApp (un serviciu de chat global)?

Răspuns:
Aceasta este întrebările de bază ale interviului de proiectare a sistemului pe un interviu. Lucruri de analizat:

  • Proiectați conversații individuale între utilizatori.
  • Extinderea designului pentru a sprijini chaturile de grup.
  • Ce se poate face atunci când utilizatorul nu este conectat la internet?
  • Când să trimiteți notificări push?
  • Cum să furnizați criptarea end-to-end?

Structura:

Client> Balans de încărcare> Noduri> Cache (Redis)> Baza de date (Casandra)

5) Tip de căutare de tip design (completare automată)?

Răspuns:
Lucruri de analizat:

  • Sugestii de tip Typehead care trebuie furnizate.
  • Criterii pentru alegerea sugestiilor.
  • Sistemul trebuie să fie în timp real?
  • Susțineți personalizarea cu sugestiile.
  • Interogări pe secundă pentru a fi gestionate de sistem.
  • Cantitatea de date care trebuie stocate.

Partea 2 - Întrebări de interviu pentru proiectarea sistemului (avansat)

Haideți să aruncăm o privire asupra întrebărilor avansate de interviu pentru proiectarea sistemului.

6) Proiectare Dropbox / Google Drive / Google Photos?

Răspuns:
Lucruri de analizat:

  • Cum să încărcați / vizualizați / căutați / partajați fișiere sau fotografii?
  • Urmăriți permisiunile pentru partajarea fișierelor.
  • Permitând mai multor utilizatori să editeze același document.

7) Proiectați Facebook, Twitter sau Instagram?

Răspuns:
Caracteristici care trebuie luate în considerare:

  • Unele dintre caracteristicile Twitter / Facebook / Instagram trebuie să fie acceptate.
  • Trebuie să sprijiniți răspunsurile la tweeturile / gruparea tweeturilor după conversații.
  • Controale de confidențialitate în jurul fiecărui tweet.
  • Susținerea tweeturilor în trend
  • Mesagerie directă
  • Mentiuni / Tagging

Lucruri de analizat:

  • Numărul de utilizatori și traficul care trebuie gestionat de sistem.
  • Cantitatea de urmăritori pe care utilizatorul o are.
  • Numărul de ori pe care tweet-ul a fost favorizat.

Componente care trebuie să fie proiectate:

  • Generația newsfeed
  • Grafic social
  • Căutare și stocare sistematică pentru postări / tweet-uri.

Haideți să trecem la următoarea întrebare de interviu pentru proiectarea sistemului.

8) Proiectați un web crawler?

Răspuns:
Este necesar un serviciu scalabil, care poate trage întregul web și poate colecta sute de milioane de documente web.

Lucruri de analizat:

  • Găsirea de noi pagini web.
  • Prioritizarea paginilor web care se schimbă dinamic.
  • Asigurarea că rampele nu sunt atașate fără margini la același domeniu.

9) Design Uber:

Răspuns:
Acestea sunt întrebările frecvente ale interviului System Design într-un interviu. Arhitectură: Servicii monolitice / micro (serviciu în timp real, front-end (aplicație) și bază de date)

  • Backend-ul asigură deservirea traficului de telefonie mobilă, iar clienții se conectează la backend prin intermediul datelor mobile.
  • Clienții se conectează la sistemul de expediere care se potrivește șoferilor și călăreților.
  • Dispeceratul este scris aproape în întregime în node.js.
  • Hărți / ETA: Pentru ca expedierea să facă o alegere inteligentă, este important să obțineți hărți și date de rutare.
  • Servicii: Servicii de logică de afaceri scrise în mare parte în python.
  • Baze de date: Postgres, Redis, MySQL.

Lucruri de analizat:

  • Clientul care solicită o plimbare și cum se potrivesc economic cu șoferii din apropiere.
  • Stocarea de tone de locații geografice pentru șoferi și călăreți care sunt mereu în mișcare.
  • Gestionarea actualizărilor locațiilor șoferului.

10) Proiectați un limitator de viteză API (Github)?

Răspuns:
Lucruri de analizat:

  • Limitarea numărului de solicitări pe care o entitate le poate trimite unei API într-o fereastră de timp, de exemplu, zece solicitări pe secundă.
  • Limitarea ratei ar trebui să funcționeze pentru o configurare împrăștiată, deoarece API-urile pot fi accesate printr-un grup de servere.

Articole recomandate

Acesta a fost un ghid către lista de întrebări și răspunsuri la interviul de proiectare a sistemului, astfel încât candidatul să poată împărți cu ușurință aceste întrebări de interviu de proiectare a sistemului. Aici, în acest post, am studiat cele mai bune întrebări de interviu pentru proiectarea sistemului, care sunt adesea puse în interviuri. De asemenea, puteți consulta următoarele articole pentru a afla mai multe -

  1. Întrebări la interviu AutoCAD
  2. Întrebări la interviu Photoshop
  3. Adobe Illustrator pentru începători
  4. Asistent grafician