Software Engineer and Software Developer Interview Questions and Answers (2026)

Updated 5 October 2026 by Ben Gallagher. Sources below.

This page covers software engineer and software developer interviews; the two titles mean the same job in most advertisements. The government framework and NCSC guidance described below are UK sources and are labelled; OWASP is international. Software developer panels rarely stop at what you built. They want to know how you debug a fault you cannot reproduce, what you do when a release corrupts data on a Friday, how you argue about a pull request, how you guard against unsafe input and how you give an estimate when you do not know the answer. Prepare real projects and say what you measured, what you changed and what went wrong. Technical rounds may add live coding or a take-home task, so check what the advert says.

Try these questions free

Try it for free

These are common questions for this job, but your panel will also ask about you. Sign up for free to get questions personalised to your interview, written from the job advert and your CV.

Design and trade-offs

Tell us about a design decision you made that you later regretted. What did you weigh at the time, and what would you do now?

What they're testing: Reasoning about trade-offs honestly and learning from a decision that aged badly.

You inherit a large module with no tests and no documentation, and you need to add a feature to it next week. How do you start?

What they're testing: Making safe changes to unfamiliar code: characterisation tests, small steps and asking the right people.

Practise this questionTry it yourself first, then compare.
Show a strong answer to: You inherit a large module with no tests and no documentation, and you need to add a feature to it next week. How do you start?

Do not change it blind. First learn what it does by reading it, running it and talking to anyone who knows it. Add tests that capture its current behaviour, then make the smallest change that delivers the feature, and leave the code a little clearer than I found it.

I inherited an invoicing module with no tests, and I had a week to add a discount rule. I read through it with the debugger and wrote down what each function took and returned. Then I wrote tests around the existing behaviour, using real invoices from last month as examples, so I would know if I changed any totals. That took two days but gave me confidence. I asked the developer who had worked on it last for twenty minutes, and she warned me about a rounding rule that was not documented. I added the discount in a new small function, called from one place, and ran the tests. I left a short note in the readme explaining the rounding rule and the new tests. The change shipped on time and the finance team found no differences.

A page that was fast now takes eight seconds to load, and only for some customers. How do you track down why?

What they're testing: Measuring before changing: profiling, queries, data volume and reproducing the slow case.

Practise this questionTry it yourself first, then compare.
Show a strong answer to: A page that was fast now takes eight seconds to load, and only for some customers. How do you track down why?

Measure before changing anything. Reproduce the slow case with the affected customer's data, look at the query plan and time each part of the request. Common causes are missing indexes, large data volumes or repeated queries, but I would find the evidence, not guess.

A dashboard loaded in a second for most customers and eight for a few. I asked support which customers were affected and found they were the ones with the most orders. I reproduced it locally with a copy of one account's data and turned on query logging. A single page was running over 400 queries: for each order it fetched the customer's addresses separately. With few orders, nobody noticed. I confirmed it with a profile before changing anything. I replaced the repeated queries with one query that fetched all addresses for the page and added an index on the foreign key. The load time for the largest account fell below a second. I wrote a test that checks the number of queries for a page with fifty orders, so the problem cannot return unnoticed, and shared the finding in the team channel.

You are designing an API that other teams will build on. What do you think about before you write the first endpoint, and how do you handle changing it later?

What they're testing: Designing for consumers: clear contracts, versioning, errors and backwards compatibility.

Your team could write its own authentication or use a well-known library or service. How do you decide?

What they're testing: Weighing build against reuse, including security, maintenance and dependency risk.

Your product owner wants new features and you believe the codebase needs a month of clean-up. How do you make the case, or decide you are wrong?

What they're testing: Linking technical debt to delivery risk and agreeing priorities with a non-technical owner.

Debugging and incidents

At 4pm on a Friday you learn that a release has been corrupting some customers' records since morning. What do you do, in order?

What they're testing: Containing harm first, communicating clearly, then fixing and reviewing, without panic.

Practise this questionTry it yourself first, then compare.
Show a strong answer to: At 4pm on a Friday you learn that a release has been corrupting some customers' records since morning. What do you do, in order?

Stop the harm first: roll back or switch off the feature, and tell the people who need to know. Then work out which records are affected, plan how to repair them, fix and test the cause, and hold a blame-free review. Do not start debugging live while the damage continues.

On a Friday afternoon, support told me customers' delivery addresses were being overwritten after a morning release. I told the team lead in our channel that I was investigating, and asked for the release to be rolled back, which took ten minutes. That stopped new damage. Next I queried the audit table to find affected records: about 300, all updated by one endpoint. I wrote a script to restore addresses from the previous day's backup, tested it on a copy and had a colleague review it before running it. The cause was a missing condition in an update query that I had reviewed but not tested against partial updates. I added a test for it and fixed the query. On Monday we reviewed what let it through, without blame, and added a check to the release process for data-changing endpoints. I emailed the affected customers through support.

