Navigating the iOS Interview

Looking for an iOS job? This article gives you the best advice, tools and interview questions to prepare you for a successful iOS interview process. By Lea Marolt Sonnenschein.

Leave a rating/review
Save for later
Share

We’re going through some uncertain and turbulent times. The COVID-19 situation has flipped our plans and expectations upside down. Many people have lost their jobs because companies can’t keep afloat. On top of that, students graduating right now are facing a very confusing job market and hiring process. If any of this describes your situation, or you’re just looking for an iOS job and want to prepare for an iOS interview, this article is for you!

At raywenderlich.com, we want to do what we can to support our community. This article aims to equip you with the best advice and tools to prepare you for a successful interview process.

I know interviewing seems a bit scary, especially when the job market is scarce. But you can also look at this as an opportunity for you to clarify and deepen your knowledge of a topic that you’re already really passionate about. So, get pumped!

The Interview

The iOS interview is conceptually similar to other interviews for software engineering roles, but differs when it comes to specifics around implementation and frameworks. As such, an iOS interview will typically consist of a combination the following interviews:

  • Practical
  • Computer Science Fundamentals
  • Higher Level
  • Framework Specific
  • Behavioral

In this article, we’re going to go through each of them to learn what they’re like and what the interviewer expects. For each type, I’ll give you some example questions, answers, tips for preparing and resources for further reading.

Before we start, though, here’s the best piece of advice I can give you: No one single list of questions will prepare you for everything. Reading this article will give you many great tools to prepare, but it’s on you to do the work. Practice makes perfect. Time to dive in!

  • Take a deep breath and slow down as you start to answer a question.
  • Ask clarifying questions whenever you feel a shred of doubt or ambiguity.
  • Practice speaking your thoughts out loud, coding on a whiteboard and using a text-editor without autocomplete.
  • Think of the interviewer as a colleague and ask for their opinion as you answer their questions.
  • Go through all the resource links in this article; they’re top notch, especially Cracking the Coding Interview!
  • Remember that getting the answers right is great, but your thought process behind them is way more important.
  • Recognize that the hiring process is annoying for everyone; the interviewer is on your side and wants you to succeed.
  • Believe in yourself and act confident. You’ve got this!
There is a lot to read in this article, so here’s the TL;DR:
  • Take a deep breath and slow down as you start to answer a question.
  • Ask clarifying questions whenever you feel a shred of doubt or ambiguity.
  • Practice speaking your thoughts out loud, coding on a whiteboard and using a text-editor without autocomplete.
  • Think of the interviewer as a colleague and ask for their opinion as you answer their questions.
  • Go through all the resource links in this article; they’re top notch, especially Cracking the Coding Interview!
  • Remember that getting the answers right is great, but your thought process behind them is way more important.
  • Recognize that the hiring process is annoying for everyone; the interviewer is on your side and wants you to succeed.
  • Believe in yourself and act confident. You’ve got this!

The Practical Interview

Let’s kick this off with one of my favorite types of interviews: the practical one. This interview can either be a take-home project or a pair-programming assignment on the spot. I like these interviews because the tasks truly mimic what you’d be doing on the job. Many technical interviews fail in this regard.

I’m particularly in favor of take-home tests, because they remove the stress of an on-site interview and ensure that everyone gets evaluated objectively. Also, practical interviews can be fun because they tend to be open-ended and allow you to express your skills, creativity and way of working.

Some of the most common examples of tasks to do are:

  • Fetch some JSON and display the results.
  • Add a new feature to an existing code base.
  • Find a bug in an existing project.
  • Implement a specific, core company feature.

A Practical Challenge

Instead of providing you with an example we’ve come up with, we want to give you the chance to get some practice in and receive real feedback! Your challenge, if you choose to accept it, is to create an iOS app that beautifully displays the raywenderlich.com articles in all their glory.

Article stack

For this purpose, we’ve created a raywenderlich take-home project challenge.

You can take some visual inspiration from the official raywenderlich.com app.

raywenderlich.com App Screenshots

Once you’re done, submit a PR to the main repository. You can also compare your work to others who have submitted results so far, such as these two which we recently reviewed live:

  1. Implementation by Md Abir Hasan Zoha
  2. Implementation by Giuliano Soria

The Practical Approach

With an open-ended, project-based task, ask clarifying questions first to ensure that you understand what the company is looking for. They might expect you to follow a certain coding style, see how you’d implement a particular architectural pattern or want you to use certain iOS-specific frameworks. Make sure you understand the requirements first; but once they’re clear, it’s off to the races!

For success in your take-home project, make sure it:

  • Has good documentation and use of comments.
  • Has a clear and well-defined architecture.
  • Is easy to build and run.
  • Does not have warnings, errors or crashes.
  • Is easy to understand.
  • Is tested, if appropriate.
  • Includes a brief description of how it addresses the brief.

If the project has a time limit, try not to dramatically exceed it! It will definitely show if you spend twenty hours on a project that was supposed to take only two. Also, try to avoid third-party libraries, because they’ll undermine your abilities. If you must use them, make sure to explain why.

Practical Resources

Well-explained take-home challenges for practice:

Fun APIs to get some practice with: