Book Image

The Ultimate iOS Interview Playbook

By : Avi Tsadok
Book Image

The Ultimate iOS Interview Playbook

By: Avi Tsadok

Overview of this book

As an iOS developer, you must possess a diverse skill set encompassing Swift coding, design knowledge, and mastery of development tools. And while the demand for iOS developers remains high, the competition for landing your dream job has intensified in recent years. Being a skilled iOS developer is no longer enough — acing interviews is now just as essential as having technical expertise. In The Ultimate iOS Interview Playbook, you'll discover innovative ways to stand out as an iOS developer and pass every job interview. It will guide you to build your developer brand and present your skills to potential employers. This comprehensive guide covers over 100 interview questions, from Swift fundamentals and frameworks to complex design patterns and app architecture. You'll learn how to approach coding assessments like a pro and avoid red flags that could hinder your chances of success. Drawing from the author’s experience of interviewing hundreds of iOS developers and having been a candidate themself, this book addresses the challenges of showcasing your skills and knowledge within a limited timeframe. By the end of this book, you'll be ready to excel in any iOS interview, demonstrating your strengths and confidently tackling even the most challenging questions, ultimately paving the way to secure the job you've always wanted.
Table of Contents (20 chapters)
1
Part 1: Everything about Interviews
5
Part 2: Swift Language and Coding
9
Part 3: The Frameworks
14
Part 4: Design and Architecture

Performing company research

Many candidates may find the next sentence strange, but some fail in iOS interviews, because they lack knowledge about the company they’re interviewing for. Do you believe that? The truth is that mastering UIKit or SwiftUI is essential, and being a Swift expert is crucial, but the workplace profile is just as important.

Think of working in a company as a long-term relationship and the interview process as the blind-date meeting where it all started. Remember the excitement, the research we did with our friends, or the questions each of you asked during the session. Well, the job interview is your first date. Dress nicely!

A job interview is a bidirectional process. During the interview, we examine the workplace just as much as the workplace examines us.

The primary reason for learning about the company we’re interviewing for is apparent: we want to ensure our next workplace fits us like a glove. But there’s another reason. It will be constructive during the interview process if we are familiar with the company, its product, and the market.

Before starting the interview process, we should build a company Profile where we can learn everything about its culture, size, working environment, and more. There’s official and unofficial information that we can retrieve, and both are essential to our readiness.

Why? Let’s find out!

Knowing where you’re going is part of the interview

Here’s a secret you can find only in this book: many interviewers check our knowledge, not only in iOS development but also regarding the workplace itself. Sometimes, it can make a difference when comparing candidates with similar coding skills!

Interviewers look for enthusiastic, self-confident candidates who are familiar with the product, the market, and the industry.

The preceding knowledge leads to another side of our personality that we want to show: that we are mature, serious, and conducted comprehensive research before we came to the interview. This side of us tremendously boosts our chances of succeeding in our role, and that’s something interviewers look for.

Company profiles affect our answers

Believe it or not, some company characteristics may influence our answers, especially regarding design and architecture questions. And that’s something we will learn in the book. In many cases, interviewers want to see gray colors in our personality, not just black and white.

I mean that we always need to balance our answers and understand that there are pros and cons to almost any question. Answering a question with the mindset of the company we are interviewing for can really make a difference in how it looks to the person’s eye who is interviewing us at the time.

Learning the company characteristics

What are the things we need to look for when doing our research? What builds our company profile?

Generally, the company profile is divided into three parts: product and industry, company details, and working environment. I think that all of them are important in one way or another to start understanding where we are interviewing and if and how the workplace fits our needs.

Let’s see how we build each part.

Product and industry

In a job interview, I can’t begin to describe what it means to be familiar with the company’s product or industry. Let’s talk about what it does to us as interviewees.

First, it increases our self-confidence. We feel in control when we understand the broad ecosystem around our interview process. When the interviewer talks about the company and its product, we can quickly understand what he is talking about. But moreover, knowing the product will point our answers in the right direction and context. There’s a big difference between answering an architecture question when interviewing for a social app company and an advertising company building an SDK. In an iOS development world, these are two different creatures. We will go over that in Chapter 12.

And second, asking the interviewer intelligent questions about the company shows that we did our homework and know what we’re talking about. In most places, that counts for a lot.

Retrieving company details

Company details are our company profile’s most accessible and shortest section. There are a couple of questions we should ask ourselves before and during the interview process. These questions can give us a clue about whether this company is suitable for our needs.

The questions that we should ask are essential and intertwined:

  • What is the company size?
  • Where is the company currently in its life cycle?
  • Is the company public or private?

You may not find these questions necessary, but as a matter of fact, they have a tremendous impact on your career as an iOS developer and even beyond that.

Let’s discuss each one in detail and start with the first one – company size.

Considering company size

There are three company sizes: small, medium, and large.

In the USA, a small tech company is considered to have fewer than 100 employees, a medium tech company employs under 1,000 employees, and a company with over 1,000 employees is considered to be large.