A customer reports a bug you cannot reproduce on your machine or in staging. How do you proceed?

What they're testing: Systematic investigation: logs, environment differences, data and asking better questions.

After an outage you caused, how do you contribute to the review, and what makes a review useful rather than a blame session?

What they're testing: Owning your part and focusing on how the system allowed the failure.

A test fails one run in ten and the team has started to rerun it until it passes. What do you do about it?

What they're testing: Treating flaky tests as a defect: finding the cause instead of normalising the noise.

Quality, testing and code review

A senior colleague blocks your pull request over a style you think is worse. How do you handle it?

What they're testing: Separating principle from preference, using evidence and agreeing a team convention.

Practise this questionTry it yourself first, then compare.
Show a strong answer to: A senior colleague blocks your pull request over a style you think is worse. How do you handle it?

Find out whether it is a principle or a preference. Ask for their reasoning, share mine with an example, and see if the team already has a convention. If not, propose agreeing one and automating it with a linter, so the argument is settled once.

A senior developer blocked my pull request because I had used a different way of structuring error handling. I felt mine was clearer. Rather than argue in comments, I asked him for ten minutes on a call. He explained that his pattern made errors easier to find in logs, which I had not considered. I showed him a case where my version made the happy path easier to read. We found that the team had no written convention. I suggested we agree on one and write it into the contributing file, and he agreed to take it to the next team meeting. Meanwhile I changed my pull request to follow his pattern, as his reason was sound for our logging. We later added a linter rule so such points do not need discussing in reviews.

How do you review someone else's pull request so that you catch real problems and the author still wants to send you the next one?

What they're testing: Useful, kind reviewing that focuses on correctness, risk and clarity.

What do you test, at what level, and what do you deliberately not test? Give an example from your own work.

What they're testing: A reasoned test strategy across unit, integration and end-to-end, not a slogan.

To hit a launch date, your manager suggests skipping tests on a payment change. What do you say and do?

What they're testing: Protecting quality where the risk is high and offering a safer way to meet the date.

Practise this questionTry it yourself first, then compare.
Show a strong answer to: To hit a launch date, your manager suggests skipping tests on a payment change. What do you say and do?

Be clear that payment changes carry high risk, so skipping tests is not a saving. Offer options that still meet the date: reduce the scope, test the riskiest paths first, or release behind a feature flag to a small group. Put my concern in writing so the decision is shared.

Before a launch, my manager suggested we skip testing on a change to the payment flow because the date was fixed. I said I understood the pressure, but that mistakes in payments hurt customers and are expensive to unpick. I did not just refuse. I proposed three options: ship the simpler version without the saved-cards feature, which was where most of the risk sat, test only the main payment paths and the refund path, or release to ten per cent of users behind a feature flag. He chose the second with the flag. I wrote the tests that evening, found a bug in refunds and fixed it, and we launched on the date. I sent a short note afterwards listing what we had tested and what we had deferred, so that nobody was surprised later.

Security and responsibility

You realise you have just pushed an API key to a shared repository. What do you do in the next ten minutes, and what do you change afterwards?

What they're testing: Revoking first, being open about it, then fixing the process.

Practise this questionTry it yourself first, then compare.
Show a strong answer to: You realise you have just pushed an API key to a shared repository. What do you do in the next ten minutes, and what do you change afterwards?

Revoke or rotate the key immediately, because removing it from the repository does not make it safe. Then tell the team and security, check logs for misuse, clean up the history if needed, and add a secrets scanner and a safer way to handle keys.

I once pushed a configuration file that contained a third-party API key to a shared repository. I noticed within minutes. I logged into the provider's dashboard and revoked the key, then generated a new one. I told my team lead and the security contact straight away, in writing, with the time and what had been exposed. I checked the provider's usage logs and found no unusual calls. I removed the file from the repository and its history with the team's agreed procedure, and moved the key to our secrets manager. Afterwards I added a pre-commit secrets scan and a line in the readme about environment variables. The security lead thanked me for reporting it quickly. I would say that being open early turned a mistake into a small process improvement.

A critical vulnerability is announced in a library your product uses in forty places. How do you find out how exposed you are and decide what to do?

What they're testing: Assessing dependency risk, prioritising a patch and testing it safely.

Practise this questionTry it yourself first, then compare.
Show a strong answer to: A critical vulnerability is announced in a library your product uses in forty places. How do you find out how exposed you are and decide what to do?

