Interviewfragen zu System Design mit Antworten
Entwurf von Frontends und Websystemen: Rendering, APIs, Caching, Authentifizierung, Echtzeit, Skalierung, Deployment.
225 Fragen fürs Vorstellungsgespräch zu System Design mit Antworten und Erklärungen: Level Junior, Middle und Senior. Beispielfragen, Online-Tests und Programmieraufgaben.
- Caching
- API
- Auth
- Real-time
- Scalability
Fragen nach Level
Junior
Grundbegriffe und Syntax · 50 Fragen
Middle
Praxis, Feinheiten und Optimierung · 50 Fragen
Senior
Architektur, Interna, Randfälle · 50 Fragen
Beispielfragen
Ein paar Fragen aus jedem Level mit richtiger Antwort und Erklärung.
System Design · Junior
- Was passiert, wenn ein Nutzer die Adresse einer Website eintippt und Enter drückt?
Antwort zeigen
Richtige Antwort: DNS → Verbindung (TCP/TLS) → HTTP-Anfrage → Antwort → Rendern der Seite
Der Browser löst die IP per DNS auf (mit Caches auf jeder Ebene), baut die Verbindung und den TLS-Handshake auf, sendet die Anfrage, bekommt HTML, parst es, lädt CSS/JS/Bilder, baut DOM und CSSOM und führt Layout und Paint aus. Das ist die klassische Einstiegsfrage für ein Gespräch über Performance.
- Wofür ist DNS da?
Antwort zeigen
Richtige Antwort: Es übersetzt Domainnamen in IP-Adressen von Servern
DNS ist das verteilte „Telefonbuch“ des Internets. Antworten werden für die Dauer der TTL gecacht (Browser, Betriebssystem, Provider). Verschlüsselung ist Aufgabe von TLS, Kopien von Inhalten nahe beim Nutzer sind Aufgabe des CDN.
- Wie unterscheidet sich HTTPS von HTTP?
Antwort zeigen
Richtige Antwort: Verkehr ist verschlüsselt, TLS prüft die Echtheit des Servers
TLS schützt vor Abhören und Manipulation, und das Zertifikat bestätigt, dass man mit dem echten Server spricht. Viele moderne Browser-APIs (Service Worker, Geolocation, HTTP/2 im Browser) funktionieren nur über HTTPS.
- Was bedeutet das REST-Prinzip „Ressourcen + HTTP-Methoden“?
Antwort zeigen
Richtige Antwort: Die URL benennt eine Ressource; die Methode benennt eine Aktion
REST nutzt Substantive in URLs und die Semantik der HTTP-Methoden: GET liest, POST erzeugt, PUT/PATCH aktualisieren, DELETE löscht. Das macht die API vorhersagbar, und Caches und Proxys verstehen die Bedeutung der Anfragen.
System Design · Middle
- Wie beginnt man richtig mit der Antwort auf eine Frontend-System-Design-Frage?
Antwort zeigen
Richtige Antwort: Mit dem Klären von Anforderungen und Rahmenbedingungen
Ein beliebtes Schema ist RADIO: Requirements (funktional und nicht funktional), Architecture (Komponenten und Datenfluss), Data model (Client-State), Interface (API), Optimizations (Performance, a11y, i18n, Sicherheit). Ohne Anforderungen entwirft man leicht das falsche System.
- Warum ist Cursor-Paginierung für einen Feed besser als Offset-Paginierung?
Antwort zeigen
Richtige Antwort: Keine Duplikate bei Einfügungen und schnell auf tiefen Seiten
Mit
offsetverschieben neue Posts das Fenster, und der Nutzer sieht Wiederholungen;OFFSET 100000ist für die DB teuer. Ein Cursor („nach dem Datensatz mit id X“) ist stabil und über einen Index effizient. Der Nachteil: man kann nicht zu Seite 57 springen, für Tabellen mit Seitenzahlen passtoffsetdaher manchmal besser. - Wie würdest du einen unendlichen Feed mit Tausenden Posts entwerfen?
Antwort zeigen
Richtige Antwort: Laden per Cursor über
IntersectionObserverplus Virtualisierung der ListeEin Sentinel-Element nahe dem Listenende löst das Laden der nächsten Seite aus. Virtualisierung hält nur sichtbare Elemente im DOM. Bedenke außerdem: Scrollposition beim Zurücknavigieren wiederherstellen, Bilder mit expliziten Abmessungen, neue Posts oben, ohne dass der Feed „springt“.
- Worauf kommt es beim Entwurf einer Autovervollständigung an?
Antwort zeigen
Richtige Antwort: Debounce, Abbruch veralteter Anfragen, Caching, Tastaturbedienung
Dazu eine Mindestlänge der Eingabe, Behandlung von Races zwischen Antworten, Hervorheben der Treffer, ein Zustand „nichts gefunden“ und das ARIA-Combobox-Muster. Für ein kleines festes Wörterbuch ist Filtern auf dem Client in Ordnung (manchmal mit einem Trie); für große nutzt man Suche auf dem Server.
System Design · Senior
- Was besagt das CAP-Theorem?
Antwort zeigen
Richtige Antwort: Bei einer Netzwerkpartition muss man zwischen Konsistenz und Verfügbarkeit wählen
Consistency, Availability, Partition tolerance: Netzwerkpartitionen sind in einem verteilten System unvermeidlich, und in diesem Moment lehnt das System entweder einige Anfragen ab (CP) oder antwortet mit möglicherweise veralteten Daten (AP). Im Normalbetrieb geht der Kompromiss zwischen Konsistenz und Latenz (PACELC).
- Ein Nutzer hat sein Profil aktualisiert, die Seite neu geladen und die alten Daten gesehen. Welche Garantie wurde verletzt?
Antwort zeigen
Richtige Antwort: Read-your-writes: der Nutzer muss seine eigenen Änderungen sehen
Eine typische Ursache ist das Lesen von einem Replikat, das die Änderung noch nicht erreicht hat, oder ein veralteter Cache. Lösungen: nach einem Schreibvorgang eine Weile „eigene“ Daten vom Primärserver lesen, den Client-Cache mit der Antwort der Mutation aktualisieren,
updateTagstatt SWR-Invalidierung nutzen. - Warum ist „Erstellungsdatum“ als Sharding-Schlüssel gefährlich?
Antwort zeigen
Richtige Antwort: Alle neuen Datensätze landen in einem Shard - eine Hot Partition
Sharding verteilt Daten auf Knoten; der Schlüssel muss die Last gleichmäßig verteilen und zu den Abfragen passen. Ein monoton steigender Schlüssel bündelt Schreibvorgänge im letzten Shard. Oft nutzt man einen Hash der Nutzer-ID oder einen zusammengesetzten Schlüssel.
- Warum nutzt man Consistent Hashing beim Hinzufügen von Cache-Knoten?
Antwort zeigen
Richtige Antwort: Ändert sich die Zahl der Knoten, wandert nur ein kleiner Teil der Keys
Mit
hash(key) % Nverteilt eine Änderung von N fast alle Keys neu, und der Cache verfehlt massenhaft. Ein Hash-Ring (mit virtuellen Knoten) verschiebt nur etwa 1/N der Keys. Eingesetzt in verteilten Caches, CDNs und Datenbanken.
Kombinierte Tests mit diesem Thema
Fragen aus mehreren Themen auf einmal, wie im Vorstellungsgespräch für eine konkrete Stelle.
Programmieraufgaben
Schreib die Lösung direkt im Browser, und Tests prüfen sie sofort. Klassiker aus Vorstellungsgesprächen zu JavaScript (debounce, deepClone, Promise.all, LRU-Cache), zu TypeScript (Generics, Narrowing und Utility Types, geprüft von einem echten Compiler), Backend-Logik in Node.js (Middleware, Rate Limits, Job-Queues), SQL-Abfragen in echtem PostgreSQL und zu React: Komponenten und Hooks wie eine Aufgabenliste, Tabs, useDebounce und useInterval.
Aufgaben öffnen →