Even though these definitions are not identical in different countries and industries, in our discussion, it doesn’t matter much. What matters is what it means to us as employees.

Small companies allow us to produce a more significant impact on the company and its product. It usually means working in small teams; sometimes teams that are one person only(!). And because these companies are small, they also give us an intimate feeling, which comes with a good work/life balance. Another pro for small companies is the pace – it’s much faster. The fast pace is mainly because small teams have simplified working flows. Small companies also have downsides. They are mostly less stable than bigger companies and have less room to grow your career.

Large companies are the opposite. Even though they are much more stable, the employee has a much smaller impact on the company product and its path. To gain more influence in large companies, we need to move up in the hierarchy, which, unlike small companies, is much easier. Also, the pace of development is much slower due to more dependencies between teams and company regulations.

In a way, medium companies are like a mix of large and small. They still provide an intimate family environment while being more stable than small companies. Therefore, it is not surprising that medium companies are the preferable firms by most tech workers. The combination of stability, a warm environment, and fast development pace fulfill the preferences of most people in the industry.

But looking at company size as the only indication of suitability is perhaps too superficial. As stated earlier in this section, there are more factors you need to take into consideration, for example, where the company is in its life cycle.

Analyzing a company’s life cycle

Companies have a life cycle like humans and any other living creature. You might ask yourself now, “A living creature?”

Yes! Like humans, companies have an age, DNA, innovations, ideas, and many other characteristics.

The following diagram shows a start-up company’s life cycle:

Figure 1.1 – A start-up company’s life cycle

Figure 1.1 – A start-up company’s life cycle

Companies are born, and they grow, mature, and sometimes even decline and die. And just like a human, each stage of their life cycle has its own excitement and risks. As a result, when searching for a company, one thing to look at is the stage in its life.

The company’s stage may point to the working atmosphere we might experience. It can tell us the opportunities and whether the company is at a stage where everything is ticking, or if we need to set up workflows from the ground up.

Another deeper aspect we need to look at is the life cycle of the mobile team itself. The company can be mature, but the mobile team was just born. Regardless of the different opportunities a new team may have, there can also be differences in the technology it uses, and that’s also a critical issue in our interviews.

In many cases, interviewers tend to ask questions about the technology they use or want to use in their projects. For example, if we’re talking about a mature mobile team, its developers probably use UIKit and might even use Objective-C (God forbid!). In this case, expect questions about UIViews or Objective-C categories and blocks.

Also, in mature teams (and mature products), the project might contain legacy code, which can be painful to deal with and sometimes requires refactoring.

When we perform our company’s research, we must ask the right questions about the company’s stage, the team, and the project. The answers we’ll get can give us an overview of what we might expect in our interview and the workplace.

Now, notice that the question, “In what stage is the company right now?” is not always a straightforward question, and not all interviewers can answer that easily. You need to dig in a little bit deeper when asking questions and conclude yourself. One of the things we need to consider when analyzing the company’s state is whether it is public or private.

Deliberating between public and private

The difference between a public and a private company is pretty simple: its ownership. A private company is owned by one or a few individuals, while a public company is owned by shareholders who have bought stock.

It is difficult to say which type of company is “better” to work for, as this will depend on an individual’s personal preferences and career goals. Some developers may prefer the stability and potential for growth that a large public company can offer. In contrast, others may prefer a smaller private company’s flexibility and entrepreneurial spirit.

If you are confused between the “public versus private” and the “large versus small” argument, it is not a coincidence. Public companies are generally more prominent. They are more structured, while private companies are considered to be smaller.

But there’s much more than just size. The ownership difference has an impact on the company culture. For example, in public companies, the decision-making process is more complex due to the need to consider the interests of the shareholders. That’s not the case with a private company with a more agile and faster process.

But I want to clarify this point: we can still find a “start-up” atmosphere in a public company and corporate vibes in a start-up company. Therefore, it is essential to sense the working environment and consider the results.

Let’s see what factors we need to look at.

Sensing the working environment

Believe it or not, coding is not everything in life (but I agree it’s a lot)!

The product can be excellent, and the team can be super strong. But, if you want to develop not only iOS apps but also your career, you need to work in a supportive environment that can make this happen.

There are several questions we can try to discover about a company’s working environment:

  • What is the company’s hierarchy? Is it flat or hierarchical?
  • How are the research and development (R&D) department and the mobile team built?
  • What is the average working day like? Do we have daily or weekly meetings?
  • Are there any code review sessions? Who can do code reviews?
  • How is the work/life balance procedure?
  • Is there an option for an iOS developer to write backend code and be a full-stack developer?
  • Is there shared knowledge between the iOS team and the Android team?
  • What is the involvement of the iOS team with other aspects of the company, such as the product?

The primary issue with these questions is the fact that it is hard to get reliable answers from the interviewer. I’m not saying he is a liar! But remember, one of the interviewer’s goals is to market the company and the iOS team. However, one of your goals is to get the most authentic answers, and these two goals do not always fit in.

