The six questions you meet in your software engineering interview

six types of questions

When people say “coding interview”, they are usually referring to whiteboard interviews. After all, those have become the mainstay of evaluating software engineers at modern tech companies.

Some companies, however, are moving towards other methods of evaluation, often doing multiple interviews of different types during a single onsite visit. Each type of interview question has its own quirks and requires different preparation.

Whiteboard Interview Questions

Hands down the most common type of interview, this format involves solving programming problems by writing code on a whiteboard (or piece of paper). These problems generally involve solving an algorithmic problem, like any of the practice problems we have here. (LINK)

Why they ask it

Whiteboard coding interviews have been around forever. Before laptops were readily available, companies would conduct interviews on whiteboards simply because it was easier. Old habits die hard, and this is one of them.

However, there are also more legitimate reasons that companies continue to opt for whiteboard coding interviews. Take a moment right now to write a short function down on a piece of paper in your preferred language.

Was it easy? Most likely, you realized some of the crutches that you rely on in your everyday coding. From IDEs to autocomplete to debuggers, there are a lot of tools that exist to make programming easier, but also make it more difficult to test someone’s raw programming ability.

Removing programmers from their natural environment, the argument goes, forces them to focus more on solving the problem at hand without being able to fall back on all the tools that they normally use. This also tests the programmer’s knowledge of a language, when they can’t look up syntax or specific method names.

How to prepare

With whiteboard coding interviews in particular, the key to doing well is simply to practice. Since coding on a whiteboard is likely very foreign to you, it is almost guaranteed to go poorly unless you’ve done it before. And when combined with the stress of an interview situation, being comfortable coding without a computer is one less thing to worry about.

Practice by solving problems using pen and paper. Pick a practice problem, either off of this site or out of a book like Cracking the Coding Interview and code it up using pen and paper. Once you’re done, manually test the code by walking through a couple test cases line by line. When you’re satisfied with your code, type it into the computer and try to compile it. Make sure that it works as expected. Your goal is to be able to type the code into the computer and have it run as desired without having to make any changes.

Conceptual Interview Questions

Although not super common, these questions are certainly a possibility. Conceptual questions can range from language specific questions (“What is a ‘finally’ clause in Java?”) to broadly general (“Tell me as many ways as you can to transfer a file between two computers.”). They are basically any technical questions that don’t involve actually writing code.

Why they ask it

Conceptual interview questions are a good way to find out your depth of knowledge and confirm the claims that you make on your resume. For example, if you say that you have 5 years of Java experience, they may ask some specific questions about Java to determine whether you mean you learned Java 5 years ago and touched it here and there, or whether you have actually used Java regularly for those past 5 years.

These questions can also test your breadth of knowledge and critical thinking ability. Asking vague questions, like transferring files, requires you to come up with constraints on what is being asked and then find solutions within those constraints.

Finally, conceptual interview questions test your ability to clearly explain what you’re thinking, which is critical, especially if you will be moving into mentorship roles at the company.

How to prepare

Conceptual interview questions are some of the hardest to explicitly prepare for, but luckily, you shouldn’t need a whole lot of preparation if you actually know the things that you say you know. That being said, it is good to study up on the languages that you use the most. Make sure that you know about different language-specific paradigms and can explain them clearly.

It may also be worthwhile to study up on basic computing concepts like networking or operating systems, particularly if the job is related to those fields at all. You shouldn’t spend a lot of time on this, as any question you’re asked won’t go into great depth, but if you have a bit of extra time, it doesn’t hurt to refresh your memory.

Computer Coding Interview Questions

Interviews of this type are becoming more common, since they do a better job than whiteboard interviews of mirroring the environment that you usually work in. Computer coding interviews are pretty similar to whiteboard interviews in content and technique, the main difference being the fact that you are writing the code on a computer in an IDE as opposed to on a whiteboard. This also means you can run your code and see if it works!

Why they ask it

While whiteboard interviews test your ability to solve technical problems, they put a big obstacle in your way – the whiteboard. Computer coding interviews aim to test for the same skills but remove that obstacle.

These interviews allow you to work in an environment that is often more comfortable to you and takes away the onus to memorize exact syntax for different libraries and functions, since the IDE can help with that. This allows you to focus completely on solving the problem and writing the code, rather than trying to remember the minutiae of the language you’re using.

How to prepare

Preparation for computer coding interviews is similar to whiteboard interviews in terms of what you should study. I recommend going through some practice problems and ensuring that you know how to implement various common data structures and algorithms from scratch (hashmaps, linked lists, priority queues, etc). While it’s unlikely that you would be asked to code up a basic data structure for your interview, remembering how to do so can often inform your solutions to related problems that you likely will be asked.

Also, make sure that you are comfortable with the most common IDE for the language you will be programming in. Chances are, you’ll have to code in whatever environment they give you for your interview, so for example if you are doing your interview in Java, you should definitely be comfortable coding in Eclipse.

System Design Interview Questions

