All interview guides

SwiftUI Interview Questions and Answers

24 questions that come up in SwiftUI technical interviews, each with the answer and an explanation of why it is right.

Test yourself — 90 question bank

1. What is Layout protocol?

Advanced

Answer: iOS 16+ protocol for custom layout

Layout protocol creates custom layouts. sizeThatFits, placeSubviews methods. Replace GeometryReader. Efficient. Flexible positioning. Advanced layouts. iOS 16+.

2. What is SwiftUI?

Beginner

Answer: Declarative UI framework for Apple platforms

SwiftUI is Apple's declarative UI framework. Build interfaces with Swift code. Cross-platform (iOS, macOS, watchOS, tvOS). Reactive updates. Modern paradigm. iOS 13+.

3. What is List?

Intermediate

Answer: Scrollable collection of rows

List displays rows: List { ForEach(items) { item in Text(item.name) } }. Automatic scrolling. Built-in styles. Swipe actions. Essential collection view.

4. What is ForEach?

Intermediate

Answer: Iterates over collection creating views

ForEach creates views from data: ForEach(items) { item in Text(item.name) }. Requires Identifiable or id parameter. Dynamic views. Performance optimized.

5. What is a View?

Beginner

Answer: Protocol defining piece of UI

View protocol defines UI: struct MyView: View { var body: some View }. Basic building block. Declarative. Lightweight. Compose complex UIs from simple views.

6. What is ViewBuilder?

Advanced

Answer: Result builder for view DSL

@ViewBuilder enables SwiftUI DSL. Implicit returns, if/else, switch. Custom ViewBuilder functions. Declarative syntax. Result builder. Enables view composition.

7. What is custom ViewBuilder?

Advanced

Answer: @ViewBuilder function returning views

Custom ViewBuilder: @ViewBuilder func makeView() -> some View. Enables DSL in custom APIs. Trailing closure. Clean API design. Component libraries.

8. What is NavigationView?

Intermediate

Answer: Container for navigation hierarchy

NavigationView enables navigation: NavigationView { ContentView() }. Navigation bar. Push/pop views. Title, buttons. Stack-based navigation. iOS pattern.

9. What is body in View?

Beginner

Answer: Required computed property returning view content

body is computed property: var body: some View { Text("Hello") }. Returns view hierarchy. SwiftUI calls when rendering. Opaque return type. Core View requirement.

10. What is NavigationLink?

Intermediate

Answer: Navigates to destination view

NavigationLink navigates: NavigationLink("Next", destination: DetailView()). Programmatic: NavigationLink(isActive: $isShowing). Push navigation. Common pattern.

11. What is Text view?

Beginner

Answer: Displays read-only text

Text displays strings: Text("Hello, World!"). Styling modifiers. String interpolation: Text("Count: \\(count)"). Multi-line support. Basic view primitive.

12. What is AnyView?

Advanced

Answer: Type-erased wrapper for any view

AnyView erases type: AnyView(Text("Hi")). Heterogeneous collections. Loss of type info. Performance cost. Use sparingly. Group preferred. Type flexibility.

13. What is @ViewBuilder vs AnyView?

Advanced

Answer: @ViewBuilder preserves types, AnyView erases

@ViewBuilder maintains types (opaque). AnyView erases types. ViewBuilder more efficient. Prefer ViewBuilder. AnyView for stored properties. Performance consideration.

14. What is Image view?

Beginner

Answer: Displays images from assets or system

Image displays images: Image("photo") or Image(systemName: "star.fill"). SF Symbols integration. Resizable, aspect fit/fill. Tint colors. Essential view.

15. What is TabView?

Intermediate

Answer: Tab-based navigation container

TabView creates tabs: TabView { View1().tabItem { Label("Tab1", systemImage: "star") } }. Bottom tab bar. Page style available. Multi-view navigation.

16. What is Sheet?

Intermediate

Answer: Modal presentation

Sheet presents modally: .sheet(isPresented: $showing) { DetailView() }. Dismiss gesture. Full screen or card. iOS modal pattern. Common presentation.

17. What is EquatableView?

Advanced

Answer: Optimizes view updates with Equatable

EquatableView optimizes: .equatable(). Requires Equatable conformance. Prevents unnecessary updates. Performance optimization. Use for expensive views. Manual optimization.

18. What is Button view?

Beginner

Answer: Interactive element triggering action

Button triggers actions: Button("Tap Me") { action() }. Label can be any view. Styling with ButtonStyle. Common interaction element. Simple syntax.

19. What is Alert?

Intermediate

Answer: System alert dialog

Alert shows dialog: .alert("Title", isPresented: $showing) { Button("OK") { } }. System styled. Actions. Destructive options. User confirmation.

20. What is @State?

Beginner

Answer: Property wrapper for view-local mutable state

@State private var count = 0. View-owned state. Changes trigger re-render. Value type storage. Source of truth. SwiftUI manages storage. View lifecycle.

21. What is drawingGroup()?

Advanced

Answer: Renders view hierarchy into single layer

drawingGroup() composites: .drawingGroup(). Metal rendering. Performance for complex graphics. Many shapes/paths. Trade-off: memory vs speed. Profiling needed.

22. What is \.self in ForEach?

Advanced

Answer: Uses value itself as identifier

ForEach(items, id: \\.self) uses value as ID. Works for Hashable types. Simple arrays. No Identifiable needed. Uniqueness required. Common pattern.

23. Why is @State private?

Beginner

Answer: State is view-internal, not passed from parent

@State should be private. View owns state. Not initialized from outside. Parent passes via @Binding. Clear ownership. Prevents external modification. Design pattern.

24. What is @ObservedObject?

Intermediate

Answer: Observes external ObservableObject

@ObservedObject var model: MyModel. External reference type. Changes trigger updates. Class with ObservableObject. Published properties. MVVM pattern.

Ready to test yourself?

The full SwiftUI bank has 90 questions across 3 difficulty levels — timed, shuffled, and scored.

Take the SwiftUI quiz