Önsöz
- Çevirenin Önsözü: Hasan Tunçay
Değerlendirmeler
- Manuel Vivo (Bumble’da Staff Android Engineer, Eski Google Android DevRel)
- Matt McKenna (Block’ta Senior Android Engineer, Android GDE)
- Alejandra Stamato (HubSpot’ta Lead Android Engineer, Eski Google Android DevRel)
- Simona Milanovic (Senior Android Developer Relations Engineer)
Bu Kitap Hakkında
- Mülakat Adaylarına
- Teknik Değerlendiricilere
- Hata Bildirimleri ve Tartışma
Sponsorlar
- Stream
0. Android Mülakat Soruları
- Kategori 0: Android Sistem Mimarisi ve Framework Katmanı
- Soru: 0. Android nedir?
- Soru: 1. Intent kavramı nedir?
- Soru: 2. Pending Intent’in Amacı Nedir?
- Soru: 3. Serializable ve Parcelable Arasındaki Farklar Nelerdir?
- Soru:4. Context nedir ve Context türleri nelerdir?
- Soru:5. Application sınıfı nedir?
- Soru: 6. AndroidManifest dosyasının amacı nedir?
- Soru:7. Activity Yaşam Döngüsünü (Lifecycle) Açıklayın
- Soru: 8.:Fragment Yaşam Döngüsünü (Fragment Lifecycle) Açıklayın
- Soru:9. Service Nedir?
- Soru:10. BroadcastReceiver nedir?
- Soru:11. Bir ContentProvider’ın amacı nedir ve uygulamalar arasında güvenli veri paylaşımını nasıl sağlar?
- Soru: 12. Yapılandırma (configuration) değişiklikleri nasıl yönetilir?
- Soru:13. Android bellek yönetimini nasıl yapar ve bellek sızıntılarından nasıl kaçınırsınız?
- Soru:14. ANR hatalarının başlıca nedenleri nelerdir ve bunlar nasıl önlenir?
- Soru: 15. Derin bağlantıları (deep links) nasıl yapılandırırsınız?
- Soru:16. Task ve Back Stack nedir?
- Soru:17. Bundle’ın amacı nedir?
- Soru: 18. Activity’ler veya Fragment’lar arasında veri nasıl iletilir?
- Soru: 19. Bir yapılandırma değişikliği sırasında bir Activity’ye ne olur?
- Soru: 20. ActivityManager nedir?
- Soru: 21. SparseArray kullanmanın avantajları nelerdir?
- Soru: 22. Çalışma zamanlı izinleri (runtime permissions) nasıl ele alırsınız?
- Soru: 23. Looper, Handler ve HandlerThread’in rolleri nelerdir?
- Soru: 24. İstisnaları (exceptions) nasıl izlersiniz?
- Soru: 25. Build variant ve flavor nedir?
- Soru: 26. Erişilebilirliği (accessibility) nasıl sağlarsınız?
- Soru: 27. Android dosya sistemi nedir?
- Soru: 28. Android Runtime (ART), Dalvik ve Dex Compiler nedir?
- Soru: 29. APK dosyası ile AAB dosyası arasındaki farklar nelerdir?
- Soru: 30. R8 optimizasyonu nedir?
- Soru: 31. Uygulama boyutlarını nasıl küçültürsünüz?
- Soru: 32. Android uygulamalarında süreç (process) nedir ve Android işletim sistemi bunu nasıl yönetir?
- Kategori 1: Android UI - Views
- Soru: 33. View yaşam döngüsünü (View lifecycle) açıklayınız
- Soru: 34. View ve ViewGroup arasındaki fark nedir?
- Soru: 35. Hiç ViewStub kullandınız mı ve UI performansını ViewStub ile nasıl optimize edersiniz?
- Soru: 36. Özel (custom) View’lar nasıl uygulanır?
- Soru: 37. Canvas nedir ve nasıl kullanılır?
- Soru: 38. View sisteminde invalidation nedir?
- Soru: 39. ConstraintLayout nedir?
- Soru: 40. SurfaceView’i TextureView yerine ne zaman kullanmalısınız?
- Soru: 41. RecyclerView içsel olarak (internally) nasıl çalışır?
- Soru: 42. Dp ve Sp arasındaki fark nedir?
- Soru:43. Nine-patch görselinin kullanım amacı nedir? *
- Soru:44. Drawable nedir ve UI geliştirmede nasıl kullanılır?
- Soru:45. Android’de Bitmap nedir ve büyük Bitmap’leri verimli biçimde nasıl ele alırsınız?
- Soru:46. Animasyonları nasıl uygularsınız?
- Soru:47. Window nedir?
- Soru:48. Bir web sayfasını nasıl işlersiniz?*
- Kategori 2: Jetpack Kütüphaneleri
- Soru:49. AppCompat kütüphanesi nedir?
- Soru:50. Material Design Bileşenleri (MDC) nedir?
- Soru:51. ViewBinding kullanmanın avantajları nelerdir?
- Soru:52. DataBinding nasıl çalışır? (How DataBinding works?)
- Soru:54. Jetpack ViewModel nedir?
- Soru: 55. Jetpack Navigation Kütüphanesi Nedir?
- Soru: 56: Dagger 2 ve Hilt Nedir?
- Soru: 57. Jetpack Paging kütüphanesi nedir?
- Soru: 58. Baseline Profile Nedir?
- Kategori 3: İş Mantığı
- Soru: 59. Uzun süren arka plan görevlerini nasıl yönetirsiniz?
- Soru: 60. JSON formatını bir nesneye (object) nasıl serileştirirsiniz (serialize)?
- Soru: 61. Veri iletişimi için ağ isteklerini nasıl yönetirsiniz; verimlilik ve güvenilirlik sağlamak adına hangi kütüphane veya teknikleri kullanırsınız?
- Soru: 62. Büyük veri kümelerini (datasets) yüklemek için neden bir sayfalandırma(Paging) sistemi gereklidir ve bu sistem RecyclerView ile nasıl uygulanır?
- Soru: 63. Ağ üzerinden görüntüleri (images) nasıl çeker ve işlersiniz (render)?
- Soru: 64. Verileri yerel olarak nasıl depolar ve kalıcı hale getirirsiniz?
- Soru: 65. Offline-first özellikleri nasıl yönetirsiniz?
- Soru: 66. Başlangıç verilerini yüklemek için görevleri nerede başlatırsınız? LaunchedEffect mi yoksa ViewModel.init() mi?
1. Jetpack Compose Mülakat Soruları
- Kategori 0: Compose Temelleri
- Soru:0. Jetpack Compose’un yapısı nasıldır?
- Soru:1. Compose aşamaları (phases) nelerdir?
- Soru:2. Jetpack Compose neden bildirimsel (declarative) bir UI framework’üdür?
- Soru:3. Recomposition nedir ve ne zaman gerçekleşir? Ayrıca uygulama performansıyla nasıl bir ilişkisi vardır?
- Soru:4. Composable fonksiyonların dahili işleyişi nasıldır?
- Soru:5. Jetpack Compose’da Stability Nedir ve Performansla İlişkisi Nasıldır?
- Kararlı ve Kararsız Yapıların Analizi
- Kararsız Yapıların Teşhisi ve Belirlenim Kriterleri
- Composable Fonksiyonların Anlamsal Çıkarımı ve Optimizasyonu
- Özet ve Sonuç
- Uygulama Soruları
- S-6) Stabilite İyileştirmeleri Vasıtasıyla Compose Performansını Optimize Etme Konusunda Pratik Deneyiminiz Varmı ?
- S-7) Composition Kavramı ve İnşa Süreci
- S-8) XML Tabanlı Projelerin Jetpack Compose’a Taşınmasında Uygulanan Stratejiler Nelerdir?
- S-9) Compose Performansını Neden Daima Release Modunda Test Etmelisiniz?
- S-10) Jetpack Compose’da Sık Kullanılan Kotlin İdiomları (Dile Özgü Kullanım Kalıpları) Nelerdir?
- Kategori 1: Compose Runtime
- Soru 11: Durum (State) Nedir ve Yönetimi İçin Hangi API’lar Kullanılır?
- Soru 12: State Hoisting Mimarisinin Sağladığı Avantajlar Nelerdir?
- Soru:13. remember ve rememberSaveable Arasındaki Farklar Nelerdir?
- Soru:14. Composable Fonksiyonlar İçerisinde Güvenli Bir Şekilde Coroutine Scope Nasıl Oluşturulur?
- Soru 15: Composable fonksiyonlar içerisindeki yan etkiler nasıl yönetilir?
- Soru:
rememberUpdatedStatefonksiyonunun mimari amacı nedir ve çalışma mekanizması nasıldır? - Soru:17. produceState Fonksiyonunun Amacı Nedir ve Nasıl Çalışır?
- Soru:18. snapshotFlow Nedir ve Nasıl Çalışır?
- Soru:19. derivedStateOf Fonksiyonunun Amacı Nedir ve Recomposition Süreçlerini Optimize Etmeye Nasıl Yardımcı Olur?
- Soru:20. Composable Fonksiyonların veya Composition Yapısının Yaşam Döngüsü Nedir?
- Soru:21. SaveableStateHolder Nedir?
- Soru:22. Snapshot Sisteminin Amacı Nedir?
- Soru:23. mutableStateListOf ve mutableStateMapOf Nedir?
- Soru:24. Kotlin’in Flow yapısı, bellek sızıntılarını (memory leaks) önleyerek composable fonksiyonlar dâhilinde güvenli bir şekilde nasıl tüketilir (collect)?
- Soru:25. CompositionLocal Yapısının Rolü Nedir?
- Kategori 2: Compose UI
- Soru 26. Modifier Nedir?
- Soru:27. Layout Nedir?
- Soru:28. Box Nedir?
- Soru:29. Arrangement ve Alignment Arasındaki Farklar Nelerdir?
- Soru:30. Painter Nedir?
- Soru:31. Ağ üzerinden görsel yükleme işlemini nasıl gerçekleştirirsiniz?
- Soru:32. Yüzlerce öğeyi liste formunda işlerken (render) arayüz takılmalarından (UI jank) kaçınmak için nasıl verimli bir mimari kurarsınız?
- Soru:33. Lazy listelerde sayfalama (pagination) mimarisini nasıl implemente edersiniz?
- Soru:34. Canvas Nedir?
- Soru:35. graphicsLayer Modifier’ını hiç kullandınız mı?
- Soru:36. Jetpack Compose’da görsel animasyonları nasıl implemente edersiniz?
- Soru:37. Ekranlar arasında navigasyonu nasıl yönetirsiniz?
- Soru:38. Önizleme (Preview) mekanizması nasıl çalışır ve bu yapıları nasıl yönetirsiniz?
- Soru:39. Compose arayüz (UI) bileşenleri veya ekranları için birim testlerini (unit tests) nasıl yazarsınız?
- Soru:40. Ekran görüntüsü testi (screenshot testing) nedir ve geliştirme sürecinde arayüz (UI) tutarlılığını sağlamaya nasıl yardımcı olur?
- Soru:41. Jetpack Compose’da erişilebilirliği (accessibility) nasıl sağlarsınız?