P
prepair.app
Interview starten →
EnglishУкраїнськаРусскийDeutsch
📱

React-Native-Interviewfragen

React-Native-Interviews laufen über mehrere Ebenen: grundlegendes React und JSX, dann die mobile Spezifik — Navigation, Styling mit Flexbox, der Zugriff auf nativen Code über die Bridge oder JSI, und schließlich Build und Release. Hier sind die am häufigsten gestellten Fragen, jeweils mit einer Musterantwort.

Junior · keine Erfahrung / unter 1 JahrMiddle · 2–4 Jahre ErfahrungSenior · 5+ Jahre Erfahrung

Worum es geht

✓Komponenten, Props und State
✓JSX und Hooks (useState, useEffect)
✓Styling mit Flexbox
✓React Navigation und Deep Linking
✓Die Bridge, JSI und die New Architecture (Fabric)
✓Performance, Plattformunterschiede und Release (Metro, OTA-Updates)

9 echte Fragen mit Antworten

Zu jeder Frage gibt es eine Musterantwort, mit der du deine eigene vergleichen kannst.

1

Was ist der Unterschied zwischen Props und State in React Native?

Antwort

Props sind nur lesbare Daten, die von einer Elternkomponente übergeben werden, und gehören dem, der sie übergibt; State gehört der Komponente selbst und ändert sich über die Zeit via useState oder useReducer. Eine Komponente, die zweimal dieselben Props ohne State-Änderung erhält, sollte dieselbe Ausgabe rendern — genau das macht Props vorhersagbar. Setter über Props nach unten zu reichen ("State nach oben heben") ist der Standardweg, damit ein Kind eine State-Änderung auslösen kann, die es selbst nicht besitzt.

2

Was ist JSX, und wozu wird es tatsächlich kompiliert?

Antwort

JSX ist syntaktischer Zucker für React.createElement-Aufrufe — <View style={styles.box}>{text}</View> wird zu einem verschachtelten Baum von Element-Objekten, nicht zu echten DOM-Knoten, weil es auf native keine DOM gibt. Babels Transform wandelt die Tags in Funktionsaufrufe um, bevor der JS überhaupt läuft — JSX ist also eine Build-Time-Annehmlichkeit, kein Runtime-Feature. In React Native beschreiben diese Element-Objekte am Ende eine native View-Hierarchie statt HTML.

3

Was machen `useState` und `useEffect`, und wann läuft der Effekt?

Antwort

useState gibt einer Komponente ein Stück State und einen Setter, der bei Aufruf einen Re-Render auslöst; useEffect führt einen Seiteneffekt aus, nachdem der Render committed wurde, und läuft nur erneut, wenn sich etwas im Dependency-Array geändert hat. Eine vergessene Dependency ist die häufigste Ursache für stale Closures — der Effekt referenziert weiterhin den Wert aus dem Render, in dem er erstellt wurde. Ein leeres Dependency-Array heißt "einmal beim Mount ausführen", kein Array heißt "nach jedem Render ausführen".

4

Wie funktioniert Styling in React Native, und warum verhält sich Flexbox anders als im Web?

Antwort

Es gibt kein CSS — Styles sind JS-Objekte, erstellt mit StyleSheet.create und unter der Haube auf native View-Properties gemappt. Flexbox bleibt die Layout-Engine, aber flexDirection ist standardmäßig column statt row, es gibt keine CSS-Kaskade, und Einheiten sind einheitenlose density-independent Pixel statt px/em/rem. Prozentuale Breiten, flex: 1 zum Ausfüllen des verbleibenden Platzes und justifyContent/alignItems zur Ausrichtung decken die meisten realen Layouts ab.

5

Wie funktioniert Navigation mit React Navigation, und was bringt Deep Linking zusätzlich?

Antwort

React Navigation modelliert die App als Baum von Navigatoren — Stack, Tab, Drawer —, jeder Screen wird unter einem Namen registriert, und navigation.navigate('Screen', params) wechselt zwischen ihnen, während ein History-Stack für die Zurück-Geste erhalten bleibt. Deep Linking mappt ein externes URL-Schema oder einen Universal Link auf einen bestimmten Screen mit Parametern, sodass eine Push-Benachrichtigung oder ein Web-Link den Nutzer direkt in, sagen wir, einen Bestelldetails-Screen bringt statt auf den App-Startbildschirm. Es richtig hinzubekommen bedeutet, sowohl einen Cold Start (App läuft nicht) als auch eine Warm-Resume-Situation über einen Link zu behandeln.

