Ne mettez pas cinquante mille lignes dans le DOM. Virtualisez pour ne rendre que la fenêtre visible plus un petit dépassement, gardez une hauteur de ligne prévisible ou mesurez-la, et sortez le tri et le filtrage du rendu vers des données dérivées mémoïsées ou vers le serveur. Paginez ou diffusez les données elles-mêmes, gardez l'état de la ligne en édition en local pour qu'une frappe ne re-rende pas le tableau, et testez avec un processeur bridé.
Pourquoi les recruteurs posent cette question
Ça vérifie si vous comprenez où se trouve vraiment le coût : le nombre de noeuds DOM, le layout, et le re-rendu de toute la liste à chaque frappe. Le recruteur veut vous voir séparer le problème de données du problème de rendu et considérer l'accessibilité et le comportement clavier, que la virtualisation naïve casse. Aller directement chercher une bibliothèque maintenue est une bonne réponse si vous savez expliquer ce qu'elle fait pour vous.
Comment structurer votre réponse
- Dites que le nombre de noeuds DOM est la contrainte et virtualisez.
- Séparez la préoccupation données de la préoccupation rendu.
- Gardez l'état d'édition en local pour que la saisie ne re-rende pas tout.
- Signalez les arbitrages d'accessibilité et de recherche créés par la virtualisation.
Exemple de réponse
La première chose que je dis, c'est que cinquante mille lignes ne devraient jamais être dans le DOM en même temps, parce que le layout et la mémoire croissent avec le nombre de noeuds quelle que soit la rapidité de mon framework. Donc je virtualise : je rends les lignes de la zone visible plus un petit dépassement, je les positionne en absolu dans une cale de la hauteur totale, et je les recycle au défilement. Ensuite je traite les données comme un problème séparé. Trier et filtrer cinquante mille enregistrements à chaque frappe bloquera le thread principal, donc soit le serveur le fait et je demande une page, soit je mémoïse le tableau dérivé pour qu'il ne se recalcule que quand la clé de tri change vraiment. Pour l'édition en ligne, je garde la valeur brouillon dans l'état propre à la ligne et je ne la remonte qu'à la validation, sinon chaque caractère re-rend le tableau. Ce que les gens oublient, c'est l'accessibilité et la recherche dans la page : les lecteurs d'écran et la recherche du navigateur ne voient que les lignes rendues, donc je pose explicitement les attributs de nombre de lignes et je fournis un vrai champ de recherche plutôt que de compter sur celui du navigateur.
Vous passez cet entretien bientôt ? GhostPilot écoute votre appel en direct, repère la question dès qu'elle est posée et affiche une réponse structurée à l'écran en temps réel. Essayez-le lors de votre prochain entretien blanc, ou prenez un Session Pass à $29, sans abonnement, pour le jour J.
Voir comment ça marcheQuestions de relance à prévoir
- Comment gérez-vous des lignes à hauteur variable ?
- Qu'est-ce qui casse dans la navigation clavier d'un tableau virtualisé ?
- Quand pousseriez-vous plutôt le tri vers le serveur ?
Autres questions pour Développeur frontend
Votre recruteur posera sa propre version de celle-ci. Collez votre véritable fiche de poste dans le Question Predictor gratuit et obtenez les 20 questions que ce poste a le plus de chances de poser, avec ce que chacune cherche vraiment à sonder.
Prédire mes questions