If you’re on the hunt for software engineering jobs, one thing’s for certain: there’s no shortage of great opportunities for top talent at all skill-levels. The Bureau of Labor and Statistics estimates that software engineering jobs will grow at a rate of 17 percent over the next seven years, far outpacing job growth as a whole in the U.S. And there’s already more open developer jobs than there are people to fill them.
However, the interviews are notoriously some of the most challenging in the tech industry. In addition to several regular interviews, most engineers go through some coding exercises in one or more technical interviews that can range from slightly painful to borderline torturous.
To help you prep, we’ve pulled together 33 common software engineering interview questions broken down by the steps in the process you’ll often encounter with top tech companies.
Initial Phone Screen with a Recruiter
Software engineers infamously receive countless requests from recruiters for conversations about new opportunities. When speaking with a recruiter for the first time, your primary focus needs to be demonstrating to them that you’re worthy of speaking to the actual engineers.
Get used to answering the following common questions in short, simple responses:
1. Why are you interested in working at “XYZ Company”?
- Show you’ve done your homework and that you have researched the company. Express your sincere desire to work at said company – but keep it balanced and don’t be sycophantic or overly enthusiastic and saccharine.
2. Do you have experience with a certain coding language/technology we use here at XYZ Company?
- Be honest. If you don’t have much experience in that particular language, tell them so – it’s not like you can wing it if you make it through to the technical interview. But point out what languages you are familiar with and express that you’re more than capable of learning. Remember, the desire and ability to learn is a hugely positive attribute and skill in itself.
3. What projects have you been focused on at your current job?
- Be concise. Don’t ramble on and bore the recruiter. Be direct and succinctly describe the most notable/relevant projects you’ve been involved with at your current gig. If it’s your first job, again, be honest and instead describe some of your portfolio projects.
4. Do you have any leadership experience?
- Don’t be fooled into thinking this question relates solely to leadership in tech. If you’ve lead a team of remote freelance designers, took a leadership role on a volunteering experience, or even during school, say so and make it clear that those skills you gained elsewhere are absolutely transferable. Don’t forget to mention that even in a leadership role, you still function as a part of your team, because collaboration and team work are vital.
5. If so, how big was your team and what projects did you work on?
- Here’s your chance to expand on the answer above. Make those transferrable skills shine and relate them back to the role you’re applying for. Leading a team on a survival weekend to build a raft and cross a river uses the same leadership skills as leading a team of engineers to build something exciting and useful out of code that solves a problem.
6. What are you looking for in an opportunity that would lure you away from your current employer?
- Be frank, but don’t just make it all about the money and the benefits. Obviously, these are important elements, and any recruiter knows that those two are key components in your decision-making process. But talk about workplace culture, creative fulfillment, the satisfaction of solving real-world problems etc.
Notice how all the questions don’t require you to dive deep into your resume or get tangled up in complicated language. That’s because recruiters – even those with a designated technical focus – don’t need to get into the weeds with you about the ins and outs of your technical experience.
Panel Interview with Engineering Team
The next step is often a panel interview, which will likely take place the same day as your coding test, but the types of questions you’ll face will be quite different. Yes, software engineer interviews encompass multiple phases, but the potential payoff is well worth the time, the stress, and the preparation. Paysa data shows that the average software engineer salary is $171,000. You can see the full software engineer salary report here.
Typical questions you might encounter at this stage break down into three categories:
7. What excites you about joining our team here?
- Just like when you talked to the recruiter, talk knowledgeably about what elements of the company attract you the most to show you’ve done your research, but don’t be sycophantic or show a creepy stalkeresque level of “I love you/your company sooooo much because…”.
8. What are your hobbies outside of work?
- Companies like to see that you’re a balanced person. Give them a little list of the things you enjoy most outside of work. Avoid saying that you’re a power gamer who spends 10 hours coding at the office, rushes home, and spends another 8 hours glued to your desktop monitor decimating your virtual foes. Instead, give a sense of balance, include a few different hobbies that include individuality – like reading (pick a genre), craft and DIY type hobbies, and other solitary pursuits, as well as more social or team activities, like gaming, maybe you’re a member of a field hockey club, or you are part of a local hiking group. Show the interview panel diversity in your interests. What you do outside of work tells your employers a lot about your personality and your skills, and how well you’d fit into their team. Think individuality, teamwork/collaboration, creativity, and problem-solving. Whatever you do, don’t say “I don’t have any hobbies.”
9. What do you love about your current job and work environment?
- Answer this in a balanced way. Avoid “Nothing. I hate it. The place sucks” responses. Pick a couple of elements that your company does well. The way they foster a good work/life balance or a family-like culture. Perhaps you enjoy your work, being able to create something that solves problems/fulfills a need. If this is your first job, talk about what you enjoyed while learning or interning.
10. Describe your ideal company culture.
- Do your research on this one. Don’t tell them you love nothing more than silence and rigid discipline if their company culture is relaxed and fun. Make sure what you tell them roughly aligns with what you have learned about their company.
11. What’s the most important part of your work environment that will ensure you’re successful?
- Come up with something that aligns with the culture of the company you’re interviewing for. What do you need to succeed? A steady supply of coffee? A relaxed atmosphere? A quiet space to complete your work or catch your breath? A communal/collaborative workspace?
12. How would co-workers describe the role you play on the team?
- Use this question to show the interviewers that you are socially aware – that you are perceptive enough to recognize how you are perceived by others, particularly your peers. Also use this question to show that you’re self-aware. You know your own strengths and weaknesses, and you know how others see you and what you bring to the team. Be honest without being overly self-deprecating.
13. Tell us a decision you made based on internal or external customer data.
- Data is increasingly important. And employers like to know that you have the necessary skills to analyze data that’s presented to you, draw conclusions, and make informed decisions based on your analysis. Tell the panel about a scenario where you received data, whether that’s from surveys, interviews, beta testing, or customer usage, and the decision you made based on that. Did you work to improve accessibility? UX? UI? And so on. Be clear, concise, and detailed.
14. Which tools do you like to use for keeping track of requirements?
- Have an answer ready for this one. And be honest. You don’t have to be all high-tech all of the time. It’s okay to say that you keep track of daily tasks with pen and paper. Maybe you blend old-school paper lists with Trello boards, Asana, or some other project management app. Just go ahead and list what you use. But don’t say “I just remember them”!
15. What’s most important when reviewing another team member’s code?
- While there’s no definitive right or wrong, this question is designed to test your knowledge, how well you articulate your process, and whether you’re a victim of tunnel vision. Think about it: if you say “Design. Or how well the team member’s code fits into the existing architecture”, you’re ignoring other elements that may be of equal import to the end result. What about:
- Regulatory requirements
- Resource optimization
Don’t limit yourself.
16. Describe your coding process from start to finish.
- Right from the start. What’s the first thing you do when you get an assignment? Get a pen and paper and break it down into small chunks/tasks/milestones? List the start and end dates in your calendar? Make sure you prepare for this question. Employers use this to make sure you have a clear process and are organized rather than haphazard and chaotic in your approach to work. Walk through your process in preparation for the interview so you can clearly articulate how you work.
17. How do you prepare your code for different kinds of errors?
- Self-explanatory. The interviewer wants you to show your knowledge and give a reasonably polished answer that tells them you aren’t just “winging” it.
18. What’s your preferred language for complex algorithms?
- Be honest but try to give at least two answers. Again, giving more than one response shows you are agile and versatile and not stuck on one thing. “XYZ is my first choice, but ABC is also a great option.” Then tell them why.
19. How do you design scalable applications?
- Again, this is self-explanatory and designed to test your knowledge and thought processes. What factors do you look at and plan for to ensure you avoid performance bottlenecks? Is the interviewer talking about scaling up, scaling out, or both?
20. What project are you most proud of in your career thus far? Why?
- This is a time for you to shine, to tell the panel of your coding prowess, and describe the project you are most proud of. It doesn’t have to be that time when you built Facebook single-handedly in a single afternoon. It can be something as simple as building an app using a new language or your work on a collaborative project that solved a real problem faced by thousands of everyday folks. Don’t just brag. Yes, be confident and proud of your achievement, but try to relate the “why” to other people. “This is the project I’m most proud of because it filled a genuine need.”
21. Describe a project that failed. What happened? How did you rebound?
- Use this question to tell the interviewers that you are able to clearly articulate why a project didn’t work. You took the time to dissect the project and pinpoint what went wrong. Then you used that knowledge to better yourself, moving on to new projects and ensuring you didn’t repeat those same steps that resulted in the project failure. The panel wants to know you recognize that you’re human, that you’re aware that you’re not infallible, and that you own your errors. They also want to see how you move on from that.
There’s a whole bunch of technical questions a panel might ask to test your knowledge and your ability to think and perform under pressure. We’re not giving you the answers, because you’re responsible for your own knowledge, but we have provided you with a list of some of the more common ones that appear in interviews for coding jobs. You’ll find a variety of coding knowledge tests online, like the selection available at CodeConquest.
22. What is the difference between a mutex and a semaphore?
23. What is multithreaded programming?
24. What is the difference between local and global variables?
25. What’s the difference between local and global variables?
26. You have a single-threaded, C standard application that’s continuously crashing, but never in the same place. What could be causing the crash?
27. What is the difference between a queue and a stack?
28. What is a regression test?
Even if you think you really know your stuff, it’s worthwhile brushing up on your knowledge. Take some online quizzes, ask a coding buddy to help you revise, or study as if you were prepping for an exam. Interviews are stressful, and there’s a danger that under pressure, you’ll struggle to come up with the answers if the knowledge isn’t fresh.
Coding Session with Engineering Team
This stage gives software engineering interviews their reputation as the most difficult. Not only will your knowledge be tested in a high-pressure environment, but you’ll be working in an unfamiliar context (i.e. handwriting code on a whiteboard) and under time constraints. Needless to say, you shouldn’t take preparing for this stage lightly. Get plenty of practice. Use the free resources and practice scenarios available at sites like CoderByte or use PRAMP and practice with your peers.
The exact problems you’ll face will vary, but here are some typical scenarios that may come up in this stage:
29. Linked lists (removing duplicates, reversing, determining if it’s circular)
30. Big-O complexity analysis: What is it and how is it used?
31. Trees: Basic construction, traversal, and manipulation algorithms. Know how to implement balanced binary trees.
32. Stacks (implement a queue with two stacks)
33. Arrays and strings (reverse strings, permutations)
Some other tips to help ensure you’re successful:
- Practice coding by hand. You might feel confident when typing code, but writing it on a whiteboard is an entirely different beast. Practice doing exercises by hand and then plugging them in to check for bugs.
- Verbally explain exactly what you’re doing. The interviewer is equally interested in how you solve the problem as whether or not you reach a solution. Make sure you’re constantly explaining your thought process (even if you’re stuck).
- Collaborate with the interviewer. The person administering the code test likely knows the right solution pretty well and can give you hints to get going when stuck. Don’t be afraid to ask. It shows you’re willing to seek help and work well in a team environment.
At Paysa, we know interviewing for software engineering jobs can be really tough and that you’ll likely end up receiving multiple rejections along the way, but we also know that the demand for high-quality software engineers far outweighs the supply. And that gap is going to keep on growing. So review these common interview questions and, whether you’re applying for your first ever software engineer job or moving up from coder to development manager, get plenty of practice in. If you do, you’ll be sure to impress and place yourself as a strong contender for the role.