Find where the library is used and whether the vulnerable feature is reachable. Check the advisory for affected versions and fixes, prioritise exposed services first, patch or mitigate, test and deploy. Record what I found, and tell the owners of any service I cannot update quickly.

When a critical advisory was published for a logging library, I used our dependency report to list every service that included it, directly or through another package. I read the advisory and learned that only versions before a certain release were affected, and only if a particular feature was on. Of eleven services, six used an affected version and two of those had the feature enabled and were internet-facing. I patched those two first, ran their test suites and deployed them the same day. I disabled the feature as a temporary mitigation on a third service that could not be upgraded until the following week. I then updated the remaining services in the normal cycle. I posted a short summary for the team with the services, versions and dates. We also set up automatic alerts for new advisories.

You are building a form that saves user input to a database and shows it to other users. Which problems are you guarding against, and how?

What they're testing: Practical defences against injection and unsafe output, and validating at the right place.

Practise this questionTry it yourself first, then compare.
Show a strong answer to: You are building a form that saves user input to a database and shows it to other users. Which problems are you guarding against, and how?

Never trust input. Use parameterised queries to prevent injection, validate input on the server, and encode output for where it is shown to prevent cross-site scripting. Also check who is allowed to see or change each item, and log failures without exposing details.

For a comments form that saves to a database and shows to other users, I would think about two things: what goes in and what comes out. For input, I would use parameterised queries through the database library, never string-built SQL, so a comment containing quotes cannot change the query. I would validate length and type on the server, and not just in the browser. For output, I would encode comments for the context where they appear, so that a comment containing a script tag is shown as text and does not run. I would use the framework's templating rather than writing HTML by hand. I would check on each request that the user has permission, rather than relying on hidden fields. Finally, I would write tests with hostile strings, and rate-limit the endpoint to deter abuse.

A colleague wants to copy production customer data into a test environment to save time. What do you say?

What they're testing: Protecting personal data and finding a safe way to get realistic test data.

Working with a team

Explain to a non-technical manager why a change that looks small will take three weeks, without hiding behind jargon.

What they're testing: Making complexity and risk understandable and offering options.

A junior developer on your team keeps asking for help with the same kind of problem. How do you help without doing it for them?

What they're testing: Teaching and supporting growth rather than rescuing or ignoring.

Halfway through building, you realise the requirement will not give the users what they need. Who do you tell, and when?

What they're testing: Raising doubts early with evidence and alternatives, instead of building the wrong thing quietly.

Delivery, estimates and growth

You are asked for an estimate on a task you have never done before. How do you give one, and what do you say when the answer is 'we need it faster'?

What they're testing: Estimating under uncertainty with ranges, assumptions and options.

Practise this questionTry it yourself first, then compare.
Show a strong answer to: You are asked for an estimate on a task you have never done before. How do you give one, and what do you say when the answer is 'we need it faster'?

Give a range, not a single number, and name the assumptions and unknowns behind it. Break the task down, do a small spike to reduce the biggest unknown, and offer options on scope when I am pushed to go faster.

Asked to estimate adding a new payment provider, which I had never integrated, I said I could give a range after a short spike. I spent half a day reading their documentation and building a test call in their sandbox. The unknowns became clear: webhook handling and the refund flow. I broke the work into pieces and estimated each as a best and worst case. I told the product owner it would take three to five weeks, depending on the refund flow, and that I would know more after the first week. She asked for two. I said we could meet two weeks if we launched with payments only and left refunds for a second release. She agreed. I shared my assumptions in the ticket and updated the estimate after week one, when it came in at the lower end of the range.

Tell us about the last time you had to learn a new language, framework or area quickly to deliver something. How did you go about it, and how did you know you had it right?

What they're testing: Learning efficiently and validating understanding through small tests and review.

Choose one thing you built and walk us through its architecture, one decision you would change and how you knew it worked in production.

What they're testing: Depth of understanding of your own work, with honest evaluation and monitoring.

What the role covers

In the UK, the Government Digital and Data Profession Capability Framework and the Technology Code of Practice are cited below. Use the framework your employer uses wherever you work.

The Government Digital and Data Profession Capability Framework describes a software developer as someone who designs, runs and improves software that meets user needs. It says they are responsible for writing clean, secure code following a test-driven approach, and for creating code that is open by default and easy for others to reuse. Whatever sector you apply to, the pairing is useful: panels listen for users' needs as well as for technique.

The government's Technology Code of Practice has twelve points, including defining user needs, making things accessible and inclusive, being open and using open source, making things secure and making privacy integral. Point three asks teams to publish code and use open source software to improve transparency, flexibility and accountability, and point six asks them to keep systems and data safe with the appropriate level of security.

