iOS Developer — preparing for a recruitment process, part 3: technical interview

This is the third article from my “iOS Developer — preparing for a recruitment process” series. You can read the previous articles here:

iOS Developer — preparing for a recruitment process, part 1: CV

iOS Developer — preparing for a recruitment process, part 2: technical screening

In this part, I’m going to cover a technical interview where you are asked the iOS specific questions. This interview is usually led by an iOS dev (or more than one) from a company that you applied to. I think a good approach and an attitude is not to take it as a test of your knowledge, don’t think that the second side wants you to fail or to find your iOS weaknesses. Try to think about your interviewers as the colleagues from your future team, you are just going to solve some programming problems together, as you do every day as an iOS developer :)

There are different types of the questions you may be asked during this stage of a recruitment process. Expectations in terms of your answers may differ based on your seniority level of course. Junior developers may be required to have a general idea about some concepts, whereas the senior ones should definitely have more in depth knowledge and know pros and cons of the solutions they go for.

Some of the most popular topics from the iOS world that you might be asked about are:

  • algorithms,
  • data structures,
  • memory management (Swift, Objective-C),
  • performing network requests,
  • class vs struct,
  • Autolayout,
  • design patterns,
  • SOLID,
  • polymorphism,
  • multithreading,
  • automated testing (unit, UI, snapshot tests, TDD).

Usually a technical interview consists of 2 parts: theoretical and practical one. In the second one you may be given some algorithm or data structure related programming challenges to solve or some companies prefer to give a sample iOS project with a table view or a collection view with a navigation to a details screen and you will need to fix some simple bugs, add some small functionality and / or potentially write unit tests. Pro tip: interviewers like seeing candidates following a TDD approach so make sure you try to write tests before an actual implementation.

There is one important thing about a practical part — your solution doesn’t need to be super efficient and super clean at the beginning. Try to come up with something that works first. Even if there won’t be any time to optimise it later, it will be a big plus for you as a candidate if you will be able to explain what your next steps in terms of an implementation and optimisation would be. Your interviewers completely understand that a time for your task is limited, they rather want to see how you think, how you approach solving problems.

One more tip: it’s really acceptable to say “I don’t know” if you don’t know something. No one knows everything about iOS, most of us need to use Google or Stack Overflow sometimes or just seek help from the colleagues from the team.

That’s all what I wanted to cover in this part of the series :) I hope some of you will find it at least a bit useful. Please let me know what you think about this article, share your feedback by DMing me on Twitter: @dammarpol. In the next article I will write about the last stage of a recruitment process: company culture fit + soft skills + team lead interviews. I’m aiming to publish it in 1–2 weeks :) See you then 👋