Prefiere la paginación por clave, también llamada paginación por cursor: ordena por una clave única y estable, devuelve un cursor opaco de la última fila y consulta las filas posteriores. La paginación por offset obliga a la base de datos a leer y descartar cada fila saltada, así que la página cinco mil es lenta, y las filas insertadas o borradas mientras se navega provocan duplicados y huecos. La paginación por clave mantiene coste constante por página y es estable frente a escrituras.
Por qué lo preguntan los entrevistadores
Es una decisión de diseño pequeña que separa a quien ha operado una API a escala de quien no. El entrevistador quiere los dos fallos concretos del offset, coste e inestabilidad, más la conciencia de que un cursor debe codificar un orden determinista. Las repreguntas suelen ir a las partes difíciles: ordenar por una columna no única, saltar a una página arbitraria y los conteos totales, que son caros y a menudo innecesarios.
Cómo estructurar tu respuesta
- Da primero la recomendación y luego justifícala.
- Nombra los dos fallos del offset: coste en páginas profundas y resultados que se desplazan.
- Explica qué codifica el cursor y por qué necesita un desempate.
- Reconoce qué pierdes, como saltar a la página cincuenta.
Ejemplo de respuesta
Por defecto uso paginación por clave. El cliente pide una página, recibe elementos más un cursor opaco, y la siguiente petición dice dame las filas posteriores a este cursor. Por debajo eso es una cláusula where sobre la clave de orden, así que con el índice adecuado es una búsqueda por índice y el coste es el mismo en la página uno que en la mil. El offset no puede hacer eso, porque la base de datos sigue recorriendo y descartando todo lo anterior al offset y, peor todavía, si se inserta una fila mientras alguien navega, todas las páginas siguientes se desplazan y ve un duplicado o se salta un elemento entero. El detalle que pilla a la gente es el desempate: si ordeno por created at y dos filas comparten marca de tiempo, el orden no es determinista, así que el cursor codifica created at más el id y la comparación va sobre el par. Lo que pierdo son los saltos arbitrarios de página y los conteos totales baratos. En un feed de scroll infinito nadie los echa de menos; para una tabla de administración que necesita números de página usaré offset con un máximo acotado.
¿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 funcionaPreguntas de seguimiento que puedes esperar
- ¿Cómo permitirías ordenar por una columna elegida por el usuario con un cursor?
- ¿Cómo devuelves un conteo total sin escanear la tabla?
- ¿Qué debería contener el cursor y deberían los clientes poder decodificarlo?
Más preguntas para Desarrollador backend
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