O que é System Design Interview?
System Design é uma etapa comum em processos seletivos para posições senior+, especialmente em Big Techs (Google, Meta, Amazon, etc). O objetivo é avaliar sua capacidade de projetar sistemas escaláveis e tomar decisões arquiteturais.
Diferente de coding interviews, não há resposta certa ou errada. O entrevistador quer ver seu processo de pensamento.
Estrutura típica da entrevista (45-60 min)
1. Entendimento do problema (5-10 min)
Faça perguntas para clarificar:
- Quais são os requisitos funcionais?
- Qual a escala esperada (usuários, requests/segundo)?
- Quais são as prioridades (latência vs consistência)?
2. High-level design (15-20 min)
Desenhe os componentes principais:
- Clientes (web, mobile)
- Load balancers
- Servidores de aplicação
- Bancos de dados
- Caches
- Filas de mensagens
3. Deep dive (15-20 min)
Aprofunde em componentes críticos:
- Escolha de banco de dados (SQL vs NoSQL)
- Estratégias de caching
- Particionamento de dados (sharding)
- Replicação e consistência
4. Wrap-up (5 min)
- Mencione pontos de melhoria
- Discuta tradeoffs das decisões
- Pergunte feedback
Tópicos essenciais para estudar
Escalabilidade
- Horizontal vs Vertical scaling
- Load balancing (Round Robin, Least Connections)
- Database sharding e replication
Disponibilidade
- Redundância e failover
- Health checks e circuit breakers
- Multi-region deployment
Performance
- CDNs para conteúdo estático
- Caching (Redis, Memcached)
- Database indexing e query optimization
Consistência
- CAP Theorem
- Eventual consistency vs Strong consistency
- Distributed transactions
Problemas clássicos para praticar
1. Design Twitter/X - Timeline, posts, follows
2. Design URL Shortener - Geração de IDs, redirecionamento
3. Design YouTube - Upload, streaming, recomendações
4. Design WhatsApp - Mensagens real-time, presença online
5. Design Uber - Matching, localização, pricing
Recursos recomendados
- System Design Interview (livro de Alex Xu)
- Designing Data-Intensive Applications (Martin Kleppmann)
- Canal ByteByteGo no YouTube
- Exercism e Pramp para prática
Dicas finais
1. Pense em voz alta - O entrevistador quer ver seu raciocínio
2. Faça estimativas - Back-of-envelope calculations impressionam
3. Considere tradeoffs - Não existe solução perfeita
4. Seja colaborativo - Trate como uma discussão, não um teste
System Design é uma habilidade que leva tempo para desenvolver. Comece praticando com problemas simples e vá aumentando a complexidade gradualmente.


