Software Engineer Interview Questions

Likely questions and prep pointers, drawn from current hiring patterns.

About Software Engineer interviews

Software Engineer interviews are some of the most structured in the job market, and that structure cuts both ways: it's predictable to prepare for, but the bar is high and the signal is granular. A typical loop starts with a recruiter screen confirming language fluency, years of experience, and compensation alignment, followed by a hiring manager conversation focused on the kinds of systems you've built and your reasons for moving. The technical core is usually two to four rounds: at least one live coding interview testing data structures and algorithms, often a second round on practical coding (debugging, API design, or extending a small codebase), and — increasingly even at mid-level — a system design discussion. Many companies close with a values or 'bar raiser' round probing collaboration, disagreement, and ownership. Where candidates most often stumble is not raw algorithmic ability but communication under pressure: jumping to code before clarifying requirements, going silent while thinking, or failing to discuss trade-offs. The other common failure mode is treating behavioral rounds as a formality — strong engineers routinely get rejected at the values stage because they can't articulate impact, ownership, or how they handle conflict with non-engineering stakeholders. Preparation should be balanced: pattern practice for coding, structured frameworks for design, and rehearsed STAR stories for the human rounds.

Typical stages

  • Recruiter screen
  • Hiring manager interview
  • Technical coding round(s)
  • System design interview
  • Final / values / bar raiser

Common formats

  • Live coding (DSA)
  • Practical coding / take-home
  • System design whiteboard
  • Behavioral STAR
  • Code review walkthrough

What hiring managers screen for

  • Ability to clarify ambiguous requirements before writing code
  • Clean, idiomatic code with sensible naming and tested edge cases
  • Articulating trade-offs (time vs. space, consistency vs. availability, simplicity vs. extensibility)
  • Evidence of ownership beyond ticket completion — debugging production issues, influencing design, mentoring
  • Collaboration signals: how you handle code review, disagreement, and cross-functional partners

Red flags to avoid

  • Silent problem-solving — interviewer can't hear the reasoning
  • Jumping to code without clarifying inputs, outputs, or constraints
  • Defensive responses to hints or follow-up questions
  • Inability to estimate complexity or justify a data structure choice
  • Vague behavioral answers with no measurable result or personal contribution

Primary questions (15)

Behavioural

Tell me about a technically challenging project you worked on and what made it difficult.

Why this comes up: It's the most common opener and lets the interviewer calibrate the depth and scope of your real engineering experience.

Prep pointers
  • Pick a project where the difficulty was technical, not just political — interviewers want to hear about the engineering judgement.
  • STAR Situation: set the system context briefly (scale, team size, stack). STAR Task: be precise about your slice of the work. STAR Action: focus on the two or three key technical decisions and why. STAR Result: quantify (latency reduction, throughput, cost, error rate).
  • Be ready for drill-down questions on any claim — if you mention Kafka, expect a follow-up on partitioning or consumer groups.
  • Avoid choosing a project so old you can't remember the details, or so recent you can't share it under NDA.
Behavioural

Describe a time you disagreed with a technical decision made by a senior engineer or your manager. What did you do?

Why this comes up: Hiring managers want to see you can push back constructively without becoming a blocker — a key signal for collaborative engineering cultures.

Prep pointers
  • Choose a disagreement where you were partly right and partly wrong — pure vindication stories sound rehearsed.
  • STAR Action should show how you gathered evidence (benchmarks, prototypes, RFC) rather than relying on opinion.
  • Make explicit what you did once the decision was final — disagree-and-commit is a phrase many companies actively listen for.
  • Avoid framing the other person as incompetent; the interviewer is also a senior engineer.
Behavioural

Tell me about a time you shipped something that broke in production. How did you handle it?

Why this comes up: It tests ownership, incident response habits, and whether you have genuine production experience versus only feature work.

Prep pointers
  • Pick an incident with real user impact — minor staging bugs won't land.
  • STAR Action: walk through detection, triage, mitigation, root cause, and the durable fix in that order — interviewers map this to their own incident process.
  • Highlight the post-incident learning: what monitoring, test, or process change came out of it.
  • Don't blame the previous engineer, QA, or the deployment system — own your part.
Behavioural

Tell me about a time you had to learn a new technology or codebase quickly.

Why this comes up: Engineering stacks change constantly; this question screens for self-directed learning and ramp-up speed.

Prep pointers
  • Be concrete about the learning approach: reading source, building a toy version, pairing, docs — not just 'I picked it up'.
  • STAR Result should include something you shipped or contributed, not just 'I learned it'.
  • Mention how you knew you were ready to make changes — a sign of good engineering judgement.
  • Avoid examples where the technology was trivially close to what you already knew.
