P
prepair.app
Start interview →
EnglishУкраїнськаРусскийDeutsch
🍏

Junior iOS (Swift)IOS developer interview questions

Junior · no experience / under 1 year

iOS interviews test the Swift type system, how ARC manages memory, and whether you can reason about UI state — plus at least one question where a retain cycle is hiding in plain sight. Below are the questions asked most often, each with a model answer. Junior: core theory, definitions, and simple practical cases.

Try it — no account needed
Preparing your question…

Topics to prepare

Swift language and optionals
ARC and memory management
SwiftUI and UIKit
Concurrency: async/await, Combine, GCD
Architecture and state
Persistence and networking

7 Junior-level questions with answers

1

What is the difference between a struct and a class in Swift?

Answer

A struct is a value type — assigning it copies. A class is a reference type — assigning it shares. Swift's standard library is built on structs, and the guidance is to start with one and reach for a class when you need identity, inheritance or deinit.

2

What is an optional, and what does force unwrapping cost you?

Answer

An optional is a type that may hold a value or nil, and the compiler makes you deal with both. Force unwrapping with ! says you are certain — and crashes the app if you are wrong. if let, guard let and ?? express the same intent without betting the process on it.

3

What is the difference between `weak` and `unowned`?

Answer

Both avoid a strong reference, so neither keeps the object alive. weak becomes nil when the object goes and must therefore be optional; unowned does not, and reading it after the object is gone crashes. Use weak when the other object may legitimately disappear first, unowned only when it cannot.

4

What is a retain cycle and where do they usually appear?

Answer

Two objects holding strong references to each other, so neither reaches zero and neither is freed. In practice they appear in closures that capture self — a completion handler stored on the object it belongs to. [weak self] in the capture list is the standard fix.

5

What is the difference between `frame` and `bounds`?

Answer

frame is the view's rectangle in its superview's coordinate system; bounds is its own, with the origin usually at zero. Rotate or transform a view and frame becomes the enclosing rectangle while bounds stays the same. Drawing uses bounds, positioning uses frame.

6

What is the view controller lifecycle?

Answer

viewDidLoad once when the view is created, then viewWillAppear and viewDidAppear on every presentation, with the Disappear pair on the way out. One-time setup goes in viewDidLoad; anything that must refresh each time the screen is shown goes in viewWillAppear. Putting a network call in viewDidLoad is why a screen shows stale data on the second visit.

7

What is ARC and what does it not handle?

Answer

Automatic Reference Counting inserts retain and release at compile time, freeing an object when its count reaches zero — deterministic, unlike a garbage collector. What it does not handle is a cycle: two objects referring to each other never reach zero, which is exactly why weak and unowned exist.

🦎

Reading answers is not enough

In a real interview you speak under pressure. Cam asks these same questions, scores every answer, and shows exactly what to fix.

Practice a Junior iOS (Swift) interview →
Free · 3 interviews per month

Other levels — iOS (Swift)

Middle iOS (Swift)Senior iOS (Swift)All iOS (Swift) questions

Other specializations

🔍Junior Manual QA🤖Junior QA AutomationJunior Java Backend🐍Junior Python Backend🐘Junior PHP Backend🦫Junior Go Backend🟢Junior Node.js Backend💎Junior Ruby on Rails🟣Junior .NET Backend Developer🔷Junior C++