Common Software Engineering Interview Questions
Goals of engineering interviews
There are too many possible interview questions for software engineering roles to prepare for them all in detail. You can do better than other candidates by understanding the goals of your interviewer.
Anyone that’s hiring has three main goals in the interview process. They want to assess:
- Your technical knowledge
- If you can apply that knowledge in their context
- Whether you’ll be a good fit for the team
Knowing this can narrow your focus when preparing for interviews.
Technical interview questions
Basics or “filter” questions
Recruiting and interviewing is time-intensive, so most early interviews are aimed at filtering out candidates who will be an obvious “no.” This is done with basic technical questions that anyone in the role should know well.
These are often questions like
- Tell me how DNS works in as much detail as you know
- What is a REST API, and how is it different from other APIs?
- How do you check how much memory your computer is using from the command line?
These are fairly easy questions if you have practical experience in software engineering. The best way to prepare for them is to be immersed in software engineering for as long as possible. Read books about how to code or architect systems well, read blog posts, build side projects, etc. You’ll pick up what you need by osmosis.
General technical competence
As you get further into the engineering interview process, the goals of the interviews will shift to see how deep your technical knowledge is. Doing exceptionally well on these questions will indicate that you should be considered more senior.
These are questions that can be found in “Cracking the Coding Interview” by Gayle Laakmann McDowell. These will be questions about algorithms, data structures, etc.
The best way to practice this is by doing LeetCode. After a lot of practice, you’ll feel more confident solving problems you haven’t seen before because you’ll develop a general understanding of how to solve this more complex class of problems.
If you’re in a specialized field like frontend engineering, data engineering, infrastructure, machine learning, etc there will likely be highly specialized questions for common problems in that domain.
Architecture or design questions
For mid-level or senior roles, it’s also common to have “architecture” questions. These questions are designed to test how you think and work through problems. They do not have a right answer.
Often, these questions sound like this:
- How would you start if you had to design the data storage for Google Maps’ map data?
- Lay out a product experience for calculating a user’s federal income tax obligations
- If you had to back up 1 Petabyte of data every hour how would you do it?
The best way to answer these questions is to ask questions, start small, and iteratively improve until they stop you.
Applying your technical knowledge in their context
Good interviewers will ask questions relevant to what people need to know to succeed in that role. Which is informed by what the company does and what the job is.
If you’re interviewing to do work on running LinkedIn’s data centers, you can be sure that all the questions will be tailored to the technologies and problems they deal with every day.
Before your interviews, understand what the company does and what team you’ll be joining. That way, you can research the tools they’re using and the problems they’re likely dealing with.
How you answer questions in your engineering interview
Getting the right answer (when there is a right answer) is only half of the interview. The interviewers are also assessing if they think you’re memorizing “Cracking the Coding Interview” or if you’re thinking for yourself.
When you work at a company, problems aren’t often neatly packaged with a right answer. Good interviewers will always prefer to work with someone who breaks down complex problems into manageable chunks to someone who is rigid in their thinking.
Team fit
Beyond assessing anything technical about you, interviewers are also watching for red flags about how you act. Interviewers often want to filter out people who aren’t going to be additive to the team’s culture.
It’s important to be kind, keep calm even if frustrated, and always treat the interviewer respectfully. You’d be surprised how often people get filtered out because they couldn’t be decent, even for the length of an engineering interview.
Behavioral questions
Some companies will also do dedicated interviews meant to draw out an understanding of how you work. These are questions like:
- Tell me about a time you failed and how you dealt with it.
- How do you deal with difficult coworkers?
- What are your biggest strengths and weaknesses?
- What would your manager say about you?
You’ll do well in these interviews if you admit you have flaws, can name them, and are honest about how you’re growing every day to address any shortcomings.
Are you being paid fairly? Let's find out.
Accurate, anonymized salary data. Get started to see how your salary compares to your peers.