While uncommon, there is always a chance you could be asked a system design question during your interview. System design questions ask you to think at a high level about how you would design a product. For example, “design a distributed datastore for a movie recommendations site.” These questions will generally not expect any code and not have a right answer, but rather focus on your ability to think critically about the problem and propose a reasonable solution.

Why they ask it

System design interview questions are a great way to find out how someone thinks in a big-picture way. There’s a lot more to being a software engineer than just being able to write code. Software engineers need to be able to take large problems and translate them into a specific set of requirements, then apply technology to meet those requirements.

By asking these sorts of questions, your interviewer learns a lot about how you will work at the company. An engineer who does well at this sort of interview question will likely be someone who can pick up larger projects and do a good job designing them without a lot of guidance.

These questions are also a good litmus test for level of coding experience. More experienced programmers will often be able to solve these problems fairly intuitively, while novice programmers will struggle a lot more.

How to prepare

These questions are not the easiest to prepare for. Since system design questions are really meant to test software engineering experience and ability, working as a software engineer is the best way to prepare.

Assuming that’s not an option, though, the next best thing that you can do is to study various systems and try to understand how they work. Look at Twitter or Facebook Messenger, for example, and try to understand what underlying technologies they are using and how they are combining them. Why did they make the choices they did? Company technical blogs are a great resource for learning about various interesting system design problems that companies have faced.

Another great resource is the Gainlo blog. Recently, they have published several articles on how to think through system design problems, which do a great job of explaining what to focus on and how to reason through the problems.

Debugging Interview Questions

“Guess what?! I wrote some buggy code and you get to fix it.” Debugging interview questions are exactly what they sound like: You are given some code that doesn’t run as expected and you are expected to find and resolve any bugs. These questions are pretty rare, but growing in popularity.

Why they ask it

Debugging is an essential skill for programmers to have. As the adage goes, “programmers spend 20% of their time coding and 80% of their time debugging,” so it seems reasonable that they would test you on a skill that you will be using constantly.

Finding bugs in code, especially code you’re unfamiliar with also tests two other important skills. The first is your ability to use the technology at your disposal. Most IDEs come with various debugging tools, and while it’s certainly not expected that you will use these, it is good to know a bit about them.

The second skill which is another essential when starting a new job is your ability to read code. Unfortunately most companies do a decidedly poor job of documenting their code, and even if they do well, you will likely spend a lot of your time reading code and trying to figure out what’s going on. That is one of the skills that debugging thoroughly tests.

How to prepare

It isn’t too easy to practice debugging directly, but there are a few things you can do. Make sure to brush up on basic debugging techniques (like inserting print statements everywhere) and learn a little bit about how to use the most popular debuggers for your chosen language.

Once you know the debugging basics, the best way to spend your time would be to practice reading code. Find an open source project in your language that interests you and start reading. Try to understand exactly what is going on in the code. The ability to read code quickly and accurately will help you to more easily pinpoint issues in code.

Behavioral Interview Questions

The last type of interview is completely nontechnical, but that doesn’t make it any less important. Behavioral interview questions generally probe into your past projects and how you worked with your team. They may also get more personal about your strengths and weaknesses, for example. These are by far the most “traditional” interview questions and are often asked by a recruiter or person from HR. These aren’t the most common questions but you can expect to see at least one behavioral interview during your interview process.

Why they ask it

Culture fit is a term that gets thrown around a lot. It is about 50% “do we like you” and 50% “do we think you’ll work well with us.” Behavioral interview questions probe into the latter. By asking questions about your past experiences, interviewers hope to get a better understanding of what sort of person you are and how well you’ll work with other members of the existing team.

While a lot of this comes down to how you answer the questions, a large factor in behavioral interviews is also how you communicate. Can you formulate clear thoughts? What do you choose to talk about? This is indicative of whether you will be able to work well with other people.

How to prepare

There are several common questions that get asked again and again for behavioral interviews. What was the hardest challenge you faced with project X? What would you do differently with project Y? Gayle McDowell outlines a great way to prepare for these questions in Cracking the Coding Interview (small example).

Gayle describes creating a grid where you write your three best/biggest/most recent projects along the top and along the side, you write common questions that you may be asked. You can then go through the grid and fill out each cell, adding your answers for each question for each project.

Doing some advanced prep like this will make these questions go much more smoothly. Rather than having to take a lot of time to think back over the things that you learned from a given project, you have already spent some quality time thinking about this, and even if you get asked different questions, the action of going back over your past projects will make you better prepared to talk about them.

 

While this isn’t an exhaustive list of every question you could be asked during an interview, chances are these will cover 90%+ of the questions you will be asked. By spending a bit of quality time preparing for each type of interview question, you can avoid getting flustered in your interview by not knowing what to expect.

Think I missed something? Experience any particularly odd interview questions? Let me know in the comments below!

Get Free Stuff!

Sign up now and I'll send you weekly emails with more content like this.

We won't send you spam. Unsubscribe at any time. Powered by ConvertKit