Technical Interview Questions for Software Engineers, by Type

Technical interview questions for software engineers fall into a few types: data structures and algorithms problems, practical coding and debugging tasks, code review, fundamentals of languages, databases, and networking, system design, and questions about past technical work. Each type tests something different, so practise by type and match your preparation to each employer's format.

How to use this list

Software engineering interviews draw from a fairly stable set of question types. Each type exists to test something specific, and knowing what that is tells you what a good answer has to show. The examples below are representative of each type, not leaked questions from any company. Use them to find the types you are weakest at, then practise those in the format your target companies actually use.

Coding questions

Most loops include at least one coding round. The format varies more than the content.

Data structures and algorithms

What it tests: Whether you can choose a suitable data structure, reason about time and space cost, and write correct code under mild pressure. Interviewers watch how you clarify the problem and test your own solution as much as the final code.

Example questions:

  • Given an array of integers and a target, return the indices of two numbers that sum to the target.
  • Find the length of the longest substring without repeating characters.
  • Merge a list of overlapping intervals.
  • Return the k most frequent words in a document.
  • Detect whether a directed graph of task dependencies contains a cycle.

These cluster into patterns (hash maps, two pointers, sliding windows, heaps, graph traversal, dynamic programming). Practising by pattern transfers better than memorising individual problems.

Practical coding

What it tests: Whether you can work the way the job works: read existing code, add a feature without breaking things, and write tests. Increasingly common at product companies.

Example questions:

  • Add pagination to this API endpoint and write tests for the edge cases.
  • This function is correct but slow on large inputs. Find out why and fix it.
  • Implement a rate limiter that allows N requests per user per minute.
  • Parse this log file and report the slowest endpoints.

Debugging

What it tests: Methodical diagnosis: forming a hypothesis, using tools and logs to test it, and narrowing the search instead of guessing.

Example questions:

  • This test fails intermittently. Find the cause.
  • Users report the page shows another user's data after login. Where would you look first?
  • Memory use on this service grows until it restarts every few hours. How do you investigate?

Code review

What it tests: Judgement and communication: spotting correctness, security, and maintainability problems, and explaining them in a way a colleague would accept.

Example questions:

  • Review this pull request as you would for a teammate.
  • What would you ask the author before approving this change?
  • This change was generated with an AI assistant. What would you check before merging it?

Fundamentals questions

Short conceptual questions that check whether your knowledge goes below the surface of the tools you list. They often appear in screens or as follow-ups inside coding rounds.

Language and runtime

What it tests: Whether you understand how your main language actually executes, which is what lets you debug it.

Example questions:

  • Explain the JavaScript event loop. What runs first, a resolved promise callback or a setTimeout with zero delay?
  • What is the global interpreter lock in CPython, and when does it matter?
  • What is the difference between a value type and a reference type in your main language?
  • How does garbage collection work in the runtime you use most?

Databases and data

What it tests: Data modelling and query reasoning, since most bugs that reach production involve data.

Example questions:

  • Write a SQL query to find customers who placed an order in each of the last three months.
  • What does an index cost, and when would you not add one?
  • Explain transaction isolation levels and one anomaly each prevents.
  • When would you choose a document store over a relational database?

Web and networking

What it tests: Whether you can follow a request across the systems it touches.

Example questions:

  • What happens, step by step, when someone types a URL into a browser and presses enter?
  • What is the difference between a 401 and a 403 response?
  • How does HTTPS protect data in transit, and what does it not protect?
  • How would you design a REST API for a resource that can be edited by two users at once?

Concurrency and security

What it tests: Awareness of the failure modes that are hardest to see in tests.

Example questions:

  • What is a race condition? Give an example and a fix.
  • Explain a deadlock and two ways to prevent one.
  • How does SQL injection work, and how do parameterised queries stop it?
  • Where should secrets live in a deployed application, and where should they never live?

System design questions

What it tests: Breaking an open problem into components, making trade-offs explicit, and reasoning about scale, failure, and cost. Usually reserved for mid-level and senior roles, though juniors may get a lighter version.

Example questions:

  • Design a URL shortener.
  • Design the notification system for a social app.
  • Design a job queue that guarantees each job runs at least once.
  • How would you add search to an existing product with millions of documents?
  • Design a feature that sends user documents to an AI model and returns summaries. How do you handle cost, latency, and private data?

There is no single right answer. Interviewers grade the conversation: requirements first, a simple design, then where it breaks and what you would change.

Experience and judgement questions

What it tests: Whether your past work shows the level the role needs. These sit between technical and behavioural rounds and are often decisive for senior candidates.

Example questions:

  • Walk through the hardest bug you have fixed. How did you find it?
  • Describe a system you designed. What would you change now?
  • Describe a time you disagreed with a technical decision. What happened?
  • What is a production incident you were involved in, and what changed afterward?
  • How do you decide when code is good enough to ship?

Good answers name specifics: the constraint, the decision, the alternative you rejected, and the result.

Questions about AI tools

Many interviews now ask about AI coding tools directly, whether or not they allow them in the room. Policies differ between companies, so confirm the rules for each round with the recruiter.

Example questions:

  • How do you use AI assistants in your work, and where do you not trust them?
  • Here is code an assistant produced. What is wrong with it?
  • How would you test a feature whose output comes from a language model?

Questions to ask the interviewer

Most rounds end with time for your questions, and good ones also tell you whether to take the job.

  • What does a typical week look like for someone in this role?
  • How are changes reviewed, tested, and deployed?
  • What was the last production incident, and how was it handled?
  • What would make someone successful here in the first six months?

Frequently asked questions

What are the most common technical interview questions for software engineers?
The most common types are data structures and algorithms problems, practical coding tasks, debugging exercises, fundamentals questions on your language, databases, and web systems, system design for mid-level and senior roles, and questions about past technical work. Exact questions vary by company, so research each employer's format and practise the types you find hardest.
How many coding questions should I practise before interviews?
There is no reliable number. Coverage of patterns matters more than volume: hash maps, two pointers, sliding windows, trees, graphs, heaps, and dynamic programming. Practise until you can recognise which pattern a new problem needs and explain your approach aloud. Add practical and debugging exercises if your target companies use them, since algorithm drills do not prepare you for those.
Do junior software engineers get system design questions?
Sometimes, but usually a lighter version. Junior candidates might be asked to design a simple API, a database schema, or a small feature, with the focus on clear reasoning rather than large-scale architecture. Mid-level and senior candidates face deeper design rounds where trade-offs, scaling, and failure handling are central to the evaluation.
Are technical interview questions different for AI-era roles?
The core types are the same, but many companies now add code review of generated code, questions about how candidates verify AI output, and design questions involving model calls, cost, and private data. Some interviews ban AI tools and some allow them. Ask the recruiter about the policy for each round rather than assuming.