Üst 40 Swift Mülakat Soruları ve Cevapları (2026)

için hazırlanmak Swift Geliştirici mülakatı, mülakatçıların sözdiziminin ötesinde gerçekten neyi değerlendireceğini tahmin etmek anlamına gelir. Swift Mülakat soruları, problem çözme derinliğini, kodlama yargısını ve gerçek senaryolar altındaki pratik anlayışı ortaya koyar.
Bu roller, iOS kullanımının artmasıyla birlikte güçlü kariyer yolları açarak teknik uzmanlığı, alan uzmanlığını ve gerçek üretim deneyimini ödüllendiriyor. Bu alanda çalışan profesyoneller, analiz uyguluyor, beceri derinliklerini geliştiriyor, ekiplerle iş birliği yapıyor, yöneticilere ve kıdemlilere yardımcı oluyor ve bugün dünya genelinde yeni başlayanlardan deneyimli kişilere kadar herkesin sorduğu ortak soruları ve cevapları güvenle yanıtlıyor. Daha fazla oku…
👉 Ücretsiz PDF İndir: Swift Mülakat Soruları ve Cevapları
Iyi Swift Mülakat Soruları ve Cevapları
1) Nedir Swift Peki, iOS geliştirme alanında popüler olmasını sağlayan nedir?
Swift bir Apple tarafından geliştirilen modern, üst düzey programlama dili iOS platformlarında uygulama geliştirmek için, macOSwatchOS ve tvOS'u vurgular. güvenlik, performans ve ifade gücü, gibi özelliklerle isteğe bağlı türler, tür çıkarımı, ve otomatik bellek yönetimi. SwiftSözdizimi özlü ancak güçlüdür; bu da boş işaretçi referanssızlaştırmaları ve tür uyuşmazlıkları gibi yaygın programlama hatalarının olasılığını azaltır. Swift ayrıca destekler Protokol Odaklı Programlama (POP) Geleneksel nesne yönelimli paradigmaların yanı sıra, daha modüler ve yeniden kullanılabilir kodlara olanak tanır.
Örnek: Swift'S isteğe bağlı tür Bu, değer tutabilen veya tutmayabilen bir değişkeni kapsülleyerek, Objective-C gibi eski dillerde sıkça karşılaşılan bir hata kaynağı olan nil referanslarından kaynaklanan beklenmedik çalışma zamanı çökmelerini önler.
2) Değişkenleri ve sabitleri nasıl tanımlarsınız? Swift`var` ve `let` arasındaki fark nedir?
Bir değişkeni tanımlamak için... Swift, sen kullan varBir sabiti tanımlamak için şunu kullanırsınız: let. bir değişken (var) Atandıktan sonra değeri değişebilirken, bir devamlı (let) Bir kez başlatıldıktan sonra yeniden atanamaz; bu da daha güvenli ve öngörülebilir kod yazımını teşvik eder.
Örnek:
var age = 25 // Variable let name = "John" // Constant, value cannot change
Bir değere yeniden değer atamaya çalışırsanız let Sabit bir değer olursa, derleyici hata verecektir. Bu ayrım, mümkün olan yerlerde varsayılan olarak değişmezliği zorunlu kılarak program istikrarını artırır.
3) Seçmeli dersler nelerdir? Swift Peki bunlar neden önemli?
Seçmeli dersler Swift olduğu bir Bir değişkenin değer almayabileceği olasılığını ifade eden dil özelliği.Bir değişkenin her zaman veri içerdiğini örtük olarak varsaymak yerine, Swift kullanır ? bir değişkenin olabileceğini belirtmek için kullanılan sözdizimi nilBu, geliştiricinin bir değerin yokluğunu açıkça belirtmesini veya ele almasını zorunlu kılarak kodu daha güvenli hale getirir.
Örnek:
var number: Int? = nil // This variable might hold an Int or nil
if let safeNumber = number {
print(safeNumber)
} else {
print("No value present")
}
İsteğe bağlı değerler, aksi takdirde çalışma zamanında ortaya çıkacak hataları derleme zamanında yakalamaya yardımcı olur.
4) Değer tipleri ve referans tipleri arasındaki fark nedir? Swift?
In Swift, değer türleri (Örneğin struct, enum, tuple) benzersiz bir kopyayı saklayın veri açısından, referans türleri (Örneğin class) tek bir örneği paylaş birden fazla referans üzerinden.
| Özellik | Değer Türü (struct, enum) |
Referans Türü (sınıf) |
|---|---|---|
| Bellek davranışı | Ödev üzerine kopyalandı | Paylaşılan referans |
| Kullanım örneği | Veri modelleri, hafif veri | Nesneler, paylaşılan durum |
| miras | Desteklenmez | destekli |
| Örnek E-posta | struct Point { … } |
class Person { … } |
Örnek:
struct Score { var value: Int }
var first = Score(value: 10)
var second = first
second.value = 20
print(first.value) // 10 (unchanged)
Bu, değer türleri için bir kopyada yapılan değişikliklerin orijinali etkilemediğini göstermektedir.
5) Otomatik Referans Sayımı (ARC) nedir? Nasıl çalışır? Swift?
Otomatik Referans Sayımı (ARC) Swift'S bellek yönetim sistemi Bu, sınıf örnekleri için bellek tahsisini ve serbest bırakılmasını otomatik olarak yönetir. Bir örnek oluşturulduğunda, ARC tracks, ona işaret eden referans sayısını gösterir. Referans sayısı sıfıra düştüğünde, örnek serbest bırakılır.
Kilit noktaları:
- Güçlü referanslar Referans sayısını artırın.
- Zayıf veya sahiplenilmemiş referanslar Bu işlem, bellek sayısını artırmaz ve iOS uygulamalarında bellek sızıntılarına neden olabilen kalıcı döngülerin önlenmesine yardımcı olur.
Örnek: İki nesnenin birbirine güçlü referanslar tuttuğu durumlarda yaygın bir referans döngüsü oluşur. weak or unowned Anahtar kelimeler bu döngüyü kırabilir.
6) İsteğe Bağlı Zincirleme Nedir?
İsteğe bağlı zincirleme, şu anda boşta olabilecek bir isteğe bağlı değer üzerindeki özellikleri, yöntemleri ve alt indisleri sorgulamanın ve çağırmanın özlü bir yoludur. nilEğer isteğe bağlı parametre bir değer içeriyorsa, çağrı başarılı olur; eğer içermiyorsa nilTüm zincir geri döner. nil çökme olmadan.
Örnek:
let text: String? = "Hello" let count = text?.count // count is an Optional<Int>
Bu teknik, zorla açılmayı önler.ping (!), bu da daha az çökmeyle daha güvenli koda yol açar.
7) Koruma ifadeleri ile if ifadeleri arasındaki fark nedir? Swift?
MKS guard Bu ifade, bir koşul karşılanmadığında erken çıkış için kullanılır. Geçerli kapsamdan çıkmalıdır (ile birlikte). return, break, continueya da throwKoşul sağlanmadığında. Bu, geçersiz durumların önceden net bir şekilde ele alınmasını teşvik eder.
Örnek:
func checkUsername(_ name: String?) {
guard let safeName = name else {
print("Username was nil")
return
}
print("User: \(safeName)")
}
Aksine if Mantığı iç içe geçiren ifade, guard Kodun daha sade hale gelmesine ve okunabilirliğinin artmasına yardımcı olur.
8) Kapanışlar nelerdir? SwiftBunlar ne işe yarıyor?
Kapanışlar bağımsız kod blokları Bunlar, değerler gibi aktarılabilecek ve geri çağrı işleyicileri, tamamlama işleyicileri veya özel işlem mantığı olarak kullanılabilecek nesnelerdir. Diğer dillerdeki lambda ifadelerine veya anonim fonksiyonlara benzerler.
Örnek:
let sumClosure = { (a: Int, b: Int) -> Int in
return a + b
}
print(sumClosure(5, 7)) // 12
Kapanışlar (closures), çevrelerindeki bağlamdan değerleri yakalayarak güçlü eşzamansız ve fonksiyonel programlama kalıplarına olanak tanır.
9) Jenerik ilaçları açıklayın. Swift ve önemleri.
Jenerikler, esnek ve yeniden kullanılabilir fonksiyonlar ve türler yazmanıza olanak tanır. her türle çalışmak Tip güvenliğini korurken. Yaygın olarak kullanılmaktadırlar. Swift standart kütüphane (örneğin Array, Dictionary, Vb.)
Örnek:
func swapValues<T>(_ a: inout T, _ b: inout T) {
let temp = a
a = b
b = temp
}
Genel türler, kodun yeniden kullanımını artırır ve tekrarlamayı azaltarak güçlü kodlar yazmanızı sağlar.tracgüvenli bir şekilde.
10) map, filter ve reduce arasındaki fark nedir? Swift?
Bu işlevler şunların bir parçasıdır: Swift'S fonksiyonel programlama yardımcı programları Koleksiyonlar hakkında:
- harita: Her bir öğeyi dönüştürür.
- filtre: Bir koşulu karşılayan öğeleri seçer.
- azaltmak: Tüm öğeleri tek bir değerde birleştirir.
Örnek:
let numbers = [1, 2, 3, 4, 5]
let squares = numbers.map { $0 * $0 } // [1,4,9,16,25]
let evens = numbers.filter { $0 % 2 == 0 } // [2,4]
let sum = numbers.reduce(0, +) // 15
Bu araçlar, verilerin daha etkili ve özlü bir şekilde işlenmesini sağlar. Swift koleksiyonları.
11) Tür çıkarımı nasıl çalışır? Swiftve faydaları nelerdir?
Tür çıkarımı Swift `type`, bir değişkene veya sabite atanan değere bağlı olarak veri türünü otomatik olarak belirleyen bir derleyici özelliğidir. Bu, geliştiricilerin birçok durumda türleri açıkça belirtmeden daha temiz ve daha okunabilir kod yazmalarına olanak tanır. SwiftDerleyici, atanan ifadeyi analiz eder ve derleme zamanında en uygun türü çıkararak tür güvenliğini sağlarken gereksiz ayrıntıları azaltır.
Tür çıkarımının temel faydası, geliştirici verimliliğinin artması ve tekrarlayan kod miktarının azalmasıdır. Ayrıca gereksiz tekrarları en aza indirerek, Swift Kodu daha açıklayıcı ve doğal dile daha yakın hale getirir. Örtük olmasına rağmen, tür çıkarımı güvenliği tehlikeye atmaz çünkü Swift Statik tipli bir dil olmaya devam ediyor.
Örnek:
let count = 10 // Inferred as Int let message = "Hi" // Inferred as String let price = 19.99 // Inferred as Double
Tür çıkarımı, jenerikler, kapalı fonksiyonlar ve koleksiyonlarla sorunsuz bir şekilde çalışarak şunları sağlar: Swift Karmaşık ifadelerde bile netliği korumak.
12) Protokoller nelerdir? SwiftPeki, diğer dillerdeki arayüzlerden farkları nelerdir?
Protokoller Swift Bir tanımlamak Yöntemlerin, özelliklerin ve gereksinimlerin taslağı Uyumlu türlerin uygulaması gerekenler. Bunlar, merkezi öneme sahiptir. Protokol Odaklı Programlama (POP)tarafından güçlü bir şekilde teşvik edilen bir paradigma SwiftBazı dillerdeki geleneksel arayüzlerin aksine, Swift protokoller sağlayabilir varsayılan uygulamalar protokol uzantıları aracılığıyla.
Protokoller sınıflar, yapılar ve numaralandırmalar tarafından benimsenebilir, bu da onları kalıtıma dayalı mutlak değerlerden daha esnek hale getirir.tracAyrıca, sınıflardaki tekli kalıtımın aksine, birden fazla uyumluluğu da desteklerler.
Örnek:
protocol Drivable {
var speed: Int { get }
func drive()
}
extension Drivable {
func drive() {
print("Driving at speed \(speed)")
}
}
Bu yaklaşım, birbirinden bağımsız türler arasında gevşek bağlantıyı, test edilebilirliği ve yeniden kullanılabilir mantığı teşvik ederek protokolleri klasik arayüzlerden daha güçlü hale getirir.
13) struct ve class arasındaki farkı açıklayın. Swift örneklerle.
Arasındaki fark struct hem de class in Swift esas olarak şunlarda yatmaktadır: değer semantiği ile referans semantiği arasındaki farkYapılar değer tipleridir, yani atandıklarında veya aktarıldıklarında kopyalanırlar. Sınıflar referans tipleridir, yani birden fazla referans aynı örneğe işaret edebilir.
| Görünüş | yapı | Sınıf |
|---|---|---|
| Menşei | Değer türü | Referans türü |
| Bellek | Kopyalanan | paylaşılan |
| miras | Desteklenmez | destekli |
| ARC | Kullanılmamış | Kullanılmış |
| mutability | Gerektirir mutating |
Gerekli değil |
Örnek:
struct User {
var name: String
}
var user1 = User(name: "Alice")
var user2 = user1
user2.name = "Bob"
Burada, user1 Değişmeden kalır. Bu öngörülebilirlik, yapıları modeller ve veri kapları için ideal hale getirir.
14) Bir iOS uygulamasının yaşam döngüsü nedir? Swift?
iOS uygulama yaşam döngüsü, bir uygulamanın başlatılmasından sonlandırılmasına kadar geçtiği farklı durumları tanımlar. Bu yaşam döngüsünü anlamak, kaynakları yönetmek, arka plan görevlerini ele almak ve sistem olaylarına yanıt vermek için çok önemlidir.
Yaşam döngüsünün temel aşamaları şunlardır:
- Uygulama başlatma
- aktif durum
- Arka plan durumu
- Askıda kalmış durum
- Sonlandırılmış durum
Swift Uygulamalar bu geçişleri esas olarak şu yollarla ele alır: Uygulama Temsilcisi hem de Sahne Temsilcisi yöntemler. Örneğin, application(_:didFinishLaunchingWithOptions:) İlk kurulum için kullanılırken sceneDidEnterBackground(_:) Paylaşılan kaynakları serbest bırakmak için kullanılır.
Örnek Kullanım Durumu: Kullanıcı bir telefon görüşmesi aldığında, uygulama arka plana geçer. Geliştiricilerin, uygulama yeniden başladığında sorunsuz bir deneyim sağlamak için kullanıcı verilerini kaydetmesi ve devam eden görevleri duraklatması gerekir.
15) Mülkiyet gözlemcileri ne işe yarar? SwiftPeki, bunlar ne zaman kullanılmalıdır?
Mülk gözlemcileri Swift Geliştiricilerin bir mülkün değerindeki değişiklikleri izlemesine ve bunlara yanıt vermesine olanak tanır. Bunlar şu yöntemlerle uygulanır: willSet hem de didSetBunlar, bir özellik değişmeden önce ve sonra sırasıyla çalıştırılan kodlardır.
Özellik gözlemcileri, değerler değiştiğinde kullanıcı arayüzünü güncelleme, girişi doğrulama veya verileri senkronize etme gibi yan etkileri tetiklemek için kullanışlıdır.
Örnek:
var score: Int = 0 {
willSet {
print("Score will change to \(newValue)")
}
didSet {
print("Score changed from \(oldValue)")
}
}
Gözlemciler başlatma sırasında çalışmazlar, bu da nesne oluşturma zamanında beklenmedik davranışları önler. Ağır hesaplamalardan ziyade basit izleme mantığı için en uygunudurlar.
16) Hata yönetimi nasıl çalışır? Swift?
Swift Yapılandırılmış bir hata işleme modelini kullanır. hataları fırlatma, yakalama ve yaymaHatalar aşağıdaki standartlara uygun olmalıdır. Error protokol kullanılarak ele alınır ve bu şekilde işlenir. do-try-catch blokları.
Anahtar bileşenler şunları içerir:
throwsfonksiyonlar için anahtar kelimetry,try?, vetry!- Özel hata numaralandırmaları
Örnek:
enum LoginError: Error {
case invalidCredentials
}
func login(user: String) throws {
throw LoginError.invalidCredentials
}
Bu yaklaşım, açık hata yönetimini zorunlu kılar ve sessiz hataları önleyerek güvenilirliği artırır. Swift Uygulamaları daha sağlam ve bakımı daha kolay hale getirmek.
17) Bağımlılık enjeksiyonu nedir? Swiftve neden önemlidir?
Bağımlılık Enjeksiyonu (DI), bir nesnenin bağımlılıklarını dahili olarak oluşturmak yerine harici bir kaynaktan aldığı bir tasarım desenidir. SwiftBağımlılık enjeksiyonu (DI), modülerliği, test edilebilirliği ve kod esnekliğini artırır.
Bağımlılık enjeksiyonu türleri şunlardır:
- Yapıcı enjeksiyonu
- Mülk enjeksiyonu
- Enjeksiyon yöntemi
Örnek:
class NetworkService { }
class ViewModel {
let service: NetworkService
init(service: NetworkService) {
self.service = service
}
}
Bağımlılık enjeksiyonu sayesinde geliştiriciler, temel mantığı değiştirmeden test sırasında sahte servisler gibi uygulamaları kolayca değiştirebilirler. Bağımlılık enjeksiyonu, ölçeklenebilir uygulamalarda yaygın olarak kullanılır. Swift uygulamaları.
18) Kapatma elemanlarının kullanımının avantajlarını ve dezavantajlarını açıklayınız. Swift.
Kapatma mekanizmaları güçlü araçlardır. SwiftAncak bunların hem avantajları hem de dezavantajları var.
| Avantajlar | Dezavantajlar |
|---|---|
| Özlü sözdizimi | Okunabilirliği azaltabilir. |
| Asenkron geri çağırmaları etkinleştirir. | Saklama döngülerinin riski |
| Bağlamı yakalar | Hata ayıklama karmaşıklığı |
| Fonksiyonel programlama | Aşırı kullanım akışı bozabilir |
Kapanış fonksiyonları (closures) genellikle tamamlama işleyicileri, animasyonlar ve fonksiyonel dönüşümler için kullanılır. Ancak, özellikle güçlü referans yakalamalarıyla birlikte yanlış kullanım, bellek sızıntılarına yol açabilir. [weak self] or [unowned self] Bu riski azaltır.
İfade gücü ve sürdürülebilirlik arasında denge kurmak için kapatma mekanizmaları özenle kullanılmalıdır.
19) Zayıf referanslar ile sahiplenilmemiş referanslar arasındaki fark nedir? Swift?
Her ikisi de weak hem de unowned Referanslar, önlemek için kullanılır. döngüleri koru ARC kapsamında. Temel fark, tahsisatların nasıl ele alındığıdır.
| Görünüş | zayıf | sahipsiz |
|---|---|---|
| İsteğe bağlı | Evet | Yok hayır |
| Sıfıra ayarlandı | Otomatik olarak | Yok hayır |
| Güvenlik | Daha güvenli | Yanlış kullanıldığında riskli |
| Kullanım örneği | Delegeler | Garantili ömür |
Örnek:
weak var delegate: SomeDelegate?
weak Referans verilen nesnenin nil olma olasılığı olduğunda tercih edilir. unowned Bu özellik yalnızca ebeveyn-çocuk ilişkileri gibi yaşam döngüsünün garanti altına alındığı durumlarda kullanılmalıdır.
20) Eşzamanlılık nasıl çalışır? Swift GCD ve async/await kullanıyor musunuz?
Swift eşzamanlılığı destekler Büyük Merkezi Gönderim (GCD) ve daha yeni eşzamansız/beklemede GCD modeli, arka plan görevlerini yönetmek için kuyruklar kullanırken, async/await daha okunaklı ve yapılandırılmış bir eşzamanlılık yaklaşımı sunar.
Örnek (async/await):
func fetchData() async throws -> String {
return "Data loaded"
}
Async/await, geri çağırma fonksiyonlarının iç içe geçmesini ortadan kaldırır, okunabilirliği artırır ve hataya yatkın kodu azaltır. GCD, düşük seviyeli görev yönetimi için hala kullanışlıdır, ancak modern Swift Geliştirme, giderek daha çok yapılandırılmış eşzamanlılığı tercih ediyor.
21) Erişim kontrol seviyeleri nelerdir? Swiftve neden önemlidirler?
Erişim kontrolü Swift Sınıflar, metotlar, özellikler ve değişkenler gibi kod öğelerine programın farklı bölümlerinden nasıl erişilebileceğini kısıtlar. Güvenli, bakımı kolay ve modüler uygulamalar oluşturmak için kritik bir özelliktir. Swift sağlar beş erişim kontrol seviyesi Görünürlük kapsamını tanımlayanlar.
| Erişim Düzeyi | kapsam |
|---|---|
open |
Modülün dışından erişilebilir ve alt sınıflara ayrılabilir. |
public |
Erişilebilir dış modül |
internal |
Varsayılan, modül içinden erişilebilir. |
fileprivate |
Aynı dosya içinde erişilebilir. |
private |
Aynı bildirim kapsamında erişilebilir. |
Erişim kontrolü, dahili mantığın istenmeyen kullanımını önler ve mimari sınırları uygular. Örneğin, yardımcı yöntemleri işaretlemek gibi. private Bu, harici çağırıcılar tarafından kötüye kullanılmamalarını sağlar. Bu durum, özellikle büyük kod tabanlarında ve çerçevelerde önem kazanır.
22) Açık erişim ve genel erişim değiştiricileri arasındaki farkı açıklayın. Swift.
Rağmen open hem de public Görünüşte benzer olsalar da, alt sınıflama ve geçersiz kılma davranışı söz konusu olduğunda önemli ölçüde farklılık gösterirler. Her ikisi de tanımlayıcı modülün dışına erişime izin verir, ancak yalnızca `open` modülün dışında kalıtım ve yöntem geçersiz kılmaya izin verir.
| Özellik | açık | halka açık |
|---|---|---|
| Erişilebilir dış modül | Evet | Evet |
| Modül dışında alt sınıflara ayrılabilir. | Evet | Yok hayır |
| Modülün dışında geçersiz kılınabilir | Evet | Yok hayır |
Örnek kullanım durumu: Çerçeve geliştiricileri kullanır public İşlevselliği ortaya çıkarmak ancak özelleştirmeyi engellemek istediklerinde. open Bu, genişletilebilirliğin amaçlandığı durumlarda kullanılır; örneğin, alt sınıf özelleştirmesine izin veren kullanıcı arayüzü çerçeveleri gibi.
Bu ayrım, şunlara olanak tanır: Swift API tasarımında güvenlik ile genişletilebilirlik arasında denge kurmak.
23) Tembel başlatma nedir? SwiftPeki, ne zaman kullanılmalıdır?
Tembel başlatma, bir özelliğin oluşturulmasını ilk kez erişilene kadar geciktirir. SwiftBu, aşağıdaki yöntem kullanılarak elde edilir: lazy Bu anahtar kelime, performansı artırmak ve gereksiz bellek kullanımını azaltmak için yaygın olarak kullanılır.
Örnek:
class DataManager {
lazy var dataSource = loadData()
func loadData() -> [String] {
return ["A", "B", "C"]
}
}
Tembel özellikler, dosya yükleme, ağ istekleri veya veritabanı bağlantıları gibi başlatmanın maliyetli olduğu durumlarda özellikle kullanışlıdır. Bunlar her zaman değişken olarak tanımlanmalıdır (varÇünkü değerleri başlatma işleminden sonra belirlenir.
Uygun şekilde kullanıldığında, tembel başlatma (lazy initialization) başlatma performansını ve kaynak verimliliğini artırır.
24) Uzantılar nelerdir? SwiftPeki, hangi sorunları çözüyorlar?
Uzantılar, geliştiricilerin mevcut türlere orijinal uygulamalarını değiştirmeden yeni işlevsellik eklemelerine olanak tanır. Swift Uzantılar, yöntemler, hesaplanmış özellikler, protokol uyumluluğu ve iç içe tipler ekleyebilir.
Örnek:
extension Int {
func squared() -> Int {
return self * self
}
}
Uzantılar, gruplandırma yoluyla daha temiz kod organizasyonunu teşvik eder.ping İlgili işlevsellik. Özellikle türleri protokollere uygun hale getirirken veya yardımcı yöntemler eklerken kullanışlıdırlar. Alt sınıfların aksine, uzantılar saklanmış özellikleri desteklemez, bu da bellek güvenliğini sağlar.
Uzantılar, özellikle büyük projelerde kodun modüler, okunabilir ve bakımı kolay olmasını sağlar.
25) Statik metotlar ve sınıf metotları arasındaki farkı açıklayın. Swift.
Her ikisi de static hem de class Anahtar kelimeler tür düzeyindeki yöntemleri tanımlar, ancak kalıtım senaryolarında davranışları farklılık gösterir.
| Anahtar kelime | geçersiz kılınabilir | kullanım |
|---|---|---|
| statik | Yok hayır | Sabit uygulama |
| sınıf | Evet | Alt sınıflara ayrılmak üzere tasarlanmıştır. |
Örnek:
class Vehicle {
class func type() -> String {
return "Vehicle"
}
}
Kullanım static Davranışın alt sınıflar arasında değişmeden kalması gerektiğinde kullanılır. class Polimorfizmin gerekli olduğu durumlarda. Bu ayrım, genişletilebilirlik kararlarının önemli olduğu çerçeve ve API tasarımında önemlidir.
26) Yüksek dereceli fonksiyonlar nelerdir? SwiftÖrneklerle cevaplayın.
Üst düzey fonksiyonlar, ya parametre olarak başka fonksiyonlar alan ya da sonuç olarak fonksiyon döndüren fonksiyonlardır. Swift Bu kavramı, kapanışlar ve toplama yöntemleri aracılığıyla büyük ölçüde desteklemektedir.
Yaygın olarak kullanılan üst düzey fonksiyonlar şunlardır:
mapfilterreducecompactMapflatMap
Örnek:
let values = [1, 2, 3, 4]
let doubled = values.map { $0 * 2 }
Üst düzey fonksiyonlar, kodun ifade gücünü artırır ve zorunlu tekrarlayan kod yazımını azaltır. Fonksiyonel programlamada yaygın olarak kullanılırlar ve temiz, bildirimsel kod yazmanın temelidirler. Swift kodu.
27) Geriye dönük döngü nedir ve nasıl önlenebilir? Swift?
İki veya daha fazla sınıf örneğinin birbirine güçlü referanslar tutması ve ARC'nin bunları serbest bırakmasını engellemesi durumunda bir "retain cycle" (bağlantı döngüsü) oluşur. Bu durum bellek sızıntılarına yol açar.
Yaygın senaryo:
Kapanışları yakalayan self Derslerin içinde oldukça güçlü.
Önleme teknikleri:
- Kullanım
weakreferanslar - Kullanım
unownedreferanslar - Kapanışlardaki yakalama listeleri
Örnek:
someClosure = { [weak self] in
self?.doSomething()
}
Bellek verimliliği yüksek iOS uygulamaları geliştirmek için, özellikle closure'lar ve delegate'lerle çalışırken, retain döngülerini anlamak çok önemlidir.
28) Senkron ve asenkron kod arasındaki farkı açıklayınız. Swift.
SyncEşzamansız kod, bir görev tamamlanana kadar yürütmeyi engellerken, eşzamanlı kod, görev arka planda çalışırken yürütmenin devam etmesine olanak tanır.
| Görünüş | Syncküstah | eşzamanlı olmayan |
|---|---|---|
| infaz | bloke etme | Engellenmeyen |
| Performans | Daha yavaş kullanıcı arayüzü | Duyarlı kullanıcı arayüzü |
| Kullanım örneği | Basit görevler | Ağ aramaları |
Swift Asenkron programlamayı şu şekilde ele alır: GCD, tamamlama işleyicileri, ve eşzamansız/beklemedeAsenkron kod, gerçek dünya uygulamalarında sorunsuz kullanıcı deneyimi sağlamak için kritik öneme sahiptir.
29) Codable nedir? SwiftPeki, neden faydalı?
Codable Veri alışverişini kolaylaştıran bir protokoldür. Swift Nesneleri ve JSON veya Özellik Listeleri gibi harici gösterimleri bir araya getirir. Encodable hem de Decodable.
Örnek:
struct User: Codable {
let id: Int
let name: String
}
Codable, API'lerle çalışırken tekrarlayan kod miktarını azaltır ve güvenilirliği artırır. Tür güvenliğini sağlar ve sorunsuz bir şekilde entegre olur. SwiftBu, onu veri serileştirme için tercih edilen çözüm haline getiren standart kütüphanesidir.
30) Dizi, küme ve sözlük arasındaki temel farklar nelerdir? Swift?
Swift Üç ana tahsilat türü sunar ve her biri farklı kullanım durumları için optimize edilmiştir.
| Koleksiyon | Düzenli | Benzersiz Değerler | Anahtar Tabanlı |
|---|---|---|---|
| Dizi | Evet | Yok hayır | Yok hayır |
| set | Yok hayır | Evet | Yok hayır |
| Sözlük | Yok hayır | Anahtarlar benzersizdir. | Evet |
Doğru veri türünü seçmek performansı ve anlaşılırlığı artırır. Sıralı veriler için diziler, benzersizlik için kümeler ve hızlı anahtar tabanlı aramalar için sözlükler en iyisidir.
31) Protokol Odaklı Programlama Nedir? SwiftPeki, miras yoluyla geçişe kıyasla neden tercih ediliyor?
Protokol Odaklı Programlama (POP), temel bir tasarım felsefesidir. Swift Bu yaklaşım, sınıf kalıtımına aşırı derecede güvenmek yerine, davranışları protokoller kullanarak tanımlamaya odaklanır. POP'ta protokoller bir türün neler yapabileceğini tanımlar ve protokol uzantıları varsayılan uygulamalar sağlar. Bu yaklaşım, sıkı bağımlılık ve kırılgan temel sınıflar gibi derin kalıtım hiyerarşileriyle ilişkili birçok sorunu önler.
POP, yapılarla, numaralandırmalarla ve sınıflarla çalışarak nesne yönelimli kalıtımdan daha esnek bir yapı sunar. Ayrıca kalıtım yerine bileşimi teşvik ederek test edilebilirliği ve ölçeklenebilirliği artırır.
Örnek: Swift'ın standart kütüphane türleri, örneğin Array hem de Dictionary büyük ölçüde şu gibi protokollere dayanır Sequence hem de CollectionBu, POP'un birbirinden bağımsız türler arasında yeniden kullanılabilir ve tutarlı davranışları nasıl mümkün kıldığını göstermektedir.
32) iOS'te yetkilendirme ve bildirim kalıpları arasındaki farkı açıklayın. Swift.
iOS geliştirmede yaygın olarak kullanılan iki iletişim modeli delegasyon ve bildirimdir. Delegasyon, bir iletişim biçimi oluşturur. bire-bir Bir nesnenin bir protokol aracılığıyla başka bir nesneyle iletişim kurduğu ilişki. Bildirimler şu şekilde gerçekleşir: Bire birçok Birden fazla gözlemcinin olayları dinleyebileceği bir model.
| Görünüş | delegasyon | Bildirim |
|---|---|---|
| ilişki | Bire bir | Bire-çok |
| Bağlama | Sıkı | Gevşek |
| Performans | Daha hızlı | Biraz daha yavaş |
| Kullanım örneği | Kullanıcı işlemleri | Küresel olaylar |
Yetki devri, kullanıcı etkileşimlerini yönetmek için idealdir; bildirimler ise klavye görünümü gibi sistem genelindeki değişiklikleri duyurmak için daha uygundur.
33) Çerçeve ve sınırlar arasındaki fark nedir? Swift Kullanıcı arayüzü geliştirme?
frame hem de bounds Bir görünümün boyutunu ve konumunu farklı koordinat sistemlerinde tanımlar. frame üstten görünüme göre görecelidir, bounds Bu, bakış açısına göre değişir.
| Varlığınızı | çerçeve | sınırlar |
|---|---|---|
| Koordinat sistemi | Ebeveyn görünümü | Kendi görüşüm |
| Pozisyon dahil | Evet | Yok hayır |
| Dönüşümlerden etkilenir | Evet | Yok hayır |
Animasyonlar, dönüşümler veya özel çizim işlemleri gerçekleştirirken bu ayrımı anlamak çok önemlidir.
34) Otomatik Yerleşim nasıl çalışır? SwiftPeki, kısıtlamalar nelerdir?
Otomatik Yerleşim, kısıtlamalara bağlı olarak görünüm boyutlarını ve konumlarını dinamik olarak hesaplayan bir yerleşim sistemidir. Kısıtlamalar, UI öğeleri arasındaki boşluk, hizalama ve boyut oranları gibi ilişkileri tanımlar.
Otomatik Yerleşim, yerleşimleri farklı ekran boyutlarına, yönlendirmelere ve erişilebilirlik ayarlarına uyarlar. Kısıtlamalar, Arayüz Oluşturucu, bağlantı noktaları veya programatik olarak tanımlanabilir.
Örnek:
view.leadingAnchor.constraint(equalTo: parent.leadingAnchor).isActive = true
Otomatik Yerleşim, modern iOS uygulamaları için hayati önem taşıyan duyarlı ve uyarlanabilir kullanıcı arayüzü tasarımını sağlar.
35) Genel tür kısıtlamaları nelerdir? SwiftÖrneklerle cevaplayın.
Genel kısıtlamalar, jeneriklerle kullanılabilecek türleri sınırlandırarak tür güvenliğini artırır. Kısıtlamalar, bir türün bir protokole uymasını veya belirli bir sınıftan miras almasını gerektirebilir.
Örnek:
func printValues<T: Comparable>(_ a: T, _ b: T) {
print(max(a, b))
}
Genel kısıtlamalar, yeniden kullanılabilir ancak kontrollü abs yazmak için gereklidir.tracGeliştiricilerin esnekliği korurken davranış gereksinimlerini uygulamalarına olanak tanırlar.
36) Kopya, güçlü ve zayıf kavramları arasındaki farkı açıklayın. Swift bellek yönetimi.
Bu anahtar kelimeler, ARC kapsamında referansların nasıl yönetileceğini tanımlar.
| Referans | Saklama Sayısı | Kullanım çantası |
|---|---|---|
| güçlü | Artışlar | Varsayılan sahiplik |
| zayıf | Artış yok | Bekleme döngülerinden kaçının. |
| kopya | Yeni oluşturur | Değer izolasyonu |
copy Genellikle koleksiyonlar veya dizelerle birlikte değiştirilemezliği sağlamak için kullanılırken weak Temsilci kalıpları için olmazsa olmazdır.
37) Metot değiştirme nedir? SwiftPeki, bundan ne zaman kaçınılmalıdır?
Metot değiştirme (method swizzling), mevcut bir metodun uygulamasını değiştiren bir çalışma zamanı tekniğidir. Güçlü olmasına rağmen tehlikelidir ve önerilmez. Swift Çünkü derleme zamanı güvenliğini atlıyor.
Swizzling, öngörülemeyen davranışlara yol açabilir, sistem güncellemelerini bozabilir ve hata ayıklamayı zorlaştırabilir. Bu nedenle, yalnızca analitik veya hata ayıklama çerçeveleri gibi kontrollü senaryolarda kullanılmalıdır.
SwiftGüvenliğe ve sabit sevk işlemlerine verdiği önem, swizzling'i son çare haline getiriyor.
38) Nasıl Swift İş parçacığı güvenliğini ve veri yarışlarını nasıl ele alabiliriz?
Swift GCD, kilitler ve modern yöntemler kullanarak eşzamanlılığı yönetir. Swift Eşzamanlılık modeliAktörler, aynı anda yalnızca bir görevin değiştirilebilir duruma erişebilmesini sağlayarak veri izolasyonunu sağlayan önemli bir özelliktir.
Örnek:
actor Counter {
var value = 0
func increment() {
value += 1
}
}
Aktörler, iş parçacığı güvenliğini basitleştirir ve veri yarışlarının olasılığını azaltarak eşzamanlı programlamayı daha güvenli ve daha erişilebilir hale getirir.
39) @esca ile arasındaki fark nedir?ping ve kaçışsızping kapanışlar Swift?
Kapanışlar kaçışsızdır.ping Varsayılan olarak, yani fonksiyonun kapsamı içinde yürütülürler. Escaping Kapanışlar fonksiyon çağrısından daha uzun süre varlığını sürdürür ve açıkça işaretlenmelidir. @escaping.
| Görünüş | Esca dışıping | Escaping |
|---|---|---|
| Ömür | kısa | Uzun |
| Performans | Daha hızlı | Hafif tepede |
| Kullanım örneği | Anlık mantık | Asenkron geri çağırmalar |
Esca'yı anlamakping Kapanışlar, bellek yönetimi ve tekrarlanan işlem döngülerinden kaçınmak için kritik öneme sahiptir.
40) Kullanmanın avantajları ve dezavantajları nelerdir? SwiftKullanıcı arayüzü, UIKit ile karşılaştırıldığında nasıl?
SwiftUI, Apple tarafından geliştirilen bildirimsel bir kullanıcı arayüzü çerçevesidir, UIKit ise emirseldir.
| SwiftKullanıcı Arayüzü Avantajları | SwiftKullanıcı Arayüzü Dezavantajları |
|---|---|
| Less Basmakalıp | Sınırlı geriye dönük destek |
| Canlı önizlemeler | Less olgun |
| Bildirimsel sözdizimi | Daha az özelleştirme kancası |
SwiftKullanıcı arayüzü geliştirme sürecini hızlandırır ancak UIKit, karmaşık veya eski uygulamalar için hâlâ gereklidir. Birçok üretim uygulaması hibrit bir yaklaşım kullanmaktadır.
🔍 Üst Swift Gerçek Dünya Senaryoları ve Stratejik Yanıtlar İçeren Mülakat Soruları
1) Başlıca özellikleri nelerdir? Swift Objective-C'den farkı nedir?
Adaydan beklenenler: Görüşmeyi yapan kişi, sizin şu konulardaki anlayışınızı değerlendirmek istiyor: Swift Temelleri ve modern iOS geliştirme için neden tercih edildiği.
Örnek cevap: Swift Güçlü tip güvenliği, boş referans hatalarını önlemek için isteğe bağlı değerler, ARC aracılığıyla otomatik bellek yönetimi ve temiz bir sözdizimiyle geliştirilmiş okunabilirlik sunar. Ayrıca, Objective-C'ye kıyasla uygulamaları daha güvenli ve bakımı daha kolay hale getiren değer tipleri, protokol odaklı programlama ve desen eşleştirme gibi güçlü özellikler de sağlar.
2) Değer tipleri ve referans tipleri arasındaki farkı açıklayabilir misiniz? Swift?
Adaydan beklenenler: Mülakatçı, bellek yönetimi ve veri davranışı konusundaki anlayışınızı test ediyor. Swift.
Örnek cevap: Yapılar ve numaralandırmalar gibi değer tipleri, atandıklarında veya aktarıldıklarında kopyalanır ve bu da veri izolasyonunu sağlar. Sınıflar gibi referans tipleri ise aynı bellek referansını paylaşır; bu da bir yerdeki değişikliklerin tüm referansları etkilediği anlamına gelir. Aralarındaki seçim, paylaşılan değiştirilebilir durumun gerekli olup olmadığına bağlıdır.
3) İsteğe bağlı değerler nasıl çalışır? Swiftve neden önemlidirler?
Adaydan beklenenler: Mülakatçı, nil değerlerini güvenli bir şekilde nasıl ele aldığınızı ve çalışma zamanı çökmelerini nasıl önlediğinizi bilmek istiyor.
Örnek cevap: İsteğe bağlı değerler, bir değerin varlığını veya yokluğunu temsil eder. Geliştiricileri, isteğe bağlı bağlama, isteğe bağlı zincirleme veya koruma ifadeleri kullanarak nil durumlarını açıkça ele almaya zorladıkları için önemlidirler. Bu tasarım, beklenmedik çökmeleri önemli ölçüde azaltır ve uygulama istikrarını artırır.
4) Protokol odaklı programlamayı kullandığınız bir durumu açıklayın. Swift.
Adaydan beklenenler: Mülakatçı, ileri düzey becerileri nasıl uyguladığınızı görmek istiyor. Swift Gerçek projelerdeki kavramlar.
Örnek cevap: Önceki görevimde, birden fazla görünüm modeli arasında paylaşılan davranışı tanımlamak için protokol odaklı programlama kullandım. Varsayılan uygulamalara sahip protokoller kullanarak, kod tekrarını azalttım ve test edilebilirliği artırırken aynı zamandaping Bileşenler gevşek bir şekilde birbirine bağlıdır.
5) Hafızayı etkili bir şekilde nasıl yönetirsiniz? Swift uygulamalar?
Adaydan beklenenler: Mülakatçı, ARC ve performans değerlendirmeleri konusundaki anlayışınızı değerlendiriyor.
Örnek cevap: Önceki görevimde, özellikle closure'larda ve delegate kalıplarında, bellek döngülerini önlemek için zayıf ve sahipsiz referansları dikkatlice kullanarak bellek yönetimini gerçekleştirdim. Ayrıca, bellek sızıntılarını tespit etmek ve view controller'ların düzgün bir şekilde serbest bırakılmasını sağlamak için Instruments'ı kullandım.
6) Asenkron işlemleri nasıl ele alıyorsunuz? Swift?
Adaydan beklenenler: Mülakatçı, uygulamalarda eşzamanlılığı ve yanıt verme hızını nasıl yönettiğinizi öğrenmek istiyor.
Örnek cevap: Grand Central Dispatch kullanarak eşzamansız işlemleri yönetiyorum ve Swift Async ve await gibi eşzamanlılık özellikleri. Bu araçlar, ağ çağrıları veya veri işleme gibi arka plan görevlerini gerçekleştirirken kullanıcı arayüzünün hızlı yanıt vermesini sağlamama olanak tanıyor.
7) Karşılaştığınız zorlu bir hatayı açıklayın. Swift proje ve onu nasıl çözdüğünüz.
Adaydan beklenenler: Mülakatçı, problem çözme yaklaşımınızı ve hata ayıklama becerilerinizi değerlendiriyor.
Örnek cevap: Önceki işimde, force-unwrap'ten kaynaklanan bir çökme sorunuyla karşılaştım.ping Ağ yanıtı sırasında isteğe bağlı bir durum oluştu. Uygun isteğe bağlı bağlama yöntemini kullanarak ve koruyucu kontroller ekleyerek sorunu çözdüm; bu sayede çökme ortadan kalktı ve modül genelinde hata yönetimi iyileşti.
8) Kod kalitesini ve sürdürülebilirliğini nasıl sağlıyorsunuz? Swift projeler?
Adaydan beklenenler: Mülakatçı, geliştirme disiplininiz ve ekip çalışması uygulamalarınız hakkında bilgi edinmek istiyor.
Örnek cevap: Kod kalitesini aşağıdaki yöntemlerle sağlıyorum. Swift Stil yönergelerine, modüler kod yazmaya ve anlamlı isimlendirme kurallarına uyuyorum. Ayrıca, kod tabanının tüm ekip için sürdürülebilir ve anlaşılabilir kalmasını sağlamak için kod incelemelerine, birim testlerine ve dokümantasyona güveniyorum.
9) Bir özelliğin hızlı bir şekilde teslim edilmesi gerektiği ancak gereksinimlerin belirsiz olduğu bir durumu nasıl ele alırdınız?
Adaydan beklenenler: Mülakatçı, baskı altında iletişim ve karar verme becerilerinizi değerlendirmek istiyor.
Örnek cevap: Öncelikle paydaşlarla temel gereksinimleri netleştirerek ve minimum uygulanabilir işlevselliği belirleyerek işe başlardım. Ardından varsayımları açıkça iletir, özelliği yinelemeli olarak uygular ve son teslim tarihine uyarken geri bildirimleri dahil etmek için esnek kalırdım.
10) Sizi çalışmaya motive eden şey nedir? Swift Peki ya iOS geliştirme?
Adaydan beklenenler: Mülakatı yapan kişi, teknolojiye olan tutkunuzu ve uzun vadeli ilginizi anlamak istiyor.
Örnek cevap: Son görevimde beni motive eden şey şuydu: SwiftGüvenlik, performans ve modern dil tasarımına odaklanması, beni motive ediyor. Kullanıcıları doğrudan etkileyen uygulamalar geliştirmek ve sürekli gelişen bir ekosistemle çalışmak, bir geliştirici olarak kendimi geliştirmeye istekli olmamı sağlıyor.
