React Native Senior Interviewfragen mit Antworten

Milad Bonakdar
Autor
Bereite dich auf Senior-React-Native-Interviews vor: Architektur, FlatList-Performance, native Module, State Management, Testing und produktionsnahe Trade-offs.
Einführung
In Senior-React-Native-Interviews geht es selten nur um Syntax. Rechne mit Fragen zu App-Architektur, Performance-Profiling, nativer Integration, State- und Datengrenzen, Teststrategie, Release-Qualität und dazu, wie du Trade-offs unter echten Produktbedingungen erklärst.
Nutze diesen Leitfaden, um klare Senior-Antworten zu üben. Starte mit der Entscheidung, die du treffen würdest, und erkläre dann Begründung, Risiko und Fallback. Sage bei FlatList zum Beispiel nicht nur, dass man optimieren kann; erkläre, wie du leere Bereiche, Rendering-Batches, memoisiert Rows, stabile Keys und Designänderungen bei festen Item-Höhen oder schweren Bildern prüfen würdest.
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, aber eine Senior-Antwort beginnt mit dem Profiling des Symptoms: leere Bereiche, langsame Taps, Speicherdruck, teure Row-Renderings oder Netzwerk-Pagination. Optimiere die Liste erst, wenn klar ist, welches Problem du löst.
- Verwende
keyExtractor: Stelle stabile eindeutige Schlüssel bereit getItemLayout: Überspringe Messungen, wenn Höhe oder Breite der Items vorhersehbar ist- Tune Render-Batches: Balanciere
initialNumToRender,maxToRenderPerBatch,updateCellsBatchingPeriodundwindowSize - Halte Rows leicht: Verschiebe schwere Logik aus Row-Komponenten und skaliere oder cache Bilder
- Memoisiere Row-Komponenten und
renderItem: NutzeReact.memounduseCallback, wenn Prop-Referenzen stabil sind - Nutze Pagination bewusst: Vermeide blockierende Interaktionen beim Anhängen neuer Daten
- Validiere auf echten Geräten: Simulatoren können Speicher- und Scroll-Probleme verbergen
Seltenheit: Sehr häufig Schwierigkeit: Mittel
11. Was ist die React Native Bridge und wie beeinflusst sie die Leistung?
Antwort: Die Legacy-Bridge ist die Kommunikationsschicht zwischen JavaScript und nativem Code. Ältere React-Native-Apps senden serialisierte asynchrone Nachrichten über diese Grenze, sodass häufige JavaScript/native Kommunikation Animationen, Scrolling und Startarbeit belasten kann.
- Funktionsweise in der Legacy-Architektur:
- JavaScript läuft getrennt von nativer UI und Plattformcode
- Native Module laufen auf nativen Threads
- Daten über die Bridge müssen serialisiert werden
- Leistungsauswirkungen:
- Viele kleine Aufrufe können zum Engpass werden
- Große Payloads verursachen Serialisierungskosten
- UI-Arbeit kann verzögert wirken, wenn JS ausgelastet ist
- Senior-Mitigation:
- Bridge-Übergänge reduzieren und native Arbeit bündeln
- Native-driven Animationen oder Reanimated für gesture-lastige Flows nutzen
- Vor dem Umschreiben profilieren
- Bei neueren Apps verstehen, wie JSI, Fabric und TurboModules Bridge-Grenzen reduzieren, aber Library-Kompatibilität weiter geprüft werden muss
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 ist das moderne Runtime- und Rendering-Modell von React Native. Sie kombiniert JSI für direkte JavaScript/native Interaktion, Fabric als Renderer und TurboModules für typisierte native Module. Ein Senior-Kandidat sollte Vorteile und Migrationsrisiken erklären.
- Fabric: Neues Rendering-System
- Bessere Interoperabilität mit nativen Views
- Mehr synchrone Layout-Möglichkeiten
- Für moderne React-Features ausgelegt
- TurboModules: Neues natives Modulsystem
- Lazy Loading
- Typsichere Specs über Codegen
- Direkte JSI-basierte Kommunikation statt Bridge-Serialisierung
Interview-Framing:
- Neue Apps sollten die neue Architektur früh evaluieren
- Bestehende Apps brauchen Dependency-, Build- und Rollout-Checks vor der Migration
- Performance-Gewinne hängen vom Bottleneck der App ab; keine automatischen Speedups versprechen
- Ownership nativer Module, CI-Abdeckung und Crash-Monitoring sind genauso wichtig wie ein aktivierter Flag
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.


