IOS INTERVIEW WORKSHEET
Learning Swift/iOS for your next project or interview? Use this practical guide as a targeted study plan. Suc-
cessful apps solve ordinary problems in a variety of ways. The iOS Interview Worksheet highlights these
common, yet important, topics.
IOS COMPUTER SCIENCE LAB
With an average technical interview lasting 3-6 hours, passing requires a combination of coding expertise,
knowledge of software development processes, and keeping calm under pressure. If you are preparing for
your next technical interview, testing your knowledge and understanding of code challenges is vital. Going
beyond the book, the computer science lab provides the opportunity to solve iOS questions and collabo-
rate with other developers in a virtual whiteboard setting. Register for the next free session at:
[Link]/ios-interview/cslab
SWIFT
Swift is the fabulous new standard for building iOS projects. As the language continues to evolve, develop-
ers will need to adapt their skills accordingly. To stay competitive, stay current. As a goal, demonstrate your
knowledge to hiring managers on the unique features of Swift. Beyond syntax, this includes demonstrating
the differences between Object-Oriented and Protocol-Oriented programming. With Swift now available
as open-source, developers should also be comfortable with [Link], Github change proposals, and the
Swift Evolution process.
Swift Topic Ability to Explain Ability to Code
Variables vs. Constants
Structs, Classes, Methods & Properties
Value types vs. Reference types
Function Signatures
String manipulation - ASCII & Unicode
Arrays
Sets vs. Arrays (when and why)
Tuples
Dictionaries
//2 Swift Algorithms - iOS Interview Worksheet (Version 6.0)
Swift Topic Ability to Explain Ability to Code
Optionals (e.g. Regular, Implicit & Unwrapping)
Generics (e.g. Types, Functions & Constraints)
Protocols
Type Extensions
Protocol Extensions
Closures (e.g. Trailing Closures / Syntax)
Initializers (single and multiple)
Error Handling
Bridging Headers
[Link]
Swift API Design Guidelines
Building custom types that conform to Comparable, Hash-
able & Equatable
Guard Statement
Custom (Advanced) Operators
In-Out Variables
Computed Properties
Subscripts
OBJECTIVE-C
Even though most new projects are now written in Swift, most large-scale iOS projects still exist in Objec-
tive-C. Knowledge of Objective-C will help you better understand the history and evolution of Swift and the
iOS SDK.
Objective-C Topic Ability to Explain Ability to Code
Classes, Methods & Properties
Synthesize Keyword (@synthesize)
[Link]
//3
Objective-C Topic Ability to Explain Ability to Code
Dealloc
Reference Counting Rules (retain, release)
Property References (strong, weak)
Method Signatures
Protocols
Blocks
Categories
NSDictionary
NSArray
NSNull vs. Nil
NSSet (when and why)
NSDate
NSNumber
Initializers (single and multiple)
NSMutableString
NSError
NSURLSession
NSJSONSerialization
DESIGN PATTERNS
Once you’ve explored Objective-C and Swift, being able to recognize and implement design patterns will
help you build a scalable solution. While most patterns aren’t exclusive to iOS, being able to code specific
Apple-based designs will be your primary objective.
Design Patterns Topic Ability to Explain Ability to Code
Object-Oriented Design
Protocol-Orientated Design (Swift)
[Link]
//4 Swift Algorithms - iOS Interview Worksheet (Version 6.0)
Design Patterns Topic Ability to Explain Ability to Code
MVC (Model View Controller)
Key-Value Coding
Notifications (register and receive)
Delegation
Inheritance
Singleton
Factory
USER INTERFACES
With Xcode 12 will come a new method for creating mobile user interfaces, known as SwiftUI. While the
majority of existing iOS applications will continue to use standard tools such as Storyboards, Autolayout
and drag and drop techniques, its recommend that developers invest considerable time learning the new
SwiftUI design and data interaction concepts.
User Interface Topics Ability to Explain Ability to Code
HStack
VStack
View - (Protocol)
Identifiable - (Protocol)
Button
UIView Lifecycle
UIView Animations
Gesture Recognizers
UITableViewController
Animation Chaining
Human Interface Guidelines (document)
Asynchronous UITableView data loading (multithreading)
[Link]
//5
User Interface Topics Ability to Explain Ability to Code
UINavigationController
Core Animation
DATA MANAGEMENT
Writing solutions requires using Swift or Objective-C in conjunction with the iOS Framework. As you prepare
for your next interview, note that success in the process will depend on you solving problems that can be
explained using Big-O Notation or standard iOS Framework management tools.
Data Management Topic Ability to Explain Ability to Code
Big-O Notation
HTTP (e.g PUT, POST, GET )
Grand Central Dispatch (e.g DispatchQueue)
Core Data
NSUserDefaults
XCTest Framework (e.g. creating unit tests)
[Link]
File’s Owners Object
URLSession
UITableView (Delegate & Datasource)
Swift Package Manager
Decodable & Encodable (Native JSON Parsing)
ALGORITHMS & DATA STRUCTURES
When creating modern apps, much of the theory inherent to algorithms is often overlooked. For solutions that
consume relatively small amounts of data, decisions about specific techniques or design patterns may not be
as important as just getting things to work. However, as your audience grows, so will your data. Making sense
of data allows users to connect, share, complete transactions, and make decisions.
[Link]
//6 Swift Algorithms - iOS Interview Worksheet (Version 6.0)
Algorithm Topic Ability to Explain Ability to Code
Big O Notation - O(n), O(1), O(log n), O(n log n)
Hash Tables
Dynamic Programming
Linked Lists
Stacks & Queues
Breadth-First Search
Depth-First Search
Graph Theory Basics
Binary Search Trees
VERSION CONTROL
Knowing how to manage code (either on your own or as part of a team) makes you a valuable asset. While
there are various version control systems available, knowledge of Git is highly valued in most development
situations. It is ideal that youww understand Git concepts, tools and processes.
Version Control Topic Ability to Explain Ability to Code
Working Copies, Branches & Stashes
Local vs. Remote Repositories
Stage, Pull, Push & Fetch
Merge vs. Rebase
Fork, Clone
Managing Code Conflicts
Working with Github
Managing Pull Requests
[Link]