Interviews for candidates to iOS in Swift developer are usually oriented towards determining the knowledge the developer has about the environment and use of exclusive tools that are only used in this operating system.
It is key to ask the programmer regarding his experience with UIKit and project structure using the MVC (Model, View, Controler) pattern. In the application development for iOS, learning about designing patterns is important, since usually many technologies use them, that is the case of Cocoa, where using the delegate pattern is very popular.
Best practices from the iOS developer
Apple’s environment it usually quite demanding, taking into account all the policies they have in order to upload applications to the store and, in terms of development, as was said before, usually several designing patterns are used, which is why it is important that the candidate works based in best practices and correctly implementing elements such as:
- Apple guidelines, meaning, following all the security instructions, performance, business, design and legal matters that Apple defines in order to have an application in the store.
- CocoaPods, works as a dependencies administrator for the project.
- Keychain, to avoid other applications from accessing sensitive data.
The questions for the candidate can be oriented towards his knowledge on Swift language, some very popular ones that can give us an idea of the programmer’s expertise level are:
- What is the init() in Swift method good for?
- What is the difference between Let and Var?
- What does optional chaining consist of?
- What are Lazy stored properties and in which case are they useful?
- What are Enum used for?
- What is a Dictionary?
- Explain the adapter and Memento patterns in Swift
- What are the differences between Struct and Class?
- How can you make a property optional?
Take-home tests as a complement to the interview
A project that can test a developer’s skills is a “news reader”. The candidate can be provided with an API which needs to consume and implement several features in its interface and functioning. Let’s see what it is about:
- The application must have a view that shows the list of articles, with their corresponding categories and an image for each story that comes from the API.
- It must have a view with details of the story, showing its category and author.
On top of the basic functionalities, the application must be quick and efficient when using the user’s data, those technical features can be:
- The application must optimize the download of images by storing in cache.
- It must do the download of images in an asynchronous way.
Projects to be resolved home should take no longer than a week, in fact, if it is something the developer can do in 1 or 2 days, it would be much better. On the other hand, this project should be delivered in a Github or Bitbucket repository, so that someone in the company can review it in detail.
The main thing for doing a code review is focusing on the best practices, having into account items such as separation of the responsibilities of the components or the injection of dependencies at the right times, will help us make the best hiring choice.