Pregunta de entrevista para Desarrollador full stack

¿Cómo renombrarías una columna en una tabla de 50 millones de filas sin tiempo de inactividad?

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

Respuesta rápida

Expandir, migrar, contraer. Añade la columna nueva, despliega código que escriba en ambas y siga leyendo la vieja, rellena en lotes con freno, luego cambia las lecturas a la columna nueva en un despliegue aparte, y solo elimina la columna vieja cuando nada la referencia. Nunca combines un cambio de esquema y un cambio de código en una misma entrega, porque pierdes la capacidad de revertir con limpieza.

Por qué lo preguntan los entrevistadores

Esto comprueba si has entregado migraciones contra tráfico en vivo o solo las has ejecutado en local. El entrevistador quiere la secuencia de varios despliegues, conciencia del comportamiento de bloqueo en tablas grandes y una historia de reversión. Quien responde con una única sentencia ALTER normalmente nunca ha visto una migración tomar un bloqueo exclusivo y frenar todas las peticiones de una base de datos en producción en hora punta.

Cómo estructurar tu respuesta

  • Nombra por delante el patrón de expandir y contraer.
  • Recorre los despliegues en orden diciendo qué hace cada uno.
  • Explica cómo rellenas sin bloquear ni saturar la base de datos.
  • Di cuál es tu posición de reversión en cada paso.

Ejemplo de respuesta

Ejemplo hablado, en primera persona

Un renombrado es en realidad una secuencia de cambios pequeños y seguros y no una sola sentencia. El primer despliegue añade la columna nueva como nullable, que es barato en Postgres porque no reescribe la tabla, y entrega código que escribe en ambas columnas mientras sigue leyendo la vieja. Luego relleno por lotes, quizá cinco mil filas cada vez con una pequeña pausa, vigilando el retardo de replicación y las esperas de bloqueo, para no mantener nunca una transacción larga. El segundo despliegue cambia las lecturas a la columna nueva, con la escritura doble todavía en marcha para poder revertir al instante si algo va mal. Solo después de que eso lleve unos días estable, el tercer despliegue deja de escribir en la columna vieja y la elimina. La razón por la que insisto en despliegues separados es la reversión. Si el cambio de esquema y el de código salen juntos, revertir el código deja la base de datos en una forma que el código viejo no sabe leer. También creo los índices de forma concurrente y fijo un tiempo de espera de bloqueo para que una migración falle rápido en vez de encolarse detrás de una consulta larga y congelar las escrituras.

¿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ál de esos pasos toma un bloqueo en Postgres y durante cuánto tiempo?
  • ¿Cómo verificarías que el relleno es correcto antes de cambiar las lecturas?
  • ¿Cuál es tu reversión si el relleno va por la mitad?

Más preguntas para Desarrollador full stack

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