Technical

Given an array of integers and a target sum, return all unique triplets that sum to the target. Walk me through your approach before coding.

Why this comes up: It's a canonical two-pointer / sorting problem that lets interviewers test both algorithmic thinking and clean coding under time pressure.

Prep pointers
  • Clarify first: can inputs be negative? Are duplicates allowed in the input? Does order matter in the output?
  • Talk through the brute force O(n³) and explicitly state why you're rejecting it — interviewers want the trade-off articulated.
  • When coding, narrate the duplicate-skipping logic; that's where most candidates silently introduce bugs.
  • Finish with complexity analysis and at least two edge cases tested by hand (empty array, all zeros, target unreachable).
Technical

Design a URL shortener like bit.ly. Walk me through your approach.

Why this comes up: It's the most common system design warm-up because it touches APIs, storage choice, key generation, caching, and scale estimation in 45 minutes.

Prep pointers
  • Start by clarifying scope: read/write ratio, custom aliases, expiry, analytics — don't assume.
  • Do back-of-envelope math out loud: QPS, storage per year, bandwidth — interviewers expect this.
  • Have a clear position on key generation (base62 of counter vs. hashing vs. pre-generated) and defend the trade-off.
  • Layer the design: API → service → datastore → cache → analytics pipeline. Don't sprawl horizontally before going deep on one layer when probed.
  • Anticipate the 'what if it goes viral' follow-up — be ready to discuss CDN, read replicas, and cache strategy.
Technical

What's the difference between processes and threads, and when would you choose one over the other?

Why this comes up: It's a fundamentals check; weak answers here signal gaps that hurt later in system design and debugging rounds.

Prep pointers
  • Cover memory isolation, IPC cost, context switch cost, and failure isolation — not just 'threads share memory'.
  • Tie it to a real decision you've made: e.g., why a multi-process worker pool vs. async I/O in your language of choice.
  • Mention the GIL if Python is your language — interviewers will probe if you don't.
  • Be ready for the follow-up: async vs. threads vs. processes for an I/O-bound workload.
Technical

How would you debug a service that's intermittently slow in production?

Why this comes up: It separates engineers who've actually operated systems from those who only know feature development.

Prep pointers
  • Structure the answer: reproduce → observe (metrics, logs, traces) → hypothesise → isolate → fix. Resist jumping to a guess.
  • Mention specific tools you've actually used (e.g., flame graphs, distributed tracing, p99 dashboards) — generic answers feel hollow.
  • Discuss the dimensions: is it a subset of users, a region, a dependency, a time-of-day pattern, a deployment correlation?
  • Close with how you'd prevent recurrence: SLOs, alerts, load tests.
Situational

You're halfway through a two-week sprint and discover the design you committed to won't meet a key non-functional requirement. What do you do?

Why this comes up: It tests judgement under delivery pressure — a daily reality on engineering teams.

Prep pointers
  • Frame the response around surfacing early, not heroically fixing it in silence.
  • Mention concrete options you'd present: descope, extend, ship with known limitation, pivot design — with trade-offs.
  • Show awareness of who needs to be told (PM, tech lead, dependent teams) and in what order.
  • Avoid the trap of saying you'd just work harder or stay late.
Situational

A junior engineer opens a pull request with code that works but is hard to maintain. How do you handle the review?

Why this comes up: Even mid-level engineers are expected to mentor; this signals collaboration style and code quality bar.

Prep pointers
  • Distinguish between blocking issues, suggestions, and personal style — strong reviewers don't conflate them.
  • Talk about the medium: when to comment in PR, when to pair, when to write a follow-up doc.
  • Mention how you'd protect the junior's confidence while still raising the bar.
  • Avoid sounding like you'd rewrite their code for them.
Competency

Walk me through how you approach writing tests for a new feature.

Why this comes up: Testing philosophy correlates strongly with code quality and is a quick way to assess engineering maturity.

Prep pointers
  • Have a clear view on the test pyramid (unit, integration, e2e) and where you spend most effort, and why.
  • Discuss test design: behaviour vs. implementation, mocking boundaries, deterministic test data.
  • Be ready to talk about a time tests caught — or failed to catch — a regression.
  • Avoid dogma; interviewers respect 'it depends, here's how I decide' more than '100% coverage always'.
Competency

How do you decide when to refactor versus when to ship and move on?

Why this comes up: It probes pragmatism — a trait senior engineers are screened for and juniors are coached on.

