Mülakat

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

MülakatJavaScriptReact NativeSeviye 2

Hooks, state (ekran durumu), liste performansı ve asenkron JavaScript üzerine 20 orta seviye soru-cevap.

EG

Emre Gürbüz

7 Ağustos 2026 · 4 dk okuma

Seviye 2, günlük React Native işlerinde sık çıkan konuları kapsar: hooks (React’in özel fonksiyonları), FlatList, navigasyon, Promise/async ve bileşen yaşam döngüsü tuzakları. Cevaplar mümkün olduğunca sade ve parantezli anlatıldı.

Seviye 2 — Orta · Sorular 21–40 / 100

Bu serideki seviyeler

Soru 21

useEffect ne zaman çalışır? Cleanup (temizlik) neden gerekir?

Ekran çizildikten sonra yan etkiler (veri çekme, abonelik) için çalışır. Bağımlılık dizisi değişince yeniden çalışır; [] kabaca “mount olunca bir kez” demektir. Cleanup; timer, listener ve abonelik sızıntılarını (memory leak) önler.

Soru 22

Hooks kuralları nelerdir?

Sadece React fonksiyon bileşeni veya custom hook içinde, koşulsuz ve döngüsüz en üstte çağrılır. Sıra sabittir; if içinde hook yasaktır. Sebep: React hook state’ini sıraya göre eşler.

Soru 23

useMemo ile useCallback farkı nedir?

useMemo pahalı hesap sonucunu saklar. useCallback fonksiyon referansını saklar. İkisi de bağımlılık listesine bağlıdır. Körü körüne sarmalamayın; önce gereksiz yeniden çizimi ölçün.

Soru 24

Controlled (kontrollü) ve uncontrolled (kontrolsüz) input nedir?

Controlled’da değer state’ten gelir, onChange ile güncellenir. Uncontrolled’da değer çoğunlukla ref ile okunur. React Native formlarında controlled tercih edilir; doğrulama (validation) kolaylaşır.

Soru 25

Listelerde key prop neden önemli?

React’in hangi satırın hangisi olduğunu bilmesini sağlar. Sıra numarası (index) key olursa ekleme/silmede yanlış state eşleşebilir. Mümkünse kalıcı ve eşsiz id kullanın.

Soru 26

FlatList performansında temel ayarlar neler?

keyExtractor, makul initialNumToRender, windowSize, sabit yükseklikte getItemLayout, item bileşenlerini gereksiz yere yeniden yaratmamak. Her satırda yeni anonymous fonksiyon/stil üretmek yavaşlatır.

Soru 27

React Navigation’da stack ile tab ne zaman?

Stack: detaya inen hiyerarşi (liste → detay). Tab: yan yana ana bölümler. Sık model: her tab’ın kendi stack’i vardır. Deep link (derin bağlantı) ve geri dönüş state’i planlanmalıdır.

Soru 28

Context API ne zaman yeter, ne zaman yetmez?

Seyrek değişen global veri (tema, oturum kullanıcısı) için uygundur. Çok sık değişen değer Context ile tüm dinleyenleri yeniden çizer. O zaman selector’lı store (Zustand/Redux gibi) daha iyidir.

Soru 29

Promise, async/await ve hata yönetimi nasıl düşünülür?

async fonksiyon Promise döner. await sonucu bekler. Hatalar try/catch veya .catch ile alınır. Paralel işlerde Promise.all (biri patlarsa hepsi) ile allSettled (hepsinin sonucu) bilinçli seçilir.

Soru 30

Event loop (olay döngüsü) ve microtask/macrotask nedir (temel)?

JavaScript tek iş parçacığında (thread) çalışır: call stack + kuyruklar. Promise .then (microtask) genelde setTimeout (macrotask) öncesinde boşaltılır. Bu yüzden sıralama sürprizleri “bug” sanılabilir.

Soru 31

Closure nedir? Stale closure tuzağı ne demek?

Fonksiyon, tanımlandığı kapsamdaki değişkenleri “hatırlar”. Effect veya callback eski state’i yakalayabilir (stale). Çözüm: doğru bağımlılıklar, setState(v => ...) veya ref.

Soru 32

Debounce ile throttle farkı nedir?

Debounce: kullanıcı durunca bir kez çalışır (arama kutusu). Throttle: sabit aralıkta en fazla bir kez (scroll). İkisi de gereksiz işi keserek takılmayı (jank) azaltır.

Soru 33

Görsel (Image) optimizasyonuna nasıl yaklaşılır?

Gereksiz büyük çözünürlükten kaçının, cache kullanın, biliniyorsa genişlik/yükseklik verin. Uzun listelerde virtualization (ekran dışı erteleme) ile birlikte düşünün.

Soru 34

Error Boundary ne yapar, ne yapmaz?

Render sırasındaki hataları yakalayıp yedek ekran (fallback) gösterir. Tıklama handler, async hata ve native çöküşleri kapsamaz. Onlar için try/catch + global hata/crash aracı gerekir.

Soru 35

useRef ne için kullanılır?

Değişince ekranı yeniden çizdirmeyen “kutu”dur. Native öğe referansı, timer id, önceki değer saklamak için. UI göstereceğiniz veri için state kullanın; ref UI’yi güncellemez.

Soru 36

Monorepo / import yollarında Metro’ya dikkat neden?

Metro’nun hangi klasörleri izleyeceği ve paketleri nereden bulacağı ayar ister. Yanlış ayar “bende çalışıyor” ve çift React kopyası gibi hatalara yol açar.

Soru 37

Push bildirimi izin ve token akışı (özet)?

İzin iste → cihaz token’ı al → sunucuya kaydet → mesaj gelince foreground/background (ön/arka plan) handler çalıştır. iOS/Android izin deneyimi ve token yenileme ayrı yönetilir.

Soru 38

AsyncStorage ne zaman uygun değildir?

Çok büyük veri, yüksek frekanslı okuma ve güvenlik-kritik sırlar için uygun değildir. Daha hızlı yerel depolama (MMKV), veritabanı veya Keychain/Keystore düşünülür.

Soru 39

Deep linking (derin bağlantı) temelleri nedir?

URL/scheme → doğru ekrana gitme eşlemesidir. Universal/App Links doğrulaması, soğuk/sıcak açılış farkı ve giriş zorunluluğu (auth guard) planlanmalıdır.

Soru 40

Testlerde “piramit” nasıl düşünülür?

Unit test iş kurallarını, bileşen testleri UI davranışını, e2e kritik kullanıcı akışını doğrular. Her şeyi e2e yapmak kırılgan ve yavaştır; doğru katmana doğru test yazılır.


Önceki / sonraki seviye

Tüm mülakat seviyeleri

Diğer yazılar