Questions d'entretien pour développeur React Native senior : Guide complet

Milad Bonakdar
Auteur
Maîtrisez le développement React Native avancé avec des questions d'entretien essentielles couvrant l'optimisation des performances, les modules natifs, la gestion d'état, les tests, les modèles d'architecture et les meilleures pratiques multiplateformes pour les développeurs seniors.
Introduction
On attend des développeurs React Native seniors qu'ils conçoivent des applications multiplateformes évolutives, optimisent les performances, intègrent des modules natifs et prennent des décisions architecturales éclairées. Ce rôle exige une expertise approfondie dans React Native, la gestion d'état, le développement natif et la capacité à résoudre des défis complexes de développement mobile.
Ce guide complet couvre les questions d'entretien essentielles pour les développeurs React Native seniors, allant des concepts React avancés à l'optimisation des performances, en passant par la gestion d'état, les modules natifs, les tests et les modèles architecturaux. Chaque question comprend des réponses détaillées, une évaluation de la rareté et des niveaux de difficulté.
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.



