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
You are currently viewing page 2 of 4 of this article. Click here to view the first page.

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.

Panda intimidating a bird during an interview

With the right mindset, solving these problems can also be quite fun and addictive!

The general topics that this interview covers are:

  • Data Structures
  • Algorithms
  • Time and Space Complexity (Big-O)

Preparing for the CS Fundamentals Review

You will undoubtedly have to spend significant time studying and preparing for this type of interview, no matter your skill level. I suggest you divide your time between learning and practicing. If you get bored with one, switch to the other.

Learning CS Fundamentals

If you don’t have a traditional computer science background or need a refresher, take a look at these resources covering the three main topics above: data structures, algorithms and complexity analysis:

Practicing CS fundamentals

Once you feel like you’ve nailed down a certain topic, you’ll need to practice it. Learning by doing beats learning by reading any day! For this interview, you’ll either have to do it online in a text-editor or in-person on a whiteboard. That’s probably not how you spend your days, so put yourself in these unnatural scenarios as much as possible to get comfortable.

It might sound silly, but the physical activity of whiteboarding is more difficult than it sounds. Get yourself a whiteboard, stand up and write the solutions out. The financial investment is negligible compared to the financial gain you’re about to get if you do well!

Practice makes perfect

If your interview is happening online, make sure to practice coding in a text-editor without autocomplete like CoderPad. You’ll be surprised at how challenging and time-consuming this is until you’ve done it a number of times.

The last tip is to record yourself as you go through the problems. Watching yourself go through a problem will give you great insight into what you’re doing well and what you can improve. This is particularly useful for improving how you communicate your thought process.

Ready to work on this? Here are some resources to help you:

  • Interview Cake: One of my personal favorites, because it intertwines just-in-time theory, many practice problems and hints along the way. It a wonderful learning experience!
  • Leetcode: The leading interview preparation platform with over 1500 questions ranging from easy to hard, and forums to discuss solutions.
  • HackerRank: A website similar to Leetcode but with more real-world questions.
  • Cracking the Coding Interview: An incredible resource covering nearly every aspect of the interview process.
  • Swift Coding Challenges: Paul Hudson’s book for Swift specific questions.
  • Our iOS community’s favorite questions: A GitHub page listing.

Other resources for preparation include:

Your Approach to the CS Fundamental Interview

While there are many questions and answers to look at, getting the answer “right” is only about 10-20% of your assessment. It’s more about your thought process and the path you take to get there. We’ll break it down into five steps, so buckle down!

  1. Repeat the problem to yourself out loud.
  2. State your assumptions, if you have any.
  3. Ask questions if you feel like something is unclear or ambiguous.
  4. Repeat the problem back to the interviewer, in your words.
  5. Ask them if your interpretation is correct.
  6. Rinse and repeat, as needed.

Tech Interview Process Steps

Here’s a link to the full example questions and answers.

When you feel like you have a good grasp on the problem, start thinking about how to solve it. Take a little breath to consolidate your thoughts in silence, and then start sharing them with the interviewer. It’s essential that they understand your thought process. They’ll get a glimpse into how you work and think. They’ll also help you along the way if you get stuck. Engage them and regularly ask for their opinion at decision points!

Once the interviewer has given you the go-ahead on your direction, start laying out the solution in pseudo-code.

Now that you have the structure of what you want to build, it’s time to translate what you described into proper code. Continue speaking out loud as you write out the code.

Once you’re happy with the outcome, go through the test cases they gave you to check if your algorithm checks out. Try out a couple of edge cases as well, to show that you’re thinking beyond what you were given. Fix your code before ultimately putting it up for tribute!

Once everything checks out and your interviewer is pleased with the result, it’s likely you’ll be asked to analyze the runtime of your code. This means Big-O analysis. Once you’ve finished this, you’ll move on to the next question!

Happy Swift

Here are a few additional tips for performing well in these types of interviews:

  • Use clear names for variables and functions.
  • Stop if you know you won’t have enough time to actually write everything out. Don’t try to rush. Instead, take the interviewer through the steps you would have taken, if you had more time.
  • Don’t get distracted if your interviewer isn’t showing any emotions. They’re supposed to look indifferent to avoid any sway in your decisions.
  • Ask if they want your code to compile at the end. When writing pseudo-code, we don’t necessarily adhere to the syntactic rules of the language, even though the interviewer might be expecting it.

To see these principles applied to an actual problem, check out this GitHub repository: CS Fundamentals Example.

The Higher Level Interview

Besides the Practical and CS Fundamentals interviews, you also need to be prepared for a higher level interview. This type of interview aims to understand your level of experience across a broad set of iOS and software development topics. It includes open-ended questions conducted in a conversational style.

Although it usually doesn’t include implementation details, you might have to draw a diagram or two to visualize certain concepts. It broadly covers topics on software development, architecture, the Swift language and the iOS community. You can probably expect a higher level interview at the start or end of the interview process as the interview that decides your seniority.