Escolha primeiro a dimensão do limite, geralmente a chave de API e não o IP, e aí escolha um algoritmo: token bucket para permitir rajadas, janela deslizante para imposição mais suave. Mantenha os contadores num store compartilhado como o Redis para toda instância concordar, usando incrementos atômicos com expiração. Devolva 429 com um header Retry After e a cota restante, e falhe aberto se o próprio limitador estiver indisponível, para ele não derrubar sua API.
Por que os entrevistadores perguntam isso
Isso testa pensamento de sistemas num problema pequeno e delimitado. O entrevistador quer o problema de estado distribuído nomeado, porque contadores por instância não impõem um limite global, além de uma escolha de algoritmo com motivo, semântica HTTP correta na rejeição, e discernimento operacional sobre o que acontece quando o store de contadores cai. Também revela se você pensa na experiência do cliente ao ser limitado.
Como estruturar sua resposta
- Escolha a dimensão da chave e justifique.
- Escolha um algoritmo e diga que comportamento ele produz.
- Explique como os contadores ficam consistentes entre instâncias.
- Defina a resposta e o modo de falha do próprio limitador.
Exemplo de resposta
Eu começo por qual é a unidade do limite, e para uma API pública isso é a chave de API, não o IP, porque clientes atrás de um NAT não deveriam derrubar uns aos outros. Depois o algoritmo. Token bucket é meu padrão, porque deixa o cliente estourar um pouco, o que combina com como integrações reais se comportam: elas acordam, disparam vinte requests, e depois ficam quietas por uma hora. Um log de janela deslizante é mais preciso mas guarda mais por chave. A parte importante é que o contador tem que ser compartilhado, porque se cada uma das minhas seis instâncias contar a própria conta o limite real é seis vezes o que eu anunciei, então Redis com incremento atômico e expiração, ou um script Lua pequeno quando eu preciso da checagem e do decremento juntos. Na rejeição eu devolvo 429 com Retry After e a cota restante nos headers, porque um cliente que consegue recuar direito para de me martelar. E eu falho aberto, já que um limitador que derruba a API fez mais mal do que o abuso que ele evitou.
Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.
Veja como funcionaPerguntas de acompanhamento que você pode esperar
- Como você daria a um cliente um limite temporariamente maior?
- O que muda se você precisar do limite imposto na borda?
- Como você limitaria endpoints caros de forma diferente?
Mais perguntas para Engenheiro de Software
Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.
Prever minhas perguntas