Pregunta de entrevista para Desarrollador backend

¿Cómo paginarías un endpoint de colección grande, y por qué no usar simplemente limit y offset?

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

Respuesta rápida

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

Ejemplo hablado, en primera persona

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 funciona

Preguntas 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

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