Einführung in das Systemdesign Interview Fragen und Antworten
Beim Systemdesign werden die Elemente eines Systems wie Architektur, Komponenten und Module, die verschiedenen Schnittstellen dieser Komponenten und die Statistiken, die das System durchlaufen, definiert. Durch die Entwicklung eines logischen und effektiven Systems sollen bestimmte Anforderungen und Bedürfnisse eines Unternehmens oder einer Organisation erfüllt werden. Es beinhaltet einen organisierten Ansatz für den Entwurf eines Systems. Es ist ein Bottom-Up- oder Top-Down-Ansatz erforderlich, um alle zugehörigen Variablen des Systems zu berücksichtigen. Modellierungssprachen werden von einem Designer verwendet, um Daten und Wissen in einer Struktur eines Systems zu vermitteln, die durch kompatible Regeln und Definitionen definiert ist. Die Entwürfe können in textuellen oder grafischen Modellierungssprachen beschrieben werden.
Einige Beispiele für grafische Modellierungssprachen sind:
- Unified Modeling Language (UML): Beschreibt die Software sowohl verhaltensmäßig als auch strukturell mit grafischer Notation.
- Business Process Modeling Notation (BPMN): Wird für die Prozessmodellierung verwendet
- Systems Modeling Language (SysML): Wird für das Systems Engineering verwendet.
- Flussdiagramm: Eine symbolische oder schrittweise Darstellung eines Algorithmus.
Was sollte man in einem Systemdesign-Interview erwarten?
Ein solches Interview beginnt normalerweise mit einem sehr offenen Problem wie dem Entwerfen eines eigenen sozialen Netzwerks (wie Facebook, Twitter). Im weiteren Verlauf der Diskussion fügt der Interviewer zusätzliche Einschränkungen oder Annahmen hinzu, um den Umfang des Problems zu verringern.
Um diese Fragen anzugehen, sind Dinge, die Ihnen helfen, zu üben und einen strukturierten Ansatz zu haben.
Wenn Sie nach einem Job suchen, der mit dem Systemdesign zusammenhängt, müssen Sie sich auf die Interview-Fragen für das Systemdesign 2019 vorbereiten. Es ist wahr, dass jedes Interview anders ist, je nach den verschiedenen Berufsprofilen. Hier haben wir die wichtigen Fragen und Antworten zum Systemdesign vorbereitet, die Ihnen helfen, ein erfolgreiches Interview zu führen.
In diesem Artikel zu Systemdesign-Interviewfragen aus dem Jahr 2019 werden die 10 wichtigsten und am häufigsten gestellten Fragen zu Systemdesign-Interviewen vorgestellt. Diese Fragen gliedern sich in zwei Teile:
Teil 1 - Systemdesign InterviewFragen (Basic)
Dieser erste Teil behandelt grundlegende Fragen und Antworten zum Systemdesign-Interview
Q1) Design TinyURL oder bit.ly (ein URL-Kürzungsdienst)?
Antworten:
Überlegen Sie sich Funktionen, die das System zuerst unterstützen sollte. Zweitens müssen Sie die geschätzten Werte für die Skalierbarkeit des Systems ermitteln.
Beim Entwerfen eines Dienstes sind drei Dinge zu beachten:
- API (REST API) - Kommunikationsansatz des Clients mit dem Service zusammen mit einem Load Balancer, der das Front-End des Services darstellt.
- Anwendungsschicht - Worker-Threads oder -Hosts, die die URL verwenden und die winzige URL dafür generieren und beide in der Persistenzschicht speichern.
- Persistenzschicht - Datenbank
Dinge zu analysieren:
- Generieren Sie eine eindeutige ID für jede URL und generieren Sie IDs im Maßstab, da jede Sekunde Tausende von URL-Kürzungsanforderungen eingehen.
- Service-Handle-Weiterleitungen.
- Unterstützt benutzerdefinierte URLs.
- Klickstatistiken verfolgen
- Abgelaufene URLs löschen
2) Gestalte YouTube / Netflix (einen weltweiten Video-Streaming-Dienst)?
Antworten:
Dinge zu analysieren:
- In Videos speichert und überträgt der Dienst eine riesige Datenmenge, die eine große Anzahl von Benutzern gleichzeitig ansehen und teilen kann.
- Erfassen Sie Statistiken über Videos, zum Beispiel die Gesamtanzahl der Aufrufe, Up-Votes / Down-Votes usw.
- Hinzufügen von Kommentaren zu Videos in Echtzeit.
Komponenten:
- OC - Clouds wie AWS und OpenConnect, die als Netzwerk für die Bereitstellung von Inhalten fungieren.
- Backend - Datenbank
- Client - Jedes Gerät (Desktop, Android, iPhone), von dem Sie das Video auf YouTube / Netflix abspielen.
Fahren wir mit den nächsten Fragen zum Systemdesign-Interview fort.
3) Entwerfen Sie Quora / Reddit / HackerNews (ein soziales Netzwerk + Message Board Service)?
Antworten:
Dinge zu analysieren:
Die Personen, die die Dienste nutzen, können Links freigeben oder Fragen stellen. Andere Benutzer können Fragen beantworten oder Kommentare zu den freigegebenen Links abgeben. Der Dienst sollte also Folgendes tun:
- Zeichnet Statistiken für jede Antwort auf, z. B. die Gesamtzahl der Aufrufe, Up-Votes / Down-Votes usw.
- Benutzer sollten in der Lage sein, anderen Benutzern oder Themen zu folgen
- Liste der wichtigsten Fragen aller Benutzer auf der Zeitachse und der Themen, denen sie folgen (ähnlich wie bei der Erstellung von Newsfeeds).
4) Entwerfen Sie Facebook Messenger oder WhatsApp (einen globalen Chat-Dienst)?
Antworten:
Dies sind die grundlegenden Fragen zum Systemdesign-Interview, die in einem Interview gestellt werden. Dinge zu analysieren:
- Gestalten Sie Einzelgespräche zwischen Benutzern.
- Erweitern Sie Ihr Design, um Gruppenchats zu unterstützen.
- Was kann getan werden, wenn der Benutzer nicht mit dem Internet verbunden ist?
- Wann sollen Push-Benachrichtigungen gesendet werden?
- Wie wird eine End-to-End-Verschlüsselung bereitgestellt?
Struktur:
Client> Load Balancer> Knoten> Cache (Redis)> Datenbank (Casandra)
5) Designsuche Typeahead (Autocomplete)?
Antworten:
Dinge zu analysieren:
- Typeahead Vorschläge zur Verfügung gestellt werden.
- Kriterien für die Auswahl der Vorschläge.
- Muss das System in Echtzeit sein?
- Unterstützen Sie die Personalisierung mit den Vorschlägen.
- Abfragen pro Sekunde, die vom System verarbeitet werden sollen.
- Menge der zu speichernden Daten.
Teil 2 - Fragen zum Systemdesign-Interview (Fortgeschrittene)
Lassen Sie uns nun einen Blick auf die erweiterten Fragen zum Systemdesign werfen.
6) Dropbox / Google Drive / Google Photos entwerfen?
Antworten:
Dinge zu analysieren:
- Wie kann ich Dateien oder Fotos hochladen / anzeigen / suchen / freigeben?
- Verfolgen Sie die Berechtigungen für die Dateifreigabe.
- Ermöglichen, dass mehrere Benutzer dasselbe Dokument bearbeiten.
7) Entwerfen Sie Facebook, Twitter oder Instagram?
Antworten:
Zu berücksichtigende Merkmale:
- Einige der Twitter / Facebook / Instagram-Funktionen werden unterstützt.
- Antworten auf Tweets / Gruppieren von Tweets nach Konversationen müssen unterstützt werden.
- Datenschutzkontrollen für jeden Tweet.
- Unterstützung für trendige Tweets
- Direktnachrichten
- Erwähnungen / Markierungen
Dinge zu analysieren:
- Die Anzahl der Benutzer und der Datenverkehr, die vom System verarbeitet werden sollen.
- Anzahl der Follower, die der Benutzer hat.
- Die Häufigkeit, mit der der Tweet favorisiert wurde.
Komponenten, die entworfen werden müssen:
- Newsfeed-Generierung
- Soziales Diagramm
- Systematische Suche und Speicherung von Posts / Tweets.
Fahren wir mit den nächsten Fragen zum Systemdesign-Interview fort.
8) Entwerfen Sie einen Web Crawler?
Antworten:
Es ist ein skalierbarer Dienst erforderlich, der das gesamte Web crawlen und Hunderte Millionen von Webdokumenten erfassen kann.
Dinge zu analysieren:
- Suche nach neuen Webseiten.
- Priorisieren von Webseiten, die sich dynamisch ändern.
- Stellen Sie sicher, dass der Crawler nicht unbegrenzt an dieselbe Domäne gebunden ist.
9) Design Uber:
Antworten:
Dies sind die häufig gestellten Fragen zum Systemdesign-Interview in einem Interview. Architektur: Monolithische / Mikrodienste (Echtzeitdienst, Front-End (Anwendung) und Datenbank)
- Das Backend bedient den Mobilfunkverkehr und Clients stellen über mobile Daten eine Verbindung zum Backend her.
- Kunden verbinden sich mit dem Versandsystem, das Fahrer und Reiter zusammenbringt.
- Der Versand wird fast vollständig in node.js geschrieben.
- Karten / ETA: Damit der Versand eine intelligente Auswahl treffen kann, ist es wichtig, Karten und Routendaten zu erhalten.
- Services: Geschäftslogik-Services, die meist in Python geschrieben sind.
- Datenbanken: Postgres, Redis, MySQL.
Dinge zu analysieren:
- Kunden, die eine Fahrt wünschen und wissen, wie sie wirtschaftlich mit den Fahrern in der Nähe zusammengebracht werden können.
- Speichern von Tonnen von geografischen Standorten für Fahrer und Fahrer, die immer in Bewegung sind.
- Aktualisierungen von Treiberpositionen verarbeiten.
10) Entwerfen Sie einen API-Ratenbegrenzer (Github)?
Antworten:
Dinge zu analysieren:
- Begrenzen der Anzahl von Anforderungen, die eine Entität innerhalb eines Zeitfensters an eine API senden kann, z. B. zehn Anforderungen pro Sekunde.
- Die Ratenbegrenzung sollte für ein verteiltes Setup funktionieren, da die APIs über eine Gruppe von Servern erreichbar sind.
Empfohlene Artikel
Dies war ein Leitfaden für die Liste der Fragen und Antworten zu System Design-Vorstellungsgesprächen, damit der Kandidat diese Fragen zu System Design-Vorstellungsgesprächen problemlos durchgreifen kann. Hier in diesem Beitrag haben wir uns mit Fragen zum Systemdesign befasst, die häufig in Interviews gestellt werden. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren -
- Fragen zu AutoCAD-Vorstellungsgesprächen
- Fragen im Vorstellungsgespräch bei Photoshop
- Adobe Illustrator für Anfänger
- Grafikdesigner-Assistent