Prep pointers
  • Anchor in concrete signals: change frequency of the file, blast radius, upcoming roadmap, test coverage.
  • Give an example of a refactor you chose NOT to do and why — that's often more impressive than one you did.
  • Mention how you scope refactors so they don't become months-long projects.
  • Avoid the binary trap; interviewers want to see judgement, not a rule.
Competency

Tell me about a piece of code or a system you're particularly proud of. Why?

Why this comes up: It reveals what 'good' looks like to you — a strong proxy for the quality bar you'll hold on the team.

Prep pointers
  • Pick something where the elegance is explainable in 60 seconds — overly complex examples backfire.
  • Be specific about what made it good: simplicity, extensibility, performance, the problem it removed.
  • Be ready to discuss what you'd change about it now — interviewers love reflective engineers.
  • Avoid choosing work where your contribution was small.
Culture fit

Why do you want to leave your current role, and what are you looking for next?

Why this comes up: It's asked at both recruiter and final stages to check motivation alignment and flight risk.

Prep pointers
  • Frame the move as moving toward something specific (scale, domain, ownership), not away from problems.
  • Be honest but professional about current frustrations — interviewers can smell rehearsed neutrality.
  • Tie your 'looking for' criteria to things this specific company demonstrably offers.
  • Avoid compensation as the headline reason even if it's a factor.
Culture fit

How do you stay current with new tools, languages, and engineering practices?

Why this comes up: It tests genuine curiosity — a trait that distinguishes long-term strong engineers from those who plateau.

Prep pointers
  • Be specific: name newsletters, podcasts, books, conferences, side projects — generic 'I read blogs' lands flat.
  • Show a filter: how you decide what's worth deep diving versus skimming versus ignoring.
  • Mention something you adopted at work because of this learning habit.
  • Avoid listing trendy tools you've only read tweets about — interviewers will probe.

More practice questions (15)

Technical

Implement an LRU cache with O(1) get and put.

Why this comes up: Classic combination of hashmap + doubly linked list that tests data structure composition.

Technical

Explain how a hash map handles collisions and what happens when it resizes.

Why this comes up: Common follow-up to test depth on a data structure candidates use daily.

Technical

Design the backend for a real-time chat application supporting one-to-one and group messaging.

Why this comes up: Tests WebSocket vs. polling reasoning, fan-out strategy, and message persistence design.

Technical

What's the difference between SQL and NoSQL, and how would you choose for a new service?

Why this comes up: Storage choice comes up in every system design round and reveals shallow understanding fast.

Technical

Given a binary tree, return the level-order traversal as a list of lists.

Why this comes up: Tests BFS implementation and queue handling — a common warm-up problem.

Technical

Explain what happens when you type a URL into your browser and press enter.

Why this comes up: Open-ended fundamentals check covering DNS, TCP, TLS, HTTP, rendering — interviewers probe wherever you sound vague.

Behavioural

Tell me about a time you received critical feedback. What did you do with it?

Why this comes up: Tests coachability — a trait teams optimise for given how much engineers learn on the job.

Behavioural

Describe a time you had to make a technical decision with incomplete information.

Why this comes up: Engineering rarely offers full information; this probes decision-making under ambiguity.

Situational

Your team's on-call rotation has become unsustainable due to alert fatigue. How do you approach fixing it?

Why this comes up: Tests systems thinking beyond code — operational maturity is increasingly valued.

Situational

A product manager asks for a feature that you believe will create significant tech debt. How do you respond?

Why this comes up: Common cross-functional tension; interviewers want to see negotiation, not refusal.

Competency

How do you approach estimating how long a piece of work will take?

Why this comes up: Estimation is a notorious engineering weakness; how you talk about it reveals seniority.

Competency

What does 'good documentation' mean to you, and when do you write it?

Why this comes up: Reveals whether you treat docs as a chore or a leverage tool.

Culture fit

What kind of team environment helps you do your best work?

Why this comes up: Two-way fit check — both screening you and giving you signal on the team.

Technical

How would you design rate limiting for a public API?

Why this comes up: Tests algorithm choice (token bucket, sliding window), storage, and distributed coordination.

Technical

Explain the difference between optimistic and pessimistic locking, with an example of when you'd use each.

Why this comes up: Concurrency questions separate engineers who've handled real contention from those who haven't.

Get a prep pack tailored to your experience

describe.me matches these questions against your real work history, flags your prep priorities, and gives you a STAR scaffold per question.

Start free →

Your prep stays yours. Opt-in by design, never shared without your say-so. Read the data promise