Software engineer interview questions: coding, system design and behavioral
Software engineer interview questions by round: coding, system design and behavioral, what each answer should show, how to think aloud and 3 sample answers.
Quick answer
Software engineer interviews usually combine a recruiter screen, one or more live coding rounds, a system design round for mid-level and senior roles, and behavioral questions about real projects. Interviewers score how you reason, not just whether the code runs: clarify the problem, talk through trade-offs, test your own code and explain past decisions such as incidents, code reviews and testing choices with specific stories.
Key takeaways
- Coding rounds test how you think through a problem, write code and check it, so narrate your reasoning and test your solution before you say you are done.
- System design questions appear mostly for mid-level and senior roles; lead with requirements and trade-offs, not a list of technologies.
- Behavioral rounds want real engineering stories: an incident, a code review disagreement, a bug you shipped. Shape them with the STAR interview method.
- Practice problems by pattern and out loud, then review mistakes, rather than grinding hundreds of problems in silence.
What do software engineer interviews assess?
A software engineer interview tries to predict how you will work on a real team: how you break down an unclear problem, how you write and check code, how you make design trade-offs and how you communicate with other engineers and nontechnical people. The U.S. Bureau of Labor Statistics describes software engineers as taking a broad view of a project’s system and software requirements and planning its scope and order of work, and lists analytical, communication and problem-solving skills and attention to detail among the qualities the work needs.
Princeton’s Center for Career Development describes the coding interview as a test of algorithms, data structures and common software terms, while noting that it does not mirror day-to-day engineering work. What it does reveal is whether you can think through a problem, develop a solution and plan how to test it. Interviewers want to see your process, which is why a silent, correct answer can score lower than a talked-through answer that needed one hint.
The behavioral side matters as much as the code. Harvard’s Mignone Center for Career Success advises candidates for software engineering roles to expect both technical assessments and behavioral questions. Many larger employers run these as structured interviews: the U.S. Office of Personnel Management describes structured interviews as asking every candidate the same questions and follow-up probes and scoring answers against set benchmarks. If you have not prepared for that format before, start with our guide to behavioral interview questions.
What does a typical software engineer interview process look like?
The exact sequence varies by company and level, but most processes are built from the same stages. Princeton notes that many hiring processes include multiple technical rounds, that coding assessments often come first, and that you are usually free to use the programming language of your choice unless the role requires a specific one. Ask the recruiter which stages you will face and what each one covers; that is a normal question and the answer shapes your preparation.
- Paste the actual job posting into the interview question generator to get practice questions for that specific role and interview stage, whether that is the phone screen, the hiring manager conversation, a panel or the final round.
- Read the posting for the stack, domain and seniority signals. A backend platform role and a mobile product role will weight design and behavioral questions very differently.
- Recruiter screen: a short call about your background, why this role, your level, location and timing. Prepare a two-minute summary of your experience; our guide to tell me about yourself helps, and the phone interview tips cover the logistics.
- Online assessment: a timed, self-directed coding test, often 30 to 60 minutes on a testing platform, reviewed later rather than in real time.
- Technical screen: a live coding session with an engineer in a shared editor, usually one or two problems, where talking through your approach is part of the score. Treat the setup like any video interview and test your editor and audio first.
- Coding rounds in the final loop: more live problems, sometimes including debugging or extending existing code rather than writing from scratch.
- System design round: common for mid-level and senior roles, where you design a service or feature end to end and defend the trade-offs.
- Behavioral or hiring manager round: past projects, conflicts, incidents, ownership and why you want this team.
Coding and technical questions (and what a good answer shows)
Live coding questions usually rest on core data structures such as arrays, strings, hash maps, linked lists, stacks, queues, trees and graphs, plus searching, sorting, recursion and basic dynamic programming. The question itself matters less than the behavior it draws out. Each prompt below is followed by what the interviewer is usually listening for.
- “Given an array of integers, return the indices of two numbers that add up to a target.” Shows you start with a correct brute-force idea, state its time complexity, then improve it with a hash map and explain the memory trade-off.
- “Merge a list of overlapping intervals.” Shows you notice that sorting first simplifies the problem and that you handle touching intervals and a single interval correctly.
- “Check whether a binary tree is a valid binary search tree.” Shows you avoid the common trap of comparing only parent and child, and can explain recursion with bounds.
- “Find the shortest path between two cells in a grid with walls.” Shows you recognize a breadth-first search and can justify it over depth-first search.
- “Design a data structure for a least-recently-used cache.” Shows you combine two structures to meet the required operation costs and can keep them consistent.
- “Here is a function with a bug. Find and fix it.” Shows a methodical debugging habit: reproduce, form a hypothesis, check it with a test case, then fix.
- “How would you test the function you just wrote?” Shows you think about edge cases, invalid input and boundaries without being prompted twice.
- “What is the time and space complexity of your solution, and can you do better?” Shows you can analyze your own code honestly and know when an improvement is worth the added complexity.
System design and practical engineering questions
System design rounds are usually reserved for mid-level and senior candidates, though some employers ask new graduates a simpler version. There is no single correct design. The interviewer is watching how you turn a vague prompt into requirements, how you estimate load, which trade-offs you make and whether you can change direction when they add a constraint.
A reliable order is: clarify users and requirements, estimate scale, sketch the main components and data flow, choose storage, then go deep on the one or two parts the interviewer cares about, covering failure, scaling and monitoring.
- “Design a URL shortener.” Shows you separate read and write paths, handle key generation and collisions, and think about caching for heavy reads.
- “Design a notification service that sends email, SMS and push messages.” Shows queues, retries, idempotency and how you avoid sending the same message twice.
- “Design the backend for a chat application.” Shows you reason about real-time delivery, message ordering, storage and offline users.
- “Our service is slow under peak load. How would you investigate?” Shows you measure before you change anything: metrics, traces, logs, then a hypothesis.
- “How would you migrate a large table to a new schema without downtime?” Shows practical experience with backfills, dual writes, feature flags and rollback plans.
Behavioral and motivation questions for software engineers
Engineering behavioral questions are specific to how software gets built and run. Interviewers want evidence of ownership, collaboration in code review, judgment about quality and speed, and honest handling of mistakes. Build a small bank of real stories from work, internships, open source or substantial school projects; the STAR method answer generator can help you shape your notes into situation, task, action and result.
- “Tell me about a production incident you were involved in.” Shows calm triage, communication during the incident, a real root cause and the follow-up that stopped it recurring.
- “Describe a time you disagreed with feedback in a code review.” Shows you argue with evidence, stay respectful and can accept a decision that did not go your way.
- “Tell me about a bug you shipped.” Shows ownership without blame and the testing or process change you made afterward.
- “Describe a time you had to choose between shipping fast and doing it properly.” Shows you can name the trade-off, make it visible to others and plan to repay shortcuts.
- “Tell me about a technical decision you would make differently now.” Shows reflection and that you learn from consequences, not just from reading.
- “Describe a project where the requirements were unclear.” Shows you asked questions, wrote down assumptions and checked them with the people who owned the problem.
- “Tell me about a time you improved test coverage or reliability.” Shows you chose tests where failures were likely and measured the effect honestly.
- “How have you helped a less experienced engineer?” Shows mentoring through pairing and review rather than taking over the work.
- “Why do you want to work on this team, and what kind of engineering work do you enjoy most?” Shows you researched the product and stack and can connect your interests to their problems.
How to practice coding problems and think out loud
Volume alone is not the goal. Practicing by pattern, such as two pointers, sliding windows, breadth-first search, heaps and memoization, lets you recognize unfamiliar problems as variations of ones you know. Princeton cautions that crowd-sourced interview question boards may not reflect the material or conditions of your actual interview, so use them for practice, not prediction.
Thinking aloud is a skill to rehearse, not a personality trait. Princeton lists rushing, fear of asking questions and getting flustered as common pitfalls, and recommends building a process for testing your code and gracefully incorporating an interviewer’s feedback when they point out a misstep.
- Restate the problem in your own words and ask about input size, edge cases and expected output.
- Work one small example by hand before writing code.
- Describe a simple correct approach and its complexity, then say whether and how you would improve it.
- Code while explaining intent, not syntax: say why you need a set here, not that you are typing a loop.
- Trace your code against your example and two edge cases, fix what you find and restate the final complexity.
- After each practice session, write down the pattern, the mistake you made and what would have spotted it sooner, then retry the problem a few days later without notes.
Prompt: “Return the length of the longest substring without repeating characters.” Candidate: “Before I start, can the string be empty, and is it ASCII or full Unicode? … OK. The brute-force idea is to check every substring, which is cubic, so too slow for long input. Since I need a contiguous window with no repeats, I’ll try a sliding window: move the right edge forward, keep the last index where I saw each character in a map, and jump the left edge past a repeat. That should be linear time and memory proportional to the character set. Let me check it on ‘abba’ first, because the left edge must never move backward.”
Three worked sample answers to software engineer interview questions
The answers below are invented for illustration, including the teams, systems and figures in them. They show structure and the level of technical detail interviewers usually want; build yours from projects you actually worked on and be ready for follow-ups on every decision.
Each one keeps the setup short, names the engineer’s own actions with “I”, and ends with a result and a change in how they work.
Question: “Tell me about a production incident you were involved in.” Situation: I was on call for our team’s order service when error rates on checkout jumped shortly after a routine deploy on a weekday evening. Task: As the on-call engineer, I had to restore checkout first, then find the cause. Action: I posted in the incident channel that I was investigating, checked the deploy timeline against the error graph and rolled the deploy back within a few minutes, which brought errors down. I then reproduced the failure in staging: a new database query ran without an index on one table, and under real traffic it timed out and exhausted the connection pool. I added the index through our normal migration process, wrote a load test that reproduced the timeout, and redeployed the change behind a feature flag. Result: Checkout was degraded for roughly fifteen minutes. In the review I proposed adding query plan checks for new queries to our pull request template, and the team adopted it. I now check query plans before any change that touches a hot path.
Question: “Describe a time you disagreed with feedback in a code review.” Situation: I opened a pull request that added retry logic to a payment webhook handler. A senior engineer asked me to remove the retries and rely on the provider’s own redelivery instead. Task: I believed in-process retries would recover faster from brief network errors, but I needed to resolve the disagreement without stalling the release. Action: Instead of arguing in comments, I asked for a short call. I learned their concern: retries without idempotency could charge a customer twice. That was a fair point I had not fully handled. I checked the provider’s documentation, confirmed redelivery behavior, and proposed keeping a single short retry only for network failures, plus an idempotency key on every write. I updated the pull request with tests for duplicate deliveries and summarized the decision in the description. Result: They approved the revised version, and the idempotency tests later caught a duplicate-delivery bug in another handler. I learned to ask what risk a reviewer is protecting against before defending my design.
Question: “Tell me about a bug you shipped and what you learned.” Situation: In my first few months as a junior engineer, I shipped a date filter for a reporting page that showed the wrong day’s data for users in some time zones. Task: The feature was mine, so finding and fixing the bug was my responsibility. Action: When a support ticket came in, I reproduced it by switching my machine’s time zone and found I was converting dates to UTC on the client and again on the server. I told my lead, wrote a failing test for users east and west of UTC, fixed the conversion so it happened in one place, and checked the other pages that used the same helper. Result: The fix went out the next day, and the tests now run in several time zones in CI. Since then I write tests for boundary values like midnight and month ends before I write the feature itself.
Questions to ask the interviewer and mistakes to avoid
Most loops end with time for your questions, and in engineering interviews those questions reveal how the team really works. Ask the engineer who interviewed you about their daily work, and save compensation for the recruiter. For more ideas, see questions to ask in an interview or generate a tailored list with the questions to ask interviewer generator.
- Ask: “How does code get from a pull request to production here, and how long does that usually take?”
- Ask: “What does on-call look like for this team, and what happened after the last significant incident?”
- Ask: “How do you balance new features against technical debt and reliability work?”
- Ask: “What would a new engineer be expected to ship in their first few months?”
- Mistake: coding immediately. Fix: spend the first minutes clarifying the problem and agreeing on an approach.
- Mistake: going silent when stuck. Fix: say what you are trying, what you have ruled out and what you would check next; a hint is not a failure.
- Mistake: declaring the code finished without testing it. Fix: trace it against an example and edge cases before the interviewer has to ask.
- Mistake: naming technologies instead of reasons in system design. Fix: tie every component to a requirement or trade-off.
- Mistake: incident or code review stories where someone else is the villain. Fix: describe what happened neutrally and focus on your actions and what changed.
- Mistake: forgetting the follow-up. Fix: send a short, specific note within a day; our guide to the thank-you email after an interview shows how.
Your checklist
Ticks stay on this page and are not saved.
Common questions
How many coding problems should I practice before a software engineer interview?
There is no reliable magic number. Covering the main patterns, such as hash maps, two pointers, sliding windows, trees, graphs, heaps and basic dynamic programming, matters more than a total count. Once you can recognize the pattern, explain a correct approach out loud and test your code within the time limit, extra problems add less than mock interviews and reviewing your mistakes.
Which programming language should I use in a coding interview?
Use the language you know best unless the posting or recruiter says otherwise; many employers let you choose. A language with concise syntax and a familiar standard library helps under time pressure. Know how to use its common collections, sorting and string tools without looking them up, and tell the interviewer if you rely on a library function so they can ask about its cost.
What if I get stuck during a live coding interview?
Keep talking. Restate what you know, try a smaller example, or describe a slower solution that works and say you will improve it. Asking a focused question is fine, and accepting a hint gracefully counts in your favor. Interviewers usually score the reasoning and communication they observe, so steady progress with a hint can beat a long silence.
Do entry-level software engineers get system design questions?
Less often, and usually in a lighter form. New graduate and junior loops tend to focus on coding and behavioral rounds, while some employers add an object-oriented design question or ask how you would structure a small feature. If the posting mentions system design or the recruiter lists a design round, prepare one end-to-end walk-through, starting with requirements and trade-offs.
What should I do if I have no professional engineering experience for behavioral questions?
Use internships, open source contributions, hackathons, capstone projects or substantial personal projects, as long as the story is true and you can explain your own role. A group project where a teammate’s code broke the build, or a bug you chased for days in a side project, can show the same ownership and collaboration interviewers ask about.
Sources and editorial notes
- Software Developers, Quality Assurance Analysts, and Testers — Occupational Outlook Handbook, U.S. Bureau of Labor StatisticsDescribes software engineers as taking a broad view of system and software requirements and planning scope and order of work, and lists analytical, communication and problem-solving skills and attention to detail as important qualities.
- Coding Interview Preparation — Center for Career Development, Princeton UniversityExplains what coding interviews evaluate, timed self-directed tests versus live sessions, multiple technical rounds, language choice, talking through your thought process, and pitfalls such as rushing, not asking questions and not testing code.
- Technical Interviews — Harvard FAS Mignone Center for Career SuccessAdvises candidates for software engineering roles to expect both technical assessments and behavioral questions, and notes that a focus on data structures and algorithms is usually helpful.
- Structured Interviews — U.S. Office of Personnel ManagementDescribes structured interviews that ask every applicant the same questions and probes and score responses against benchmarks, and defines behavioral versus situational questions.
Written by the Applystead editorial team with AI assistance, from the public sources above and original illustrative examples. Examples are not real applicant outcomes. This is general job-search information, not legal, tax or financial advice; hiring practices and local rules vary. No independent expert review is claimed. How we write and check guides.
Data
Compare Applystead
More Interviews guides
- How to answer “Tell me about yourself” in an interview (with examples)
- What are your strengths and weaknesses? How to answer, with 12 examples
- How to answer “Why do you want to work here?” (5 sample answers)
- How to answer “Why should we hire you?” (with sample answers)
- Where do you see yourself in 5 years? How to answer (with examples)
- Phone interview tips: how to prepare for a recruiter screen