6

Was ist die Bridge, und wie unterscheidet sie sich von JSI und der New Architecture?

Antwort

In der alten Architektur teilen sich JS und nativer Code keinen Speicher — sie kommunizieren über die Bridge, eine asynchrone, gebatchte, JSON-serialisierte Message-Queue, wodurch jeder native Call Serialisierungskosten und Latenz mit sich bringt. JSI (JavaScript Interface) ersetzt das durch direkte C++-Bindings, sodass JS Referenzen auf native Objekte halten und deren Methoden synchron aufrufen kann, ganz ohne Serialisierung. Die New Architecture baut auf JSI auf: TurboModules ersetzen native Module, und Fabric ersetzt den alten UI-Manager — beide können direkt mit nativem Code sprechen, statt über die Bridge zu queuen.

7

Wie hältst du eine lange `FlatList` davon ab, zu ruckeln?

Antwort

Gib jedem Item einen stabilen keyExtractor, memoize die Row-Komponente mit React.memo, damit ein Re-Render des Parents nicht jede Zeile neu rendert, und vermeide inline Funktionen und Objekt-Literale in renderItem, weil eine neue Referenz bei jedem Render die Memoization zunichtemacht. getItemLayout überspringt einen Messdurchlauf, wenn die Zeilenhöhe fix ist, und windowSize/initialNumToRender/removeClippedSubviews tauschen Speicher gegen Scroll-Flüssigkeit. Für sehr große oder komplexe Listen löst FlashList von Shopify dasselbe Problem mit weniger Tuning-Aufwand.

8

Was sind die realen Unterschiede zwischen dem Bau für iOS und Android in React Native?

Antwort

Safe Areas, Keyboard-Verhalten und Schatten-Styling (shadow*-Props auf iOS vs. elevation auf Android) weichen so weit voneinander ab, dass pixelgenaue Parität plattformspezifischen Code über Platform.select oder .ios.js/.android.js-Dateiendungen braucht. Permissions, Push-Notification-Setup und Background-Task-Limits folgen den jeweils eigenen Regeln der Plattform — Androids Background-Execution-Limits und Apples strengeres App-Store-Review sind unterschiedliche Constraints, nicht nur unterschiedliche APIs. Ein für eine Plattform geschriebenes natives Modul braucht ein echtes Gegenstück in Swift/Objective-C und Kotlin/Java, bevor es auf beiden funktioniert.

9

Wie kommt ein Release tatsächlich raus — was haben Metro, OTA-Updates und das Store-Review miteinander zu tun?

Antwort

Metro bundlet und serviert den JS während der Entwicklung und packt ihn für den Release ins App-Binary — es ist nicht Teil dessen, was Nutzer bekommen, sondern nur das Build-Tool. OTA-Update-Dienste wie CodePush oder Expo Updates pushen ein neues JS-Bundle direkt auf installierte Apps ohne App-Store- oder Play-Store-Review, was schnell für Bugfixes ist, aber ausdrücklich verboten für alles, was nativen Code ändert oder über das hinausgeht, was der Store als "nur Content" betrachtet. Native Änderungen — ein neues natives Modul, eine Permission, ein SDK-Bump — brauchen immer einen vollständigen Build und eine neue Store-Einreichung, weshalb ein Team auf zwei Geschwindigkeiten fährt: OTA für reine JS-Fixes, Store-Releases für alles Native.

🦎

Antworten lesen reicht nicht

Im echten Interview sprichst du unter Druck. Cam stellt genau diese Fragen, bewertet jede Antwort und zeigt dir genau, was du verbessern musst.

React Native Developer-Interview üben →
Kostenlos · 3 Interviews im Monat

Lesenswert

Alle Artikel →

Weitere Spezialisierungen

🔍QA Manual🤖QA Automation☕Java Backend🐍Python Backend🐘PHP-Backend🦫Go-Backend🟢Node.js-Backend💎Ruby on Rails🟣.NET Backend Developer🔷C++🟨JavaScript⚛️React Frontend💚Vue Frontend🅰️Angular Frontend▲Next.js🍏iOS (Swift)🟩Android (Kotlin)⚙️DevOps / SRE🗄️Data Engineer🧠AI/ML Engineer📊Data Scientist📈Business Analyst🎯Product Manager📋Project Manager🎨UI/UX Designer📣Marketing🧑‍💼HR / Recruiter🤝Sales / Account Manager🎧Technical Support Engineer