Navigating the iOS Interview
- The Interview
- The Practical Interview
- A Practical Challenge
- The Practical Approach
- Practical Resources
- The Computer Science Fundamentals Interview
- Preparing for the CS Fundamentals Review
- Learning CS Fundamentals
- Practicing CS fundamentals
- Your Approach to the CS Fundamental Interview
- 1. Understand the Problem
- 2. Think Through the Solution Aloud
- 3. Propose and Discuss Solution in Code
- 4. Write and Test Code
- 5. Optimize and Improve
- 6. Additional Tips
- The Higher Level Interview
- Preparing for the Higher Level Interview
- Resources for the Higher Level Interview
- The iOS Specific Interview
- Resources for the iOS Specific Interview
- The Behavioral Interview
- Motivation for the Job
- Your Competencies
- Your Approach to the Behavioral Interview
- Resources for the Behavioral Interview
- Other Job-Finding Tips
- Finding Remote Job Leads
- Reaching Out
- Ask Questions!
- Your Portfolio
- Where to Go From Here?
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.
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:
- Computer Science Fundamentals
- Higher Level
- Framework Specific
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!
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.
For this purpose, we’ve created a raywenderlich take-home project challenge.
You can take some visual inspiration from the official raywenderlich.com app.
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:
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.
- Good Swift documentation at NSHipster.
- Official raywenderlich.com Swift Style Guide.
- List of companies that use practical interviews only: No Whiteboards website or Hiring without whiteboards GitHub page.
Well-explained take-home challenges for practice:
Fun APIs to get some practice with:
The Computer Science Fundamentals Interview
You may find that the computer science fundamentals interview quite challenging. To prepare for it, you’ll need to practice and memorize solutions to arbitrary logical riddles that will hardly ever appear in your day-to-day work life. Alas, many companies employ it, because it produces an outcome that’s easy to objectively evaluate.
With the right mindset, solving these problems can also be quite fun and addictive!
The general topics that this interview covers are:
- Data Structures
- Time and Space Complexity (Big-O)