Vorstellungsgesprächsfragen für erfahrene React Native Entwickler: Der komplette Leitfaden

Milad Bonakdar
Autor
Meistern Sie die fortgeschrittene React Native Entwicklung mit wichtigen Fragen für Vorstellungsgespräche, die Leistungsoptimierung, native Module, State Management, Tests, Architekturmuster und Cross-Platform Best Practices für erfahrene Entwickler abdecken.
Einführung
Von erfahrenen React Native-Entwicklern wird erwartet, dass sie skalierbare, plattformübergreifende Anwendungen entwerfen, die Leistung optimieren, native Module integrieren und fundierte architektonische Entscheidungen treffen. Diese Rolle erfordert fundiertes Fachwissen in React Native, State Management, nativer Entwicklung und die Fähigkeit, komplexe Herausforderungen der mobilen Entwicklung zu lösen.
Dieser umfassende Leitfaden behandelt wichtige Interviewfragen für erfahrene React Native-Entwickler, die fortgeschrittene React-Konzepte, Leistungsoptimierung, State Management, native Module, Tests und Architekturmuster umfassen. Jede Frage enthält detaillierte Antworten, eine Seltenheitseinschätzung und Schwierigkeitsgrade.
Fortgeschrittenes React & Hooks (5 Fragen)
1. Erkläre useMemo und useCallback. Wann solltest du sie verwenden?
Antwort: Beide Hooks optimieren die Leistung, indem sie Werte/Funktionen memoizieren.
- useMemo: Memoisiert berechnete Werte (teure Berechnungen)
- useCallback: Memoisiert Funktionsreferenzen (verhindert Neuerstellung)
- Wann verwenden: Nur wenn Leistungsprobleme auftreten. Vorzeitige Optimierung kann den Code schwerer lesbar machen.
Seltenheit: Sehr häufig Schwierigkeit: Mittel
2. Was ist useRef und was sind seine Anwendungsfälle?
Antwort:
useRef erstellt eine mutable Referenz, die über Renderings hinweg erhalten bleibt, ohne Re-Renderings auszulösen.
- Anwendungsfälle:
- Zugriff auf DOM-/native Elemente
- Speichern von mutablen Werten, ohne Re-Rendering auszulösen
- Speichern vorheriger Werte
- Speichern von Timern/Intervallen
Seltenheit: Häufig Schwierigkeit: Mittel
3. Erkläre Custom Hooks und wann man sie erstellen sollte.
Antwort: Custom Hooks extrahieren wiederverwendbare zustandsbehaftete Logik in separate Funktionen.
- Vorteile: Code-Wiederverwendung, Trennung von Belangen, einfacheres Testen
- Konvention: Muss mit "use" beginnen
Seltenheit: Häufig Schwierigkeit: Mittel
4. Was ist React Context und wann solltest du es verwenden?
Antwort: Context bietet eine Möglichkeit, Daten durch den Komponentenbaum zu übergeben, ohne Prop-Drilling.
- Anwendungsfälle: Theme, Authentifizierung, Spracheinstellungen
- Vorsicht: Kann unnötige Re-Renderings verursachen, wenn nicht sorgfältig verwendet
Seltenheit: Sehr häufig Schwierigkeit: Mittel
5. Erkläre den Unterschied zwischen useEffect und useLayoutEffect.
Antwort: Beide führen Side Effects aus, aber zu unterschiedlichen Zeiten:
- useEffect: Wird asynchron ausgeführt, nachdem das Rendering auf dem Bildschirm gezeichnet wurde
- useLayoutEffect: Wird synchron vor dem Zeichnen ausgeführt (blockiert visuelle Updates)
- Verwende useLayoutEffect wann: Du musst das DOM messen oder visuelles Flimmern verhindern
Seltenheit: Mittel Schwierigkeit: Schwer
State Management (4 Fragen)
6. Erkläre Redux und seine Kernprinzipien.
Antwort: Redux ist ein vorhersehbarer State-Container für JavaScript-Apps.
- Kernprinzipien:
- Single Source of Truth (ein Store)
- State ist schreibgeschützt (Aktionen zum Ändern dispatch)
- Änderungen werden mit reinen Funktionen vorgenommen (Reduzierer)
Seltenheit: Sehr häufig Schwierigkeit: Schwer
7. Was ist Redux Toolkit und wie vereinfacht es Redux?
Antwort: Redux Toolkit ist die offiziell empfohlene Methode, um Redux-Logik zu schreiben.
- Vorteile:
- Weniger Boilerplate
- Eingebautes Immer für immutable Updates
- Enthält Redux Thunk
- Bessere TypeScript-Unterstützung
Seltenheit: Häufig Schwierigkeit: Mittel
8. Was sind Alternativen zu Redux für State Management?
Antwort: Es gibt mehrere State-Management-Lösungen:
- Context API + useReducer: Eingebaut, gut für einfache Apps
- MobX: Observable-basiert, weniger Boilerplate
- Zustand: Minimal, Hooks-basiert
- Recoil: Atom-basiert, von Facebook
- Jotai: Primitive Atome
Seltenheit: Häufig Schwierigkeit: Mittel
9. Wie handhabst du Side Effects in Redux?
Antwort: Verwende Middleware für asynchrone Operationen:
- Redux Thunk: Funktionen, die Funktionen zurückgeben
- Redux Saga: Generator-basiert, leistungsfähiger
- Redux Observable: RxJS-basiert
Seltenheit: Häufig Schwierigkeit: Schwer
Leistungsoptimierung (5 Fragen)
10. Wie optimierst du die Leistung von FlatList?
Antwort: Mehrere Strategien verbessern das Scrollen von FlatList:
- Verwende
keyExtractor: Stelle eindeutige Schlüssel bereit getItemLayout: Überspringe die Messung für Elemente mit fester HöheremoveClippedSubviews: Unmounten von Ansichten außerhalb des Bildschirms (Android)maxToRenderPerBatch: Steuere die Batch-GrößewindowSize: Steuere das gerenderte FensterinitialNumToRender: Anzahl der Elemente, die anfänglich gerendert werden sollen- Memoisiere
renderItem: Verhindere unnötige Re-Renderings
Seltenheit: Sehr häufig Schwierigkeit: Mittel
11. Was ist die React Native Bridge und wie beeinflusst sie die Leistung?
Antwort: Die Bridge ist die Kommunikationsschicht zwischen JavaScript und nativem Code.
- Wie es funktioniert:
- JavaScript läuft in einem separaten Thread
- Native Module laufen in nativen Threads
- Die Bridge serialisiert Daten zwischen ihnen (JSON)
- Leistungsauswirkungen:
- Die Bridge-Kommunikation ist asynchron
- Serialisierungs-Overhead
- Kann bei häufiger Kommunikation zum Engpass werden
- Lösungen:
- Minimiere Bridge-Übergänge
- Batch-Operationen
- Verwende native Animationen (umgehe die Bridge)
- Neue Architektur (JSI) entfernt die Bridge
Seltenheit: Häufig Schwierigkeit: Schwer
12. Wie verhinderst du unnötige Re-Renderings?
Antwort: Mehrere Techniken verhindern unnötige Renderings:
- React.memo: Memoisiere Komponenten
- useMemo/useCallback: Memoisiere Werte/Funktionen
- Korrekte Key-Props: Helfen React, Änderungen zu identifizieren
- Vermeide Inline-Objekte/Arrays: Erstelle neue Referenzen
- Teile Komponenten auf: Kleinere, fokussierte Komponenten
Seltenheit: Sehr häufig Schwierigkeit: Mittel
13. Wie optimierst du Bilder in React Native?
Antwort: Bildoptimierung ist entscheidend für die Leistung:
- Größe von Bildern ändern: Verwende geeignete Abmessungen
- Bilder zwischenspeichern: Verwende Bibliotheken wie react-native-fast-image
- Lazy Loading: Lade Bilder bei Bedarf
- Progressives Laden: Zeige zuerst einen Platzhalter
- Verwende das WebP-Format: Bessere Komprimierung
Seltenheit: Häufig Schwierigkeit: Mittel
14. Welche Tools verwendest du für das Performance-Profiling?
Antwort: Mehrere Tools helfen, Leistungsprobleme zu identifizieren:
- React DevTools Profiler: Renderzeiten von Komponenten
- Flipper: Debugging- und Profiling-Tool
- Performance Monitor: Eingebauter FPS-Monitor
- Systrace: Android Performance Tracing
- Instruments: iOS Performance Profiling
Seltenheit: Häufig Schwierigkeit: Mittel
Native Module & Plattformspezifisch (4 Fragen)
15. Wie erstellst du ein natives Modul in React Native?
Antwort: Native Module ermöglichen die Verwendung von plattformspezifischem Code.
Seltenheit: Mittel Schwierigkeit: Schwer
16. Wie handhabst du plattformspezifischen Code?
Antwort: Mehrere Ansätze für plattformspezifischen Code:
- Plattformmodul: Überprüfe die Plattform zur Laufzeit
- Plattformspezifische Dateien:
.ios.jsund.android.js - Platform.select: Wähle Werte basierend auf der Plattform aus
Seltenheit: Sehr häufig Schwierigkeit: Einfach
17. Was ist die neue Architektur (Fabric und TurboModule)?
Antwort: Die neue Architektur verbessert die Leistung von React Native:
- Fabric: Neues Rendering-System
- Synchrones Layout
- Bessere Interoperabilität mit nativen Ansichten
- Typsicherheit
- TurboModule: Neues natives Modulsystem
- Lazy Loading
- JSI (JavaScript Interface) - direkte C++-Kommunikation
- Keine Bridge-Serialisierung
Vorteile:
- Schnellerer Start
- Geringere Speichernutzung
- Synchrone native Aufrufe
- Bessere Typsicherheit
Seltenheit: Mittel Schwierigkeit: Schwer
18. Wie handhabst du Deep Linking in React Native?
Antwort: Deep Linking ermöglicht das Öffnen bestimmter Bildschirme über URLs.
Seltenheit: Häufig Schwierigkeit: Mittel
Testen (3 Fragen)
19. Wie testest du React Native-Komponenten?
Antwort: Verwende Testbibliotheken wie Jest und React Native Testing Library.



