Question d'entretien pour Développeur frontend

Expliquez la délégation d'événements et quand vous l'utiliseriez plutôt que d'attacher des écouteurs à chaque élément.

Ce que le recruteur cherche à évaluer, comment structurer votre réponse et un exemple parlé à adapter.

Réponse rapide

La délégation d'événements consiste à attacher un seul écouteur à un ancêtre commun et à utiliser event.target pour déterminer quel descendant a été manipulé. Ça marche parce que la plupart des événements remontent depuis la cible à travers ses ancêtres. Utilisez-la pour des listes qui changent souvent ou qui sont grandes, puisque vous évitez d'attacher et de nettoyer des centaines d'écouteurs. Évitez-la pour les événements qui ne remontent pas, comme focus, blur et la plupart des événements média.

Pourquoi les recruteurs posent cette question

C'est une vérification rapide de votre compréhension des phases de capture et de bouillonnement plutôt que d'un simple addEventListener récité de mémoire. Le recruteur sonde aussi votre hygiène mémoire : les candidats qui ont débogué des fuites d'écouteurs dans une application monopage savent pourquoi la délégation compte. Les relances vont en général vers les événements qui ne remontent pas, le mauvais usage de stopPropagation, et la façon dont les frameworks implémentent leur propre délégation synthétique par-dessus.

Comment structurer votre réponse

  • Définissez-la en une phrase avec le bouillonnement et event.target.
  • Nommez le gain concret : moins d'écouteurs, fonctionne pour les éléments ajoutés ensuite.
  • Signalez les exceptions, dont les événements qui ne remontent pas.
  • Avertissez que stopPropagation casse la délégation en amont.

Exemple de réponse

Exemple parlé, à la première personne

Au lieu de mettre un écouteur de clic sur chaque ligne, j'en mets un sur le conteneur et je lis event.target, puis je remonte avec closest pour trouver la ligne qui m'intéresse. Ça marche parce que le clic remonte depuis ce qui a réellement été cliqué à travers ses ancêtres, donc le conteneur voit tout ce qui est en dessous. Les deux gains, c'est que je ne crée ni ne détruis des centaines d'écouteurs, et que les lignes ajoutées ensuite fonctionnent sans réattachement. Les pièges valent la peine d'être dits : focus et blur ne remontent pas, donc j'utilise focusin et focusout pour ceux-là, et si un bout de code entre la cible et mon conteneur appelle stopPropagation mon gestionnaire cesse silencieusement de se déclencher, ce qui est un bug vraiment pénible à traquer. Je suis surtout tombé là-dessus dans un tableau où un composant interne stoppait la propagation pour fermer son propre menu et tuait discrètement la sélection de ligne. Aujourd'hui j'ai en général la délégation gratuitement via le framework, mais je l'utilise encore directement pour les grandes listes virtualisées et tout ce qui est rendu hors de l'arbre du framework.

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 marche

Questions de relance à prévoir

  • Quels événements courants ne remontent pas, et qu'utilisez-vous à la place ?
  • Comment géreriez-vous un clic sur un élément imbriqué dans la ligne ?
  • Quand stopPropagation est-il le bon choix plutôt qu'un signal d'alerte ?

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

Répétez les questions difficiles avant qu'on vous les pose

Entraînez-vous avec un copilote en direct, puis présentez-vous prêt. Un Session Pass à $29 vous accompagne pendant l'entretien, sans abonnement et sans engagement.

Obtenir GhostPilot