Free account: 5 resume reviews with AI rewrite suggestions + 10 eligible AI actions each month. See plans →
ReachRole

Interview practice

Developer Interview Questions

Use these common developer interview questions to rehearse your examples for India 2026 hiring. Each question includes a model answer structure and practical tips you can adapt to your own resume, projects, and work history.

role specific

Walk me through how you would design a URL shortener that handles 10,000 requests per second.

What interviewers are looking for
Write your answer first

Saved on this device only — nothing is uploaded.

Reveal model answer & level guide
Model answer

I would size it before designing it. At 10,000 requests per second the traffic is overwhelmingly reads, so the redirect has to be the fast path. I would generate the short key from a counter encoded in base62 rather than hashing the URL and then handling collisions, keep the mapping in a key-value store, and put a cache in front of the redirect. The strongest answers say what they would do about hot keys, and what happens to the database when a popular key expires and every request misses the cache at once.

How the bar moves by level
Entry
Reach a working design: how keys are generated, where they are stored, and what happens on a redirect.
Mid
Put numbers on it. State the read-to-write ratio, why base62 over a UUID, how much storage a year costs you, and where the cache sits.
Senior
Name what breaks first at that rate and how you would know — hot keys, a stampede when a popular entry expires, the ID generator becoming the contended path — and say what you would shard or precompute.
Practice this question with AI
role specific

A production API has p95 latency of 2 seconds. How do you find the cause?

What interviewers are looking for
Write your answer first

Saved on this device only — nothing is uploaded.

Reveal model answer & level guide
Model answer

I would treat this as a tail problem rather than a slow-service problem. If p50 is healthy then most requests are fine and something is affecting a subset, so I look for what varies between requests: one slow dependency, connection pool exhaustion, garbage collection pauses, or a query that only becomes an N+1 for large accounts. Before changing anything I want per-dependency timings so I can separate our latency from someone else’s. A good answer ends with the evidence that would confirm the cause, not with a guess at the fix.

How the bar moves by level
Entry
Give a search order: recent deploys, error logs, which endpoint is slow.
Mid
Treat it as a tail problem, not an average one. Look for GC pauses, connection-pool exhaustion, an N+1, or one slow dependency — things that hit some requests and not most.
Senior
Say what instrumentation you want before guessing, how you separate your own time from downstream time, and what you do when the real fix does not fit inside the incident.
Practice this question with AI
role specific

When would you denormalise a database schema, and what does it cost you?

What interviewers are looking for
Write your answer first

Saved on this device only — nothing is uploaded.

Reveal model answer & level guide
Model answer

I would denormalise when a read path is hot enough that the join is the bottleneck and the duplicated value changes rarely — a cached count, a copied display name on a feed row. The cost is that the same fact now lives in two places and can disagree, every write has to update both, and any change to the source column becomes a migration. A strong answer says how the copy stays correct: which code owns the write, how drift is detected, and whether a materialised view or a cache would buy the same speed without adding the invariant.

How the bar moves by level
Entry
Frame it as trading write cost for read speed, and give one case — a join on a hot page.
Mid
Name the cost concretely: write amplification, a second place the same fact can be wrong, and a migration every time the copied column changes.
Senior
Say how you keep it safe — who owns the write path, how drift gets detected — and whether a materialised view or a cache buys the same win without the new invariant.
Practice this question with AI
role specific

Explain the difference between optimistic and pessimistic locking, and when you would pick each.

What interviewers are looking for
Write your answer first

Saved on this device only — nothing is uploaded.

Reveal model answer & level guide
Model answer

Optimistic locking assumes conflicts are rare: you read a version number and the write fails if the version has moved, so the caller retries. Pessimistic locking takes the lock up front so nobody else can touch the row while you work. I would pick optimistic for read-heavy work where a conflict is unlikely and a retry is cheap, and pessimistic where losing the conflict destroys real work — inventory, payments, anything where a lost update is a business problem. The best answers name what goes wrong at scale: retry storms on one side, held locks and deadlocks on the other.

How the bar moves by level
Entry
Define both correctly and give one example of each.
Mid
Choose by contention: optimistic where conflicts are rare and a retry is cheap, pessimistic where losing the conflict means losing real work.
Senior
Describe what the user sees when it goes wrong — a retry storm, a lost update, a lock held across a network call — and how you bound it with version columns, timeouts, and short transactions.
Practice this question with AI
role specific

How do you decide what belongs in a unit test versus an integration test?

What interviewers are looking for
Write your answer first

Saved on this device only — nothing is uploaded.

Reveal model answer & level guide
Model answer

