Pregunta de entrevista para Desarrollador frontend

Producto quiere mostrar una tabla de cincuenta mil filas con ordenación y edición en línea. ¿Cómo la construirías?

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

Respuesta rápida

No metas cincuenta mil filas en el DOM. Virtualiza para que solo se renderice la ventana visible más un pequeño margen extra, mantén la altura de fila predecible o mídela, y saca la ordenación y el filtrado del render hacia datos derivados memorizados o hacia el servidor. Pagina o transmite los datos, mantén el estado de la fila en edición en local para que una pulsación de tecla no vuelva a renderizar la tabla, y prueba con la CPU limitada.

Por qué lo preguntan los entrevistadores

Esto comprueba si entiendes dónde está el coste de verdad: número de nodos del DOM, layout y volver a renderizar la lista entera en cada pulsación. El entrevistador quiere ver que separas el problema de datos del de renderizado y que tienes en cuenta la accesibilidad y el comportamiento de teclado, que una virtualización ingenua rompe. Ir directo a una librería mantenida es una buena respuesta si sabes explicar qué hace por ti.

Cómo estructurar tu respuesta

  • Di que el número de nodos del DOM es la restricción y virtualiza.
  • Separa la cuestión de los datos de la del renderizado.
  • Mantén el estado de edición en local para que escribir no vuelva a renderizarlo todo.
  • Señala las compensaciones de accesibilidad y búsqueda que crea la virtualización.

Ejemplo de respuesta

Ejemplo hablado, en primera persona

Lo primero que digo es que cincuenta mil filas nunca deberían estar en el DOM a la vez, porque el layout y la memoria escalan con el número de nodos por muy rápido que sea mi framework. Así que virtualizo: renderizo las filas del viewport más un pequeño margen extra, las posiciono de forma absoluta dentro de un espaciador con la altura total y las reciclo según el usuario hace scroll. Luego trato los datos como un problema aparte. Ordenar y filtrar cincuenta mil registros en cada pulsación va a bloquear el hilo principal, así que o lo hace el servidor y yo pido una página, o memorizo el array derivado para que solo se recalcule cuando la clave de ordenación cambia de verdad. Para la edición en línea guardo el valor borrador en el estado de la propia fila y solo lo subo al confirmar, porque si no cada carácter vuelve a renderizar la tabla. Las partes que la gente olvida son la accesibilidad y la búsqueda dentro de la página: los lectores de pantalla y el buscador del navegador solo ven las filas renderizadas, así que fijo de forma explícita los atributos de conteo de filas y ofrezco una caja de búsqueda real en vez de confiar en la del navegador.

¿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 gestionas filas con alturas variables?
  • ¿Qué se rompe en la navegación por teclado en una tabla virtualizada?
  • ¿Cuándo empujarías la ordenación al servidor en su lugar?

Más preguntas para Desarrollador frontend

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