Pregunta de entrevista para Ingeniero de software

¿Qué causa un interbloqueo y cómo evitarías uno?

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

Respuesta rápida

Un interbloqueo necesita cuatro condiciones a la vez: exclusión mutua, retener y esperar, sin expropiación y espera circular. Rompe cualquiera de ellas y no puede ocurrir. En la práctica rompes la espera circular adquiriendo siempre los locks en el mismo orden global, y añades timeouts de lock para que una transacción atascada falle rápido en vez de quedarse colgada. Mantener las transacciones cortas y tocar las filas en un orden consistente te lleva casi todo el camino.

Por qué lo preguntan los entrevistadores

Esto comprueba si conoces la teoría y sabes convertirla en una regla que un equipo pueda seguir de verdad. Los entrevistadores quieren la idea de la espera circular y el arreglo del orden, además de que reconozcas que los interbloqueos son comunes en bases de datos y no solo en código con hilos. Mencionar timeouts de lock, reintentos con backoff y el hecho de que la base de datos elegirá una víctima y la abortará indica experiencia en producción.

Cómo estructurar tu respuesta

  • Enumera las cuatro condiciones que se tienen que dar a la vez.
  • Elige la que puedes romper en la práctica: la espera circular.
  • Da la regla de orden de locks consistente de forma concreta.
  • Añade timeouts y reintentos como red de seguridad.

Ejemplo de respuesta

Ejemplo hablado, en primera persona

El interbloqueo necesita cuatro cosas juntas, y la que puedo controlar de verdad es la espera circular. Así que la regla que pongo es que todos los caminos de código toman los locks en el mismo orden. Si una transferencia toca dos cuentas, ordeno por id de cuenta y bloqueo primero la menor, y entonces da igual en qué dirección va el dinero, no se puede formar un ciclo. La segunda palanca es el tiempo. Mantengo las transacciones cortas, así que nunca retengo un lock de fila mientras hago una llamada de red a una pasarela de pago, que es la forma clásica de convertir una transacción de cien milisegundos en una de cinco segundos. Después pongo un timeout de lock y reintento con jitter, porque antes o después la base de datos detectará un ciclo, elegirá una víctima y la abortará, y prefiero que ese camino esté gestionado a que salga como un 500. En Postgres las entradas de log de interbloqueo nombran las dos sentencias implicadas, y las dos veces que las he usado el arreglo fue el orden.

¿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 detecta la base de datos un interbloqueo?
  • ¿Qué es el livelock y en qué se diferencia?
  • ¿Evitaría el bloqueo optimista este problema por completo?

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