Question d'entretien pour Développeur React

Quand utiliseriez-vous useMemo plutôt que useCallback, et quand vous passeriez-vous des deux ?

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

Réponse rapide

useMemo met en cache une valeur calculée entre les rendus ; useCallback met en cache une référence de fonction. C'est le même mécanisme, puisque useCallback(fn, deps) équivaut à useMemo(() => fn, deps). Sortez-les quand une valeur est réellement coûteuse à calculer, ou quand une référence est une dépendance d'effet ou une prop passée à un enfant mémoïsé. Passez-vous des deux pour les valeurs bon marché, parce que la comptabilité interne n'est pas gratuite.

Pourquoi les recruteurs posent cette question

La mémoïsation réflexe est l'une des odeurs les plus courantes dans le code React, donc le recruteur cherche du jugement plutôt que de l'habitude. Il vérifie que vous comprenez l'identité référentielle, que vous savez que mémoïser une prop n'aide que si l'enfant est lui-même mémoïsé, et que vous ouvririez le profiler avant de saupoudrer des hooks. En 2026, il peut aussi vouloir vous entendre dire où le React Compiler rend tout cela inutile.

Comment structurer votre réponse

  • Donnez la différence en une ligne : valeur contre référence de fonction.
  • Donnez les deux cas où ça paie vraiment.
  • Dites ce que vous mesurez avant de l'ajouter.
  • Mentionnez le React Compiler et vers où va la mémoïsation manuelle.

Exemple de réponse

Exemple parlé, à la première personne

C'est le même outil avec deux casquettes. useMemo met en cache une valeur, useCallback met en cache une fonction, et sous le capot useCallback n'est qu'un useMemo qui renvoie cette fonction. Je ne sors l'un ou l'autre que pour deux raisons. Un, le calcul est réellement coûteux, comme trier et grouper quelques milliers de lignes. Deux, l'identité de la chose compte, parce que c'est une dépendance d'un effet ou une prop qui part vers un composant enveloppé dans React.memo. Si aucune des deux n'est vraie, je laisse tomber, parce que chaque appel de mémo coûte quand même une comparaison et un peu de mémoire, et ça rend le code plus bruyant à lire. Ce que je fais vraiment en premier, c'est ouvrir le React Profiler et vérifier si ce re-rendu coûte quoi que ce soit. La plupart du temps, le vrai correctif n'est pas un mémo, c'est de rapprocher l'état de l'endroit où il est utilisé pour que la moitié de l'arbre arrête de se rendre. Et sur les projets récents avec le React Compiler activé, une bonne partie de cette mémoïsation manuelle disparaît, ce qui me va très bien ; le code se lit mieux sans.

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

  • Que compare React.memo par défaut, et comment changez-vous ce comportement ?
  • Pourquoi une prop objet définie en ligne annule-t-elle l'effet de React.memo ?
  • Comment mémoïseriez-vous quelque chose qui dépend d'une valeur venant d'un contexte ?

Autres questions pour Développeur React

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