Defina connect e read timeouts explícitos no cliente, porque vários clientes HTTP em Java esperam indefinidamente por padrão, e adicione um timeout geral de requisição. Limite o pool de conexões daquele host, faça retry só em chamadas idempotentes com backoff e jitter, e coloque um circuit breaker para que falhas sustentadas falhem rápido. Decida o fallback com antecedência: um valor cacheado, uma resposta degradada, ou um erro claro em vez de uma requisição travada.
Por que os entrevistadores perguntam isso
O entrevistador quer saber se você já se queimou com uma configuração padrão. Citar que alguns clientes esperam para sempre, e que um pool de conexões compartilhado mais um host lento é como uma dependência trava endpoints não relacionados, mostra experiência operacional. Os follow ups sondam como você testaria a falha, o que normalmente significa um proxy de injeção de falhas ou um stub que atrasa respostas.
Como estruturar sua resposta
- Defina todo timeout explicitamente e nunca confie nos padrões.
- Isole a dependência com o próprio pool de conexões limitado.
- Adicione retries só onde é seguro, com backoff e circuit breaker.
- Defina e implemente o comportamento degradado.
Exemplo de resposta
Eu começo pela suposição de que os padrões estão errados, porque vários clientes vão esperar para sempre numa leitura de bom grado, e é exatamente assim que uma dependência lenta vira toda thread do meu serviço parada. Então connect timeout curto, read timeout baseado na distribuição real de latência deles em vez de um número redondo, e um timeout geral de requisição por cima, já que retries e redirects podem se somar. Depois isolamento: aquela dependência ganha o próprio pool de conexões com um máximo, então quando ela degrada não consegue consumir toda a capacidade de que outras chamadas precisam. Retries só em operações idempotentes, limitados a duas tentativas com backoff exponencial e jitter, e um circuit breaker na frente para que, quando a taxa de erro cruzar um limiar, eu falhe imediatamente por um período de espera em vez de empilhar requisições em algo que já está sofrendo. A última peça é o que o usuário recebe, decidido com antecedência. Numa integração de cotação de frete a gente servia cotações cacheadas com um marcador de defasagem em vez de derrubar o checkout, e isso transformou uma indisponibilidade do fornecedor num problema menor de precisão em vez de pedidos perdidos. Eu testo com um proxy que injeta atrasos.
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ê escolheria o valor do read timeout?
- O que é bulkheading, e como isso se aplica aqui?
- Como você testa que seu caminho de fallback realmente funciona?
Mais perguntas para Desenvolvedor Java
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