Bu seri, React Native ve JavaScript mülakatlarına hazırlanmak için kolaydan zora doğru ilerleyen 5 yazıdan oluşuyor. Bu ilk yazıda temelleri sade dille netleştiriyoruz: dilin temel kuralları, React düşünce modeli ve mobil geliştirmenin ilk katmanı.
Seviye 1 — Kolay · Sorular 1–20 / 100
Bu serideki seviyeler
- Seviye 1 (Kolay) (bu yazı)
- Seviye 2 (Orta)
- Seviye 3 (İleri Orta)
- Seviye 4 (İleri)
- Seviye 5 (En Zor)
Soru 1
var, let ve const farkı nedir?var eski değişkendir; işlev (function) içinde her yerden görünür ve “yukarı taşınma” (hoisting) ile başta undefined olur. let ve const ise süslü parantez bloğuna bağlıdır (block-scoped). const ile bağlanan isme yeni değer atanamaz; ama dizi/obje içeriği değiştirilebilir (arr.push(1) gibi). Günlük kodda önce const, gerekirse let; var kullanmayın.
Soru 2
== ile === arasındaki fark nedir?== karşılaştırırken tipi zorla çevirir (coercion). === hem tipi hem değeri kontrol eder. Örnek: 0 == false true çıkar, 0 === false false çıkar. Beklenmeyen eşitlikleri önlemek için her zaman === / !== kullanın.
Soru 3
Primitive’ler (string, number, boolean, null, undefined, symbol, bigint) kopyalanırken değer gider. Obje, dizi ve fonksiyon ise referansla tutulur; atama aynı belleği paylaşır. Bu yüzden const kisi = {ad:"A"}; const x = kisi; x.ad="B" yazınca kisi de değişir.
Soru 4
null ile undefined farkı nedir?undefined “henüz değer verilmedi / tanımsız” demektir. null ise “bilinçli olarak boş” demektir. Not: typeof null === "object" eski bir dil hatasıdır. API’lerde “bilerek yok” için null, “daha set edilmedi” için undefined yaygındır.
Soru 5
Arrow function’ın kendi this’i yoktur; tanımlandığı yerdeki this’i kullanır (lexical this). Ayrıca arguments objesi yoktur ve new ile sınıf gibi oluşturulamaz. Callback’lerde this kaybını önlemek için sık tercih edilir.
Soru 6
React Native, React’in bileşen modeliyle gerçek native arayüz çizer (View/Text; web’deki div/span değil). Tarayıcı DOM’u yoktur; yerleşim (layout) Yoga ile, görünen şeyler ise iOS/Android native view’lardır. Stil çoğunlukla StyleSheet, gezinme ve jestler platforma özgüdür.
Soru 7
JSX, arayüzü JavaScript içinde yazmanızı sağlayan sözdizimidir. Derleyicide (Babel) normal fonksiyon çağrılarına dönüşür. React Native’de de aynı dönüşüm vardır; sonuç native bileşen ağacı olur.
Soru 8
Bileşen, yeniden kullanılabilir bir arayüz parçasıdır. Class bileşenler eski lifecycle (yaşam döngüsü) metodlarıyla çalışır. Functional bileşen + hooks bugünün standardıdır; yeni kodda functional tercih edilir.
Soru 9
Parent (üst) bileşenden child (alt) bileşene geçen, salt okunur veridir. Alt bileşen props’u değiştirmemelidir. Değişiklik gerekiyorsa üstteki state güncellenir veya callback (geri çağırım) prop ile yukarı haber verilir.
Soru 10
Bileşenin zamanla değişen yerel verisidir; değişince ekran yeniden çizilir (re-render). useState ile tutulur. Doğrudan state.x = 1 demek yerine setter ile yeni değer verilir.
Soru 11
useState temelde nasıl çalışır?const [value, setValue] = useState(baslangic) — setValue çağrılınca React yeniden çizmeyi planlar. Başlangıç değeri yalnızca ilk mount’ta (ilk kurulumda) kullanılır. Eski değere bağlı güncellemede setValue(v => v + 1) stale closure (eski değeri yakalama) riskini azaltır.
Soru 12
StyleSheet.create ne işe yarar?Stilleri bir kez tanımlayıp sabit referans verir. Her render’da yeni {margin:8} objesi üretmekten iyidir. Okunabilirlik artar. Dinamik stillerde StyleSheet + o an hesaplanan alanlar birleştirilir.
Soru 13
RN’de varsayılan yön column’dur (dikey; web’de çoğu zaman yataydır). flex: 1 kalan boşluğu doldurur. Mobil yerleşimin omurgası Flexbox + Yoga motorudur.
Soru 14
TouchableOpacity / Pressable ne için kullanılır?Dokunma (tap) etkileşimi içindir. Pressable daha yenidir: basılı durumu, hitSlop (dokunma alanını büyütme) gibi seçenekler sunar. Erişilebilirlik için accessibilityLabel ekleyin.
Soru 15
Çentik, Dynamic Island, alt çizgi (home indicator) gibi sistem bölgelerinde içeriğin kesilmesini önler. SafeAreaView veya react-native-safe-area-context ile kenar boşlukları (inset) uygulanır.
Soru 16
Platform.OS / Platform.select ne işe yarar?iOS ve Android farklarını dallandırmak için kullanılır. Küçük UI farklarında pratiktir. Büyük farklarda Dosya.ios.tsx / Dosya.android.tsx ayırmak daha temiz olabilir.
Soru 17
ScrollView ne zaman kullanılır?Kısa ve sınırlı içerik için uygundur. Çok uzun listelerde her şeyi birden yüklediği için uygulamayı yavaşlatır. Uzun listelerde FlatList / SectionList kullanın (ekran dışı öğeleri erteleyerek çizer).
Soru 18
npm/yarn/pnpm kütüphaneleri yönetir. Metro, React Native’in paketleyici (bundler) aracıdır: dosyaları bulur (resolve), dönüştürür (transform), tek bundle’a yazar (serialize). Geliştirme sunucusu ve mağaza derlemesi bu hattı kullanır.
Soru 19
console.log production’da (canlı sürümde) neden sorun olabilir?Gereksiz iş yükü, yavaşlık ve bazen hassas veri sızıntısı yaratabilir. Canlıda log seviyesi kısıtlanmalı; hata takibi için düzenli logger / Crashlytics gibi araçlar kullanılmalıdır.
Soru 20
Prop ve sözleşme hatalarını yazarken (compile-time) yakalar. Refactor (yeniden düzenleme) daha güvenli olur, IDE yardımı artar. any’den kaçınıp domain tipleri yazmak hem mülakat hem kalite için iyidir.
Önceki / sonraki seviye
- Bu seri buradan başlıyor (Seviye 1).
- Sonraki: Mülakat Soruları — Seviye 2 →
Tüm mülakat seviyeleri
- Seviye 1 (Kolay) (bu yazı)
- Seviye 2 (Orta)
- Seviye 3 (İleri Orta)
- Seviye 4 (İleri)
- Seviye 5 (En Zor)