So you want to become a software engineer? Named the number one job in 2020 by US News and World Report, software developers earn an average yearly salary of $103,620 and have an unemployment rate of 1.6%. Clearly, it is a job that is in high demand.

Yet as lovely as that sounds, finding a job as a software engineer is not always easy. Perfectly qualified software engineers sometimes fail the interview portion, mainly because they didn’t prepare for it. Technical interviews can be challenging and will test the limits of even experienced developers.

But you can plan, and the best way to prepare for your interview is to know what to expect when the time comes. Software engineer interview questions can vary from company to company. Still, we will look at the four main types of questions that an interviewer may ask in a software engineering interview.

Top courses in IT & Software

General questions

These are the questions that are asked at all interviews, regardless of the job you are applying for. The reason interviewers ask is so the company can get a better understanding of who you are. Many of these questions will be about your resume and your experience at your previous job. It is always important to be honest when answering these questions because both you and the interviewer are looking for a good fit, and honesty will help both parties make the best decision.

Here are some general questions interviewers might ask:

1) Why did you leave your last job?

This is a very common interview question because it is also a landmine. The answers to steer clear of are ones that badmouth your old job, mention disagreements with coworkers, or make it sound like money is the only thing you care about. Answers that interviewers usually look for are those that emphasize advancing your career or looking for new challenges.

2) Why should we hire you?

The interviewer is asking you to sell yourself. This is where a little research about the company will help. You want to be yourself, but you also want to see what parts of yourself best fit with the company’s goals.

Review the job description. What skills do they list that fit what you can do? Are there any “nice to have” skills that you have? Are there any past jobs or projects you have that show you have the skills they are looking for? Do you have a passion for anything they do? Mention all of this. Show the interviewer you will be excited to work there and have the skills necessary to get the job done.

3) What are your career goals?

Usually, a developer will either choose a technical path where eventually they will be some kind of architect or a management path that will make them a manager, director, or even CTO someday. Along with emphasizing your leadership or technical bent, mention those things you are interested in that will benefit the company. If they are developing a machine learning team, mention your passion for that and the Kaggle contests you have entered.

Technical questions

Since you are applying as a software engineer, the bulk of your questions will be technical. Companies want an engineer who is smart and knows how to do the work when it comes down to it. For them to hire the best candidate possible, they will need to ask challenging questions. Sometimes you will be asked questions that do not entirely fit your job description, so it is wise to brush up on other programming languages and unfamiliar concepts.

We have a wide range of courses if you ever need to expand your knowledge base in software engineering to prepare for your interview. For example, if you are applying to be a JavaScript engineer, you will most likely be asked questions about jQuery and how a web browser works. If you are trying to become a front-end engineer, you can expect them to ask questions that illustrate your knowledge of React or Angular concepts. Be sure to brush up on everything they expect you to know for the job you are applying for.

It is also important to note that the technical questions asked will cover various topics, including algorithms, data structures, networking, systems design, object-oriented programming, and APIs. Many times there will not be a right or wrong answer to the questions asked, meaning it is entirely up to you to explain why you answered them the way you did. With these types of questions, the interviewer is trying to understand how you interpret and explain complex technical concepts.

Below is a list of some basic technical questions that you might see at your next job interview:

4) What programming languages have you used in the past?

The interviewer is trying to see if you are proficient in the languages that the company uses. If one to three are your favorites, mention why.

Example answer:

“I am proficient in PHP, Python, and JavaScript. Python is my favorite because the syntax is simple, and I like backend work.”

5) What types of SDLC models are you familiar with?

The interviewer wants to know if you are a good fit for their workflow.

Example answer:

“I am familiar with the Waterfall, Agile, V-Shaped, Iterative, and Big Bang software development lifecycle models.”

6) What is the difference between a stub and a mock?

Example answer:

“A stub implements a minimal interface, which returns hard-coded data, while a mock is a tool to verify outputs against the expected outcome. Unit tests feature both.”

7) What is the meaning of debugging?

Example answer:

“Debugging is the process by which a software engineer tracks down and corrects errors in code.”

8) What is the role of a software project manager?

Example answer:

“The software project manager plans, monitors, and communicates the progress of a software project for developers, designers, stakeholders, and others involved in the project.”

9) What is meant by software scope?

Example answer:

“Scope defines what will and what will not be delivered by a software project. The scope outlines the activities needed to finish the project.”

10) What is software configuration management?

Example answer:

“Software configuration management is the process of controlling the changes that occur in software.”

11) What is change control?

Example answer:

“Change control is a system for tracking the changes in a software product and ensures that all changes meet enterprise standards.”

12) How would you explain APIs to non-technical stakeholders?

Example answer:

“An API is a specification for how one application can be accessed by another application.”

13) What would you pay attention to when reviewing a peer’s code?

Example answer:

“I would make sure the code passes automated testing, manual testing, and lint tests. I would check the code for any conventions not covered by these tools. I would make sure that function and variable names made sense. I would look for duplicated code. I would also look for memory leaks.”

14) What are essential tools for code quality?

This question may require a little research about the company beforehand because developers can be opinionated about this topic.

Example answer:

“I think unit testing, integration testing, manual testing, and peer code reviews help increase software quality.”

15) What is the difference between a thread and a process?

Example answer:

“A process is an instance of a computer program. A single program can have one or more threads.”

16) What is the difference between strong and weak typing?

Example answer:

“Software that uses strong typing checks the variables at compile time. Software with weak typing checks type at runtime. Weakly-typed software tends to have more bugs.”

17) What is the difference between a stack and a queue?

Example answer:

“A queue uses the first in, first out method. A stack uses the last in, first out method.”

18) Describe the difference between interface-oriented, object-oriented, and aspect-oriented programming.

Example answer:

“Interface-oriented programming is contract-based. Object-oriented programming uses encapsulation to bundle data with the methods that operate on that data. Aspect-oriented programming allows the separation of cross-cutting concerns that don’t fit the standard object-oriented model.”

Problem-solving questions

The problem-solving questions can be quite tricky. The interviewers want to know whether you can take a complex real-life problem and design a solution to solve the problem. Many times, these questions will not have any relation to what you usually do at your job. Therefore, you should not be too disappointed if you do not answer these questions perfectly.

Some of these questions can be like a “Google interview,” in that interviewers will give you a well-defined problem, and you have to find a working solution.

19) What method would you use to look up a word in the dictionary?

This is a question that uses a physical process to examine how you would handle searching through a lot of data.

Example answer:

“I assume the dictionary is in alphabetical order, so I would start by opening it in the middle and then determine if my word was before or after those on the page. Then I would split the section I know the word is in half again and repeat the process until I find the word.”

20) How would you store 1 million phone numbers?

This is another question to test your knowledge of sorting and searching.

Example answer:

“Use a trie data structure to store the data. Store the name of the phone number owner in the leaf nodes.”

21) A man pushed his car to a hotel and lost his fortune. What happened?

This question is a riddle.

Example answer:

“He landed on Boardwalk.”

22) How many golf balls can you fit in a school bus?

This is not the type of question where an exact answer is necessary. It is a test of your thinking process and how you devise solutions. So show your work and don’t just answer with a guess, even though it will be an educated guess.

Example answer:

“First, let’s assume a bus is 20ft x 8ft x 6ft, giving us 960 square feet or 1.6 million cubic inches. The golf ball’s radius is about .85 inches, so a golf ball fills 2.5 cubic inches. So if the bus were empty and the balls didn’t settle, it would hold about 660,000 golf balls. To account for the round shape of the golf balls and the seats and other equipment in the bus, around 500,000 golf balls.”

23) Why are manhole covers round?

This is a test of spatial logic.

Example answer:

“So they don’t fall in the manhole.”

 24) – 27) Coding test questions

Many times you will be given a coding test as part of the interview. You can think of this type of test as an advanced problem-solving question. Sometimes, a company will assign you a coding test a few days before your interview, so you and the interviewer will have the results available for review. Other times, they will give you the test to take home at one interview and then come back for a follow-up.

The interviewer will present a problem that you must solve by writing code. Usually, there will be a few constraints to narrow the scope of the code you will write. Some common coding test questions are:

1.    Design a software version of the card game war.

2.    Design a URL shortener program.

3.    Design a blog program.

4.    Design a Twitter clone.

While this article can’t show you how to design and code a software project, we can give you a few tips on tackling a take-home coding test.

Read the instructions carefully.

Sometimes there is not much to the instructions of a coding test, but it is important to read them carefully. If you misunderstand the instructions, you could waste a lot of time solving the wrong problem. Once you have a good idea of what you have to build, you can start building a solution.

Use version control

Use version control from the moment you write the first line of code. Commit often and make your commit messages short and meaningful. Your interviewers may look at your git commit log to understand how you work.

Start with the basics.

Decide what the minimum viable product (MVP) of your code test will be, and write that code first. Once you have that working, then cover edge cases and add extra features. Don’t bite off more than you can chew in the beginning.

Write tests and use TDD

Many companies swear by test-driven development, and some don’t care, but it is good to use TDD in your coding test to show you understand the concept. Add and commit failing tests first. Then write the code that will make the tests pass.

Write clean code

An interviewer can get an idea of how you work with others from how you write your code. Give functions and variables useful names. Use a linting tool to make sure your code looks good and is easy to read. Don’t leave any unnecessary comments or logging in your finished code.

Use design patterns where applicable

If you know some design patterns and they fit the project you are creating, use them. But don’t go overboard and don’t use a design pattern for the first time in a coding test.

Add a readme

The coding test instructions may have been vague, but the instructions for running your code should not be. Add a readme file to your project that explains the approach you used and assumptions you made coming up with that approach. Describe any third-party libraries and why you chose them. And, of course, explain how to run your project.

Refactor your code before submitting

When you finish coding and your application works, don’t rush to submit your code too soon. Go over it with a fine-tooth comb and look for things you missed. Remove references to libraries you tried but never used. Make sure all your variable and function names make sense. Are there any edge cases you missed? Do you have time to add an extra feature for extra credit?


It pays to prepare for a software engineering interview, but it’s important to remember that there is no way you can know the questions you will get beforehand. Each technical interview will be slightly or dramatically different. But hopefully, you will feel more comfortable knowing what type of questions to expect and what the interviewers might look for.

You don’t want to just say what the interviewer wants to hear. An interview should allow both you and the employer to decide whether the job is a good fit. You should brush up on your knowledge and do some test prep, but ultimately, be yourself.

Page Last Updated: February 2021

Top courses in Software Engineering

Software Engineering students also learn

Empower your team. Lead the industry.

Get a subscription to a library of online courses and digital learning tools for your organization with Udemy Business.

Request a demo