Das 4-Schritt-Framework
Systemdesign-Interviews testen Ihre Fähigkeit, komplexe Systeme unter Einschränkungen zu entwerfen. Hier ist das Framework, das wir unseren Ingenieuren beibringen.
Schritt 1: Anforderungen (5 Minuten)
Klär Sie funktionale und nicht-funktionale Anforderungen, bevor Sie etwas zeichnen.
# Entwerfen Sie einen URL-Verkürzer
Funktionale: Kurzieren von URLs, Umleitung, Benutzerdefinierte Alias, Analytics
Nicht-funktionale: 100 Mio. URLs/Tag, 10:1 Lesen:Schreiben, 99,9 % Verfügbarkeit
Skalierbarkeit: 1.160 Schreibvorgänge/s, 11.600 Lesevorgänge/sSchritt 2: Hochauflösendes Design
Zeichnen Sie die wichtigsten Komponenten und ihre Interaktionen.
[Client] → [Lastenverteilung] → [API-Server] → [Datenbank]
↓
[Cache-Schicht]Schritt 3: Detailliertes Design
Geht tiefer in die kritischsten Komponenten ein.
function generateShortUrl(longUrl) {
const id = generateUniqueId();
return base62Encode(id);
}Gemeinsame Muster
Rate Limiting
class RateLimiter {
async isAllowed(userId) {
const key = `ratelimit:${userId}:${Math.floor(Date.now() / 60000)}`;
const count = await this.redis.incr(key);
return count <= 100;
}
}Übungsaufgaben
| System | Wichtige Konzepte | Schwierigkeitsgrad |
|---|---|---|
| URL-Verkürzer | Hashing, Caching, Datenbankdesign | Leicht |
| News Feed | Pull vs. Push, Fanout, Ranking | Schwer |
| Chat System | WebSockets, Anwesenheit, Nachrichtenspeicherung | Schwer |
| Rate Limiter | Token Bucket, Schiebender Fenster, Redis | Mittel |
Zusammenfassung
Üben Sie das Framework, nicht nur die Lösungen. Interviewer wollen Ihre Denkprozesse sehen, nicht eine memorisierte Architektur.