This is a practical guide to help you ace technical iOS interviews.
The book contains sample technical questions asked on iOS interviews at Silicon Valley companies.
In this book, I'll go through every question and provide not only the expected answer and red flags (things you should avoid saying) but also the reasoning behind both the questions and answers.
The book is broken down into chapters according to Layers of Responsibility most of the iOS application have such as UI/Autolayout questions, Storage/Core Data questions, Networking/HTTP questions, etc. It also covers fundamental iOS and Swift questions , resumes, and design pattern questions.
What you will get:
- 10 chapters over 193 pages covering topics ranging from Swift, resumes, and UI to Networking, Storage and Design Patterns
- 72+ interview questions and answers
- Big Picture overview of what there is to know on iOS platform
- Chapter on UI questions
- Chapter on Networking questions
- Chapter on Storage questions
- Chapter on Design Patterns and Architecture questions
- Chapter on Resumes, Github, and general "marketing" of yourself that you need to do to get interviews for better jobs
- A package of Swift Playgrounds with code samples in the book
Questions Covered In The Book:
- What design patterns are commonly used in iOS apps?
- What is MVC?
- What is MVVM?
- What are the common layers of responsibility that an iOS application has?
- What are SOLID principles? Can you give an example of each in iOS/Swift?
- How do you manage dependencies in iOS applications?
- What is Functional Programming and Functional Reactive Programming?
- What are the design patterns besides common Cocoa patterns that you know of?
- What are the challenges in working with UI on iOS?
- What do you use to lay out your views correctly on iOS?
- What are CGRect Frames? When and where would you use them?
- What is AutoLayout? When and where would you use it?
- What are compression resistance and content hugging priorities for?
- How does AutoLayout work with multi-threading?
- What are the advantages and disadvantages of creating AutoLayouts in code versus using storyboards?
- How do you work with storyboards in a large team?
- How do you mix AutoLayout with Frames?
- What options do you have with animation on iOS?
- How do you do animation with Frames and AutoLayout?
- How do you work with UITableView?
- How do you optimize table views performance for smooth, fast scrolling?
- How do you work with UICollectionView?
- How do you work with UIScrollView?
- What is UIStackView? When would you use it and why?
- What alternative ways of working with UI do you know?
- How do you make a pixel-perfect UI according to a designer’s specs?
- How do you unit and integration test UI?
- What is the storage layer for in iOS applications?
- What can you use to store data on iOS?
- What is NSCoding?
- What is NSUserDefaults?
- What is Keychain and when do you need it?
- How do you save data to a disk on iOS?
- What database options are there for iOS applications?
- How is data mapping important when you store data?
- How would you approach major database/storage migration in your application?
- What is HTTP?
- What is REST?
- How do you typically implement networking on iOS?
- What are the concerns and limitations of networking on iOS?
- What should go into the networking/service layer?
- What is NSURLSession? How is it used?
- What is AFNetworking/Alamofire? How do you use it?
- How do you handle multi-threading with networking on iOS?
- How do you serialize and map JSON data coming from the backend?
- How do you download images on iOS?
- How would you cache images?
- How do you download files on iOS?
- Have you used sockets and/or pubsub systems?
- What is RestKit? What is it used for? What are the advantages and disadvantages?
- What could you use instead of RestKit?
- How do you test network requests?
- What is let and var in Swift?
- What is Optional in Swift and nil in Swift and Objective-C?
- What is the difference between struct and class in Swift? When would you use one or the other?
- How is memory management handled in iOS?
- What are properties and instance variables in Objective-C and Swift?
- What is a protocol (both Obj-C and Swift)? When and how is it used?
- What is a category/extension? When is it used?
- What are closures/blocks and how are they used?
- What is MVC?
- What are Singletons? What are they used for?
- What is Delegate pattern in iOS?
- What is KVO (Key-Value Observation)?
- What does iOS application lifecycle consist of?
- What is View Controller? What is its lifecycle?
and much more.
Table of Contents:
- Step One: Figure Out what the Big Picture Is
- Step Two: The Interview Game
- Step Three: Learn the fundamentals
- Step Four: Get Productive with Networking
- Step Five: Learn How to Store Data
- Step Six: Go crazy responsive with UI layouts
- Step Seven: Beyond MVC. Design Pattens, Architecture, FRP, and Dependencies Management.
- Bonus Chapter: Storage Evolution (AKA You Don’t Always Need Core Data!).
You can find more detailed list of contents here: http://iosinterviewguide.com/table_of_contents