Nejlepší odpověď
Zde je několik, které si pamatuji z mého rozhovor s eskapády:
- Designový instagram nebo nějaký typ zdroje obsahu. Tenhle je ve skutečnosti SUPER běžný, i musel jsem to získat 3 nebo 4krát v různých společnostech. Je to pěkný nástroj na krájení souborů cookie a pravděpodobně se ho zeptají tazatelé, kteří jsou příliš líní, aby přišli s lepší otázkou.
- Design type-ahead / autocomplete. Tuto zprávu jsme obdrželi také několikrát, někdy s drobnými obměnami. Obvykle je založen na datové struktuře Trie. Je to skvělý trénink!
- Navrhněte sběrnici pro zasílání zpráv (apache kafka / zeromq / rabbitmq). Něco takového byste mohli získat, pokud provádíte pohovor o roli infračerveného softwaru. Je to skvělý nástroj, který může vytvořit mnoho různých oblastí zaměření a dílčích otázek.
- Navrhněte mezipaměť LRU. Obvykle se jedná o implementaci seznamu s dvojitým propojením, který zajistí konstantní odstranění času pro nejméně nedávno použité prvky, když je mezipaměť plná.
- Design distribuovaná mezipaměť. Znovu to může být pro roli, která je infraorientovaná. Lze se také vydat mnoha různými směry.
- Navrhovat databázové tabulky / datový sklad. Může to být pro roli více zaměřenou na datového inženýra, ale je to také běžné pro SWE, protože dobrý design dat je velmi důležitý.
Zde je několik, které jsem osobně NEVIDĚL , přestože jsou obecně přijímány jako běžné:
- Navrhnout zkracovač adres URL
- Navrhněte webový obchod / web elektronického obchodu
Doufám, že to pomůže! Byl bych ochoten vsadit, že nejlepší 4–5 pokryje NEJVĚTŠÍ pohovorů s návrhem vašeho systému – a pro ty, které nepokrývají, by znalosti, které získáte jejich studiem, měly být dobře přeneseny do různých variant otázek.
Odpověď
Rozhovory o návrhu systému otestují vaše návrhářské schopnosti a schopnost pracovat s komplexními a škálovatelnými službami. Vaše výkony v těchto pohovorech určují, jakou pozici a plat vám nabídnou. Pokud máte chvályhodné designové dovednosti, dostanete vyšší nabídku. Dobrým zdrojem pro přípravu na tento rozhovor: Rozhovor s System Design Interview
Několik ukázkových návrhových problémů je:
- Navrhování služby zkracování adres URL, jako je TinyURL
- Návrh Instagramu
- Návrh Twitteru
- Návrh Youtube
- Návrh služby Facebook Messenger
- Návrh služby Dropbox
- Navrhování návrhů Typeahead
- Navrhování Facebooku Newsfeed
- Navrhování Yelpu
- Navrhování Uber
Je také dobré seznámit se s koncepty distribuovaných systémů, jako je konzistentní hashování, Rozdělení dat , Vyrovnávání zatížení , Redundance a replikace , CAP Theorem atd.
Z mých zkušeností vyplývá, že kandidáti, kteří si při navrhování rozhovorů vedli lépe, postupovali podle těchto sedmi kroků:
Krok 1: Vysvětlení požadavků: Vždy se ptejte, abyste zjistili přesný rozsah problému, který řešíte.
Krok 2: Definice systémového rozhraní: Definujte, jaké API se od systému očekávají. Tím také zajistíte, že se vám žádný požadavek nepokazil.
Krok 3: Odhad zadní části obálky: Vždy je dobré odhadnout rozsah systému, který hodláte navrhnout.
Krok 4: Definujte datový model: Ačkoli není vyžadováno brzy, vyjasní se, jak budou data proudit mezi různými komponentami systému, a později vás také provede k rozdělení dat.
Krok 5: Návrh na vysoké úrovni: Nakreslete blokové schéma s 5–6 rámečky představujícími hlavní součásti vašeho systému.
Krok 6: Podrobný návrh součásti : Pusťte se hlouběji do 2–3 komponent; zpětná vazba tazatelů by vás měla vždy vést k tomu, ve kterých částech systému vás chce dále vysvětlit.
Krok 7: Úzká místa: Zkuste diskutovat co nejvíce překážek a různé přístupy k jejich zmírnění.
Doufám, že to pomohlo.