Defina um timeout explícito em toda chamada, menor que o prazo do próprio chamador, e nunca confie no padrão da biblioteca cliente. Repita apenas operações idempotentes, com backoff exponencial mais jitter e um número pequeno e limitado de tentativas. Adicione um circuit breaker para que falhas repetidas falhem rápido em vez de enfileirar, e defina como é o modo degradado: um valor em cache, uma resposta parcial ou um erro claro em vez de uma requisição pendurada.
Por que os entrevistadores perguntam isso
Retries são a forma clássica de um incidente pequeno virar uma queda geral, então isso checa se você entende amplificação de retry e a necessidade de um prazo global. O entrevistador quer especificidade: jitter, orçamentos, idempotência como pré-condição para repetir e comportamento de fallback. Respostas que só dizem "adicione retries e um circuit breaker" sem falar de amplificação sugerem que os conceitos foram lidos, não operados.
Como estruturar sua resposta
- Comece por timeouts e propagação de prazo.
- Diga a pré-condição para repetir: a operação é idempotente.
- Explique backoff, jitter e orçamentos de retry para evitar amplificação.
- Defina o comportamento degradado que o usuário de fato recebe.
Exemplo de resposta
A primeira coisa é um timeout em toda chamada de saída, escolhido a partir da distribuição de latência e não no chute, e sempre menor que o prazo que me foi dado, para eu falhar antes de quem me chamou desistir. Eu propago esse prazo restante para baixo, senão o trabalho continua numa requisição que ninguém está esperando. Retries só se aplicam a chamadas idempotentes, e mesmo assim com backoff exponencial e jitter, limitados a duas ou três tentativas. O motivo do limite é a amplificação: se cada camada tenta três vezes, uma oscilação lá embaixo vira uma ordem de grandeza a mais de carga, e é assim que uma dependência lenta vira uma queda completa. Por isso eu também gosto de um orçamento de retry, em que os retries ficam limitados a uma pequena porcentagem do total de requisições. Um circuit breaker fica por cima, para que assim que as falhas passem de um limite eu falhe imediatamente por um período de descanso e sonde de vez em quando, o que me impede de empilhar requisições em cima de algo que já está sofrendo. E eu decido de antemão o que significa degradado; num serviço de precificação nós servíamos o último preço em cache com uma marcação de desatualizado em vez de derrubar o checkout.
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ê decide o valor de timeout para uma dependência específica?
- O que é amplificação de retry, e como você detecta isso nas métricas?
- Como um circuit breaker decide quando fechar de novo?
Mais perguntas para Desenvolvedor Backend
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