Daptar eusi[Sumputkeun][Témbongkeun]
- 1. Naon anu anjeun maksud ku desain sistem?
- 2. Naon ciri anu paling penting dina desainer sistem?
- 3. Naon kahayang téh teorema CAP?
- 4. Naon anu anjeun ngartos ku load balancing?
- 5. Naon bedana programming Asynchronous jeung programming paralel?
- 6. Naon bedana skala horizontal jeung vertikal?
- 7. Naon kahayang anjeun hartosna latency, throughput, sarta kasadiaan sistem?
- 8. Naon sipat asam?
- 9. Naon sabenerna sharding?
- 10. Naon CDN?
- 11. Naha make CDN?
- 12. Naon bédana sharding jeung partisi?
- 13. Naon kahayang téh cache?
- 14. Naon CDN ujung server?
- 15. Naon anu pola Konsistensi béda pikeun desain sistem?
- 16. Naon anu anjeun maksud ku ngonci optimis?
- 17. Naon kahayang Sadérék nu dimaksud ”pamilihan pamingpin”?
- 18. Kumaha pendekatan anjeun pikeun ngarancang jasa pondok URL sapertos TinyURL?
- 19. Kumaha pendekatan anjeun pikeun ngarancang twitter?
- 20. Jieun sistem newsfeed pikeun Facebook
- 21. Naon sipat BASE sistem urang?
- 22. Naon Dupi Balancing Beban Jeung Téhnik Pangirut Alamat IP?
- 23. Naon persisna algoritma Panggantian Cache (atanapi Kabijakan Pengusiran)?
- 24. Naon kahayang anjeun hartosna ku urus disebarkeun?
- 25. Naon kahayang téh kalaparan?
- kacindekan
Sateuacan anjeun ngawitan, kami nyarankeun maca kami pituduh bubuka dina Desain System pikeun nyegerkeun pangaweruh dasar anjeun.
Nalika ngawawancara pikeun posisi anu meryogikeun pangaweruh desain sistem, anjeun gaduh kasempetan pikeun ngobrol ngeunaan kasang tukang anjeun sareng nunjukkeun kamampuan anjeun pikeun ngembangkeun sistem anu rumit.
Nalika nyarios sareng calon dunungan, cara anjeun nganyatakeun kaahlian anjeun tiasa ngabantosan anjeun nunjukkeun yén anjeun calon anu kompeten pikeun posisi éta.
Anjeun tiasa nyiapkeun wawancara padamelan anjeun ku diajar konsép desain dasar sareng mikirkeun kumaha anjeun bakal ngabales patarosan ngeunaan éta. Kami bakal ngabahas sababaraha patarosan wawancara desain sistem sareng waleran dina tulisan ieu pikeun ngabantosan anjeun nyiapkeun wawancara salajengna.
1. Naon anu anjeun maksud ku desain sistem?
Prosés ngadegkeun karakteristik sistem kaasup modul, arsitéktur, komponén, jeung interfaces maranéhanana, sarta data dumasar kana kriteria predetermined katelah desain sistem.
Ieu mangrupikeun prosés netepkeun, nyiptakeun, sareng ngarancang sistem pikeun nyumponan tujuan sareng tujuan khusus perusahaan atanapi organisasi. Desain sistem langkung seueur ngeunaan analisis sistem, pola arsitéktur, API, pola desain, sareng gluing sadayana babarengan tibatan ngeunaan coding.
2. Naon ciri anu paling penting dina desainer sistem?
- Interaksi pangguna
- panggero API éksternal
- Prosés offline
3. Naon kahayang téh teorema CAP?
Numutkeun teorema CAP (Consistency-Availability-Partition Tolerance), sistem anu disebarkeun henteu tiasa mastikeun C, A, sareng P sadayana dina waktos anu sami. Éta ngan ukur tiasa nyayogikeun dua tina tilu jaminan anu paling seueur. Hayu urang nganggo sistem database anu disebarkeun pikeun ngabantosan urang ngartos ieu.
- Konsistensi: Ieu nangtukeun yén data kudu tetep konsisten sakali transaksi database geus réngsé. Contona, sadaya queries kudu balik respon sarua sanggeus update database.
- Kasadiaan: Basis data kedah sayogi sareng responsif sepanjang waktos.
- Toleransi Partisi: Sanaos komunikasi janten masalah, sistem pangkalan data kedah tetep jalan.
4. Naon anu anjeun ngartos ku load balancing?
Beban balancing nyaéta prosés épisién nyebarkeun lalu lintas asup diantara sakumpulan server backend. Ieu disebut pools server. Situs wéb modern diwangun pikeun nanganan jutaan patarosan ti para nasabah sareng ngabales aranjeunna gancang sareng dipercaya. Langkung seueur server bakal diperyogikeun pikeun nanganan tungtutan ieu.
Dina hal ieu, penting pisan pikeun ngabagi lalu lintas pamundut sacara épisién diantara unggal server pikeun ngahindarkeunana. The load balancer fungsina salaku pulisi lalulintas, intercepting requests sarta routing aranjeunna diantara server sadia ku kituna euweuh hiji server overburdened, berpotensi ngahinakeun kinerja aplikasi.
5. Naon bedana programming Asynchronous jeung programming paralel?
Lamun anjeun ngajalankeun nanaon asynchronously, hartina anjeun teu kudu ngadagoan nepi ka rengse sateuacan Anjeun bisa neruskeun kana hal sejenna. Paralelisme nujul kana palaksanaan simultaneous loba tugas.
Nalika anjeun tiasa ngarobih padamelan janten sakumpulan tenaga kerja anu béda, paralelisme tiasa dianggo sacara efektif. Async sareng Callbacks mangrupikeun sarana (alat atanapi mékanisme) pikeun ngagambarkeun konkurensi, nyaéta sakelompok éntitas anu tiasa komunikasi sareng ngabagi sumber.
6. Naon bedana skala horizontal jeung vertikal?
Penambahan alat komputasi anyar kana jaringan anu nyebarkeun pamrosésan sareng paménta mémori dina jaringan alat anu sumebar disebut skala horizontal. Kantun nyarios, instansi server anyar ditambahkeun kana kolam renang ayeuna, sarta beban lalulintas éfisién nyebarkeun antara alat ieu.
Skala vertikal nujul kana pamanggih ngalegaan kapasitas sumberdaya hiji komputer urang ku nambahkeun RAM, CPUs efisien, atawa migrasi ka mesin anyar kalawan kapasitas nu leuwih luhur. fungsionalitas server urang bisa ngaronjat tanpa merlukeun sagala parobahan programming.
7. Naon kahayang anjeun hartosna latency, throughput, sarta kasadiaan sistem?
Kinerja mangrupikeun aspék penting dina desain sistem sabab éta nyumbang kana kagancangan sareng reliabilitas jasa kami. Tilu ukuran kinerja pangpentingna nyaéta kieu:
- Waktu nu diperlukeun pikeun ngirimkeun hiji talatah dina milliseconds disebut latency.
- Jumlah data hasil ditransfer ngaliwatan sistem dina periode waktu nu tangtu disebut throughput. Bit per detik digunakeun pikeun ngukurna.
- Jumlah waktos sistem sadia pikeun ngaréaksikeun queries ditangtukeun ku kasadiaan na. System Uptime / (System Uptime+Downtime) nyaéta rumus pikeun ngitungana.
8. Naon sipat asam?
- Atomicity: Éta ngajamin yén parobihan database boh sadayana atanapi henteu.
- Konsistensi: Nilai data dina pangkalan data konsisten.
- Isolasi: Ieu nujul kana pamisahan dua transaksi.
- Durability: Data dilestarikan sanajan server gagal.
9. Naon sabenerna sharding?
Sharding mangrupikeun téknik ngabagi set data logis anu ageung kana seueur pangkalan data. Éta ogé ngarujuk kana pamisahan data horizontal sabab datana bakal disimpen dina sababaraha komputer. Hasilna, pangkalan data anu dibagikeun tiasa ngadamel langkung seueur patarosan tibatan hiji komputer ageung.
10. Naon CDN?
Jaringan pangiriman eusi nyaéta jaringan komputer sadunya anu gawé bareng pikeun nyayogikeun inpormasi Internét sacara gancang. Éta ngamungkinkeun pangiriman gancang elemen sapertos halaman HTML, file JavaScript, lambar gaya, gambar, sareng pidéo anu diperyogikeun pikeun ngamuat eusi Internét.
11. Naha make CDN?
- Mertimbangkeun sumberdaya statik kira-kira 80% tina situs wéb, ngadopsi CDN ngirangan galur dina server asal sacara signifikan.
- Kusabab jarak perjalanan anu kirang, inpormasi bakal disayogikeun langkung gancang ka anu gaduh halaman wéb anu gaduh sémah ti seueur daérah géografis.
- Pamaké CDNs ogé kauntungan tina kapasitas pikeun gancang skala luhur jeung ka handap dina respon kana surges lalulintas.
12. Naon bédana sharding jeung partisi?
Database Sharding - Database sharding mangrupikeun metode ngabagi set data tunggal kana sababaraha pangkalan data supados tiasa disimpen dina workstation anu béda. Dataset anu langkung ageung tiasa dirobih janten sakumpulan anu langkung alit sareng disimpen dina sababaraha titik data, ningkatkeun total kapasitas neundeun sistem.
Ku nyebarkeun data kana seueur mesin, pangkalan data anu dibagikeun tiasa ngadamel langkung seueur patarosan tibatan sistem tunggal.
Database Partitioning nyaéta prosés ngabagi objék database nu disimpen (tabel, indéks, jeung pintonan) kana lembar misah. Pikeun ningkatkeun kadali kontrol, kinerja, sareng kasadiaan, objék database ageung dipisahkeun.
Dina sababaraha kasus, partisi tiasa ningkatkeun kagancangan nalika ngaksés data anu dipisahkeun. Partisi tiasa ngirangan ukuran indéks sareng ningkatkeun kasempetan pikeun milarian indéks anu paling dipikabutuh dina mémori ku ngalaksanakeun salaku kolom utama dina indéks.
13. Naon kahayang téh cache?
Caching mangrupikeun téknik nyimpen salinan file dina tempat panyimpen samentawis anu katelah cache, anu nyepetkeun aksés data sareng ngirangan latency situs. Ngan sajumlah data anu tiasa disimpen dina cache.
Hasilna, nangtukeun téknik update cache anu paling cocog pikeun tujuan bisnis penting pisan.
14. Naon anu server ujung CDN?
Pangladén CDN anu nyéépkeun bahan tina pangladén asal anjeun atanapi klaster gudang katelah pangladén tepi. Point of presence mangrupikeun istilah anu sering dianggo pikeun ngajelaskeun server edge (POP).
Server ujung diposisikan sacara fisik dina POP. Dina POP éta, inpormasi tiasa di-cache ku seueur server tepi.
Kamampuhan pikeun nyayogikeun bagian halaman wéb ti sababaraha tempat ngirangan jarak antara pangunjung sareng pangladén wéb, nyababkeun latency langkung handap. Server ujung CDN ngahontal tujuan anu tepat ieu.
15. Naon anu pola Konsistensi béda pikeun desain sistem?
Unggal pamundut dibaca kedah meunangkeun data nu panganyarna ditulis, nurutkeun teorema CAP. Nalika seueur salinan data tiasa diaksés, nyingkronkeunana supados palanggan nampi data énggal sacara kontinyu janten sesah. Ieu mangrupikeun pola konsistensi anu mungkin:
- Konsistensi lemah: Saatos nyerat data, pamundut baca tiasa atanapi henteu tiasa nampi data anu diropéa. Tingkat stabilitas ieu idéal pikeun aplikasi real-time sapertos VoIP, obrolan video, sareng kaulinan multiplayer.
- Konsistensi ahirna: Reads antukna bakal nempo data panganyarna dina milliseconds sanggeus data ditulis. Data ieu duplikat asynchronously dina hal ieu. DNS sareng sistem email mangrupikeun conto ieu. Ieu jalan éféktif dina sistem kalawan kasadiaan tinggi.
- Konsistensi anu kuat: Saatos nyerat data, pamiarsa ka hareup bakal ningali data anu paling anyar. Data disalin sacara sinkron dina hal ieu. Ieu tiasa ditingali dina RDBMS sareng sistem file, anu cocog pikeun mindahkeun data.
16. Naon anu anjeun maksud ku ngonci optimis?
Ngonci Optimistis nyaéta mékanisme dimana anjeun maca rékaman, perhatikeun nomer vérsi (cara alternatip kalebet kaping, cap waktu, atanapi checksums/hashes), teras parios dua kali yén versina teu acan robih sateuacan nyerat deui.
Nalika anjeun nyerat catetan deui, anjeun nganggo versi pikeun nyaring apdet pikeun mastikeun yén éta atom. (nyaéta, teu acan dirobih antara nalika anjeun pariksa versi sareng nalika anjeun nyerat catetan kana disk) sareng ngapdet sadayana sakaligus.
17. Naon kahayang Sadérék nu dimaksud ”pamilihan pamingpin”?
Dina sistem anu disebarkeun sareng seueur server anu nyumbang kana kasadiaan aplikasi, tiasa aya waktos ngan ukur hiji server anu tanggung jawab pikeun ngapdet API pihak katilu, sabab sababaraha server tiasa nyababkeun masalah nalika ngagunakeun API.
server ieu dipikawanoh salaku server primér, sarta prosedur pikeun milih eta katelah pamilihan pamimpin. Nalika pamimpin server gagal dina sistem disebarkeun, server kudu perhatikeun kagagalan sarta nyokot pamimpin anyar. Ngagunakeun téknik konsensus, pendekatan ieu paling cocog pikeun kasadiaan anu luhur sareng aplikasi konsistensi anu kuat.
18. Kumaha pendekatan anjeun pikeun ngarancang jasa pondok URL sapertos TinyURL?
TinyURL ngarobih URL panjang janten URL pondok anu unik. Téknologi ieu ogé tiasa nampi URL pondok sareng ngabalikeun URL lengkep.
Naon sababaraha kualitas anu penting?
- Jieun URL nu leuwih pondok ti aslina.
- Simpen URL anu langkung panjang sareng ganti ku anu langkung pondok.
- Ngidinan pikeun alihan dina URL pondok.
- URL pondok sareng nami khusus dirojong.
- Nanganan sababaraha inquiries sakaligus.
Naon masalah anu paling umum?
- Kumaha anjeun ngalacak gudang database?
- Naon anu lumangsung lamun beban pamaké ngaleuwihan ekspektasi?
- Kumaha upami dua jalma nganggo URL khusus anu sami?
Pertimbangkeun saran di handap ieu:
- Hashing mangrupikeun anggapan anu tiasa dianggo pikeun nyambungkeun URL anu lami sareng énggal.
- sesa API bisa dipaké pikeun nanganan komunikasi hareup-tungtung tur saimbang beban beurat.
- Multithreading mangrupikeun anggapan anu ngamungkinkeun anjeun pikeun nanganan sababaraha pamundut sakaligus.
- URL aslina disimpen dina database NoSQL.
19. Kumaha pendekatan anjeun pikeun ngarancang twitter?
Persyaratan anu dipasihkeun:
- Ngirim tweets
- Nuturkeun pamaké séjén
- Tweet feed / newsfeed
- Sistim téh scalable
- Ngamuat gancang
- Sistem tiasa dipercaya
Anjeun tiasa ngamimitian mikirkeun desain API Twitter anjeun nalika anjeun parantos netepkeun kriteria. Ieu kumaha éta bakal muncul:
Pikeun ngamimitian, urang bakal sketsa titik konci konci API. Ieu sababaraha conto:
- sendTweet (pesen)
- followUser(userID)
- unfollowUser(userID)
- getFeed (kaca)
Arsitéktur anu bakal ngaktifkeun ciri ieu teras tiasa digambar. Urang tiasa mimitian ku pangguna anu ngirimkeun pamundut pangladén. Urang tiasa masang server API tambahan di tukangeun penyeimbang beban pikeun ngabantosan tingkat lalu lintas anu langkung ageung pikeun nyumponan kabutuhan skalabilitas. Urang kedah nambihan pangkalan data pikeun nyimpen tweet urang ayeuna.
Penting pikeun émut yén API anu kami nyayogikeun kedah tiasa skala. Pikeun nyieun layanan ieu scalable, urang bisa boga salah sahiji server API urang maca tina cache misah pikeun newsfeed urang. Nalika ngalakukeun kitu, urang ogé kedah nganggo panyadia feed pikeun ngajaga cache feed urang diropéa.
20. Jieun sistem newsfeed pikeun Facebook
The newsfeed on Facebook ngamungkinkeun pamaké pikeun nempo naon anu lumangsung dina bunderan babaturan maranéhanana ', kaca favorit, sarta organisasi maranéhna geus dituturkeun.
Naon sababaraha ciri penting?
- Jieun newsfeed dumasar kana tulisan ti éntitas sistem séjén nu pamaké nuturkeun.
- Téks, gambar, audio, sareng video sadayana tiasa dianggo dina postingan Newsfeed.
- Sacara real-time, tambahkeun eusi anyar kana newsfeed pamaké.
Naon sababaraha masalah anu paling umum?
- Kumaha upami postingan énggal nyandak waktos kanggo muncul dina feed warta?
- Tiasa algoritma ngatur spike dina aktivitas pamaké?
- Tulisan naon anu kedah ditampilkeun heula dina feed berita?
Pertimbangkeun saran di handap ieu:
- Pariksa mékanisme fanout pikeun nyebarkeun tulisan ka pengikut.
- Pariksa kumaha sharding bisa dipaké pikeun éfisién nanganan beban pamaké tinggi.
- Data feed pamaké teu kudu duplikat sakuliah sababaraha server. Sharding tiasa dilakukeun dumasar kana ID pangguna.
21. Naon sipat BASE sistem urang?
Fitur BASE aya dimana-mana dina pangkalan data NoSQL anu nembe muncul. Hiji sistem BASE teu nyadiakeun konsistensi, nurutkeun teorema CAP. Ieu mangrupakeun akronim dijieun-up nu pakait jeung sipat handap téoréma CAP tina sistem:
- Istilah "dasarna sadia" hartina sistem bakal sadia sepanjang waktos.
- Hiji kaayaan lemes hartina kaayaan sistem urang bisa rupa-rupa kana waktu, sanajan euweuh input disadiakeun. Ieu alatan lolobana konsistensi ahirna model urang.
- Kusabab sistem henteu nampi input dina waktos éta, konsistensi ahirna hartosna sistem bakal konsisten dina waktosna.
22. Naon Dupi Balancing Beban Jeung Téhnik Pangirut Alamat IP?
Métode anu sanés pikeun ngimbangan beban nyaéta afinitas alamat IP. Alamat IP klien disambungkeun jeung titik server dina metoda ieu. Hiji titik server nanganan sadaya pamundut ti alamat IP klien.
Metoda ieu basajan pikeun diimplementasikeun sabab alamat IP sok tiasa diaksés dina header pamundut HTTP sareng henteu aya setélan salajengna anu diperyogikeun. Upami klien anjeun kamungkinan gaduh cookies dinonaktipkeun, bentuk kasaimbangan beban ieu tiasa nguntungkeun.
23. Naon persisna algoritma Panggantian Cache (atanapi Kabijakan Pengusiran)?
Algoritma cache (ogé katelah algoritma ngagantian cache, kawijakan ngagantian cache, atawa kawijakan pangusir cache) mangrupakeun parentah optimasi, atawa algoritma, nu program komputer atawa struktur hardware-dijaga bisa dipaké pikeun ngatur cache data nu disimpen dina komputer.
Caching ningkatkeun kagancangan ku nyimpen data anu nembe dianggo atanapi sering diaksés di daérah mémori anu langkung gancang atanapi langkung murah pikeun diaksés tibatan panyimpenan mémori tradisional. Nalika cache pinuh, algoritme kedah mutuskeun barang mana anu kedah dipupus pikeun ngadamel tempat anu énggal.
24. Naon kahayang anjeun hartosna ku urus disebarkeun?
Transaksi anu disebarkeun nyaéta kaayaan naon waé dimana hiji kajadian nyababkeun parobahan dua atanapi langkung sumber data anu béda anu henteu tiasa dilakukeun sacara atom.
Janten langkung pajeulit dina dunya jasa mikro sabab unggal jasa mangrupikeun unit padamelan, sareng seueur waktos seueur jasa kedah kolaborasi pikeun ngajantenkeun bisnis suksés.
25. Naon kahayang téh kalaparan?
Nalika thread a teu bisa acquire aksés biasa mun sumberdaya dibagikeun, éta ceuk kalaparan. Ieu lumangsung nalika "rakus" threads atawa threads kalawan luhur "prioritas" nyieun sumberdaya dibagikeun inaccessible pikeun période lengthy waktu.
Mertimbangkeun hiji obyék nu nyadiakeun metoda nyingkronkeun nu remen balik telat. Lamun hiji thread sababaraha kali nelepon metoda ieu, threads séjén anu merlukeun aksés sering nyingkronkeun ka objék sarua bakal mindeng diblokir.
kacindekan
Sesi brainstorming mangrupikeun sadayana anu diperyogikeun pikeun wawancara desain sistem. Kami parantos naroskeun patarosan wawancara Desain Sistem anu paling umum dina tulisan ieu.
Pangertian komprehensif ngeunaan metode anu anjeun lakukeun nalika nyiptakeun sistem khusus penting pikeun ngaliwat wawancara Desain Sistem.
Leave a Reply