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.
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress, bookmark, personalise your learner profile and more!
Create accountAlready a member of Kodeco? Sign in
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress, bookmark, personalise your learner profile and more!
Create accountAlready a member of Kodeco? Sign in
Contents
Navigating the iOS Interview
30 mins
- 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
- Networking
- Where to Go From Here?
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
- 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:
- Our Data Structures & Algorithms in Swift or our Swift Algorithm Club
- YouTube course on data structures by mycodeschool
- Intro to Algorithms CS Course (free course by MIT)
- Our GitHub page on Big-O Notation and the Big-O Cheatsheet
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!
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:
- CoderPad: The industry standard IDE for technical interviews.
- Google’s coding interview video.
- Interviewing.io: Practice interviewing anonymously. If you do well, you’ll get invitations to interview with top companies right on their platform.
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!
- Repeat the problem to yourself out loud.
- State your assumptions, if you have any.
- Ask questions if you feel like something is unclear or ambiguous.
- Repeat the problem back to the interviewer, in your words.
- Ask them if your interpretation is correct.
- Rinse and repeat, as needed.
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!
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.