Cubos, cilindros e esferas ligados por linhas luminosas em torno de uma esfera brilhante, como um diagrama de arquitetura

O framework de cinco fases (ritmo para 45 minutos)

  1. Requisitos: 5 minutos. Separe os funcionais (“encurtar uma URL, redirecionar, aliases personalizados?”) dos não funcionais (escala, metas de latência, disponibilidade vs. consistência, durabilidade). Peça números: usuários, leituras vs. escritas, volume de dados. Depois, diga o seu escopo em voz alta: “Vou projetar para 100 milhões de DAU, com predominância de leitura de 100:1 e redirecionamentos abaixo de 100 ms, e deixar analytics de fora, a menos que sobre tempo.” Delimitar o escopo em voz alta é o movimento que mais conta pontos em toda a etapa.
  2. Estimativa: 5 minutos. Cálculos aproximados de QPS, armazenamento e largura de banda. Arredonde para potências de dez, declare as premissas e confira se o resultado faz sentido (“500 milhões de URLs novas por mês ≈ 200 escritas/s, algo modesto; leituras a 100:1 ≈ 20 mil/s, e é isso que direciona o design”). O objetivo não é a precisão; é mostrar que os números guiam as suas escolhas de arquitetura.
  3. Design de alto nível: 10 minutos. Caixas e setas para o caminho feliz: clientes, balanceador de carga, camada de aplicação stateless, bancos de dados, cache, fila. Percorra uma requisição de ponta a ponta em voz alta. Prefira o convencional: novidade aqui é risco sem recompensa.
  4. Aprofundamentos: 20 minutos. O entrevistador escolhe um componente (“como exatamente a geração de IDs evita colisões?”, “o que acontece quando um nó de cache cai?”). É aqui que os níveis se separam. Seja concreto: modelo de dados, escolha da chave de partição, modos de falha, o que acorda o plantão às 3 da manhã.
  5. Fechamento: 5 minutos. Os gargalos que você atacaria em seguida, o que monitoraria, o que deixou de fora de propósito. Terminar com as limitações conhecidas passa senioridade, não fraqueza.

O vocabulário de trade-offs que sinaliza senioridade

Os entrevistadores observam se você recorre a estes eixos por conta própria:

EixoA frase que conta pontos
Consistência vs. disponibilidade“Para a contagem de seguidores, eu aceitaria dados desatualizados; para o registro de pagamentos, não. Bancos diferentes para garantias diferentes.”
Latência vs. custo“Colocar em cache o 1% de chaves mais acessadas atende ~90% das leituras; colocar tudo em cache triplica a memória para um ganho marginal na taxa de acerto.”
Push vs. pull“Fan-out na escrita para usuários comuns, fan-out na leitura para contas de celebridades: um modelo híbrido, definido pelo número de seguidores.”
SQL vs. NoSQL“O padrão de acesso é chave-valor pelo código curto, sem joins. É isso que justifica um banco wide-column aqui, não a moda.”
Síncrono vs. assíncrono“O usuário precisa da confirmação da escrita; o fan-out das notificações pode ir por uma fila e ser entregue depois, de forma eventual.”

A metarregra: nunca cite uma tecnologia sem citar a propriedade que justifica o lugar dela. “Kafka” é uma palavra; “um log particionado, para que os consumidores possam reprocessar as mensagens depois de uma falha” é um motivo.

As dez questões de system design mais comuns, com o ponto central de cada uma

  1. Encurtador de URL. Ponto central: geração de IDs (contador + base62 vs. hash + tratamento de colisões) e cache no caminho de leitura. Aquecimento clássico: espere perguntas adicionais sobre analytics e expiração.
  2. Sistema de chat (WhatsApp/Slack). Ponto central: gerenciamento de conexões (WebSockets, presença), ordenação das mensagens por conversa, garantias e confirmações de entrega, sincronização offline.
  3. Feed de notícias (Twitter/Instagram). Ponto central: estratégia de fan-out e o problema das celebridades; ranqueamento como serviço separado; paginação por cursores, não por offsets.
  4. Rate limiter. Ponto central: escolha do algoritmo (token bucket vs. janela deslizante), contagem distribuída (Redis + Lua), fail-open vs. fail-closed e onde ele fica (no gateway vs. em cada serviço).
  5. Armazenamento de arquivos (Dropbox/Drive). Ponto central: divisão em blocos (chunking) e deduplicação, protocolo de sincronização e resolução de conflitos, separação entre metadados e blobs.
  6. Plataforma de vídeo (YouTube). Ponto central: pipeline de upload (transcodificação como jobs assíncronos), estratégia de CDN, bitrate adaptativo; economia do armazenamento.
  7. Pareamento de corridas (Uber). Ponto central: indexação geoespacial (geohash/quadtree), volume de escrita das atualizações de localização, pareamento como serviço stateful, preço dinâmico como um feed de preços.
  8. Sistema de notificações. Ponto central: abstração multicanal (push/e-mail/SMS), preferências e limites de frequência por usuário, idempotência e novas tentativas com deduplicação, filas de prioridade.
  9. Cache distribuído. Ponto central: consistent hashing, política de remoção (eviction), cache-aside vs. write-through, proteção contra o efeito manada, o thundering herd (agrupamento de requisições, TTLs com jitter).
  10. Sistema de métricas e monitoramento. Ponto central: volume de escrita de séries temporais, downsampling e camadas de retenção, explosão de cardinalidade de tags, avaliação de alertas como processamento em streaming.

Pratique pelo menos três de ponta a ponta, em voz alta, em um quadro branco ou em um documento, no ritmo de 45 minutos. Narrar um design e escrevê-lo são habilidades diferentes, e a entrevista avalia a narração. Uma simulação com um assistente de entrevista com IA dá a você um feedback no nível da transcrição, mostrando exatamente onde a sua explicação perdeu o fio; o ChadFlow também pode acompanhar a janela do seu diagrama durante uma etapa ao vivo e ajudar quando chega uma pergunta adicional.

As cinco formas como os candidatos são reprovados nesta etapa

  • Pular os requisitos. Projetar lindamente o sistema errado é a falha mais comum. Trinta segundos delimitando o escopo evitam isso.
  • Teatro de estimativa. Fazer contas e depois nunca usar os números. Se a sua estimativa de QPS não muda o seu design, foi só encenação.
  • Arquitetura de buzzwords. Soltar Kafka/Cassandra/Kubernetes sem a justificativa baseada em propriedades descrita acima.
  • Fazer monólogo. A etapa é um teste de colaboração. Consulte o entrevistador: “quer que eu me aprofunde na camada de armazenamento ou passe para a API?”
  • Não prever falhas. Todo componente que você desenha deve ter uma resposta para “o que acontece quando isto cai?”. Prepare a resposta antes de desenhar a caixa.

Narre designs como quem já fez isso antes.

O ChadFlow transcreve as suas simulações de etapas de design, orienta as suas explicações entre uma sessão e outra e ajuda ao vivo vendo apenas a janela do seu diagrama, invisível no compartilhamento de tela.

Baixar o ChadFlow