Hva er noen typiske spørsmål om designintervju for programvareingeniører?


Beste svaret

Her er noen få som jeg husker fra min intervjuer escapades:

  1. Design instagram eller en slags innholdsfeed. Denne er faktisk SUPER vanlig, jeg må ha fått det 3 eller 4 ganger hos forskjellige selskaper. Det er ganske cookie cutter og er sannsynligvis det intervjuerne som er for late til å komme med et bedre spørsmål vil stille.
  2. Designtype fremover / autofullføring. Har også mottatt denne flere ganger, noen ganger med små variasjoner. Det er vanligvis basert på en Trie-datastruktur. Dette er flott å øve på!
  3. Design en meldingsbuss (apache kafka / zeromq / rabbitmq). Du kan få noe slikt hvis du intervjuer for en inforientert programvarerolle. Dette er flott som kan gyte mange forskjellige fokusområder og delspørsmål.
  4. Design en LRU-cache. Vanligvis kommer det til å implementere en dobbeltkoblet liste for å få konstant tidsfjerning for minst brukte elementer når hurtigbufferen er full.
  5. Design en distribuert cache. Igjen, kan være for en rolle som er infrarettet. Kan også tas i mange forskjellige retninger.
  6. Design databasetabeller / datalager. Dette kan være for en mer dataingeniørorientert rolle, men er også vanlig for SWE-er, gitt at god datadesign er veldig viktig.

Her er noen som jeg IKKE har sett personlig , til tross for å være generelt akseptert som vanlig:

  1. Design en URL-forkortelse
  2. Design en nettbutikk / e-handelsside

Håper dette hjelper! Jeg vil være villig til å satse på at topp 4–5 vil dekke DE FLESTE av systemdesignintervjuene dine – og for de de ikke dekker, bør kunnskapen du får ved å studere dem overføre til forskjellige varianter av spørsmålene.

Svar

Systemdesignintervjuer tester dine designferdigheter og din evne til å jobbe med komplekse og skalerbare tjenester. Resultatene dine i disse intervjuene avgjør hvilken stilling og lønn du vil bli tilbudt. Hvis du har prisverdige designferdigheter, vil du få et høyere tilbud. En god ressurs for å forberede seg på dette intervjuet: Grokking av systemdesignintervjuet

Noen få eksempler på designproblemer er:

Det er også en god ide å gjøre deg kjent med distribuerte systemkonsepter som Consistent Hashing, Datapartisjonering , Lastbalansering , Redundans og replikering , CAP Theorem , etc.

Etter min erfaring fulgte kandidater som har prestert bedre i desingintervjuer disse syv trinnene:

Trinn 1: Kravavklaringer: Still alltid spørsmål for å finne det nøyaktige omfanget av problemet du løser.

Trinn 2: Definisjon av systemgrensesnitt: Definer hvilke APIer som forventes av systemet. Dette vil også sikre at du ikke har fått feil krav.

Trinn 3: Beregning av konvolutt: Det er alltid lurt å estimere skalaen til systemet du skal designe.

Trinn 4: Definer datamodell: Selv om det er ikke nødvendig tidlig, vil dette avklare hvordan data vil flyte mellom forskjellige komponenter i systemet, og senere vil du også lede deg mot datadeling.

Trinn 5: Design på høyt nivå: Tegn et blokkdiagram med 5-6 bokser som representerer kjernekomponenter i systemet ditt.

Trinn 6: Detaljert komponentdesign : Grav dypere i 2-3 komponenter; intervjuernes tilbakemeldinger bør alltid veilede deg mot hvilke deler av systemet han vil at du skal forklare nærmere.

Trinn 7: Flaskehalser: Prøv å diskutere så mange flaskehalser som mulig, og forskjellige tilnærminger for å dempe dem.

Håper dette hjalp.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *