Back to topics

Topic

Swift

Core Swift language rules and reasoning patterns that frequently appear in iOS interviews before the discussion narrows into UI or concurrency specifics

Focus areas: Value vs reference semantics, immutability, ownership, optionals, and API design

What collection types are available in Swift, and when would you use each one?

Explain Swift's protocol-driven collection model, then compare Array, Set, Dictionary, and Range by behavior, complexity, hashing, ordering, copy-on-write, and thread-safety tradeoffs

Which design patterns have you used in iOS, and what tradeoffs did they have?

Group design patterns into creational, structural, and behavioral, then explain real iOS examples from SDKs and your own implementation experience with the tradeoffs that matter in production

What is the difference between let and var in Swift?

Explain that `let` creates an immutable binding while `var` creates a mutable one, then separate how that rule behaves for value types versus reference types

What is the difference between print and debugPrint in Swift?

Explain that `print` prefers a user-facing string while `debugPrint` prefers a debug representation, then show when their output is identical and when it diverges

What is a retain cycle and how do you avoid it?

Define retain cycles in ARC terms, show the most common ways teams create them, and explain how to prevent and debug them in production code

How does struct memory layout work in Swift?

Explain `MemoryLayout`, padding, alignment, and stride; show why stored-property order changes a struct's footprint; and connect it to arrays, performance, and low-level interop