yoklateknik mülakat

Mobil Ios Core Data Swiftdata Persistence Mülakat Soruları

75 doğrulanmış Mobil Ios Core Data Swiftdata Persistence 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 Core Data Swiftdata PersistenceZorluk 1
Core Data'da NSManagedObjectContext esas olarak neden sorumludur?
  • aUygulamanın veri modeli dosyasını Swift sınıflarına derlemekten.
  • bVeri değiştiğinde uygulamanın arayüzünü yeniden çizmekten.
  • cDisk üzerindeki SQLite dosyasını şifrelemekten.
  • dManaged object'lerdeki bellek-içi değişiklikleri izlemekten ve kalıcı depoya kaydetmeyi koordine etmekten
Açıklama:NSManagedObjectContext, eklenen/güncellenen/silinen managed object'leri izleyen ve bu değişiklikleri persistent store coordinator'a kaydetmekten sorumlu olan çalışma alanıdır; UI çizmez veya model derlemesi yapmaz.
Ios Core Data Swiftdata PersistenceZorluk 1
Varsayılan viewContext (NSPersistentContainer.viewContext) hangi concurrency türüyle yapılandırılır?
  • a.privateQueueConcurrencyType.
  • bHiçbir concurrency türü yok — hangi thread çağırırsa onda çalışır
  • c.mainQueueConcurrencyType
  • d.backgroundQueueConcurrencyType.
Açıklama:viewContext, .mainQueueConcurrencyType ile oluşturulur; yani ana thread/queue'ya bağlıdır ve UI'a bakan fetch/düzenleme işlemlerinin arkasında kullanılmak üzere tasarlanmıştır.
Ios Core Data Swiftdata PersistenceZorluk 2
Bir geliştirici büyük bir CSV çekip 5.000 satırı parse ediyor ve bunları doğrudan ana thread'deki viewContext üzerinde managed object olarak ekliyor. En olası gözlemlenebilir sorun nedir?
  • aCore Data belleği korumak için 1.000'den sonraki satırları sessizce atar.
  • bEkleme derleme hatası verir çünkü viewContext nesne eklemeyi desteklemez.
  • cHiçbir sorun olmaz — viewContext toplu arka plan işleri için optimize edilmiştir.
  • dAna thread binlerce ekleme ve bir save işlemiyle meşgul olduğu için UI donar/takılır
Açıklama:viewContext ana queue üzerinde çalışır; bu yüzden üzerinde yapılan ağır iş (binlerce ekleme artı nihai save) ana thread'i bloklar ve UI'ı dondurur. Toplu içe aktarımlar özel bir arka plan context'i kullanmalıdır.
Ios Core Data Swiftdata PersistenceZorluk 1
Persistent container'ın coordinator'ına bağlı yeni bir arka-plan-queue NSManagedObjectContext hangi metotla oluşturulur?
  • apersistentContainer.newBackgroundContext()
  • bpersistentContainer.viewContext.background()
  • cNSManagedObjectContext.detached().
  • dpersistentContainer.mainContext().
Açıklama:newBackgroundContext(), aynı persistent store coordinator'a bağlı private-queue bir context döner; içe aktarma gibi ana-thread-dışı işler için kullanılmak üzere tasarlanmıştır.
Ios Core Data Swiftdata PersistenceZorluk 2
let bgContext = container.newBackgroundContext()
let obj = bgContext.object(with: someObjectID)
print(obj.name) // ana thread'den doğrudan erişiliyor

Bu kodda ne yanlış?
  • aManaged object private-queue bir context'e ait olduğundan, özelliklerine o context'in queue'sunda perform/performAndWait ile erişilmeli, doğrudan başka bir thread'den değil
  • bNSManagedObjectContext üzerinde object(with:) diye bir metot yoktur.
  • cHiçbir sorun yok; managed object'ler varsayılan olarak thread-safe'dir.
  • dsomeObjectID bir NSManagedObjectID değil String olmalıdır.
Açıklama:Managed object'ler kendilerine sahip olan context'in queue'suna hapsedilmiştir. bgContext private-queue bir context iken obj.name'e ana thread'den doğrudan erişmek bir thread-confinement ihlalidir; doğru kalıp erişimi bgContext.perform { ... } içine sarmaktır.
Ios Core Data Swiftdata PersistenceZorluk 1
NSFetchedResultsController esas olarak ne için kullanılır?
  • a.xcdatamodeld dosyasını build zamanında derlemek için.
  • bFetch isteklerini SQLite'a ulaşmadan önce şifrelemek için.
  • cPersistent store şemasını sürümler arasında migrate etmek için.
  • dCore Data sonuçlarından bir table/collection view'ı verimli şekilde beslemek, ekleme/güncelleme/silme/taşıma değişikliklerini bildirim olarak izlemek için
Açıklama:NSFetchedResultsController bir fetch isteğini sarmalar ve context değişikliklerini izler; section/row düzeyinde ekleme/silme/güncelleme/taşıma bildirimleri verir, böylece bir table/collection view her şeyi yeniden yüklemek yerine artımlı güncellenebilir.

2400 soruluk Mobil bankasında kendini sına.

Mülakata başla