{ sync: true }
callNative()
→ JSI
Mülakat

React Native & JavaScript Mülakat Soruları — Seviye 3

MülakatJavaScriptReact NativeSeviye 3

Bridge (eski iletişim köprüsü), thread’ler, native modüller ve performans ölçümü üzerine 20 ileri-orta soru.

EG

Emre Gürbüz

6 Ağustos 2026 · 4 dk okuma

Bu seviyede “nasıl yazılır?”dan “neden böyle?”ye geçiyoruz: bridge maliyeti, JS/UI thread ayrımı, native sınırlar ve ölçmeden optimize etmeme disiplini. Teknik terimler ilk geçişte parantezle açıklandı.

Seviye 3 — İleri Orta · Sorular 41–60 / 100

Bu serideki seviyeler

Soru 41

JS thread ile UI thread farkı nedir?

JS thread React ve iş mantığını çalıştırır. UI thread native çizim, yerleşim ve jestleri yönetir. Ağır JS işi kare düşürür; ağır yerleşim de takılma yaratır. Reanimated gibi araçlar bazı işleri UI tarafına taşır.

Soru 42

Klasik bridge’in (eski köprü) maliyeti nedir?

JSON’a çevirme, kuyruk ve kopyalama maliyeti vardır. Saniyede yüzlerce native çağrıda gecikme birikir. Animasyon ve senkron depolama bridge üzerinden kötü ölçeklenir.

Soru 43

Native Module ne zaman yazılır?

React Native’de olmayan sensör, SDK veya performans-kritik platform API’si gerektiğinde. Önce hazır kütüphane arayın; yazacaksanız mümkünse New Architecture Spec / Turbo Modules hedefini seçin.

Soru 44

InteractionManager.runAfterInteractions ne işe yarar?

Animasyon/jest bitince ağır JS işini erteler; ilk karelerin akıcı kalmasına yardım eder. Yanlış kullanılırsa iş hiç çalışmıyor gibi görünebilir; ölçümle doğrulayın.

Soru 45

Liste sanallaştırması (virtualization) ne zaman bozulur?

Değişken satır yüksekliği + eksik getItemLayout, iç içe ScrollView, listeyi map ile bütün çizmek, satırda çok ağır bileşen. Nested VirtualizedList uyarıları ciddiye alınmalıdır.

Soru 46

Bellek sızıntısı (memory leak) belirtileri neler?

Ekran aç-kapa ettikçe artan bellek, kapanmayan abonelik/timer/animasyon listener. LeakCanary / Instruments ve JS heap (bellek anlık görüntüsü) ile ayrıştırılır.

Soru 47

Hermes neden varsayılan motor oldu (özet)?

Daha düşük açılış süresi ve bellek, bytecode ile parse işinin büyük kısmını derleme zamanına taşıma, React Native odaklı optimizasyonlar. Source map (hata satırı eşlemesi) kurulumu şarttır.

Soru 48

Lazy screen / kod bölme ne kazandırır?

İlk açılışta her ekranı yüklemeyi erteler. Navigasyonda React.lazy + Suspense veya paket ayırma kullanılabilir. Kazancı Metro/Hermes ile birlikte ölçün.

Soru 49

Gesture Handler ile klasik RN jest farkı nedir?

RNGH native jest sistemine daha yakındır; kaydırma ile jest çakışmalarında daha öngörülebilirdir. Reanimated ile birlikte akıcı animasyon için sık kullanılır.

Soru 50

Offline-first (önce çevrimdışı) veri stratejisi nedir?

Asıl kaynak yerelde tutulur (veritabanı), senkron kuyruğu ve çakışma çözümü vardır, arayüz iyimser güncellenebilir. Sadece AsyncStorage’a koca JSON dump etmek ölçeklenmez.

Soru 51

Güvenlik: secret (gizli anahtar) uygulamada saklanır mı?

API secret istemciye gömülmez. Token Keychain/Keystore’da tutulur. Gerekirse certificate pinning düşünülür. Obfuscation (kod karıştırma) tek başına güvenlik değildir.

Soru 52

ProGuard/R8 React Native’de neden kırar?

Android sürüm küçültme/obfuscate sırasında reflection ile bulunan sınıflar silinebilir. Keep kuralları ve mapping.txt arşivi olmadan canlı çöküş logları okunamaz.

Soru 53

App State / arka plan sınırları neler?

Arka planda JS sınırlı çalışır; iOS özellikle katıdır. Konum/ses gibi işler ayrı izin ve yapılandırma ister. Kritik işi sunucu + push’a taşımak gerekir.

Soru 54

Gereksiz re-render nasıl teşhis edilir?

React DevTools, profiler, why-did-you-render gibi araçlarla. Sebep çoğu zaman her render’da yeni obje/fonksiyon prop veya geniş Context’tir. Kör memo değil, ölçüm önce gelir.

Soru 55

React.memo ne zaman işe yaramaz?

Prop’lar her seferinde yeni referanssa memo karşılaştırmayı kaybeder. Context ve children da bazen faydayı yok eder. Önce prop’ları sabitleyin, sonra memo düşünün.

Soru 56

Turbo Module ile klasik Native Module farkı (özet)?

Turbo: codegen Spec (sözleşme), tip güvenliği, tembel (lazy) açılış, JSI yolu. Klasik: çalışma anında sözlükten bulma, bridge üzerinden async. Geçiş yüzey yüzey planlanır.

Soru 57

Fabric renderer neyi değiştirir?

C++ merkezli shadow tree (gölge ağaç) ve daha tutarlı mount (ekrana yerleştirme) getirir; concurrent React ile uyum artar. Özel native bileşen Spec ister.

Soru 58

Crash, ANR ve jank farkı nedir?

Crash: süreç ölür. ANR (Android): ana thread uzun süre kilitlenir. Jank: kare bütçesi aşılır, takılma hissedilir. Hepsi “yavaş” değildir; tooling’leri ayrıdır.

Soru 59

CI’da flaky (dengesiz) test nasıl azaltılır?

Sabit emülatör imajı, sınırlı retry, stabil test id, log artifact. Sınırsız retry flaky’yi gizler ve teknik borç üretir.

Soru 60

Observability (gözlemlenebilirlik): neyi ölçersiniz?

TTI (ilk etkileşime süre), JS/UI FPS, ağ hata oranı, crash-free kullanıcı, soğuk açılış, OTA başarı/geri alma. “Ölçmeden optimize etmem” senior cevabıdır.


Önceki / sonraki seviye

Tüm mülakat seviyeleri

Diğer yazılar