I decide by what would actually break. Logic with branches and edge cases gets unit tests, because they are fast and they pin behaviour down precisely. Wiring, serialisation, queries, and anything that crosses a boundary gets an integration test, because that is exactly where a mock will lie to you and still pass. I try not to unit-test code that only forwards a call, since the test then just restates the implementation. A strong answer talks about cost: which layer catches the most real bugs per second of runtime, and which tests they would delete.

How the bar moves by level
Entry
Unit tests one piece in isolation, integration checks the pieces work together. Give an example of each.
Mid
Choose by what actually breaks: branching logic gets unit tests, wiring and serialisation get integration tests. Say what you deliberately would not test.
Senior
Talk about cost. Say which layer catches the most real bugs per second of runtime, where the suite turns slow and flaky, and what you would delete.
Practice this question with AI
role specific

Your service depends on a third-party API that goes down intermittently. How do you make it resilient?

What interviewers are looking for
Write your answer first

Saved on this device only — nothing is uploaded.

Reveal model answer & level guide
Model answer

I would contain the blast radius first: a timeout short enough that hanging calls cannot pile up and exhaust our workers, retries with backoff and jitter so we do not synchronise a thundering herd, and an idempotency key so a retry is safe to make. Then a circuit breaker so we stop hammering a service that is already down, and a defined degraded response — cached data, a queued job, or an honest error. The part most candidates skip is the product decision: what the user sees when it is down for an hour, not for two seconds.

How the bar moves by level
Entry
A timeout and a retry, and make sure the failure does not take your request down with it.
Mid
Retries with backoff and jitter, an idempotency key so a retry is safe, and a defined fallback or degraded response.
Senior
A circuit breaker with a stated open condition, a bulkhead so one dependency cannot exhaust your workers, and a decision about what the product does when it is down for an hour — not two seconds.
Practice this question with AI
role specific

Talk me through your approach to reviewing someone else’s pull request.

What interviewers are looking for
Write your answer first

Saved on this device only — nothing is uploaded.

Reveal model answer & level guide
Model answer

I read the description first and check the change actually matches it, then read the test diff before the implementation, because the tests tell me what the author believed could break. I separate blocking comments from preferences and label which is which, so the author is not guessing what stops the merge. If the approach itself worries me I raise that first, since there is no point polishing naming in code we might not keep. A strong answer says what they do when they disagree with an approach that already works — that is the review that costs you a colleague if you handle it badly.

How the bar moves by level
Entry
Check it does what it says, run it, and leave comments someone can act on.
Mid
Separate blocking from non-blocking. Read the test diff, not just the code, and ask about the case the author did not cover.
Senior
Review the design decision before the syntax, and say what you do when you disagree with an approach that already works — that is the review that costs you a colleague if you get it wrong.
Practice this question with AI
role specific

How would you migrate a large table without downtime?

What interviewers are looking for
Write your answer first

Saved on this device only — nothing is uploaded.

Reveal model answer & level guide
Model answer

I would use expand and contract. Add the new column, write to both old and new, backfill in throttled batches so replication does not fall behind, switch reads once the data matches, and drop the old column in a later release. Every step is reversible on its own, which is the point. The strongest answers name the step that is not reversible, say how long they would sit in dual-write before trusting it, and explain how they verify the backfill actually matched — usually a comparison job on a sample or a checksum, not an assumption.

How the bar moves by level
Entry
Batch it, avoid locking the table, and keep a way back.
Mid
Expand and contract: add the column, dual-write, backfill in throttled chunks, move reads, then drop. Say how you pace the backfill.
Senior
Name the step you cannot reverse, how long you would sit in dual-write, and how you prove the backfill matches before reads move over.
Practice this question with AI
role specific

What is your process for debugging an issue you cannot reproduce locally?

What interviewers are looking for
Write your answer first

Saved on this device only — nothing is uploaded.

Reveal model answer & level guide
Model answer

I would stop trying to reproduce it and start narrowing what is different: data shape, scale, concurrency, configuration, dependency versions, or time. Then I add targeted logging or a flag so I can collect evidence in the environment where the bug actually lives, and I form a hypothesis that predicts something observable rather than changing things and hoping. If it still will not reproduce, I would ship a guard that makes the failure safe and leave the instrumentation in. A good answer includes the point at which they would stop spending on it.

How the bar moves by level
Entry
Read the logs, ask what is different about the environment, and try to get a reproduction.
Mid
Narrow by difference — data, concurrency, config, version — and add targeted logging or a flag to collect evidence where it actually happens.
Senior
Say how you avoid a fishing expedition: a hypothesis that predicts something observable. Then say what you do if it never reproduces — a guard, instrumentation, and a decision about whether to keep spending on it.
Practice this question with AI
role specific

How do you decide between adding a feature to a monolith and extracting a service?

What interviewers are looking for
Write your answer first

Saved on this device only — nothing is uploaded.

Reveal model answer & level guide
Model answer

