So you have been doing tutorials, sample projects, and watching videos on iOS development for a while. You are trying to publish an app in the App Store or maybe you got one already there. You dream of becoming a professional iOS developer.
Believe me, I was in the same situation six years ago. I started as an indie developer, self employed, and landed a few short contracts, then a six-month contract, and finally, one day, I got a job as a full-time professional iOS developer with a corporation. I have interviewed for a few companies and I have also interviewed come iOS candidates.
In this talk I will explain how to prepare yourself for the iOS technical interview. I will go thru the most usual questions, give my personal advice on how to succeed and pass the interview, and provide links to training material.
2. About me
• Senior iOS developer working at Actsoft, Inc, in
sunny Tampa, FL, USA
• Started iOS development in 2009
• 20+ apps in the App Store
• Objective C veteran, Swift enthusiast
3. Agenda
• Industry requirements for a professional iOS
developer
• Applying for an iOS developer job
• The iOS technical interview
• Sample questions, advice
• Reference material
4. Industry requirements for a
professional iOS developer
Junior
• Have at least one app in the App Store (sample
projects count) or a Github repository with sample code
• No experience in the job needed
• Know the basics of iOS development
• Swift knowledge, maybe willing to learn Objective C
5. Industry requirements for a
professional iOS developer
Mid level
• Have at least one app in the App Store which is not a
sample project
• 2+ years of experience
• Know how to build an app from scratch and publish to the
App Store
• Objective C and Swift knowledge
6. Industry requirements for a
professional iOS developer
Senior
• Have several apps in the App Store (5+)
• 5+ years of experience as an iOS developer / 10+ in Software
Development
• Deep knowledge of Objective C and Swift and how to interface
between them
• Knowledge of complex subjects like memory management,
concurrency, git, unit tests, automated builds, continuous integration
7. Applying for an iOS
developer job
• Have an updated LinkedIn profile with links to
your apps or have a portfolio website
• Have an updated resume in word and pdf format
• Have apps or code written by yourself available in
Github/Bitbucket/Gitlab
• Apply and prepare yourself for the interviews
8. Applying for an iOS
developer job
Recruiter / HR person
(Technical) screening interview
Technical interview / On-site interview
Team interview / On-site
Recruiter / HR person
9. Applying for an iOS
developer job
Recruiter / HR person
(Technical) screening interview
Technical interview / On-site interview
Team interview / On-site
Recruiter / HR person
• LinkedIn profile / resume
• Match resume with the required
experience
• Behavior, behavior, behavior!
10. Applying for an iOS
developer job
Recruiter / HR person
(Technical) screening interview
Technical interview / On-site interview
Team interview / On-site
Recruiter / HR person
• Match resume with the required
experience
• Technical questions tailored to the
required experience and company
needs
• Could include real coding exercise to
be submitted after the interview
11. Applying for an iOS
developer job
Recruiter / HR person
(Technical) screening interview
Technical interview / On-site interview
Team interview / On-site
Recruiter / HR person
• Techical questions
• General software development questions
• Specific iOS development questions
• Whiteboard/paper coding exercises
• Real coding exercise / app
12. Applying for an iOS
developer job
Recruiter / HR person
(Technical) screening interview
Technical interview / On-site interview
Team interview / On-site
Recruiter / HR person
• Resume questions
• Techical questions
• Behavioral questions
13. Applying for an iOS
developer job
Recruiter / HR person
(Technical) screening interview
Technical interview / On-site interview
Team interview / On-site
Recruiter / HR person
• Company decision
• Offer negotiation
• Offer letter
14. The iOS technical interview
Algorithms and data structures
Design patterns
Tools (Xcode, Instruments, git, …)
Frameworks (iOS SDK, 3rd party libraries)
Programming Languages (Objective C, Swift)
15. Objective C
• Classes, instance variables, properties, methods, method signatures
• Memory management: ARC/MRC, retain cycles, strong, weak,
assign, initializers (designated, convenience), dealloc
• Protocols, Categories, Blocks
• Control flow: loops (for, for-in, while, do-while), fast enumeration,
switch, if-else, continue, break, return
• NSString, NSArray, NSDictionary, NSSet (and mutable counterparts),
NSNumber, NSDate, NSNull vs nil, NSURLSession,
NSJSONSerialization, NSError
• Interfacing with Swift and C/C++
19. 3rd Party Libraries
• Knowing how to discover and install 3rd party
libraries: Cocoapods/Github
• Networking: AFNetworking, AlamoFire
• JSON: Mantle, SwiftyJSON
• Alternatives to Core Data: SQLite, Realm
26. NASA Images
• Downloads pictures from the Astronomy Picture of
the Day website (https://apod.nasa.gov) and
shows the pictures in a scrolling table view.
• Uses NASA Open API web services
• Uses best practices: parallel downloads, smooth
UI scrolling while downloads are in progress,
provides a mechanism to refresh the UI, etc.
Networking
JSON
Image Downloader
29. Sample interview questions
1. What was the latest version of iOS you worked with? what
do you like about it and why?
2. Have you worked with Swift? What do you like about it?
What you don’t like?
3. How memory management is handled on iOS?
4. What do you know about singletons? Where would you
use one and where you wouldn’t?
5. Could you explain what is the difference between
Delegate and KVO?
https://www.linkedin.com/pulse/ios-interview-questions-senior-developers-alex-bush
30. Sample interview questions
6. How do you usually persist data on iOS?
7. How do you typically do networking?
8. How do you serialize data on iOS (JSON from the
web or local app data to Core Data and other
storages) ?
9. What design patterns do you know and use on iOS?
10.What is Auto-layout?
https://www.linkedin.com/pulse/ios-interview-questions-senior-developers-alex-bush
31. Sample interview questions
11.How do you handle async tasks?
12.How do you manage dependencies?
13.How do you debug and profile things on iOS?
14.Do you code review?
15.Do you test your code? What do you do to make
your code testable?
https://www.linkedin.com/pulse/ios-interview-questions-senior-developers-alex-bush
32. Advice
• Don’t waste your bullets
• Be honest
• Be precise
• Be respectful, be friendly, not arrogant
• Never give up with though questions