Pregunta de entrevista para Ingeniero de software

Una API de terceros de la que dependes empieza a dar timeouts intermitentes. ¿Qué haces?

Qué evalúa el entrevistador, cómo estructurar tu respuesta y un ejemplo hablado que puedes adaptar.

Respuesta rápida

Conténlo primero: pon un timeout agresivo para que su latencia no se convierta en la tuya, reintenta con backoff exponencial y jitter solo en llamadas idempotentes, y pon un circuit breaker delante para dejar de machacar algo que ya está caído. Después decide cómo es el comportamiento degradado: encolar el trabajo para después, servir un valor cacheado, o fallar en esa funcionalidad mientras el resto del producto sigue funcionando.

Por qué lo preguntan los entrevistadores

Todo sistema real depende de algo que no controla, y el entrevistador quiere saber si diseñas para que ese proveedor tenga un mal día. Escucha timeouts, que son el control que más se omite, disciplina de reintentos ligada a la idempotencia, circuit breaking para no empeorar la caída, y pensamiento a nivel de producto sobre degradación elegante en vez de propagar un 500 al usuario.

Cómo estructurar tu respuesta

  • Pon un timeout para que su problema siga siendo suyo.
  • Reintenta solo lo que es seguro, con backoff y jitter.
  • Añade un circuit breaker para dejar de echar leña.
  • Define la experiencia degradada para los usuarios.

Ejemplo de respuesta

Ejemplo hablado, en primera persona

Lo primero que compruebo es si siquiera tenemos un timeout, porque el valor por defecto en muchos clientes HTTP es efectivamente infinito, y así es como un proveedor lento te llena el pool de workers y tumba endpoints que no tienen nada que ver con él. Así que un timeout agresivo, más ajustado que mi propio SLA. Después reintentos, pero solo en llamadas seguras de repetir, con backoff exponencial y jitter, porque los reintentos sincronizados de todas las instancias convierten su bajón en una caída total. Delante va un circuit breaker, así que tras una racha de fallos dejamos de llamar un rato y fallamos rápido en vez de encolar. Después la pregunta de producto, que es la interesante: ¿qué debería ver el usuario? Para una llamada de validación de direcciones dejaría pasar el pedido y lo marcaría para revisión. Para una autorización de pago no puedo fingirla, así que encolo el intento y se lo digo al usuario con honestidad. Y estaría en su canal de soporte con ids de petición todo el rato.

¿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 funciona

Preguntas de seguimiento que puedes esperar

  • ¿Cómo decides el valor del timeout?
  • ¿Cómo probarías que tu circuit breaker funciona de verdad?
  • ¿Qué monitorizarías para pillar esto antes que los clientes?

Más preguntas para Ingeniero de software

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

Ensaya las preguntas difíciles antes de que te las hagan

Practica con un copiloto en vivo y entra preparado. Un Session Pass de $29 te lleva a través de la entrevista sin suscripción y sin ataduras.

Consigue GhostPilot