I would keep it in the monolith unless the boundary is real: a different scaling profile, a different release cadence, or data another team genuinely owns. Size alone is not a reason. Extracting buys independence and costs you a call that can fail, a deploy you do not control, and a transaction you no longer have — so the same bug now needs two log sources to diagnose. My default first move is a module with a clear interface inside the monolith, which gets most of the separation and none of the network, and makes the later extraction cheap if it is still warranted.

How the bar moves by level
Entry
Talk about size and who owns which part.
Mid
Split on a real boundary — different scaling profile, different release cadence, different data ownership — not on how many lines the file has.
Senior
Say what a service costs before it pays: a call that can fail, a deploy you do not control, a transaction you no longer have. Then say when you would take a module inside the monolith instead.
Practice this question with AI
role specific

Explain a caching strategy you have used and what you did about invalidation.

What interviewers are looking for
Write your answer first

Saved on this device only — nothing is uploaded.

Reveal model answer & level guide
Model answer

I would cache the read-heavy things that tolerate being slightly stale, key them by exactly what varies so two callers cannot collide, and be explicit about how entries leave — a TTL, a write-through update, or a bust on the write path. Then I would talk about failure, because that is what interviewers actually probe: what happens when a popular key expires and every request goes to the database at once, whether a stale read after a write is acceptable for this data, and whether the system still stands up if the cache disappears at peak.

How the bar moves by level
Entry
Name the cache, what goes in it, and the TTL.
Mid
Say why that data and that key — read-heavy, tolerant of being slightly stale — and how entries leave: expiry, write-through, or an explicit bust.
Senior
Go at the failure modes: a stampede when a hot key expires, stale reads right after a write, and what happens to the database if the cache disappears at peak.
Practice this question with AI
role specific

How do you handle a bug that only appears under concurrent load?

What interviewers are looking for
Write your answer first

Saved on this device only — nothing is uploaded.

Reveal model answer & level guide
Model answer

I would look for shared mutable state on that path: an object cached across requests, a field on a shared instance, or a check-then-write against a row with no constraint behind it. I would reproduce it by running the operation in parallel rather than by adding general load, and use a request id through the logs to see how the operations interleaved. The fix belongs at the lowest layer that can enforce it — usually a unique index or a database constraint rather than a check in application code. Strong answers say how they would prove the fix, since a one-in-ten-thousand race is not proven by a single green run.

How the bar moves by level
Entry
Say you suspect a race and try to reproduce it under load.
Mid
Name the shared thing — a mutable field, a pooled connection, a row — and how you narrow it: a request id through the logs, or a test that runs the operation in parallel.
Senior
Fix it at the right layer: a unique index or a database constraint rather than a check in application code. Then say how you would prove it, since a race that fires once in ten thousand requests is not proven by one green run.
Practice this question with AI
behavioral

Tell me about a time you made a measurable impact in software engineering roles.

What interviewers are looking for
Write your answer first

Saved on this device only — nothing is uploaded.

Reveal model answer
Model answer

In my last Developer project, I found a repeated bottleneck in architecture, debugging, delivery, and collaboration and turned it into a focused improvement plan. I defined the baseline, aligned the team on the metric, shipped the change in two iterations, and reviewed the result after launch. The strongest version of this answer names the exact metric you moved, the decision you owned, and the tradeoff you made to get the result without hiding team contributions.

Practice this question with AI
behavioral

Describe a situation where you had to influence someone without direct authority.

What interviewers are looking for
Write your answer first

Saved on this device only — nothing is uploaded.

Reveal model answer
Model answer

I would describe a situation where I needed buy-in from a peer team or senior stakeholder, then show how I earned trust with evidence rather than pressure. A strong answer explains the other person’s concern, the evidence I used to reduce their risk — in Developer work that usually means something concrete drawn from architecture, debugging, delivery, and collaboration — and the compromise that moved the work forward. The outcome should show influence through clarity, not title power.

Practice this question with AI
behavioral

Tell me about a time you received difficult feedback and changed your approach.

What interviewers are looking for
Write your answer first

Saved on this device only — nothing is uploaded.

Reveal model answer
Model answer

I would pick feedback that changed a real work habit, not a harmless weakness. For example, I once received feedback that my updates were too technical for business stakeholders, so I started sending one-line context, impact, risk, and next step summaries before deeper detail. For a Developer the feedback worth choosing is one that changed how you handle architecture, debugging, delivery, and collaboration. The answer should end with evidence that the change stuck, such as faster decisions, fewer clarification meetings, or better stakeholder confidence.

Practice this question with AI

Practice with your resume

Turn these questions into role-specific prep.

Upload your resume, choose a target role, and ReachRole will help you find weaker resume sections, missing keywords, and interview topics to practice.

Upload resume free