Interview questions by role
Software engineer interview questions
Most software engineer interviews mix a coding exercise with conversations about your past work: a project deep dive, a debugging story, a design decision you would defend, and how you work with other people. The coding round tests whether you can solve a problem; the conversations test whether you can be trusted with a real codebase, and they are where well-prepared candidates pull ahead.
How the interview usually runs
A typical process starts with a recruiter screen, then one or two technical rounds (live coding, a take-home or a pair-programming session), then a loop with engineers and an engineering manager. Mid-level and senior roles usually add a system design conversation. Between the coding problems, interviewers keep coming back to the same thing: what did you personally build, why did you build it that way, and what happened when it broke.
This guide covers the spoken questions, not the algorithm puzzles. Those still need practice on a coding site, but candidates who solve the puzzle and then give a vague answer about their own project are common, and they rarely get the offer.
Common questions and what the interviewer is checking
Walk me through a project you are proud of.
What they are checking: Whether you can explain a system clearly at the right level, and what your own part was. They will interrupt to go deeper on one component, so pick a project you know end to end.
Tell me about a hard bug you tracked down.
What they are checking: Your debugging method: how you narrowed it down, what tools you used, how you proved the fix, and whether you added a test or alert so it could not come back.
Describe a technical decision you made and the trade-offs you considered.
What they are checking: That you weigh options instead of reaching for the newest tool. Naming what you gave up (speed, simplicity, cost) matters more than the choice itself.
How would you design a URL shortener (or a rate limiter, or a news feed)?
What they are checking: For system design: that you clarify requirements first, estimate load roughly, start simple, and explain where it would break as it grows.
Tell me about a time you disagreed with a code review or a design.
What they are checking: Whether you argue with evidence, can be persuaded, and keep the relationship intact. They want neither a pushover nor someone who wins every argument.
How do you decide what to test?
What they are checking: A practical view of risk: what you unit test, what needs an integration test, and what you deliberately leave alone.
Tell me about something you shipped that went wrong in production.
What they are checking: Ownership and calm. A good answer covers detection, mitigation, the root cause and what changed afterwards, without blaming anyone.
How do you get up to speed on an unfamiliar codebase?
What they are checking: That you read before you write: running it locally, tracing one request through, reading tests, and asking targeted questions.
What would you improve about the last system you worked on?
What they are checking: Honest judgement about technical debt, and whether you can prioritise improvements by impact rather than by what annoys you most.
How to structure a strong answer
For project and incident questions, use a technical version of STAR: the context in one or two sentences, the problem with a concrete symptom, what you did and why (this is where the time goes), and the measurable result. Say "I" for your part and "we" for the team's.
- Context: the system, its users and its scale, in plain words.
- Problem: the symptom or constraint, with a number if you have one.
- Your action: the options you considered, what you chose and why.
- Result: what changed, how you know, and what you would do differently now.
Example answer
Tell me about a hard bug you tracked down.
On a payments service I worked on, about one in a few hundred checkout requests timed out, but only in the afternoons. Logs showed nothing useful, so I added timing around each downstream call and found the delay was in acquiring a database connection, not in the query.
The pool was sized for morning traffic, and a nightly report job that ran late was holding connections open. I moved the report to a read replica, added a pool-wait metric with an alert, and wrote a load test that reproduced the timeout. The afternoon timeouts stopped, and the alert has since caught one regression before users noticed. Looking back, I would have added that metric on day one instead of after a week of guessing.
Mistakes to avoid
- Describing the team's project without ever saying what you personally wrote or decided.
- Going straight into a design without asking about scale, users or constraints.
- Naming technologies instead of reasons: "we used Kafka" says nothing; why you needed a queue does.
- Telling an incident story where the fix is "we restarted it" and nothing changed afterwards.
- Pretending to know something. "I have not used that, but here is how I would find out" is a better answer than a bluff the interviewer can see through.
- Preparing only for coding problems and improvising the project questions on the day.
Frequently asked questions
What questions are asked in a software engineer interview?
Beyond coding problems, expect a walkthrough of a project you are proud of, a hard bug you fixed, a technical decision and its trade-offs, a time something broke in production, a disagreement in code review, and for mid-level roles and above, a system design question.
How do I answer "walk me through a project" in a software interview?
Pick a project you know end to end. Give the context in two sentences, the hardest problem, what you personally built and why you chose that approach, and a result you can measure. Expect the interviewer to dig into one part, so be ready to go a level deeper.
How should I prepare for a system design interview?
Practise saying your reasoning out loud: clarify requirements, estimate the load roughly, sketch the simplest design that works, then explain how you would scale it and where it fails. The conversation matters as much as the diagram.
Is it OK to say "I don't know" in a technical interview?
Yes, if you follow it with how you would find out or reason towards an answer. Interviewers can usually tell when someone is bluffing, and an honest gap handled well reads better than a confident wrong answer.