Security questions: what panels expect you to know

The National Cyber Security Centre (NCSC) is the UK's cyber security body. OWASP's Top 10 is international and used by developers everywhere, so know it whichever country you work in.

The National Cyber Security Centre's guidance for developers says that genuine security benefits come when delivery teams weave security into everyday practice, that security considered as a bolt-on after development risks missing vulnerabilities, and that every team needs security expertise although not everyone needs to be an expert. It also says to treat third-party libraries and dependencies in the same light as code you write, to require peer review before changes reach the main branch, to keep secrets separate from source code and scan for ones committed by accident, and to accept that your code will have exploitable shortcomings and set up a process for managing them.

OWASP's Top 10 for 2025 lists the web application risks that developers should recognise, among them broken access control, security misconfiguration, software supply chain failures, cryptographic failures, injection, insecure design and authentication failures. You do not need to recite it. Be able to name the risk behind a scenario, such as a committed API key, a vulnerable dependency or unsafe user input, and say what you would do.

Working in a team

This section draws on the NCSC's guidance in the UK; the no-blame culture it describes is widely used by engineering teams elsewhere.

Most questions about conflict, reviews and estimates test teamwork. NCSC's guidance on a no-blame culture is a good model: even the best make mistakes that cause security issues, and treating them without blame encourages people to report rather than conceal. The same applies to outages and failed deployments. A panel will trust you more if you can describe your own error, how you told people and what the team changed afterwards.

Questions to ask at the end of the interview

Careers advice agrees that the end of an interview is your turn. The National Careers Service says to bring your own prepared questions about the role or the organisation, and Prospects publishes a short list of good ones. The Muse recommends asking about day-to-day work, training and how you would grow, and Indeed says to base your questions on your research so that they show you have looked.

For this job, good questions come from the work itself:

  • How does the team decide what to build next, and how are estimates handled when no one is sure?
  • How does code get reviewed and released here, and what happens when a release goes wrong?
  • What is the on-call or support arrangement, and how are incidents reviewed afterwards?
  • What would a good first month look like for a new engineer, and who would pair with me?

Questions about reviews and incidents show that you think like an engineer who ships.

If you're new to this job (freshers and no experience)

Starting out is normal in this job, and panels know it. The Muse advises showing willingness to learn and using examples from study, volunteering and everyday responsibilities, and the National Careers Service recommends preparing examples from your past and telling them with the STAR method. If a question is about something you have not done, the University of Arizona's career service suggests saying so honestly and describing what you would do. Freshers, as new graduates are called in India and elsewhere, can use the same approach.

  • Projects count: a personal app, an open source fix, a bootcamp or degree project, a hackathon, a script that saved someone time. Walk through what you built, one decision you regretted and what you changed.
  • If you have not worked in a team, describe how you handled feedback on your code, or how you debugged something you could not reproduce.
  • Freshers can say what they would do on day one: read the code, ask questions, write a small change and ask for a review.

Say what you do when you do not know the answer. It is part of the job.

What the panel scores

  • Method: you measure, reproduce and test before you change.
  • Trade-offs: you explain why you chose a design and what it costs.
  • Responsibility: you act quickly and openly when something goes wrong.
  • Security and data protection: you know the common risks and the first response.
  • Teamwork: you review, disagree and mentor constructively.
  • Communication: you explain risk and uncertainty to non-technical people.

Common mistakes to avoid

  • Describing a technology stack without saying why you chose it or what you would change.
  • Presenting bugs and outages as someone else's fault, or not saying what you changed afterwards.
  • Debugging by guessing, with no measurement or reproduction step.
  • Treating security as someone else's job, or not knowing what to do with a leaked key.
  • Giving a single-point estimate with no assumptions.
  • Winning a code review argument without learning why the other person disagreed.

Questions about the interview

Will I have to code in the interview?

Many employers include a live coding exercise, a take-home task or a pairing session. The advert or the invitation usually says. Practise explaining your thinking aloud as you work, because panels listen to your approach as well as the result.

What if I do not know the language they use?

Say so honestly, then show how you learn: a recent example of picking up a new tool, how you checked your understanding, and the first thing you would build. Panels value a fast, careful learner.

How do I talk about projects I cannot show?

Describe the problem, your part, the design decisions and the result without naming confidential details. A personal or open source project is a good alternative to show your code.

How should I answer questions about mistakes?

Choose a real one, say how you found it, who you told, what you fixed and what you changed so it could not happen again. Avoid examples where nothing was your fault.

Sources

Related topics: Behavioral interview questions, Common interview questions.

Related: Project manager, Data analyst, Business analyst, Sales executive.