Il Quadro di Riferimento a 4 Fasi
Gli intervisti di progettazione di sistemi valutano la tua capacità di progettare sistemi complessi sotto vincoli. Ecco il quadro che insegno ai nostri ingegneri.
Fase 1: Requisiti (5 minuti)
Clarifica i requisiti funzionali e non funzionali prima di disegnare qualsiasi cosa.
# Progettare un riduttore di URL
Funzionali: Ridurre URL, Redirect, Alias personalizzati, Analisi
Non funzionali: 100M URL/giorno, 10:1 lettura/scrittura, 99,9% uptime
Scala: 1.160 scritture/sec, 11.600 letture/secFase 2: Progettazione di Livello Elevato
Disegna i componenti principali e le loro interazioni.
[Client] → [Load Balancer] → [API Server] → [Database]
↓
[Layer di Cache]Fase 3: Progettazione Dettagliata
Esplora a fondo i componenti più critici.
function generareUrlCorta(url Lunga) {
const id = generareIdUnivoco();
return base62Encode(id);
}Modelli Comuni
Limitazione di Tasso
class LimitatoreDiTasso {
async è Consentito(userId) {
const chiave = `limitazioneDiTasso:${userId}:${Math.floor(Date.now() / 60000)}`;
const conteggio = await this.redis.incr(chiave);
return conteggio <= 100;
}
}Problemi di Pratica
| Sistema | Concetti Chiave | Difficoltà |
|---|---|---|
| Riduttore di URL | Hashing, caching, progettazione di database | Facile |
| Feed di Notizie | Pull vs. push, fanout, ranking | Difficile |
| Sistema di Chat | WebSockets, presenza, archiviazione di messaggi | Difficile |
| Limitatore di Tasso | Token bucket, finestra scorrevole, Redis | Medio |
Conclusione
Pratica il quadro, non solo le soluzioni. Gli intervistatori vogliono vedere il tuo processo di pensiero, non un'architettura memorizzata.