Questions entretien React Native senior avec réponses

Milad Bonakdar
Auteur
Préparez un entretien senior React Native avec des questions sur architecture, performance FlatList, modules natifs, état, tests et arbitrages de production.
Introduction
Les entretiens senior React Native évaluent rarement seulement la syntaxe. Attendez-vous à des questions sur l’architecture d’application, le profiling de performance, l’intégration native, les frontières entre état et données, la stratégie de test, la qualité des releases et la manière d’expliquer les arbitrages dans de vraies contraintes produit.
Utilisez ce guide pour préparer des réponses nettes de niveau senior. Commencez par la décision que vous prendriez, puis expliquez le raisonnement, le risque et le plan de repli. Par exemple, ne dites pas seulement que FlatList peut être optimisé ; expliquez comment vous profileriez les zones blanches, les lots de rendu, les lignes mémorisées, les clés stables et les changements de design quand les hauteurs fixes ou les images lourdes sont le vrai problème.
React et Hooks Avancés (5 Questions)
1. Expliquez useMemo et useCallback. Quand devriez-vous les utiliser ?
Réponse : Ces deux hooks optimisent les performances en mettant en cache les valeurs/fonctions.
- useMemo : Met en cache les valeurs calculées (calculs coûteux)
- useCallback : Met en cache les références de fonction (empêche la recréation)
- Quand les utiliser : Uniquement lorsque vous rencontrez des problèmes de performance. Une optimisation prématurée peut rendre le code plus difficile à lire.
Rareté : Très Courant Difficulté : Moyenne
2. Qu'est-ce que useRef et quels sont ses cas d'utilisation ?
Réponse :
useRef crée une référence mutable qui persiste entre les rendus sans provoquer de nouveaux rendus.
- Cas d'utilisation :
- Accéder aux éléments DOM/natifs
- Stocker des valeurs mutables sans déclencher de nouveau rendu
- Conserver les valeurs précédentes
- Stocker les minuteurs/intervalles
Rareté : Courant Difficulté : Moyenne
3. Expliquez les Hooks personnalisés et quand les créer.
Réponse : Les hooks personnalisés extraient la logique d'état réutilisable dans des fonctions séparées.
- Avantages : Réutilisation du code, séparation des préoccupations, tests plus faciles
- Convention : Doit commencer par "use"
Rareté : Courant Difficulté : Moyenne
4. Qu'est-ce que le contexte React et quand devriez-vous l'utiliser ?
Réponse : Le contexte offre un moyen de transmettre des données à travers l'arbre des composants sans passer par le prop drilling.
- Cas d'utilisation : Thème, authentification, préférences de langue
- Attention : Peut provoquer des rendus inutiles s'il n'est pas utilisé avec précaution
Rareté : Très Courant Difficulté : Moyenne
5. Expliquez la différence entre useEffect et useLayoutEffect.
Réponse : Les deux exécutent des effets secondaires, mais à des moments différents :
- useEffect : S'exécute de manière asynchrone après que le rendu est affiché à l'écran
- useLayoutEffect : S'exécute de manière synchrone avant l'affichage (bloque les mises à jour visuelles)
- Utilisez useLayoutEffect lorsque : Vous devez mesurer le DOM ou éviter le scintillement visuel
Rareté : Moyenne Difficulté : Difficile
Gestion d'État (4 Questions)
6. Expliquez Redux et ses principes fondamentaux.
Réponse : Redux est un conteneur d'état prévisible pour les applications JavaScript.
- Principes fondamentaux :
- Source unique de vérité (un seul store)
- L'état est en lecture seule (envoyer des actions pour modifier)
- Modifications effectuées avec des fonctions pures (reducers)
Rareté : Très Courant Difficulté : Difficile
7. Qu'est-ce que Redux Toolkit et comment simplifie-t-il Redux ?
Réponse : Redux Toolkit est la manière officielle recommandée d'écrire la logique Redux.
- Avantages :
- Moins de boilerplate
- Immer intégré pour les mises à jour immuables
- Inclut Redux Thunk
- Meilleur support TypeScript
Rareté : Courant Difficulté : Moyenne
8. Quelles sont les alternatives à Redux pour la gestion d'état ?
Réponse : Plusieurs solutions de gestion d'état existent :
- Context API + useReducer : Intégré, bon pour les applications simples
- MobX : Basé sur les observables, moins de boilerplate
- Zustand : Minimal, basé sur les hooks
- Recoil : Basé sur les atomes, par Facebook
- Jotai : Atomes primitifs
Rareté : Courant Difficulté : Moyenne
9. Comment gérez-vous les effets secondaires dans Redux ?
Réponse : Utilisez un middleware pour les opérations asynchrones :
- Redux Thunk : Fonctions qui renvoient des fonctions
- Redux Saga : Basé sur les générateurs, plus puissant
- Redux Observable : Basé sur RxJS
Rareté : Courant Difficulté : Difficile
Optimisation des Performances (5 Questions)
10. Comment optimisez-vous les performances de FlatList ?
Réponse : Plusieurs stratégies améliorent le défilement de FlatList :
- Utilisez
keyExtractor: Fournissez des clés uniques getItemLayout: Évitez la mesure pour les éléments de hauteur fixeremoveClippedSubviews: Démontez les vues hors écran (Android)maxToRenderPerBatch: Contrôlez la taille du lotwindowSize: Contrôlez la fenêtre rendueinitialNumToRender: Éléments à rendre initialement- Mémorisez
renderItem: Empêchez les rendus inutiles
Rareté : Très Courant Difficulté : Moyenne
11. Qu'est-ce que le pont React Native et comment affecte-t-il les performances ?
Réponse : Le pont est la couche de communication entre JavaScript et le code natif.
- Comment ça marche :
- JavaScript s'exécute dans un thread séparé
- Les modules natifs s'exécutent dans des threads natifs
- Le pont sérialise les données entre eux (JSON)
- Impact sur les performances :
- La communication par pont est asynchrone
- Surcharge de sérialisation
- Peut devenir un goulot d'étranglement avec une communication fréquente
- Solutions :
- Minimiser les traversées de pont
- Opérations par lots
- Utilisez des animations natives (contourner le pont)
- Nouvelle architecture (JSI) supprime le pont
Rareté : Courant Difficulté : Difficile
12. Comment évitez-vous les rendus inutiles ?
Réponse : Plusieurs techniques empêchent les rendus gaspillés :
- React.memo : Mémorisez les composants
- useMemo/useCallback : Mémorisez les valeurs/fonctions
- Props de clé appropriées : Aidez React à identifier les modifications
- Évitez les objets/tableaux en ligne : Créez de nouvelles références
- Divisez les composants : Composants plus petits et ciblés
Rareté : Très Courant Difficulté : Moyenne
13. Comment optimisez-vous les images dans React Native ?
Réponse : L'optimisation des images est cruciale pour les performances :
- Redimensionnez les images : Utilisez les dimensions appropriées
- Mettez les images en cache : Utilisez des bibliothèques comme react-native-fast-image
- Chargement paresseux : Chargez les images à la demande
- Chargement progressif : Affichez d'abord un espace réservé
- Utilisez le format WebP : Meilleure compression
Rareté : Courant Difficulté : Moyenne
14. Quels outils utilisez-vous pour le profilage des performances ?
Réponse : Plusieurs outils aident à identifier les problèmes de performances :
- React DevTools Profiler : Temps de rendu des composants
- Flipper : Outil de débogage et de profilage
- Performance Monitor : Moniteur FPS intégré
- Systrace : Traçage des performances Android
- Instruments : Profilage des performances iOS
Rareté : Courant Difficulté : Moyenne
Modules Natifs et Spécificités de la Plateforme (4 Questions)
15. Comment créez-vous un module natif dans React Native ?
Réponse : Les modules natifs vous permettent d'utiliser du code spécifique à la plateforme.
Rareté : Moyenne Difficulté : Difficile
16. Comment gérez-vous le code spécifique à la plateforme ?
Réponse : Plusieurs approches pour le code spécifique à la plateforme :
- Module Platform : Vérifiez la plateforme au moment de l'exécution
- Fichiers spécifiques à la plateforme :
.ios.jset.android.js - Platform.select : Sélectionnez les valeurs en fonction de la plateforme
Rareté : Très Courant Difficulté : Facile
17. Qu'est-ce que la nouvelle architecture (Fabric et TurboModules) ?
Réponse : La nouvelle architecture améliore les performances de React Native :
- Fabric : Nouveau système de rendu
- Disposition synchrone
- Meilleure interopérabilité avec les vues natives
- Sécurité de type
- TurboModules : Nouveau système de modules natifs
- Chargement paresseux
- JSI (JavaScript Interface) - communication C++ directe
- Pas de sérialisation de pont
Avantages :
- Démarrage plus rapide
- Utilisation de la mémoire réduite
- Appels natifs synchrones
- Meilleure sécurité de type
Rareté : Moyenne Difficulté : Difficile
18. Comment gérez-vous les liens profonds dans React Native ?
Réponse : Les liens profonds permettent d'ouvrir des écrans spécifiques à partir d'URL.


