Pregunta de entrevista para Ingeniero de software

¿Qué significa que un endpoint sea idempotente y cómo harías idempotente un endpoint de creación?

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

Respuesta rápida

Un endpoint idempotente produce el mismo resultado tanto si se llama una vez como cinco con la misma entrada. GET, PUT y DELETE son idempotentes por naturaleza; POST no. Un endpoint de creación se vuelve idempotente haciendo que el cliente envíe una clave de idempotencia única, guardando esa clave junto al recurso creado dentro de la misma transacción, y devolviendo el resultado original en cualquier repetición.

Por qué lo preguntan los entrevistadores

Los reintentos están por todas partes: los clientes reintentan, los balanceadores reintentan, las colas reentregan. El entrevistador quiere saber si diseñas para entrega al menos una vez en lugar de asumir que cada petición llega exactamente una vez. Escucha el patrón de la clave de idempotencia, el detalle de que la clave y la escritura tienen que hacer commit juntas, y que seas consciente de la carrera cuando dos peticiones idénticas llegan a la vez.

Cómo estructurar tu respuesta

  • Define la idempotencia en términos de llamadas repetidas, no de llamadas de solo lectura.
  • Explica por qué POST necesita ayuda y PUT no.
  • Describe el flujo de la clave de idempotencia de principio a fin.
  • Cubre el caso del duplicado concurrente con una restricción única.

Ejemplo de respuesta

Ejemplo hablado, en primera persona

Idempotente significa que llamarlo dos veces deja el sistema en el mismo estado que llamarlo una. PUT es idempotente porque estás declarando el estado final; POST normalmente no, porque cada llamada significa crea otro. Para un endpoint de creación hago que el cliente genere una clave, típicamente un UUID, y la envíe en una cabecera. En el servidor guardo esa clave en una tabla con una restricción única, y la escribo en la misma transacción que el recurso, porque si esos dos commits pueden divergir el esquema entero es decorativo. Si vuelve la misma clave, la busco y devuelvo la respuesta original con el estado original. La parte que la gente se salta es el caso concurrente, cuando dos reintentos llegan en el mismo milisegundo. El índice único se encarga de eso: el segundo insert falla, capturo la violación y leo al ganador en vez de dar error. Construí esto para un endpoint de pagos después de que cobráramos dos veces a alguien durante un corte de red.

¿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

  • ¿Cuánto tiempo guardarías las claves de idempotencia?
  • ¿Qué código de estado devuelves en una petición repetida?
  • ¿Y si el reintento manda la misma clave pero un cuerpo distinto?

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