Pon timeouts explícitos de conexión y de lectura en el cliente, porque varios clientes HTTP de Java esperan indefinidamente por defecto, y añade un timeout global de petición. Acota el pool de conexiones para ese host, reintenta solo llamadas idempotentes con backoff y jitter, y añade un circuit breaker para que los fallos sostenidos fallen rápido. Decide el fallback de antemano: un valor cacheado, una respuesta degradada, o un error claro en vez de una petición colgada.
Por qué lo preguntan los entrevistadores
El entrevistador quiere saber si te has quemado con una configuración por defecto. Nombrar que algunos clientes esperan para siempre, y que un pool de conexiones compartido más un host lento es como una dependencia atasca endpoints no relacionados, demuestra experiencia operativa. Las repreguntas indagan en cómo probarías el fallo, lo que normalmente significa un proxy de inyección de fallos o un stub que retrasa las respuestas.
Cómo estructurar tu respuesta
- Pon cada timeout de forma explícita y nunca te fíes de los valores por defecto.
- Aísla la dependencia con su propio pool de conexiones acotado.
- Añade reintentos solo donde sea seguro, con backoff y un circuit breaker.
- Define e implementa el comportamiento degradado.
Ejemplo de respuesta
Parto del supuesto de que los valores por defecto están mal, porque varios clientes esperan felizmente para siempre en una lectura, y así es exactamente como una dependencia lenta se convierte en que todos los hilos de mi servicio queden parados. Así que timeout de conexión corto, timeout de lectura basado en su distribución real de latencia y no en un número redondo, y encima un timeout global de petición, ya que los reintentos y las redirecciones se acumulan. Luego aislamiento: esa dependencia recibe su propio pool de conexiones con un máximo, así que cuando se degrada no puede consumir toda la capacidad que otras llamadas necesitan. Reintentos solo en operaciones idempotentes, con un tope de dos intentos, backoff exponencial y jitter, y un circuit breaker delante para que en cuanto la tasa de error cruce un umbral falle de inmediato durante un enfriamiento en vez de amontonar peticiones sobre algo que ya está sufriendo. La última pieza es qué recibe el usuario, decidido de antemano. En una integración de tarifas de envío servíamos tarifas cacheadas con una marca de antigüedad en lugar de tumbar el checkout, y eso convirtió una caída del proveedor en un problema menor de exactitud en vez de en pedidos perdidos. Lo pruebo con un proxy que inyecta retrasos.
¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.
Mira cómo funcionaPreguntas de seguimiento que puedes esperar
- ¿Cómo elegirías el valor del timeout de lectura?
- ¿Qué es el bulkheading, y cómo se aplica aquí?
- ¿Cómo pruebas que tu ruta de fallback funciona de verdad?
Más preguntas para Desarrollador Java
Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.
Predecir mis preguntas