Desenhe um encurtador de URLs
Pergunta
Desenhe a arquitetura de um encurtador de URLs (tipo bit.ly). Cubra o modelo de dados, como gerar o código curto e como lidar com a escala de leitura.
Resposta esperada
Modelo de dados mínimo: tabela (ou KV store) mapeando código curto → URL original, com timestamp de criação e contagem de acessos opcional. Para gerar o código, duas abordagens comuns: hash da URL truncado (risco de colisão, precisa checar) ou um contador incremental codificado em base62 (sem colisão, mas revela ordem de criação). Como o tráfego de leitura (redirecionamento) é muito maior que o de escrita, a peça central de escala é um cache (Redis) na frente do banco para os códigos mais acessados, e a resposta ideal usa um redirect 301/302 direto do servidor, sem passar pela aplicação inteira a cada clique.
Por que perguntam isso
Bom sinal: o candidato pergunta volume esperado e proporção leitura/escrita antes de desenhar. Isso é clássico o suficiente para ser um bom aquecimento antes de problemas mais abertos.