30 najvaĹžnijih pitanja i odgovora za intervju za dizajn sustava (2026.)

Priprema za intervju za dizajn sustava znaÄi predviÄanje kako Äe ispitivaÄi ocjenjivati ââarhitektonsko razmiĹĄljanje pod pritiskom. Pitanja za intervju za dizajn sustava otkriti dubinu, kompromise, procjenu skalabilnosti i komunikaciju kroz strukturirane rasprave.
SnaĹžna priprema otvara radna mjesta na platformama u oblaku, distribuiranim sustavima i podatkovnom inĹženjerstvu, dokazujuÄi tehniÄku struÄnost kroz stvarnu analizu. StruÄnjaci koji rade u tom podruÄju grade praktiÄne vjeĹĄtine, podrĹžavaju timove, pomaĹžu menadĹžerima u odluÄivanju te rjeĹĄavaju uobiÄajena pitanja i odgovore, od poÄetnika do viĹĄih razina, ukljuÄujuÄi napredne, osnovne i tehniÄke perspektive diljem svijeta danas. Äitaj viĹĄeâŚ
đ Besplatno preuzimanje PDF-a: Pitanja i odgovori za intervju za dizajn sustava
Pitanja i odgovori za intervju za dizajn vrhunskog sustava
1) Objasnite ĹĄto je dizajn sustava i zaĹĄto je vaĹžan u softverskom inĹženjerstvu.
Dizajn sustava je proces definiranja arhitekture, komponenti, suÄelja i podataka za sustav zadovoljiti specifiÄne zahtjeve na skalabilan, pouzdan i odrĹživ naÄin. PremoĹĄÄuje ciljeve visoke razine (ĹĄto sustav treba postiÄi) s konkretnim odlukama o tehnologiji, protokolima i arhitekturnim obrascima. SnaĹžan dizajn sustava osigurava da aplikacija dobro radi pod optereÄenjem, ostaje otporna na pogreĹĄke i moĹže se razvijati tijekom vremena bez potpunog prepisivanja.
U intervjuima to pokazuje vaĹĄu sposobnost uravnoteĹženja funkcionalni zahtjevi sa nefunkcionalna ograniÄenja poput skalabilnosti, latencije, konzistentnosti i dostupnosti. Sve velike tehnoloĹĄke tvrtke procjenjuju kandidatove vjeĹĄtine dizajna sustava kako bi procijenile stvarnu inĹženjersku prosudbu.
2) Kako razlikujete dizajn visoke razine (HLD) od dizajna niske razine (LLD) u arhitekturi sustava?
Visokorazinski dizajn (HLD) fokusira se na arhitektonski pregled i glavne komponente bez ulaska u detalje implementacije. Pokazuje kako sustavi meÄusobno djeluju - npr. Web posluĹžitelj, baza podataka, predmemorija, API pristupniki sustavi za razmjenu poruka.
Niskorazinski dizajn (LLD) dublje zalazi u definicije klasa, metode, strukture podataka i detaljna logika unutar svake komponente. HLD se odnosi na to koje Äete komponente koristiti i kako one meÄusobno djeluju; LLD se odnosi na to kako Äete implementirati te interakcije. Razumijevanje oba pomaĹže ispitivaÄima da procijene vaĹĄe razmiĹĄljanje o cjelokupnoj slici, kao i vaĹĄe detaljne inĹženjerske sposobnosti.
3) Koje su kljuÄne metrike performansi koje biste trebali uzeti u obzir prilikom dizajniranja sustava i zaĹĄto?
Metrike performansi pomaĹžu u kvantificiranju koliko dobro sustav zadovoljava potrebe korisnika i poslovanja. KljuÄne metrike su:
- Latentnost: Vrijeme potrebno za obradu jednog zahtjeva. Manja latencija znaÄi brĹže odgovore.
- Propusnost: KoliÄina posla obraÄena u odreÄenom razdoblju (npr. zahtjevi u sekundi). VeÄa propusnost oznaÄava uÄinkovitost pod optereÄenjem.
- Dostupnost: Udio vremena u kojem je sustav operativan. Visoka dostupnost kljuÄna je za globalne usluge.
Ove metrike pomaĹžu dizajnerima uravnoteĹžiti kompromise. Na primjer, keĹĄiranje smanjuje latenciju, ali komplicira konzistentnost podataka. Pokazivanje poznavanja ovih metrika pokazuje da vam je stalo do kvalitete sustava u stvarnom svijetu.
| metriÄki | Definicija | VaĹžnost |
|---|---|---|
| skrivenost | Vrijeme po zahtjevu | KorisniÄko iskustvo |
| propusnost | Zahtjevi po jedinici vremena | skalabilnost |
| Dostupnost | Vrijeme rada u odnosu na vrijeme zastoja | Pouzdanost |
4) OpiĹĄite uravnoteĹženje optereÄenja i zaĹĄto je ono kljuÄno u distribuiranim sustavima.
Balansiranje optereÄenja je proces distribucija dolaznih zahtjeva na viĹĄe posluĹžitelja ili usluga kako bi se sprijeÄilo da bilo koji pojedinaÄni Ävor postane usko grlo. Osigurava optimalno iskoriĹĄtenje kapaciteta, poboljĹĄava vrijeme odziva i poveÄava pouzdanost sustava usmjeravanjem prometa dalje od nezdravih instanci.
Postoje razliÄite vrste uravnoteĹživaÄa optereÄenja. A Sloj 4 (L4) balanser radi na transportnom sloju (IP/port), dok Sloj 7 (L7) balancer djeluje na aplikacijskom sloju, razumijevajuÄi HTTP/S semantiku. Balansiranje optereÄenja kljuÄno je za toleranciju greĹĄaka, skaliranje bez zastoja i aĹžuriranja u produkcijskim sustavima. Dobar odgovor na ovo pokazuje da razumijete temeljne kompromise distribuiranih sustava izmeÄu performansi, konzistentnosti i troĹĄkova.
5) Kako biste dizajnirali TinyURL usluga? OpiĹĄite kljuÄne komponente i korake.
Dizajniranje malogURL usluga obuhvaÄa oba funkcionalna zahtjeva (skraÄivanje URLs, preusmjeravanje korisnika) i nefunkcionalni zahtjevi (skalabilnost, jedinstvenost, performanse).
Prvo, pojaĹĄnjavajuÄa pitanja pomaĹžu u definiranju ograniÄenja: oÄekivani volumen, pravila isteka, analitiÄke potrebe itd. Glavne komponente su:
- API sloj: Prima i obraÄuje zahtjeve za skraÄivanje/preusmjeravanje.
- Baza podataka i predmemoriranje: Originalno â skraÄeno URL kartapings; keĹĄiranje poboljĹĄava performanse Äitanja.
- Generator kratkih ID-ova: Koristi hashiranje ili jedinstvene ID-ove kodirane u bazi.
Za uÄinkovito generiranje jedinstvenih kljuÄeva moĹžete:
- Koristiti base-62 kodiranje sekvencijalnog ID-a (npr. 1 â a, 2 â b itd.).
- Koristiti hash funkcija s rjeĹĄavanjem kolizija.
TakoÄer biste trebali uzeti u obzir analitiku, ograniÄenja brzine i rukovanje vruÄim URLs predmemoriranjem ili CDN slojevima za smanjenje optereÄenja. Opis ovih kompromisa pokazuje dubinu i u obrascima dizajna i u razmatranjima skalabilnosti.
6) Ĺ to je predmemoriranje i kako poboljĹĄava performanse sustava?
Predmemoriranje pohrana podaci kojima se Äesto pristupa ili je skupo izraÄunati u brĹžem mediju za pohranu (memorija, distribuirana predmemorija) kako bi se smanjilo ponovljeno raÄunanje i optereÄenje baze podataka. ZnaÄajno poboljĹĄava latenciju i propusnost brzim posluĹživanjem popularnih zahtjeva.
KeĹĄiranje se moĹže odvijati na viĹĄe slojeva: memorija aplikacije, Redis/Ehcache, CDN rubne posluĹžitelje ili lokalnu pohranu preglednika. Iako keĹĄiranje smanjuje vrijeme odziva, ono uvodi izazove zastarjelosti i nevaĹžeÄih podataka koje morate rijeĹĄiti tijekom dizajniranja. Na primjer, moĹžete koristiti pravila o vremenu trajanja (TTL) ili strategije nevaĹžeÄih podataka iz predmemorije kada se promijene temeljni podaci. Dobri odgovori pokazuju da razumijete i prednosti i zamke keĹĄiranja.
7) Objasnite CAP teorem i njegove implikacije na dizajn distribuiranih sustava.
CAP teorem tvrdi da u distribuiranom sustavu moĹžete odabrati najviĹĄe dva od sljedeÄa tri jamstva:
- Dosljednost: Svi Ävorovi vide iste podatke u isto vrijeme.
- Dostupnost: Na svaki zahtjev se odgovori (bez jamstva ispravnosti).
- Tolerancija particije: Sustav nastavlja raditi unatoÄ kvarovima mreĹže.
Nijedan praktiÄni distribuirani sustav ne moĹže postiÄi sva tri istovremeno u prisutnosti mreĹžnih particija. Na primjer, tijekom particije, sustavi moraju birati izmeÄu posluĹživanja zastarjelih podataka (dostupnost) ili odbijanja zahtjeva dok se ne uspostavi konzistentnost (konzistentnost). Razumijevanje CAP-a pokazuje da moĹžete donositi informirane kompromise na temelju operativnih prioriteta - kljuÄna vjeĹĄtina u intervjuima za dizajn sustava.
8) Kako biste ukratko dizajnirali uslugu razmjene poruka putem chata poput WhatsAppa?
Za dizajniranje sustava za chat u velikom opsegu, zapoÄnite s identificiranjem kljuÄnih zahtjeva: isporuka poruka u stvarnom vremenu, postojanost, redoslijed poruka, izvanmreĹžna podrĹĄka i skalabilnost.
Na visokoj razini:
- Klijenti povezivanje putem weba/mobilnih ureÄaja s gateway posluĹžiteljima.
- UsmjerivaÄi poruka obraÄivati ââdolazne poruke i slati ih primateljima (putem trajnih veza poput WebSocketsa).
- Baze podataka pohraniti povijest poruka, s odgovarajuÄom particioniranjem za velike korisniÄke baze.
Dodatne komponente ukljuÄuju predmemorije za nedavne razgovore, redove Äekanja za asinkronu isporuku i usluge obavijesti za korisnike koji nisu u mreĹži. Trebali biste razgovarati o tome. kako se poruke pohranjuju, sortiraju i dostavljaju na viĹĄe ureÄaja po korisniku i kako se nosite s prebacivanjem u sluÄaju kvara i tolerancijom greĹĄaka.
9) Ĺ to je sharding i kako pomaĹže u skaliranju baza podataka?
Sharding je oblik horizontalno skaliranje gdje se veliki skup podataka dijeli na manje, neovisne particije zvane shardovi, a svaka se pohranjuje na drugom Ävoru baze podataka. To poboljĹĄava performanse i skalabilnost raspodjelom podataka i upita na viĹĄe raÄunala umjesto skaliranja jedne instance.
Podaci se mogu segmentirati prema ID-u korisnika, geografskoj regiji ili hashiranju. Iako sharding smanjuje optereÄenje po Ävoru, uvodi sloĹženost u upite izmeÄu cross-shardova i ponovno balansiranje pri dodavanju ili uklanjanju Ävorova. Anketari oÄekuju da razumijete ove kompromise i kako dosljedno hashiranje ili upravitelji usjeka mogu olakĹĄati operacije.
10) OpiĹĄite kako se API-ji i mikroservisi razlikuju od monolitne arhitekture.
A Monolithic architecture objedinjuje sve komponente aplikacije u jednu implementabilnu jedinicu. To u poÄetku moĹže pojednostaviti razvoj, ali s vremenom postaje teĹĄko skalirati, odrĹžavati i aĹžurirati.
Microservices razbiti sustav na male, neovisno primjenjive usluge, a svaki je odgovoran za odreÄenu poslovnu moguÄnost. API-ji (Application Programming Interfaces - suÄelja za programiranje aplikacija) omoguÄuju komunikaciju izmeÄu tih usluga.
| Aspekt | monolitan | Microservices |
|---|---|---|
| razvoj | PojedinaÄna jedinica | Neovisne usluge |
| skalabilnost | ograniÄen | Skaliranje po usluzi |
| Pronalazak pogreĹĄke | siromaĹĄan | jak |
| SloĹženost | Jednostavnije u poÄetku | SloĹženije operacije |
Mikroservisi poboljĹĄavaju skalabilnost i fleksibilnost implementacije, ali zahtijevaju napredne operativne alate (otkrivanje servisa, traci tolerancija greĹĄaka). Rasprava o ovome pokazuje da moĹžete razmiĹĄljati o evoluciji arhitekture i kompromisima izmeÄu jednostavnosti i fleksibilnosti.
11) Kako funkcionira mreĹža za isporuku sadrĹžaja (CDN) i koje su njezine prednosti?
A MreĹža za dostavu sadrĹžaja (CDN) je distribuirana mreĹža proxy posluĹžitelja strateĹĄki smjeĹĄtenih u raznim geografskim regijama. Njezin primarni cilj je isporuÄiti sadrĹžaj korisnicima s minimalnom latencijom posluĹživanjem s najbliĹžeg posluĹžitelja (poznatog kao rubni Ävor).
Kada korisnik zatraĹži web-resurs (npr. sliku, videozapis ili statiÄku datoteku), CDN predmemorira sadrĹžaj i isporuÄuje ga izravno s rubnog posluĹžitelja. Ako sadrĹžaj nije u predmemoriji, dohvaÄa ga s izvornog posluĹžitelja i pohranjuje ga za sljedeÄe zahtjeve.
Prednosti CDN-ova:
| Faktor | Prednost |
|---|---|
| skrivenost | Smanjuje vrijeme odziva prikazivanjem sadrĹžaja bliĹže korisnicima |
| Propusnost | Prebacuje koriĹĄtenje propusnosti s izvornih posluĹžitelja |
| Pouzdanost | PruĹža toleranciju greĹĄaka s distribuiranim Ävorovima |
| skalabilnost | UÄinkovito se nosi s velikim prometom |
CDN-ovi su kljuÄni za globalne sustave kao ĹĄto su Netflix, YouTube, ili platforme za e-trgovinu, osiguravajuÄi visoke performanse i dostupnost.
12) Ĺ to je ograniÄavanje brzine i zaĹĄto je bitno u dizajnu API-ja?
OgraniÄenje brzine ograniÄava broj zahtjeva koje klijent moĹže uputiti API-ju unutar odreÄenog razdoblja. KljuÄno je za sprjeÄavanje zlostavljanja, odrĹžavanje poĹĄtene upotrebei zaĹĄtita pozadinskih usluga od preoptereÄenja ili napada uskraÄivanja usluge (DoS).
UobiÄajeni algoritmi za ograniÄavanje brzine ukljuÄuju:
- Fiksni prozorski pult â Jednostavno, ali moĹže uzrokovati skokove na granicama prozora.
- Klizni balvan / Klizni prozor â OmoguÄuje glatkiju obradu zahtjeva.
- Kanta tokena / Kanta s propuĹĄtanjima â OmoguÄuje rafale unutar ograniÄenja i odrĹžava stalan protok zahtjeva.
Na primjer, GitHub ograniÄava API pozive na 5000 po satu po korisniku. Implementacija ograniÄenja brzine osigurava stabilnost sustava i poboljĹĄava ukupnu kvalitetu usluge.
13) Kako osiguravate konzistentnost podataka u distribuiranim sustavima?
OdrĹžavanje konzistentnosti u distribuiranim sustavima je izazovno zbog replikacije i latencije mreĹže. Postoji nekoliko strategija ovisno o potrebnom kompromisu izmeÄu konzistentnosti i dostupnosti:
| Vrsta konzistentnosti | Description | Koristite sluÄaj |
|---|---|---|
| SnaĹžna konzistencija | Svi klijenti odmah vide iste podatke | Bankarski sustavi |
| Eventualna dosljednost | AĹžuriranja se ĹĄire asinkrono; dopuĹĄtene su privremene razlike | Feedovi druĹĄtvenih medija |
| UzroÄna konzistentnost | OdrĹžava uzroÄno-posljediÄni red | SuradniÄke aplikacije |
Tehnike poput zapisnici unaprijed pisanja, vektorski satovi, konsenzusni algoritmi (Raft, Paxos)i dvofazno potvrÄivanje (2PC) pomoÄi u odrĹžavanju sinkronizacije. Anketari oÄekuju da objasnite when ublaĹžiti konzistentnost radi poboljĹĄanja performansi i skalabilnosti.
14) Objasnite razliku izmeÄu horizontalnog i vertikalnog skaliranja.
Skaliranje se odnosi na poveÄanje kapaciteta sustava za rukovanje veÄim optereÄenjem. Postoje dvije glavne vrste:
| Vrsta skaliranja | naÄin | Prednosti | Nedostaci |
|---|---|---|---|
| Vertikalno skaliranje (Scale-Up) | Dodajte viĹĄe resursa (CPU, RAM) jednom stroju | Jednostavnije za implementaciju | OgraniÄenja hardvera, jedna toÄka kvara |
| Horizontalno skaliranje (Scale-Out) | Dodajte viĹĄe strojeva za raspodjelu optereÄenja | Visoka dostupnost, isplativo | SloĹženo za upravljanje i koordinaciju |
Na primjer, skaliranje web posluĹžitelja s 2 CPU-a na 8 CPU-a je vertikalno skaliranje, dok je dodavanje viĹĄe posluĹžitelja iza uravnoteĹživaÄa optereÄenja horizontalno skaliranje. Moderni distribuirani sustavi poput Kubernetesa favoriziraju horizontalno skaliranje za elastiÄnost.
15) Ĺ to su redovi poruka i zaĹĄto se koriste u distribuiranim arhitekturama?
A red poruka odvaja proizvoÄaÄe i potroĹĄaÄe privremenim pohranjivanjem poruka dok se ne obrade. To omoguÄuje asinkrona komunikacija, poboljĹĄavajuÄi otpornost i skalabilnost u distribuiranim sustavima.
Popularni posrednici poruka ukljuÄuju Zec MQ, Kafka, Amazon SQSi Google Pub/Sub.
Prednosti:
- UblaĹžava prometne skokove
- Usluge odvajanja
- OmoguÄuje mehanizme ponovnog pokuĹĄaja i perzistentnosti
- PoboljĹĄava toleranciju greĹĄaka
Primjer: Na platformi za e-trgovinu, usluga naruÄivanja moĹže objaviti poruku (âNarudĹžba poslanaâ) koju usluge upravljanja zalihama i naplate koriste neovisno, izbjegavajuÄi izravne ovisnosti.
16) Kako biste dizajnirali skalabilni sustav za pohranu datoteka poput Google Drive or Dropbox?
Za dizajniranje sustava za pohranu datoteka u oblaku, podijelite ga na kljuÄne komponente:
- Usluga frontenda: OmoguÄuje prijenos/preuzimanje datoteka putem REST API-ja.
- Usluga metapodataka: Pohranjuje vlasniĹĄtvo nad datotekama, dozvole pristupa i povijest verzija.
- Usluga skladiĹĄtenja: Upravlja dijelovima datoteka u distribuiranoj pohrani (npr. S3, HDFS).
- Komadanje: Datoteke su podijeljene na manje dijelove (npr. 4 MB) radi uÄinkovite pohrane i prijenosa.
Izazovi ukljuÄuju osiguranje deduplikacija podataka, dosljednosti sinkronizacija promjena na svim ureÄajima. Implementacija sinkronizacije na razini blokova i hashiranja sadrĹžaja osigurava uÄinkovitost i integritet propusnosti.
17) Koji su kljuÄni Äimbenici koje treba uzeti u obzir pri dizajniranju skalabilne sheme baze podataka?
Skalabilna shema uravnoteĹžuje performanse, fleksibilnost i odrĹživost. VaĹžna razmatranja ukljuÄuju:
- Particioniranje podataka (sharding) za rukovanje rastom.
- Normalizacija naspram denormalizacije: Normaliziraj za integritet; denormaliziraj za performanse s puno Äitanja.
- Strategija indeksiranja za brze pretrage.
- KeĹĄiranje i replikacija za rjeĹĄavanje velikog prometa.
Primjer: U aplikaciji druĹĄtvenih medija, korisniÄki podaci i objave mogu se pohranjivati ââodvojeno kako bi se smanjilo povezivanje i poboljĹĄale performanse upita. Odluke o dizajnu sheme trebale bi biti usklaÄene s obrasci pristupa i uÄestalost upita.
18) Koje su prednosti i nedostaci koriĹĄtenja mikroservisne arhitekture?
Mikroservisi su postali okosnica modernih cloud aplikacija, ali dolaze s kompromisima.
| Prednosti | Nedostaci |
|---|---|
| Neovisno postavljanje i skaliranje | PoveÄana operativna sloĹženost |
| Izolacija kvarova i otpornost | Distribuirano otklanjanje pogreĹĄaka je teĹže |
| LakĹĄe usvajanje tehnologije | Zahtijeva snaĹžnu DevOps kulturu |
| Bolja odrĹživost koda | VeÄa latencija zbog mreĹžnih skokova |
Mikroservisi su idealni za velike, promjenjive sustave, ali zahtijevaju robusno praÄenje, API pristupnike i strategije komunikacije izmeÄu servisa.
19) Kako biste rijeĹĄili replikaciju baze podataka u velikom sustavu?
Replikacija baze podataka ukljuÄuje kopiranje podataka iz primarne baze podataka u jednu ili viĹĄe replika radi poboljĹĄanja dostupnosti i performansi Äitanja. Postoje dvije glavne vrste:
| Vrsta replikacije | Description | Koristite sluÄaj |
|---|---|---|
| Synchronozan | Promjene se odmah zapisuju u replike | Jaka konzistencija |
| asinhron | Primarno potvrÄuje pisanje prije aĹžuriranja replika | Bolje performanse |
Replikacija poboljĹĄava tolerancija kvarova, omoguÄuje geografska rasprostranjenosti podrĹžava skaliranje Äitanja (Äitaj replike). MeÄutim, to uvodi izazove poput kaĹĄnjenja replikacije i rjeĹĄavanja sukoba. Alati poput MySQL Grupna replikacija, MongoDB Setovi replikai PostgreSQL replikacija strujanjem su standardna rjeĹĄenja.
20) Ĺ to je arhitektura voÄena dogaÄajima i gdje je najkorisnija?
Arhitektura voÄena dogaÄajima (EDA) je paradigma dizajna u kojoj komponente komuniciraju putem dogaÄaji â poruke koje signaliziraju promjene stanja ili radnje. Umjesto izravnih zahtjeva, usluge objavljuju i pretplaÄuju se na dogaÄaje asinkrono.
Ovaj dizajn je idealan za labavo povezani sustavi, kao ĹĄto su IoT platforme, e-trgovina i sustavi za analitiku u stvarnom vremenu.
Prednosti:
- Visoka skalabilnost
- Odvojene komponente
- Odziv u stvarnom vremenu
Primjer: U Uberovoj arhitekturi, kada se voĹžnja rezervira, dogaÄaj istovremeno pokreÄe aĹžuriranja cijena, usklaÄivanja vozaÄa i sustava obavjeĹĄtavanja - sve bez uske povezanosti.
21) Ĺ to je idempotentnost u dizajnu sustava i zaĹĄto je vaĹžna?
Idempotencija znaÄi da izvoÄenje iste operacije viĹĄe puta ima isti uÄinak kao da se to izvede jednomOsigurava pouzdanost u distribuiranim sustavima gdje se zahtjevi mogu ponovno pokuĹĄati zbog kvarova ili kaĹĄnjenja mreĹže.
Na primjer:
- GET i DELETE Zahtjevi su prirodno idempotentni (njihovo ponavljanje ne mijenja stanje).
- POST zahtjevi (poput stvaranja transakcije) nisu idempotentni osim ako nisu posebno dizajnirani da budu.
Za implementaciju idempotentnosti:
- Koristiti jedinstveni ID-ovi zahtjeva do track dupliciranih podnesaka.
- OdrĹžavajte a dnevnik transakcija zanemariti ponovljene operacije.
Ovo naÄelo je kljuÄno u pristupnici plaÄanja, Obrada narudĹžbei sustavi e-poĹĄte gdje duplicirane radnje mogu uzrokovati ozbiljne nedosljednosti.
22) Objasnite koncept konaÄne konzistentnosti s primjerom.
KonaÄna konzistentnost je model u distribuiranim bazama podataka gdje aĹžuriranja nisu odmah vidljiva svim Ävorovima, ali sustav s vremenom konvergira u konzistentno stanje.
Primjer:
In Amazon'S DynamoDB, kada se stavka aĹžurira u jednoj regiji, replike u drugim regijama mogu privremeno imati stare podatke. MeÄutim, one Äe se na kraju sinkronizirati putem replikacije u pozadini.
Ovaj model je koristan u sustavima koji odreÄuju prioritete dostupnost umjesto prema stroga dosljednost, kao ĹĄto su:
- Vremenske crte druĹĄtvenih medija
- Sustavi za keĹĄiranje
- DNS zapisi
KljuÄni kompromis leĹži izmeÄu tolerancija ustajalosti i brzina odziva.
23) Kako biste osmislili sustav obavjeĹĄtavanja koji podrĹžava viĹĄe kanala (e-poĹĄta, SMS, push)?
Dizajniranje skalabilnog sustava obavjeĹĄtavanja zahtijeva modularnost i fleksibilnost.
Architekstura:
- API za obavijesti â Prima zahtjeve za obavijesti od aplikacija.
- Red Äekanja/sabirnica poruka â Pohranjuje i distribuira dogaÄaje (Kafka, SQS).
- Usluge za radnike â Procesori specifiÄni za kanal (e-poĹĄta, SMS, push).
- PruĹžatelji dostave â Integrirajte se s vanjskim API-jima poput Twilia ili Firebasea.
- Baza podataka korisniÄkih postavki â Pohranjuje postavke prijave/odjave i preferencije uÄestalosti.
KljuÄna razmatranja:
- Ponovni pokuĹĄaj neuspjelih isporuka s odgodnim strategijama.
- Koristite predloĹĄke za dosljednost.
- PodrĹžavanje prioritizacije (hitne poruke u odnosu na poruke niskog prioriteta).
Ovaj modularni dizajn osigurava pouzdanost i proĹĄirivost kako se pojavljuju novi kanali obavjeĹĄtavanja.
24) Ĺ to je indeksiranje baze podataka i kako utjeÄe na performanse?
A indeks baze podataka je struktura podataka (obiÄno B-stablo ili hash tablica) koja poboljĹĄava brzinu upita smanjenjem broja zapisa koje baza podataka skenira.
Na primjer, indeksiranje stupca e-poĹĄte u tablici korisnika omoguÄuje DB mehanizmu da brzo pronaÄe korisnike prema e-poĹĄti bez skeniranja cijele tablice.
| Aspekt | S indeksom | Bez indeksa |
|---|---|---|
| Brzina upita | Brze pretrage | Sporo sekvencijalno skeniranje |
| Brzina pisanja | Sporije (potrebna su aĹžuriranja indeksa) | BrĹže piĹĄe |
| Äuvanje | ViĹĄe prostora na disku | Less skladiĹĄtenje |
Indeksi poboljĹĄavaju performanse Äitanja, ali se moraju koristiti razumno jer mogu usporiti puno pisanja sustava zbog troĹĄkova odrĹžavanja.
25) Kako biste osigurali toleranciju greĹĄaka u velikom distribuiranom sustavu?
Tolerancija kvarova znaÄi da sustav nastavlja funkcionirati Äak i kada komponente zakaĹžu. To se postiĹže redundancijom, praÄenjem i automatskim oporavkom.
Strategije ukljuÄuju:
- Replikacija: Duplicirani podaci ili usluge u razliÄitim regijama.
- Mehanizmi prebacivanja u sluÄaju kvara: Automatski preusmjeri zahtjeve na ispravne Ävorove.
- Provjere ispravnosti i uravnoteĹživaÄi optereÄenja: Otkrivanje i izolacija neispravnih instanci.
- PrekidaÄi: SprijeÄite kaskadne kvarove izmeÄu ovisnih usluga.
Primjer: Netflix"Majmun kaosa" namjerno iskljuÄuje instance u produkciji kako bi testirao otpornost - naprednu primjenu principa tolerancije na greĹĄke.
26) Koja je razlika izmeÄu sinkrone i asinkrone komunikacije u distribuiranim sustavima?
| svojstvo | SynckroniÄna komunikacija | Asinkrona komunikacija |
|---|---|---|
| zavisnost | PoĹĄiljatelj Äeka odgovor | PoĹĄiljatelj postupa samostalno |
| Primjeri | HTTP REST API pozivi | Redovi poruka, Kafka |
| skrivenost | ViĹĄa (blokirajuÄa) | NiĹža percipirana latencija |
| Pouzdanost | Donji pod kvarovima | ViĹĄe (poruke mogu ostati) |
SyncHronski sustavi su jednostavniji, ali Ävrsto povezani, dok asinhroni sustavi poboljĹĄavaju skalabilnost i izolaciju greĹĄaka.
Na primjer, obrada narudĹžbi u sustavu e-trgovine moĹže biti asinkrona, ali potvrda plaÄanja treba ostati sinkrona kako bi se osigurala trenutna povratna informacija korisnika.
27) Kako biste dizajnirali ograniÄivaÄ brzine za distribuirani API sustav?
Distribuirani limitator brzine osigurava pravednu upotrebu API-ja na viĹĄe posluĹžitelja.
Pristupi:
- Algoritam spremnika tokena â Svaki korisnik dobiva tokene koji se s vremenom obnavljaju.
- Algoritam propuĹĄtanja kante â Zahtjevi se obraÄuju stabilnom brzinom.
- Centralizirani brojaÄ (npr. Redis) â Vodi evidenciju zahtjeva po korisniku.
Primjer implementacije:
- Koristite Redis atomske brojaÄe s TTL-om.
- Track vremenskih oznaka zahtjeva po korisniÄkom kljuÄu.
- Odbij zahtjeve koji prelaze pragove.
OgraniÄavanje brzine sprjeÄava zlostavljanje, DoS napadii neoÄekivani skokovi troĹĄkova, osiguravajuÄi dosljednu kvalitetu usluge svim klijentima.
28) Ĺ to je distribuirani algoritam konsenzusa i zaĹĄto je potreban?
Distribuirani konsenzusni algoritmi osiguravaju da viĹĄe Ävorova u sustavu dogovoriti se o jednoj vrijednosti podataka, Äak i kada doÄe do kvarova.
UobiÄajeni algoritmi:
- paxos
- Splav
- Zab (koristi se u ZooKeeperu)
Neophodni su za odrĹžavanje izbor voÄe, replikacija stanjai dosljednost podataka u distribuiranim bazama podataka i upraviteljima klastera poput Kubernetesa.
Primjer: Raft osigurava da se svi Ävorovi slaĹžu oko unosa u dnevnik prije nego ĹĄto ih primijene na automate stanja, jamÄeÄi pouzdanost Äak i ako se Ävorovi sruĹĄe.
29) Kako biste dizajnirali sustav za biljeĹženje i praÄenje mikroservisa?
PraÄenje distribuiranih sustava zahtijeva centraliziranu moguÄnost promatranja kako bi se otkrili i rijeĹĄili problemi.
KljuÄne komponente:
- SjeÄa: Prikupljajte zapisnike sa svih usluga pomoÄu alata kao ĹĄto su Fluentd or Logstash.
- Metrika: Koristite Prometheus ili Datadog za track pokazatelja performansi (CPU, memorija, latencija zahtjeva).
- TracING: Implementirajte distribuirano tracing (Jaeger, Zipkin) do track putova zahtjeva kroz usluge.
- Upozorenje: Postavite pragove za pokretanje upozorenja u PagerDutyju ili Slack.
Najbolja vjeĹžba:
Koristiti ID-ovi korelacije do traczahtjev jednog korisnika na viĹĄe mikroservisa - kljuÄno za otklanjanje pogreĹĄaka u produkciji.
30) Koja su kljuÄna razmatranja dizajna za izgradnju sustava visoke dostupnosti (HA)?
A Visoka dostupnost (HA) Sustav minimizira zastoje i osigurava kontinuiranu uslugu.
KljuÄni Äimbenici dizajna:
- ViĹĄak: Koristite viĹĄe posluĹžitelja po komponenti.
- Uklonite pojedinaÄne toÄke kvara (SPOF).
- Automatsko prebacivanje u sluÄaju greĹĄke: Preusmjeravanje prometa tijekom prekida.
- Replikacija podataka: Osigurajte trajnost podataka u svim zonama.
- Nadzor zdravlja: Automatski otkrijte i zamijenite neispravne Ävorove.
- Oporavak od katastrofe (DR): Implementirajte sigurnosne kopije i geo-replikaciju.
Primjer: AWS implementira usluge u Zonama dostupnosti (AZ) i koristi ElastiÄne uravnoteĹživaÄe optereÄenja za automatsko prebacivanje u sluÄaju kvara, osiguravajuÄi SLA-ove s 99.99% dostupnosti.
đ NajvaĹžnija pitanja za intervju za dizajn sustava sa stvarnim scenarijima i strateĹĄkim odgovorima
1) Kako pristupate dizajniranju velikog distribuiranog sustava od nule?
OÄekivano od kandidata: IspitivaÄ Ĺželi razumjeti vaĹĄe strukturirano razmiĹĄljanje, sposobnost razjaĹĄnjavanja zahtjeva i kako sloĹžene probleme razlaĹžete na upravljive komponente.
Primjer odgovora: âPoÄinjem razjaĹĄnjavanjem funkcionalnih i nefunkcionalnih zahtjeva, kao ĹĄto su skalabilnost, dostupnost i latencija. Zatim skiciram arhitekturu visoke razine, identificiram kljuÄne komponente, definiram protok podataka i odabirem odgovarajuÄe tehnologije. Nakon toga razmatram uska grla, scenarije kvarova i kompromise prije nego ĹĄto poboljĹĄam dizajn.â
2) MoĹžete li objasniti razliku izmeÄu horizontalnog i vertikalnog skaliranja i kada biste koristili koje od njih?
OÄekivano od kandidata: Anketar testira vaĹĄe temeljno znanje o skalabilnosti i vaĹĄu sposobnost primjene ispravne strategije u stvarnim sustavima.
Primjer odgovora: âVertikalno skaliranje ukljuÄuje dodavanje viĹĄe resursa jednom stroju, dok horizontalno skaliranje dodaje viĹĄe strojeva za rukovanje optereÄenjem. Vertikalno skaliranje je jednostavnije, ali ograniÄeno, dok je horizontalno skaliranje sloĹženije, ali nudi bolju toleranciju greĹĄaka i dugoroÄnu skalabilnost.â
3) Kako osigurati visoku dostupnost u dizajnu sustava?
OÄekivano od kandidata: Anketar Ĺželi procijeniti vaĹĄe razumijevanje redundancije, mehanizama za prebacivanje u sluÄaju kvara i otpornosti sustava.
Primjer odgovora: âU svojoj prethodnoj ulozi, osigurao sam visoku dostupnost koriĹĄtenjem uravnoteĹživaÄa optereÄenja, implementacijom usluga u viĹĄe zona dostupnosti, implementacijom provjera ispravnosti i dizajniranjem usluga bez stanja gdje je to bilo moguÄe. Ove su strategije smanjile broj pojedinaÄnih toÄaka kvara.â
4) OpiĹĄite situaciju kada ste morali napraviti kompromis izmeÄu dosljednosti i dostupnosti.
OÄekivano od kandidata: Anketar procjenjuje vaĹĄe razumijevanje CAP teorema i vaĹĄe donoĹĄenje odluka pod ograniÄenjima.
Primjer odgovora: âNa prethodnoj poziciji radio sam na sustavu gdje je niska latencija bila kljuÄna. Odabrali smo eventualnu konzistentnost umjesto snaĹžne konzistentnosti kako bismo odrĹžali dostupnost tijekom mreĹžnih particija, ĹĄto je bilo prihvatljivo za poslovni sluÄaj upotrebe.â
5) Kako odluÄujete koju bazu podataka koristiti za odreÄeni sustav?
OÄekivano od kandidata: Anketar Ĺželi vidjeti kako usklaÄujete izbore pohrane podataka sa sistemskim zahtjevima.
Primjer odgovora: âProcjenjujem obrasce pristupa podacima, zahtjeve za konzistentnoĹĄÄu, potrebe skalabilnosti i sloĹženost upita. Relacijske baze podataka dobro funkcioniraju za strukturirane podatke i transakcije, dok su NoSQL baze podataka bolje za visoku propusnost i fleksibilne sheme.â
6) Kako biste osmislili sustav za rjeĹĄavanje naglih porasta prometa?
OÄekivano od kandidata: Anketar testira vaĹĄu sposobnost dizajniranja za skalabilnost i nepredvidivo optereÄenje.
Primjer odgovora: âKoristio bih grupe za automatsko skaliranje, uravnoteĹživaÄe optereÄenja i slojeve predmemorije poput pohrana u memoriji. U mojoj posljednjoj ulozi, ove su tehnike omoguÄile sustavu da apsorbira porast prometa bez utjecaja na performanse.â
7) Kakvu ulogu igra keĹĄiranje u dizajnu sustava i gdje biste ga implementirali?
OÄekivano od kandidata: Anketar Ĺželi razumjeti kako optimizirate performanse i smanjujete optereÄenje osnovnih usluga.
Primjer odgovora: âPredmemoriranje poboljĹĄava vrijeme odziva i smanjuje optereÄenje baze podataka. MoĹže se implementirati na viĹĄe slojeva, ukljuÄujuÄi predmemoriranje upita baze podataka na strani klijenta, CDN-u, razini aplikacije i na razini aplikacije, ovisno o sluÄaju upotrebe.â
8) Kako rjeĹĄavate particioniranje i sharding podataka?
OÄekivano od kandidata: Anketar procjenjuje vaĹĄu sposobnost dizajniranja sustava koji horizontalno skaliraju podatke.
Primjer odgovora: âOdabirem kljuÄ za segmentiranje koji ravnomjerno rasporeÄuje podatke i minimizira upite izmeÄu segmentiranja. TakoÄer planiram ponovno segmentiranje i pratim distribuciju podataka kako bih izbjegao vruÄe toÄke kako sustav raste.â
9) OpiĹĄite situaciju u kojoj je praÄenje sustava utjecalo na odluku o dizajnu.
OÄekivano od kandidata: Anketar Ĺželi vidjeti kako koristite moguÄnost promatranja za poboljĹĄanje pouzdanosti i performansi sustava.
Primjer odgovora: âPraÄenje metrika poput latencije i stope pogreĹĄaka otkrilo je usko grlo u API usluzi. Na temelju tog uvida redizajnirao sam uslugu da bude asinkrona, ĹĄto je znaÄajno poboljĹĄalo propusnost.â
10) Kako komunicirate sloĹžene dizajne sustava netehniÄkim dionicima?
OÄekivano od kandidata: Anketar procjenjuje vaĹĄe komunikacijske vjeĹĄtine i sposobnost usklaÄivanja tehniÄkih odluka s poslovnim ciljevima.
Primjer odgovora: âFokusiram se na koncepte visoke razine, koristim dijagrame i povezujem tehniÄke komponente s poslovnim rezultatima. Ovaj pristup pomaĹže dionicima da razumiju vrijednost i utjecaj dizajna bez da se izgube u tehniÄkim detaljima.â
