yoklateknik mülakat

Mobil Ios Swift Concurrency Structured Mülakat Soruları

75 doğrulanmış Mobil Ios Swift Concurrency Structured mülakat sorusu — cevaplarıyla çöz, açıklamalarıyla öğren, gerçek simülasyonda kendini test et.

Gerçek simülasyonu dene →

Örnek sorular

Ios Swift Concurrency StructuredZorluk 1
GCD'de (Grand Central Dispatch) bir DispatchQueue nedir?
  • aYalnızca o kuyruğa ömür boyu ayrılmış tek bir thread
  • bGönderilen işi bir thread havuzuna zamanlayan bir soyutlama
  • cConcurrency kontrollerini devre dışı bırakan bir derleyici direktifi
  • dYalnızca Swift value type'ları için bir depolama kabı
Açıklama:DispatchQueue, gönderilen iş bloklarını GCD'nin yönettiği thread havuzuna zamanlar; sabit tek bir thread'e sahip değildir — işi gerçekte hangi thread'in çalıştıracağına sistem karar verir.
Ios Swift Concurrency StructuredZorluk 1
queue.sync { ... } ile queue.async { ... } arasındaki pratik fark nedir?
  • async her zaman main thread'de çalışır, async asla çalışmaz
  • bsync blok bitene kadar çağıran thread'i bloklar
  • casync çağıran thread'i bloklar, sync hemen geri döner
  • dModern Swift'te gözlemlenebilir bir fark yoktur
Açıklama:sync, gönderilen blok tamamlanana kadar kontrolü çağırana geri döndürmez ve çağıran thread'i bloklar; async bloğu gönderir ve beklemeden kontrolü hemen geri döndürür.
Ios Swift Concurrency StructuredZorluk 2
let queue = DispatchQueue(label: "serial")
queue.sync {
    queue.sync {
        print("inner")
    }
}

Bu çalıştığında ne olur?
  • aDeadlock olur: iç sync
  • bDerlenir ama çalışma zamanında hiçbir şey yapmaz
  • c"inner" iki kez yazdırılır
  • dDerleyici iç içe sync çağrılarını reddeder
Açıklama:Serial bir kuyruk aynı anda tek bir blok çalıştırır. Dış sync kuyruğu işgal eder ve bitmesini bekleyen çağıran thread'i bloklar; iç sync ise aynı işgal edilmiş serial kuyruğa girip beklemeye çalışır, dolayısıyla ikisi de ilerleyemez — klasik bir kendi-kendine deadlock.
Ios Swift Concurrency StructuredZorluk 1
Swift'in async/await'inde bir fonksiyonu async işaretlemek ne anlama gelir?
  • aFonksiyon her zaman arka plan thread'inde çalışır
  • bFonksiyon asla hata fırlatamaz
  • cFonksiyon hata durumunda otomatik tekrar denenir
  • dFonksiyon askıya alınıp daha sonra devam edebilir
Açıklama:Bir async fonksiyon, bir await noktasında (ör. başka bir async işlemi beklerken) askıya alınabilir ve daha sonra, muhtemelen farklı bir thread'de, devam edebilir; tek başına hangi thread ya da kuyrukta çalışacağını belirlemez.
Ios Swift Concurrency StructuredZorluk 2
Swift'te bir actor temel olarak hangi problemi çözer?
  • aDeğişebilir durumuna erişimi serileştirerek eşzamanlı data race'leri önler
  • bBir tipi otomatik olarak Codable yapar
  • cHiç await çağırma ihtiyacını ortadan kaldırır
  • dTipin reference type yerine value type olmasını garanti eder
Açıklama:Bir actor, aynı anda yalnızca tek bir task'ın kendi durumuna dokunan kodu çalıştırmasına izin vererek (actor isolation) değişebilir durumunu korur; bu, dilin paylaşılan değişebilir durum üzerindeki data race'lere karşı yerleşik mekanizmasıdır.
Ios Swift Concurrency StructuredZorluk 2
actor Counter {
    private var value = 0
    func increment() { value += 1 }
    func current() -> Int { value }
}

Actor dışından increment() nasıl çağrılmalıdır?
  • aawait counter.increment()
  • bawait olmadan counter.increment(), çünkü actor'lar varsayılan olarak senkrondur
  • cActor dışından hiç çağrılamaz
  • dYalnızca bir DispatchQueue.main.sync bloğu içinden
Açıklama:Bir actor'ün metodunu o actor'ün izolasyonu dışından çağırmak potansiyel bir askıya alma noktasıdır (çağrı sırasını beklemek zorunda kalabilir), bu yüzden increment() kendisi async olarak tanımlanmasa bile Swift çağrı noktasında await ister.

2400 soruluk Mobil bankasında kendini sına.

Mülakata başla