Bedste svar
Her er et par, som jeg husker fra min interview af eskapader:
- Design instagram eller en eller anden form for indholdsfeed. Denne er faktisk SUPER almindelig, jeg skal have fået det 3 eller 4 gange hos forskellige virksomheder. Det er temmelig cookie cutter og er sandsynligvis hvad de interviewere, der er for dovne til at komme med et bedre spørgsmål, vil stille.
- Designtype fremad / autofuldførelse. Har også modtaget denne flere gange, undertiden med små variationer. Det er normalt baseret på en Trie-datastruktur. Dette er en god oplevelse!
- Design en meddelelsesbus (apache kafka / zeromq / rabbitmq). Du får muligvis noget som dette, hvis du interviewer for en infrarienteret software-rolle. Dette er fantastisk, der kan give mange forskellige fokusområder og underspørgsmål.
- Design en LRU-cache. Normalt kommer det til at implementere en dobbeltkoblet liste for konstant fjernelse af tid for senest anvendte elementer, når cachen er fuld.
- Design en distribueret cache. Igen kan det være for en rolle, der er infrarienteret. Kan også tages i mange forskellige retninger.
- Design databasetabeller / datalager. Dette kan være for en mere dataingeniørorienteret rolle, men er også almindelig for SWEer i betragtning af at godt datadesign er meget vigtigt.
Her er et par, som jeg IKKE har set personligt , på trods af at de generelt accepteres som almindelige:
- Design en URL-forkortelse
- Design et web-shop / e-handelssted
Håber det hjælper! Jeg ville være villig til at satse på, at top 4–5 dækker de fleste af dine systemdesigninterviews – og for dem, de ikke dækker, skal den viden, du får ved at studere dem, overføres godt til forskellige variationer af spørgsmålene.
Svar
Systemdesigninterviews tester dine designfærdigheder og din evne til at arbejde med komplekse og skalerbare tjenester. Din præstation i disse interviews bestemmer, hvilken stilling og løn, du vil blive tilbudt. Hvis du har prisværdige designfærdigheder, får du et højere tilbud. En god ressource til at forberede sig til dette interview: Grokking af systemdesigninterviewet
Et par eksempler på designproblemer er:
- Design af en URL-afkortningstjeneste som TinyURL
- Design af Instagram
- Design af Twitter
- Design af Youtube
- Design af Facebook Messenger
- Design af Dropbox
- Design af typehovedforslag
- Design af Facebooks Newsfeed
- Design af Yelp
- Design Uber
Det er også en god ide at gøre dig bekendt med distribuerede systemkoncepter som Konsistent Hashing, Datadeling , Load Balancing , Redundans og replikering , CAP-sætning osv.
Efter min erfaring fulgte kandidater, der har klaret sig bedre i desinginterviews, disse syv trin:
Trin 1: Krav til afklaringer: Stil altid spørgsmål for at finde det nøjagtige omfang af det problem, du løser.
Trin 2: Definition af systemgrænseflade: Definer, hvilke APIer der forventes af systemet. Dette vil også sikre, at du ikke har fået et forkert krav.
Trin 3: Skøn bag-af-konvolutten: Det er altid en god ide at estimere skalaen på det system, du skal designe.
Trin 4: Definer datamodel: Selvom det er ikke påkrævet tidligt, dette vil afklare, hvordan data flyder mellem forskellige komponenter i systemet, og senere vil du også guide dig mod datadeling.
Trin 5: Design på højt plan: Tegn et blokdiagram med 5-6 felter, der repræsenterer kernekomponenter i dit system.
Trin 6: Detaljeret komponentdesign : Grav dybere ned i 2-3 komponenter; interviewers feedback skal altid guide dig mod hvilke dele af systemet han ønsker, at du skal forklare nærmere.
Trin 7: Flaskehalse: Prøv at diskutere så mange flaskehalse som muligt og forskellige tilgange for at afbøde dem.
Håber dette hjalp.