System Design
Interview Savollari
iOS System Design Interview Savollari va Javoblari (Senior daraja)
Ushbu qo'llanmada katta texnologiya kompaniyalarida (FAANG, Yandex, Uber) so'raladigan 20 ta System Design savollari iOS nuqtai nazaridan batafsil tushuntirilgan. Bu savollar Senior va Staff darajadagi suhbatlarga tayyorgarlik uchun mo'ljallangan.
System Design Savollari
1. Instagram klon ilovasi arxitekturasini loyihalang
Javob:
- Networking: URLSession + Codable yoki Alamofire. Pagination uchun cursor-based API.
- Image Loading: Lazy loading + Downsampling.
NSCache(RAM kesh) + Disk Cache (FileManager). SDWebImage yoki Kingfisher kutubxonalari. - Arxitektura: MVVM + Coordinator. Yirik loyihada TCA yoki VIPER.
- Feed: UICollectionView + CompositionalLayout yoki SwiftUI
LazyVStack. - Offline: Core Data yoki Realm orqali local cache.
- Performance: Prefetching (kelayotgan postlarni oldindan yuklash), image downsampling, lazy rendering.
2. Chat (Messenger) ilovasini loyihalang
Javob:
- Real-time: WebSocket (URLSessionWebSocketTask yoki Starscream) orqali real-time xabarlar.
- Local Storage: Core Data / SQLite (xabarlar tarixi). Offline mode uchun local-first arxitektura.
- Encryption: End-to-End Encryption (Signal Protocol). Keychain'da kalitlarni saqlash.
- Push: APNs orqali background notification. Silent push orqali yangi xabarlarni fetch qilish.
- UI:
UICollectionViewbilanDiffableDataSource— past va yuqoriga scroll, pagination, typing indicator, read receipts. - Media: Rasm/video jo'natish uchun multipart upload, CDN'dan yuklash.
3. Video Streaming (YouTube klon) ilovasi?
Javob:
- Video Player: AVFoundation (
AVPlayer,AVPlayerLayer). HLS (HTTP Live Streaming) formatida oqimli video. - Adaptive Bitrate: Tarmoq tezligiga qarab video sifatini (240p, 720p, 1080p) avtomatik o'zgartirish.
- Caching: Video segmentlarni diskka keshlab offline ko'rish imkoniyati.
- UI: PIP (Picture in Picture), fullscreen rotation, mini-player (scroll qilinganda kichik player).
- Performance: Background audio play, AirPlay qo'llab-quvvatlash.
4. E-Commerce (Online do'kon) ilovasini loyihalang?
Javob:
- Catalog: Paginated product list. Filtrlash va saralash uchun query parameters.
- Cart: Local
UserDefaultsyoki Core Data'da saqlash. Server bilan sinxronizatsiya. - Payment: Apple Pay (PassKit), StoreKit 2 (In-App Purchase). PCI compliance.
- Search: Debounce qilingan search bar + server-side search yoki local Algolia.
- Arxitektura: Clean Architecture (Domain, Data, Presentation layers).
- Xavfsizlik: SSL Pinning, Keychain da tokenlar, biometric authentication (Face ID/Touch ID).
5. Map-based ilova (Uber/Yandex Go kabi) arxitekturasi?
Javob:
- Map: MapKit yoki Google Maps SDK. Custom annotation'lar.
- Location: CLLocationManager (background location updates). Geofencing.
- Real-time: WebSocket orqali haydovchi joylashuvi real-time yangilanishi.
- Routing: MKDirections yoki server-side routing. ETA (Estimated Time of Arrival) hisoblash.
- Background: Background location + significant location changes.
- Battery: Lokatsiya yangilanish chastotasini (frequency) boshqarish — aniqlik va batareya o'rtasida balans.
6. Social Media Feed Performance Optimization
Javob:
- Prefetching:
UICollectionViewDataSourcePrefetchingorqali keyingi elementlarni oldindan yuklash. - Image: Progressive JPEG, downsampling, kesh siyosati (LRU — Least Recently Used).
- Cell: Reusable cell'larni to'g'ri konfiguratsiya qilish.
prepareForReuse()ga e'tibor berish. - Main Thread: API va rasm ishlari faqat background thread'da. Faqat UI yangilanishi Main thread'da.
- Diffable Data Source: Faqat o'zgargan elementlarni qayta chizish.
7. Offline-First ilova arxitekturasi
Javob:
- Local DB: Core Data yoki Realm asosiy ma'lumotlar manbasi (source of truth) sifatida.
- Sync Engine: Ilova onlayn bo'lganda local o'zgarishlarni serverga push qilish (Conflict resolution kerak).
- Queue: Offline paytda amalga oshirilgan amallarni navbatga (operation queue) qo'yish.
- Network Monitoring:
NWPathMonitororqali tarmoq holatini kuzatish. - Merge Strategy: "Last Writer Wins" yoki "Server Wins" strategiyasi.
8. Push Notification tizimini loyihalang
Javob:
- APNs: Device token olish → Backend'ga yuborish → Backend APNs'ga so'rov → Qurilmaga yetkazish.
- Rich Push:
UNNotificationServiceExtensionorqali mediaga boy (rasm, video) bildirishnomalar. - Silent Push: Background'da ma'lumotlarni yangilash uchun content-available push.
- Grouping: NotificationCenter'da xabarlarni guruhlash (threading).
- Analytics: Ochilish darajasini (open rate), yetkazilishni kuzatish.
9. Authentication (Login/Auth) tizimi?
Javob:
- Login: Email/Password, Apple Sign In (majburiy), Google/Facebook Sign In.
- Token: Access Token (qisqa muddatli) + Refresh Token (uzoq muddatli). Keychain'da saqlash.
- Token Refresh: 401 kelganda avtomatik refresh qiluvchi Interceptor / Middleware.
- Biometric: Face ID / Touch ID orqali qayta kirish (
LAContext). - Security: SSL Pinning, Certificate Transparency, jailbreak detection.
10. Search tizimining arxitekturasi
Javob:
- Debounce: Foydalanuvchi yozishni to'xtatguncha so'rov yubormaslik (300ms delay). Combine
debounceoperatori. - Cancel: Yangi so'rov kelganda eskisini bekor qilish (
task.cancel()). - Cache: Oxirgi qidiruv natijalarini keshlab, tezkor qayta ko'rsatish.
- Suggestions: Local + Server-side tavsiyalar. Recent searches saqlash.
- UI:
searchablemodifier (SwiftUI) yokiUISearchController(UIKit).
Arxitektura va Tizim Qarorlari
11. Networking Layer dizayni?
Javob:
- Abstraction: Protokol asosidagi
NetworkService— endpoint'larni enum bilan aniqlash. - Request Building:
URLRequestni generik builder orqali yaratish. - Response Handling: Generic
Result<T: Decodable, Error>. - Interceptors: Auth token qo'shish, logging, retry logic.
- Testing: Protocol-based DI orqali Mock network layer.
12. Modular Architecture (Micro-features)?
Javob:
- Loyihani mustaqil SPM package'larga bo'lish:
NetworkKit,AuthKit,UIComponents,FeatureHome. - Har bir modul o'z testlariga ega.
- Modullar bir-birini faqat protokollar orqali biladi.
- Build vaqtini drastik qisqartiradi (faqat o'zgargan modul qayta kompilyatsiya qilinadi).
13. A/B Testing tizimi ilovada?
Javob:
- Remote Config: Firebase Remote Config yoki custom backend orqali feature flag'lar.
- Variant Distribution: Foydalanuvchilarni guruhlarga ajratish (control vs test).
- Analytics: Har bir variant natijasini o'lchash (conversion rate, engagement).
- Architecture: Feature Flag Manager — bu barcha flag'larni markaziy boshqaruvchi klass.
14. App Launch Time optimizatsiyasi?
Javob:
- Pre-main: Dinamik framework'larni kamaytirish, static linking,
+loadmetodlaridan qochish. - Post-main:
didFinishLaunchingda faqat kerakli SDK'larni boshlash. Qolganlarini lazy yoki background'da. - Measurement: Xcode Instruments — App Launch template. MetricKit orqali real-user ma'lumotlar.
- Target: Apple 400ms ichida first frame tavsiya qiladi.
15. Database Migration strategiyasi?
Javob:
- Lightweight: Field qo'shish/o'chirish — iOS avtomatik boshqaradi.
- Heavy: Jadval strukturasi o'zgarishi — Mapping Model + Background migration. Eski ma'lumotlarni yangi formatga o'tkazish.
- Versioning: Har bir reliz uchun model versiyasi. Sequential migration (v1 → v2 → v3).
- Safety: Background thread'da migration, progress indicator ko'rsatish.
16. Analytics arquitecturasi?
Javob:
- Abstraction:
AnalyticsServiceprotokoli — Firebase, Amplitude, custom backend ga bog'lanmagan. - Event Tracking: Enum-based event'lar (type-safe).
AnalyticsEventstruct bilan parametrlar. - Batching: Event'larni to'plab, bir vaqtda yuborish (battery va traffic tejash).
- Privacy: ATT (App Tracking Transparency) so'rash. GDPR/CCPA talablarini hisobga olish.
17. Error Handling va Crash Reporting?
Javob:
- Crashlytics: Firebase Crashlytics yoki Sentry orqali crash'larni real-time kuzatish.
- Non-fatal Errors: Crashlytics'ga log qilish (masalan, API xatolari, decoding xatolari).
- User-facing: Alert yoki Toast orqali foydalanuvchiga tushunarli xabar. Retry tugmasi.
- Logging: os_log yoki custom logger — debug vs release loglari.
18. Accessibility Testing?
Javob:
- VoiceOver: Barcha interactive elementlarda
accessibilityLabelvaaccessibilityHint. - Dynamic Type: Shriftlar foydalanuvchi sozlamasiga moslashishini tekshirish.
- Color Contrast: WCAG 2.1 standartlariga mos ranglar.
Accessibility Inspectorasbobida tekshirish. - Automated: XCTest'da accessibility audit'larini qo'llash.
19. Release va Deploy Strategy?
Javob:
- Phased Release: App Store'da bosqichma-bosqich chiqarish (1, 2, 5, 10, 20, 50, 100%).
- Feature Flags: Yangi funksiyalarni yashirin holatda joylash, kerak bo'lganda remote'dan yoqish.
- Rollback: Bug topilganda tezda eski versiyaga qaytish rejasi.
- Monitoring: Crash rate, ANR (App Not Responding), user feedback kuzatish. Sentry/Crashlytics alert'lari.
20. Ilovani 0 dan loyihalash — qanday qarorlar qabul qilasiz?
Javob:
- Platform: Minimal iOS versiyasini aniqlash (iOS 16+? 17+?).
- UI Framework: SwiftUI (yangi loyihalar) yoki UIKit (legacy qo'llab-quvvatlash).
- Arxitektura: MVVM + Coordinator (o'rta), TCA/RIBs (katta loyiha).
- Networking: URLSession + async/await (native) yoki Alamofire.
- Storage: UserDefaults, Keychain, Core Data, yoki SwiftData (iOS 17+).
- DI: Swinject yoki Factory pattern.
- CI/CD: GitHub Actions yoki Xcode Cloud + Fastlane.
- Testing: XCTest + Swift Testing. 80% minimum code coverage maqsad.
- Monitoring: Crashlytics, Analytics, Performance monitoring.
- Design System: Reusable UI komponentlar kutubxonasi.
Yakuniy Maslahat:
System Design savollarida "to'g'ri javob" yo'q — muhimi sizning fikrlash jarayoningiz. Trade-off'larni (tezlik vs xotira, murakkablik vs soddalik) tushuntira olishingiz va har bir qarorni asoslashingiz kerak. Doska yoki qog'ozda chizib tushuntiring — bu katta ta'sir qoldiradi! 🏗️