Always take what the interviewer says with a grain of salt and reach for the truth yourself.

So, next, let’s talk about obtaining some helpful information and see how we build an unofficial profile.

Building the unofficial company profile

We learned how to perform a basic company profile using basic questions in the Learning the company characteristics section.

Now that we made sure the company’s “dry details” fit what we need and require, it’s time to dive deeper and collect some unofficial information about the company. There are three ways of doing that: research, research, and… research!

Analyzing job postings

You can learn a lot from analyzing the job description. Moreover, it doesn’t have to be the iOS developer job description, but any other roles in the company. By reading the job description, we can reveal how the company prioritizes its values even though the company probably didn’t mean to share that prioritization with us.

For example, if, on the one hand, the job description emphasizes how it’s essential to meet deadlines, it shows happy hour events and talks about loyalty. Still, on the other hand, they say nothing about flexibility, it may be a good indication of how the company feels about work-life balance. If the job description describes the atmosphere as dynamic and young but doesn't mention professional and strong, it may be a good indication of what code reviews will look like.

Remember, nothing is set in stone, but collecting puzzle pieces is vital to see the whole picture.

Looking at social network profiles

Just like job postings, looking at the company’s social networks such as LinkedIn, Facebook, Twitter, and Instagram can give us a sense of the company’s ambience. For instance, we can see how many beach days the company holds versus professional events such as meetups and lectures.

We can open the company page on LinkedIn and see interesting stuff such as diversity, leadership, and more.

Social networks can provide us with interesting inside information about companies that we won’t get in interviews or the company’s website.

Another interesting thing is what employees, customers, or partners share. Do you feel that they are pleased or unhappy? Do people stay long in this company, or does it look like a revolving door? Do some spy work! It’s perfectly legit and helpful.

Browsing the company website

The company website is another excellent place to find additional details about your dream workplace. Besides products, you can discover interesting information, such as company values, leadership, and more.

But you can find even more fascinating information, such as the company blog and events. Many companies hold professional blogs where employees can post articles related to their work.

A professional blog maintained by employees can indicate that the company puts developer branding on top of their minds. If that’s important to you, a blog can add some points to the equation.

Talking with employees

This is probably the best way to understand what it feels like working in the company you are thinking of applying to.

Today, the world is more connected and linked than ever, and it’s effortless to approach almost anyone you want.

LinkedIn’s company page is probably the simplest way to connect to iOS (or even Android) developers that currently work or worked in this company. Tell them you are considering applying and want to consult with them.

Before the talk, write questions about the information that is much more difficult to receive in other channels. This inside information is precious, so prepare seriously for that talk.

Here are some examples for questions:

  • What are your working hours? Do you work from home as well?
  • What technologies or design patterns have been added to the project since you started working there?
  • Are you doing tech design for features? If so, who’s writing them?

We should always take what people say with some doubts, so asking direct questions can be tricky. Every person we talk to is different, and each has a different history and experience with their working place. What we do need to do is to listen to what’s not being said and try to notice any subtext in the conversation.

For example, we can ask them, “What do you like about the company?” Obviously, they will list things, such as company events and perhaps the people they work with. If they won’t state something such as “high standards,” it doesn’t mean they do not exist, but if several workers don’t mention that, it could be a good indication that they’re not something the company is focusing on.

Being a good detective or investigator can sometimes pay off!

Glassdoor

Glassdoor is a website that allows employees to review their workplace anonymously. Isn’t it what we tried to achieve a minute earlier? Good for us!

Moreover, Glassdoor provides additional benefits, such as the ability to see not only workers’ reviews, but also candidates’ personal experiences from the process while describing the interview, the office, and even interview questions and coding tasks. Sites like Glassdoor are a treasure for candidates who want to perform advanced company research and can prepare us for the interview day.

Come to the office early

This is one of the lesser-known tips in company research, yet it is still very effective. When you are invited to the first on-site interview, early always looks good. It shows that we are serious and mature, and there’s no worry that it can cause negative effects.

But coming early has an additional benefit. It’s an excellent method to experience how a day looks in the office. We can sit in the office, make a coffee while waiting, and listen to what employees say.

Do they talk about work? A specific problem? Are they working in different teams (so we can tell the collaboration level)?

If it’s morning, how many workers do we see in the office? This can be an indication of working hours or work-life balance.

Remember, we won’t always hear the complete truth during the interview process regarding different information about the workplace, so seeing things through your own eyes is immeasurably valuable.

To summarize, knowing where we go can make us more ready for the interview process, and it helps us understand if the company we are interviewing for fits our requirements.

As I said earlier, interviews go both ways. We examine the workplace just as much as it examines us. And since it is going to be our next “home,” we should invest effort in it as much as we can.

Now that we have done our company research, we need to move forward and apply to those companies. The most popular way to do that is by building our resume.