Beste Antwort
Hier sind einige, an die ich mich erinnere Interview-Eskapaden:
- Design-Instagram oder eine Art von Content-Feed. Dieser ist tatsächlich SUPER häufig, d.h. muss es 3 oder 4 mal bei verschiedenen Firmen bekommen haben. Es ist ein hübscher Ausstecher und wahrscheinlich das, was die Interviewer, die zu faul sind, um eine bessere Frage zu stellen, stellen werden.
- Typ-Ahead / Autocomplete entwerfen. Habe diese auch mehrmals erhalten, manchmal mit geringfügigen Abweichungen. Es basiert normalerweise auf einer Trie-Datenstruktur. Dies ist eine großartige Übung!
- Entwerfen Sie einen Messaging-Bus (apache kafka / zeromq / rabbitmq). Möglicherweise erhalten Sie so etwas, wenn Sie ein Interview für eine infra-orientierte Softwarerolle führen. Dies ist eine großartige Methode, die viele verschiedene Fokusbereiche und Unterfragen hervorbringen kann.
- Entwerfen Sie einen LRU-Cache. In der Regel muss eine doppelt verknüpfte Liste implementiert werden, um eine konstante Zeitentfernung für die zuletzt verwendeten Elemente zu erhalten, wenn der Cache voll ist.
- Design ein verteilter Cache. Auch hier könnte es sich um eine infra-orientierte Rolle handeln. Kann auch in viele verschiedene Richtungen ausgeführt werden.
- Entwerfen von Datenbanktabellen / Data Warehouse. Dies könnte für eine eher dateningenieurorientierte Rolle sein, ist aber auch für SWEs üblich, da ein gutes Daten-Design von enormer Bedeutung ist.
Hier sind einige, die ich NICHT persönlich gesehen habe , obwohl allgemein anerkannt:
- Entwerfen Sie einen URL-Shortener
- Entwerfen Sie eine Webshop- / E-Commerce-Website
Hoffe, das hilft! Ich würde gerne wetten, dass die Top 4–5 die meisten Ihrer Systemdesign-Interviews abdecken – und für diejenigen, die sie nicht abdecken, sollte sich das Wissen, das Sie durch das Studium gewinnen, gut auf verschiedene Variationen der Fragen übertragen lassen / p>
Antwort
Systemdesign-Interviews Testen Sie Ihre Designfähigkeiten und Ihre Fähigkeit, mit komplexen und skalierbaren Diensten zu arbeiten. Ihre Leistung in diesen Interviews bestimmt, welche Position und welches Gehalt Ihnen angeboten wird. Wenn Sie über lobenswerte Designfähigkeiten verfügen, erhalten Sie ein höheres Angebot. Eine gute Quelle, um sich auf dieses Interview vorzubereiten: Grokking the System Design Interview
Einige Beispiele für Designprobleme sind:
- Entwerfen eines URL-Verkürzungsdienstes wie TinyURL
- Entwerfen von Instagram
- Entwerfen von Twitter
- Entwerfen von Youtube
- Entwerfen von Facebook Messenger
- Entwerfen von Dropbox
- Typeahead-Vorschlag entwerfen
- Entwerfen von Facebooks Newsfeed
- Yelp entwerfen
- Entwerfen Uber
Es ist auch eine gute Idee, sich mit verteilten Systemkonzepten wie Consistent Hashing, Datenpartitionierung , Lastausgleich , Redundanz und Replikation , CAP-Theorem usw.
Nach meiner Erfahrung haben Kandidaten, die bei der Erstellung von Interviews bessere Leistungen erbracht haben, die folgenden sieben Schritte ausgeführt:
Schritt 1: Klärung der Anforderungen: Stellen Sie immer Fragen, um den genauen Umfang des zu lösenden Problems zu ermitteln.
Schritt 2: Definition der Systemschnittstelle: Definieren Sie, welche APIs vom System erwartet werden. Dies stellt auch sicher, dass Sie keine falschen Anforderungen haben.
Schritt 3: Schätzung der Rückseite des Umschlags: Es ist immer eine gute Idee, den Maßstab des Systems zu schätzen, das Sie entwerfen möchten.
Schritt 4: Definieren Sie das Datenmodell: Obwohl dies der Fall ist Dies wird nicht frühzeitig benötigt. Dies verdeutlicht den Datenfluss zwischen verschiedenen Systemkomponenten und führt Sie später auch zur Datenpartitionierung.
Schritt 5: Übergeordnetes Design: Zeichnen Sie ein Blockdiagramm mit 5-6 Feldern, die die Kernkomponenten Ihres Systems darstellen.
Schritt 6: Detailliertes Komponentendesign : Graben Sie tiefer in 2-3 Komponenten; Das Feedback der Interviewer sollte Sie immer zu den Teilen des Systems führen, die Sie näher erläutern sollen.
Schritt 7: Engpässe: Versuchen Sie zu diskutieren so viele Engpässe wie möglich und verschiedene Ansätze, um sie zu mindern.
Hoffe, das hat geholfen.