Prepare for your interview

Completed

As a software developer, you're likely to encounter various types of interviews that will assess your technical skill level and analyze your ability to function on a team. How you should prepare depends on the type.

It's important to spend time honing your technical skills, but working in teams and collaborating with people from many disciplines will likely be crucial. So be prepared to demonstrate or speak about those abilities.

Types of interviews

Depending on the size of the company, you might go through as few as two and as many as ten interviews. Some companies carry out interviews in one or two days, while others take more time.

Types of interviews include:

  • Human resources. Early in the interview cycle, you'll talk with someone who represents recruiting, which is typically part of human resources (HR). Here, you have the chance to ask questions about company culture, pay, benefits, and other practical information. If this happens in the beginning of the cycle, ask as many questions as you can because that helps you prepare for what's next.

  • Coding. In this interview, you're tested on your coding skills. There might be more than one of this type of interview, and it can take the form of a take-home test or questions over the phone. There will probably also be a face-to-face version of this interview where you're either asked new questions or asked to explain code you've already written in a previous step. The interviewers might be future colleagues from your intended team or from another team.

  • System design. If you're a little more senior, you're likely to encounter an interview type that assesses your ability to design systems. The idea is to evaluate whether you understand how to build more complex applications that might have dependencies on other systems.

  • Manager. You're likely to have an interview with a prospective manager. This is a chance for you and a manager to assess one another. The manager wants to see if you'll add value to the team. You should evaluate if this manager is someone you'd like to work with.

Categories of technical knowledge

No two tech companies are the same, so knowing how to prepare for different interview processes can be tricky. In general, the technical aspect of interviews can be divided into two categories: algorithm focused and enterprise focused.

So, how can you guess the kind of interview that your prospective company will assign? You can do research to discover your target position's expectations. You should also ask your recruiter what to expect and if they have materials to help you prepare.

Algorithm focused

An interview that focuses on algorithm challenges involves tasks where you're asked to implement things like binary trees and shortest-path problems. You're given a specific problem. You're then expected to do two things:

  1. Select an appropriate algorithm for the problem.
  2. Understand the algorithm's limitations and understand what happens when it scales. The concept of scaling implies that when the input to a function increases, your algorithm should perform well.

Algorithm performance is denoted as O(n), also known as Big O notation. This blog post can help you understand how to calculate Big O.

You'll be asked about algorithms and their performance to get an idea of your grasp of software performance and, more importantly, your ability to explain it.

Preparing for an algorithmic interview

Many websites are dedicated to interview preparation. In fact, many recruiters recommend preparing for interviews by practicing with some of the following platforms:

These platforms offer problems that you can try to solve in various programming languages. You're usually assessed on how well you solved something, which means a solution that simply works receives a lower score than one that's optimal.

Tip

It's worth bookmarking some of those sites for later study.

Additional sources for practice

Another way to practice is to use well-known books that contain sample interview questions and solutions, along with strategies for interview success. Here are examples:

GitHub has become a great source of knowledge on preparing for tech interviews. Here are a few popular repositories:

Enterprise focused

Some technical interviews are focused on enterprise software, so-called line-of-business (LOB) applications. Challenges might revolve around maintaining applications and refactoring old code. The interview focus is less on performance and more on integrating systems.

Working as a software engineer at a company like this entails knowing how to manage code written in various styles and frameworks. You might need to change code into something more manageable, known as refactoring, or maintain the code as it is by fixing bugs and adding features. Integrating applications with one another by using techniques like import tasks and message queues is also an important aspect of the job.

The skill set needed to work with such code is specialized. You might not need to focus on writing the most performant algorithm, but you do need to understand architectural patterns and when to use certain patterns.

Preparing for an enterprise code interview

To prepare for an enterprise-focused interview, you need to read up on patterns. It's also a good idea to use something called katas. Katas, whose name is derived from karate, are exercises that help you practice solving common problems.

By practicing a specific exercise, you learn the exercise and, over time, how to solve it better. This way of practicing builds a skill that will be useful in your everyday life as a coder. Katas are not for beginners only. They're for anyone looking to hone their skills in the industry.

Here are some links for those topics:

Language or framework context

For your interview, some companies will let you program a problem in your language of choice. Other companies expect you to use a specific language or framework.

To prepare for such interviews, you need to research how to best do things in a language or framework. For example, for JavaScript, you're likely to get questions on how the language works and its patterns. But for .NET, you might be asked how to solve problems given the framework.

Prepare for context

You can usually use a search engine to find the most common questions asked for a programming language or framework. Here are two links for JavaScript:

A great way to prepare for questions about a certain language or framework is to implement many small projects that will make you learn things in a better way. Here are two suggestions:

Reach out

Spend as much time as possible preparing by trying to solve various problems, but also don't be afraid to reach out to the recruiter or recruitment team and ask for guidelines and materials. Some companies actually offer interview coaches. Having these kinds of materials can help you focus on what a company believes is important.

Some companies will send "how to prepare" material to candidates. We recommend that you reach out proactively to ask for interview preparation materials if you don't receive them from the company.

Tip

Be brave! Ask for guidance and preparation content. Doing so shows interest and might increase the likelihood that you pass the interview.

General guidelines

Now that you have some bookmarks for resources, let's focus on some general guidelines. Remembering and following these guidelines during the interview will help you be seen as a good candidate with a great attitude.

Note

Although it's important to prepare for the technical side of an interview, don't forget to mind your manners! Even if you're a star at algorithms, behaving poorly might disqualify you. You have the right to expect the same courtesy and professionalism in return.

  • Account for work history. If you have a gap in your resume, ensure that there's a reasonable explanation for it. This is something you can bring up at the interview, and the company is likely to ask, so be sure to have an answer prepared.

  • Avoid speaking ill of former employers. Although it's understandable that there's a reason why you left a position, it's best not to bring this up in an interview. If you're asked why you left, speak about it as a moment that helped you grow as a person rather than as a negative experience.

  • Be professional. Get to your interview on time. If you're delayed, contact the interviewer to alert them.

  • Convey being a team player. Being a developer is about being a team player. Convey your understanding that you didn't deliver a big project by yourself. Explain your role in the project's success, but try not to boast. Be humble but confident.