Pregunta de entrevista para Ingeniero de software

Explica qué significa ACID y qué garantiza realmente cada propiedad.

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

Respuesta rápida

ACID describe las garantías que te da una transacción. Atomicidad significa que todas las escrituras se aplican o ninguna. Consistencia significa que la transacción lleva la base de datos de un estado válido a otro, respetando sus restricciones. Aislamiento significa que las transacciones concurrentes no ven el trabajo parcial de las demás, en la medida en que lo prometa el nivel de aislamiento. Durabilidad significa que una vez que el commit responde, los datos sobreviven a una caída.

Por qué lo preguntan los entrevistadores

Casi todos los bugs de producción que implican dinero, inventario o escrituras duplicadas se remontan a un malentendido aquí. El entrevistador quiere comprobar que las tratas como garantías que da la base de datos y no como magia, y en concreto que sabes que el aislamiento es ajustable y que el nivel por defecto en la mayoría de los sistemas no es serializable del todo. Unas definiciones precisas indican que puedes razonar sobre corrección bajo concurrencia.

Cómo estructurar tu respuesta

  • Define cada una de las cuatro letras en una frase.
  • Insiste en que el aislamiento es un dial, no un único ajuste.
  • Conecta una de las propiedades con un bug real que hayas visto.
  • Menciona qué cambia en cuanto pasas a un sistema distribuido.

Ejemplo de respuesta

Ejemplo hablado, en primera persona

La atomicidad es todo o nada: si cargo una cuenta y abono otra, o las dos escrituras hacen commit o ninguna. La consistencia significa que la transacción deja la base de datos cumpliendo sus restricciones, así que las claves foráneas y los check constraints se sostienen a ambos lados. El aislamiento es el interesante, porque es un dial y no una promesa. La mayoría de las bases de datos tienen read committed por defecto, que todavía permite lecturas no repetibles y filas fantasma, así que si asumes comportamiento serializable tarde o temprano vas a publicar una condición de carrera. La durabilidad significa que una vez que el commit responde, la escritura sobrevive a un corte de luz, normalmente porque llegó al write ahead log y se hizo flush. Donde esto me mordió fue en un endpoint de canje de cupones. Comprobábamos los usos restantes y luego decrementábamos en dos sentencias separadas bajo read committed, y dos peticiones concurrentes vieron las dos que quedaba un uso. El arreglo fue un único update condicional con un where sobre el contador restante, que hizo que la comprobación y la escritura fueran atómicas.

¿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

  • ¿Con qué nivel de aislamiento está funcionando tu base de datos por defecto?
  • ¿Qué es una lectura fantasma y qué nivel la evita?
  • ¿Cómo cambian estas garantías en cuanto haces sharding entre nodos?

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