Backend Engineer Interview Questions — Senior Level
The questions change shape at this level and it catches people out. You will still be asked technical things, but the answer being scored is organisational: who else can do this, what did you write down, and who did you tell.
One thread runs through most of it. A senior backend engineer is the person the incident channel waits for, so several of these are really about command rather than diagnosis — what you say first, who you send where, and what you do about the fact that nobody remembers the order afterwards.
Start here — five written for this level
The opening of the set that exists only on this page, in the order we would prepare it. Editorial judgement, not a frequency count.
- Which service is yours, and what happens to it if you leave tomorrow?
- You're incident commander. Latency is up, three teams are in the channel. The first ten minutes.
- Walk me through the last post-mortem you wrote.
- How do you decide what gets an SLO, and what happens when you miss one?
- How do you review a design document rather than a pull request?
The phone screen
A recruiter filtering, not evaluating. Answer these quickly and get to the part that decides.
These two pages teach the frame. This page gives you the version that fits your field — read them together.
The screen
All levels
Short, and mostly about scope. The one thing that reliably goes wrong here is a candidate describing a system's architecture at length without ever saying which part they wrote — which reads, fairly or not, as somebody who was near the work.
Describe a system you worked on — and say which part was yours.Show the answer guide
Give the shape in two sentences, then narrow hard. "Order processing for a grocery delivery app — a service that took orders, held stock, and talked to a payment provider and a dispatch system. I owned stock reservation and the reconciliation job that fixed it when the two disagreed."
Then volunteer a number that establishes the scale honestly. Requests per second, rows in the biggest table, orders per day, number of services. If the numbers are small, say the small numbers — an engineer who ran something modest and understood it completely interviews better than one who was adjacent to something large.
Close with the part that was hard, and make it a real engineering problem rather than a deadline. The interviewer is deciding, in this answer, which of the next questions to ask you.
One candidate's version
A booking service for a clinic group — about 400 requests a minute at peak, one Postgres instance, four other services calling us. I owned the slot-availability logic. The hard part was that two people could hit the same slot in the same second from different clinics, and our first fix was a lock that turned a 40ms request into 900ms under load. We replaced it with a unique constraint and let the database reject the loser.
Your own system, your own numbers. The shape to keep: what it did, one honest scale figure, the part you owned, and a wrong turn you took before the right one.
What's your database?Show the answer guide
Answer with what you have actually operated, not what you have read about. Then say what you have done with it beyond writing queries: migrations on a live table, reading an execution plan, restoring a backup, changing a connection-pool setting because something fell over.
That second half is the whole answer. Everyone has used a database. Far fewer have had to fix one at speed, and this question exists to find out which you are.
Why are you leaving, and what are you looking for?Show the answer guide
One sentence on leaving, then spend the time on what you want — that half is the useful one and almost nobody uses it. Being specific here filters out roles you'd resent, which is worth more than sounding agreeable.
"I want to own a service end to end rather than one endpoint of it" is a real answer. "New challenges" is not one, and it invites an interviewer to fill in the blank themselves.
What are your salary expectations?Show the answer guide
Give a range and say what market it's anchored on — local, the client's country, or the currency of the contract. For remote work across borders those are three different numbers, and a figure with no stated basis invites the other side to supply one.
The paperwork questions
All levels
Asked early and plainly where hiring quotas and work permits govern the shortlist, late and hedged elsewhere. They are decisions either way, and the candidate who has not thought about them stalls at the offer rather than at the whiteboard.
The decision that governs software titles in Saudi Arabia is not the engineering one. Ministerial Resolution 28889, issued 5 October 2020 and in force from 27 June 2021, set a 25% Saudization rate across communications and IT engineering, application development, programming and analysis, and technical support, at establishments of five or more workers — with a minimum counted wage of SAR 7,000 a month for specialised roles and SAR 5,000 for technical ones. The separate engineering decision carries a different rate, a different floor and an accreditation condition, and treating them as one is a mistake a hiring manager there hears immediately.
Read it from where you stand. A national candidate has a legal reason to be in the room and a wage floor that is a floor rather than an aspiration. An expatriate candidate is competing for a shorter shortlist than the job ad implies — and, since mid-2025, holds a work permit that carries a skill classification assessed on qualifications, experience, wage and age, reassessed at renewal rather than fixed once.
Neither is a reason to raise the subject. Both are reasons to know what is being weighed while somebody asks you something that sounds like admin.
Do you need sponsorship, and is your permit transferable?Show the answer guide
Give status, transferability and a realistic start date in a single pass. A transfer and a new visa are different problems on different timelines, and a hedged answer here is read as postponing bad news rather than as discretion.
If the position is complicated, lead with the complication and follow immediately with the date. Employers plan around dates. They cannot plan around ambiguity, and ambiguity is what loses the slot to someone else.
Where would the data live?Show the answer guide
This looks technical and is often commercial, which is why it sits here. For a government client, a bank, or a customer with data-residency obligations of its own, the region a database runs in can be written into the contract — and an engineer who treats it as a latency question has missed what is being asked.
The answer that lands: find out what the customer's contract requires before choosing anything, name the constraint as a constraint rather than a preference, then talk about what it costs. And if you have never worked under one of these requirements, say so and say how you would find out — that is far stronger than improvising a compliance opinion, which is the easiest way to sound unsafe in a regulated-sector interview.
Are you comfortable working in English all day?Show the answer guide
Asked outright for distributed-team roles in offshore delivery markets, and measured silently almost everywhere else. What is being tested is not fluency; it is whether you can disagree with a design decision in English, in writing, in front of people who don't know you.
Describe the usage rather than a level: written daily in reviews and design documents, spoken in a weekly call with a team in another country. "Advanced" describes nothing and gets tested two minutes later.
Verified: — Scoped. The decision number, date and scope were checked against a Gulf law-firm alert; the wage floors and the three job groups against a Saudi financial-press report published on the day it commenced. No ministry page was readable from this environment. The 2026–2028 Nitaqat cycle re-based sector quotas and we could not confirm at Tier 1 that the ICT rate still stands at 25% — check the establishment's own band on the ministry's platform.
Quotas, wage floors and permit rules change without notice, and a permit's skill classification is decided by the ministry rather than by how an employer describes the job. This is the shape of the rule, not advice about your file.
The technical sit-down
Where it stops being about your CV. You either know these or you don't — and bluffing fails on the follow-up.
The data questions, and they are the interview
Entry – senior
Whatever the job ad emphasises, this is where backend interviews are won and lost, because it is where production incidents come from. Expect follow-ups that add a constraint and ask you to revise — being able to revise is the point.
A pattern worth knowing before you go in: many of these have a correct answer that is boring and a clever answer that is wrong. Interviewers who have run systems prefer the boring one and are checking whether you reach for it.
This query got slow as the table grew. How do you find out why?Show the answer guide
Read the plan. Say that first, before anything else, because a lot of candidates start guessing at indexes and the plan is the only thing that turns this from opinion into diagnosis.
Then narrate what you'd look for: whether it's scanning a table it should be seeking into, whether the row estimates are wildly off from actual (which points at stale statistics rather than a missing index), and whether an index that exists is simply not being used — a function wrapped around the column, a type mismatch, or a leading wildcard will each defeat one silently.
The addition that separates a working engineer: say what you'd check about the query and not just the schema. A query that was fine at ten thousand rows and dies at ten million usually asks for something it doesn't need — the full row set to count them, an unbounded result the application then truncates, an N+1 the ORM generated where a join would do. And say what you would not do: add an index in production at peak without knowing what it costs on writes.
You added an index and it's still slow. What now?Show the answer guide
Confirm it's being used at all — a composite index is only usable from its leading columns, so an index on (a, b) does nothing for a query that filters on b alone. Then check whether the planner chose it and rejected it, which usually means statistics.
And consider that the query may not be the problem. Lock contention, a connection pool at its limit, or a saturated disk all look exactly like a slow query from the application's side, and distinguishing them is the actual skill here.
Two requests try to book the last seat at the same time. What happens?Show the answer guide
The single best question in this whole interview, and the answers separate people sharply. The naive version — read the count, decide, write — has a race in it that no amount of application code closes, and saying so out loud is the first mark.
Then give the options and their costs. Let the database decide: a unique constraint or a conditional update whose row count tells you whether you won. Cheapest, most reliable, and it turns a race into an error you can handle. Pessimistic locking: correct, and it serialises everything behind it, which is how a fast endpoint becomes a slow one under exactly the load you built it for. Optimistic concurrency: a version column, retry on conflict, good when conflicts are rare and bad when they are not.
Then the part people forget: what the user sees. Losing this race is a normal outcome, not an error, and an interviewer notices when a candidate designs the failure message as carefully as the lock. If they push further they'll ask what happens when the seat and the payment live in different systems — that is the next section.
What to avoid
Do not say "I'd use a transaction." A transaction alone does not prevent this at the isolation levels most systems actually run at, and the follow-up asking which isolation level and why is where that answer ends.
What does a transaction actually guarantee you here?Show the answer guide
Answer at the level of consequences rather than reciting the acronym. Atomicity means the partial state never becomes visible; durability means a committed write survives the process dying. Isolation is the one that matters in practice and the one nobody checks: the default level on most systems permits anomalies people assume are impossible.
Name the concrete thing: read-modify-write across two statements is not safe just because both are inside a transaction, unless the isolation level or an explicit lock makes it so. Say which level your systems ran at. Most candidates do not know, and knowing is a strong signal.
How do you migrate a large table without downtime?Show the answer guide
Expand, migrate, contract — and say it as three deploys, because the reason this is asked is to see whether you think in deploys or in DDL statements.
Expand: add the new column as nullable with no default that rewrites the table, and deploy code that writes to both and reads from the old. Migrate: backfill in batches with a pause between them, watching replication lag rather than wall-clock time. Contract: flip reads to the new column, deploy, then drop the old one in a separate release once you're certain nothing reads it.
The details that show you have done it: adding a `NOT NULL` column with a default can rewrite the whole table and take a lock on some engines and versions; a long-running backfill can hold a transaction open and bloat the log; and the rollback plan matters more than the forward plan, because the release you cannot undo is the one that turns a bad afternoon into an incident. Say too that you would test the migration against a copy of production data — a hundred seeded rows tells you the syntax is right and nothing else.
When would you denormalise?Show the answer guide
When a read path is measured as too slow and the join is the measured cause — in that order, and say the order, because denormalising first is how a schema becomes unmaintainable in service of a problem nobody had.
Then name the cost honestly: you now own the consistency yourself, which means every write path that touches the source of truth must update the copy, including the ones written by someone else next year. Saying that out loud is what separates a decision from a habit.
What goes in a cache, and what happens when it's wrong?Show the answer guide
Cache things that are expensive and tolerate being slightly stale, and be explicit about what "slightly" means for that data — seconds for a product listing, never for an account balance.
The interesting half is invalidation. Say which strategy you'd use and what it fails at: time-to-live is simple and serves stale data for exactly as long as you chose; event-based invalidation is precise and breaks silently when a write path forgets to publish. Then mention the failure everyone meets eventually — when the cache empties and every request goes to the database at once.
Where would you not use a relational database?Show the answer guide
Have a real answer rather than a preference — a document store where the shape genuinely varies per record, a search index for full text, a time-series store for metrics, a blob store for files that people keep putting in a database. Then say the default is relational and the burden of proof is on moving off it.
How do you handle a schema change that another team depends on?Show the answer guide
By never making a breaking one in a single step — the same expand-and-contract discipline, applied to a contract rather than a table. Add the new field, tell the consumers, give them a deadline that is a real date, and remove the old one only after checking that nothing reads it rather than after being told nothing does.
The sentence that earns trust: you would find out who the consumers are before you start, and "we'll announce it in the channel" is not finding out.
Contracts, and the failure nobody planned for
Mid – senior
This section is where an interviewer finds out whether you have operated something or only built it. The questions all have the same underlying shape: something between two systems failed halfway, and the state on either side no longer agrees.
The payment succeeded and your service crashed before recording it. Now what?Show the answer guide
Do not reach for distributed transactions. Say what actually gets built: the operation is made idempotent with a key the caller supplies, so a retry lands on the same result rather than charging twice; state is written before the external call, in a pending state, so there is always a record to reconcile from; and something reconciles afterwards, comparing your records against the provider's and resolving the difference.
The most convincing thing you can add is that reconciliation is a real job that runs on a schedule and has an owner, not a script somebody wrote once. And if you have never worked on payments, the same shape applies to any external call with an effect — sending a message, provisioning an account, dispatching a driver. Say the shape and name the case you actually worked on.
What does idempotent mean, in code rather than in the abstract?Show the answer guide
That doing it twice leaves the same state as doing it once, and the practical version is: the caller sends a key, you record it with the result, and a second request with that key returns the stored result instead of doing the work again.
Then say the awkward part, because it's the follow-up: the key has to be stored in the same transaction as the effect, or a crash between the two gives you the double-charge you were preventing. That detail is the whole difference between having read about this and having implemented it.
A downstream service is slow. What does your service do?Show the answer guide
The bad answer is retries. Retrying a saturated service is how a slow dependency becomes an outage, and it is worth saying that sentence out loud because it is the most common real-world version of this failure.
Build the answer up: a timeout shorter than your own caller's, so you fail before they do rather than holding their connection. Retries with backoff and jitter, capped, and only for operations that are safe to repeat. A circuit breaker so that once it is clearly down you stop asking and fail fast. Bulkheads — a bounded pool per dependency, so one slow thing cannot consume every worker you have.
Then the product question, which is the part that impresses: what does the user get? Degrading to a cached or partial answer is often better than an error, and deciding that is a conversation with whoever owns the product rather than a decision an engineer makes alone at 3am.
When would you put a queue between two services?Show the answer guide
When the caller doesn't need the result to continue, when the work is bursty and the consumer should smooth it, or when you need the work to survive the consumer being down. Say those as three separate reasons because they have different consequences.
Then the costs, which get skipped: you have inherited ordering questions, duplicate delivery, a dead-letter queue that somebody has to actually look at, and an end-to-end latency you can no longer see in a single trace. A candidate who names the dead-letter queue has run one.
How do you version an API?Show the answer guide
Additive changes without a version bump, breaking changes with one, and a stated policy for how long the old version lives. The specific mechanism matters far less than having decided one, and saying so is fine.
The realistic addition: most breaking changes are avoidable. Adding an optional field, tolerating unknown fields on the way in, and never repurposing the meaning of an existing one will avoid the majority of version bumps people end up making.
Where does authorisation live?Show the answer guide
On the server, on every request, checked against the resource being touched rather than against the shape of the route. Then name the failure this exists to prevent: an endpoint that verifies the caller is logged in and never checks that the record they asked for is theirs.
For a multi-tenant system, say how the tenant boundary is enforced — and say whether it is enforced in one place or repeated in every query, because the second is where the eventual leak comes from.
Three in the morning
Mid – senior
The situational half, and it is asked more seriously for this role than for almost any other because the on-call rota is a real part of the job. Answer these as narratives with an order of operations, not as principles.
Latency has tripled in the last twenty minutes. Walk me through it.Show the answer guide
Order of operations, out loud, and the first one is not a hypothesis. Was anything deployed or changed? Deploys, config flags, a migration, a dependency's own release. Most incidents are a change, and starting there resolves a large share of them in two minutes.
Then is it everything or something? One endpoint, one region, one customer, or all of it — that single split halves the search space. Then where in the stack: application, database, dependency, network, or the queue in between; the trace or the four golden signals tell you this faster than reading code.
Then say the thing that distinguishes an engineer who has been on-call: restore service first, diagnose second. Roll back, scale out, shed load, turn off the expensive feature — the post-mortem needs a cause, the customer needs the service. And keep a written timeline while you do it, because nobody remembers the order afterwards.
You've been paged for the same alert three nights running. What do you do?Show the answer guide
Fix the alert or fix the cause, and refuse the third option, which is to keep acknowledging it. An alert nobody acts on trains a team to ignore the page that matters.
Say which you'd do and why: if it is not actionable it should be a dashboard, not a page. If it is actionable and keeps happening, the follow-up work goes on the board with a real priority rather than in somebody's head.
Something you shipped caused an incident. Talk me through it.Show the answer guide
Pick one where you were genuinely the cause. The instinct to pick one where you were the hero is visible and it costs you.
Cover four things and no more: what broke, how it was found (and say honestly if a customer found it), what you did in the first ten minutes, and what changed afterwards so the class of failure is smaller. The fourth is the one being scored.
How would you know if the system was broken right now?Show the answer guide
Answer with what you'd actually look at, in order — error rate, latency at the tail rather than the average, saturation, and the one business metric that says whether users are getting what they came for.
The last one is the answer most candidates miss. A service can be green on every technical dashboard while orders have dropped to zero because a partner changed a field, and a team that watches only its own metrics finds out from the customer.
How much of this did an assistant write, and how do you know it's right?Show the answer guide
Ask about the policy before the exercise starts, not afterwards. Employer positions vary sharply — no assistance during assessment, assistance in preparation only, or an explicit interest in watching how you use it — and asking is always received better than being found out.
Where it is allowed, what's being measured is your review, not your prompting. Say which part you took as written, which you rejected and why, what you tested about it, and where you went to the documentation because you weren't sure. For backend work name the specific things you always check yourself: anything touching authorisation, anything that writes money, anything with a retry in it.
The failing answers are the two extremes — claiming you write everything unaided in a profession where almost nobody does now, or handing over code you cannot defend line by line. Both are the same failure: claiming ownership you cannot back under one follow-up question.
Also asked, and worth two sentences each: how you would find a memory leak · what you'd put in an alert versus a dashboard · the last time you were paged and what it turned out to be · how you'd load-test something before a launch.
The team questions
All levels
Shorter than on most role pages, deliberately, because for this role the behavioural signal mostly arrives inside the technical answers. These three are the ones that still get asked on their own.
Tell me about a technical decision you argued for and lost.Show the answer guide
A better question than the one about a decision you won, and it is asked more often than candidates expect. What's being tested is whether you can be overruled and still do the work well.
Weak
I wanted to use a different technology but the team decided to go another way. I disagreed but I supported the decision and we made it work. I think it's important to be a team player.
No position, no argument, no consequence, and a closing line that is a personality claim rather than evidence. It also quietly implies you were right, which is the thing the question is checking you won't do.
Strong
I pushed to split the reporting queries onto a read replica; the lead wanted to keep one database until we had a real problem. I lost, and I wrote down what I expected to happen so we'd know. Six months later a month-end report locked the orders table for two minutes and we did the split then — and it was easier by then because we'd added the query tags I'd asked for in the meantime. In hindsight he was right about the timing and I was right about the direction.
There's a concrete position, a concrete counter-position, a record of the prediction, an outcome, and — the part that makes it credible — a genuine concession that the other side was right about something. It reads as somebody describing a colleague rather than winning an argument a year later.
If the story ends with you being vindicated and nothing else, it is not an answer to this question.
How do you review someone else's pull request?Show the answer guide
Say what you look for in order — does it do what it claims, what happens on the unhappy path, what happens on a retry, and is anything here going to be expensive at ten times the volume. Style comes last and mostly belongs to a linter.
Then the human half: separate the blocking comment from the suggestion, say which is which explicitly, and move to a call at about the fourth reply. Reviewers who mark every comment as blocking are a real cost on a team and interviewers know it.
How do you explain a technical trade-off to someone non-technical?Show the answer guide
In time and money and risk, not in nouns. "Two weeks now and it stays fast at ten times the traffic, or three days now and we redo it around March" is the answer; naming the architecture is not.
Senior level: ownership, the pager, and the argument you lost
Senior
Somewhere in the second round the questions stop being about systems and start being about you and a system. Who else can run it. What you wrote down. Who you told, and when, and how long the gap was between knowing and saying.
A strong engineer underperforms in this round by answering organisational questions technically. Asked what happens to a service if you leave, they describe the service. The answer being scored is the other half.
Which service is yours, and what happens to it if you leave tomorrow?Show the answer guide
Two questions, and candidates answer the first one and stop. The second is the interview.
Name the service, then be specific about the exposure: which parts only you have debugged, which runbook does not exist, which alert routes to you personally rather than to a rota. Assume there is at least one — the interviewer does — and saying it plainly is not a confession — it is the thing the interviewer is trying to find out whether you can see.
Then spend the rest on what you have done about it. Somebody else took a release. The failure mode you had in your head is now a page in a document with the three things that actually break. The alert goes to the team address. And if the honest answer is that you have not done any of that yet, say what you would do in your first month here, because the question is about a habit, not a service.
The strongest ending available: name something you deleted. A component that no longer needs an owner is worth more than a document about how to own it.
You're incident commander. Latency is up, three teams are in the channel. The first ten minutes.Show the answer guide
This is not the diagnosis question. Diagnosis is what somebody else in the channel is doing while you do this, and answering it as diagnosis is how a genuinely good engineer fails it.
Start by saying the role out loud in the channel — "I'm running this" — because an incident with three teams and no named commander is three parallel investigations and two duplicated rollbacks. Then: one person on customer impact, so the answer to "how bad is it" is somebody's job rather than everyone's guess. One person per plausible cause, named, so nobody is investigating what someone else is investigating. You do not debug. The commander who starts reading logs has stopped commanding, and it is an easy mistake to make, because debugging is the comfortable thing to do.
Then the two things that separate somebody who has actually run one: timestamps in the channel, in writing, because the post-mortem is only as good as the log somebody kept while it was happening; and a stated interval — "I'll ask for status every ten minutes" — which stops the silence where everyone assumes somebody else has it.
And decide the mitigation on a clock. Roll back, flag off, shed load, cut the expensive feature. If a proposed fix will take longer than the mitigation, mitigate first and say so — the customer needs the service, the write-up needs the cause, and they are not the same deadline.
Walk me through the last post-mortem you wrote.Show the answer guide
The tell is whether the answer contains a person's name and a fault attached to it. Blame in a post-mortem is the thing that makes the next one less honest, and an interviewer at this level is listening for whether you know that in practice rather than as a slogan.
Give the shape: what happened, the timeline with real times in it, why it was possible rather than who did it, and what changed. Then say which of the actions actually shipped, and do not round it up. A candidate who says "two of the four; the third is still open and I own it" is more credible than one whose post-mortems all closed cleanly.
If you have never written one, say so and say what you would put in it. Do not invent one; the follow-up asks for a date and a timeline, and there is nowhere to go.
How do you decide what gets an SLO, and what happens when you miss one?Show the answer guide
Something gets one when there is a person on the other end who would notice and a decision that would change if it were missed. Everything else is a metric, and calling a metric an objective is how a team ends up with a wall of numbers nobody is accountable for.
Pick the user-facing thing rather than the component: the checkout completing, the message being delivered, the report arriving before the morning. A database's own uptime is not an objective, it is an input to one.
Then the half people skip: what missing it actually does. If the answer is "we talk about it", it is not an objective. The version with teeth is that feature work stops and reliability work starts until you are back inside it — and saying you have been on a team that actually did that, or that you have not and it was theatre, is a better answer than the textbook either way.
How do you review a design document rather than a pull request?Show the answer guide
Different job, and one that arrives with the title. A pull request review asks whether this is right. A design review asks whether this is the thing, and whether it can be undone.
What to look for, in order: is the problem stated in a way that could be wrong, or has it been written to justify the solution already chosen; what does this make impossible later; what happens at ten times the volume; and what is the smallest version that would tell us we are wrong before we build all of it.
Then the human half, which matters more here than on code: comment on the decision, not on the prose. A document returned with thirty wording notes and no position on the architecture has been reviewed by somebody who did not want to disagree.
An engineer on your team blocks everything. What do you do?Show the answer guide
Asked about a strong engineer rather than a difficult one, and that is the point of it. The person may be right on the technical merits and expensive anyway, and an interviewer wants to know whether you can hold both of those at once.
Do not start with the process fix. Start with what they are protecting — assume it is something real, and something they have been burned by. An engineer who blocks every schema change may well have restored a database at two in the morning. Naming the fear out loud is the move that changes the conversation, and it is what gets skipped on the way to a policy.
Then make the disagreement cheaper rather than louder: separate blocking comments from opinions and say which is which explicitly, put a time on the escalation — at the fourth reply it becomes a call, and if the call does not settle it, somebody decides and writes down why. And say who that somebody is. A team where nobody can end a technical argument has a much bigger problem than the person in the question.
Say the last resort too, because it is real: if it does not change, this is a management conversation with a named consequence, not another retrospective item. Candidates avoid saying that, and at this level it is what is being checked.
When would you split a service — and when do you refuse?Show the answer guide
Split when two parts of a system have genuinely different reasons to change, different scaling shapes, or different reliability requirements — and say that the strongest signal is organisational: two teams queuing behind each other's releases.
Refuse when the reason is that the codebase is untidy. A distributed system is a tidy codebase with network calls between the messy parts, and now the failure is partial. Say what you inherit the moment you split: a contract to version, a call that can time out halfway, data that lives in two places and disagrees, and a trace you need before you can debug anything.
The line worth ending on: the boundary you can draw as a module inside one deployment is one you can move next month. Draw it there first and see whether it holds.
You inherit a system whose author left three months ago. Your first month?Show the answer guide
Resist the rewrite, and say so in the first sentence, because that is the risk the question is testing for.
Instead: find out what it is for and who depends on it, from the people who call it rather than from the code. Get it running locally and write down every undocumented step as you go, because that list is the most valuable thing you will produce this month. Then find out what actually breaks — read the last six months of alerts and incidents rather than the code, since that is the difference between the system's reputation and its behaviour.
Change one small thing early and ship it. Not for the change; for the proof that you can get something from your machine to production, which is the fact you need before an incident, not during one.
Where's the line between senior and staff, from where you sit?Show the answer guide
No standard answer, which is why it gets asked, and one very clear bad one: reciting a career ladder to somebody who has written more of them than you have read.
The shape that holds up in this discipline: senior is measured on a system and the people around it — it works, it is understood by more than one person, and the team ships faster because you are there. The step after is measured on problems that belong to nobody: the data model three teams each half-own, the migration that needs somebody to care about it for two quarters, the decision that requires four teams to agree and has no owner with authority over any of them.
Say which one you are and say it plainly. Candidates reach up, and the follow-up asks for an example immediately. "I'm senior, and the thing I have not done is carry a decision across teams where I had no authority" is more hireable than a claim you then have to defend with a story that does not have it in.
One honest addition worth making: much of that work is writing and meetings rather than code, and saying whether you want that is more useful to both sides than saying you are ready for it.
You're told to cut the cloud bill by a third. Where do you start?Show the answer guide
Find out what it is spent on before proposing anything, and say that first — the answer may not be what the team assumes, and an engineer who arrives with an optimisation before a breakdown is guessing expensively.
Then the order worth working through: the things nobody owns — idle environments, forgotten snapshots, a staging cluster the size of production. Then the storage nobody has aged out, especially logs kept forever because nobody set a policy. Then data transfer, which is invisible on an architecture diagram and can be a far larger line than anyone expects. Only then the thing everyone reaches for first, which is instance sizing.
Say the sentence a senior engineer says here: name the number this costs in engineering time, and ask what you should stop doing to fund it. A third off the bill that costs two months of the team's roadmap is a decision somebody above you should make knowingly.
How long does a one-line change take to reach production on your team?Show the answer guide
Say the real number, including the waiting. A candidate who says "about three days, and two of them are the release window" has told the interviewer more about their organisation than an hour of architecture talk would, and the willingness to say it is itself the signal.
What technical debt did you decide to keep?Show the answer guide
Name it, say what it costs per month, and say what would make you finally pay it off. A senior engineer with no deliberately-kept debt has either not had to choose or has been fixing things nobody was suffering from.
The three on-call questionsShow the answer guide
How is the rota arranged · how do you onboard somebody onto it · what did you change after the worst month. One subject, three angles, and it is asked seriously here because on-call is the part of a senior backend job that people leave over.
Answer with the mechanics rather than the philosophy. How many people are in the rotation — the smaller it is, the more nights each person carries, and that number tells you more than any description of the culture does. Whether there is compensation or time back, and whether the day after a bad night is protected. Who the escalation is, by name, and whether they are actually reachable. And what happens to the rota when somebody is on leave.
The onboarding half is where senior signal lives, and it is simple: nobody carries the pager alone before they have shadowed a rotation and been handed a real page with somebody beside them. Say that you would rather delay somebody's first shift than have them wake at three with a runbook they have never opened.
Then the third: what you changed after the bad month. The answer that lands names a specific alert that was deleted or made actionable, because the culture that fixes alerts is the one where people trust the page. "We talked about it in the retro" is the answer that says nothing changed.
The closing conversation
The part most candidates waste. What you ask here is read as carefully as what you answered.
Questions to ask them
For this role the revealing questions are about operations, because that is the part of the job nobody writes in the ad. Two or three is plenty.
- Who is on call, how often, and what was the last page about?
- How long does it take a one-line change to reach production?
- What's the oldest service still running, and who understands it?
- How do you decide what gets built — and does engineering get to say no?
- What broke most recently, and what changed afterwards?
Ask the first one. "What was the last page about" is almost never rehearsed, and the answer tells you more about the engineering culture than any of the prepared ones.
The system-design round, and what it is really scoring
Candidates prepare this round as though the goal is the right diagram. It isn't. The interviewer already knows a design that works; what they're finding out is whether you ask what the requirements are before drawing, whether you say what your design is bad at, and whether you can be handed a new constraint halfway and adapt without starting over.
So spend the first five minutes on questions — how many users, read-heavy or write-heavy, how stale can this be, what must never be lost — and say the numbers back before you draw. Then design the simple version and add a component only when you can name the requirement that forced it. Two habits read very well: naming what you'd measure to know the design is working, and naming the part you're least sure about. Candidates think admitting uncertainty costs them; in this round it is close to the whole signal.
Local notes
Building for a client in another timezone
In a market built on exported outsourcing services, a large share of backend hiring is for delivery centres and offshore teams serving clients in other time zones. ITIDA, the ICT industry development agency, reports more than 240 offshoring companies operating more than 270 global delivery centres, with digital exports around USD 4.8 billion in 2025.
For a backend role specifically that changes three things. You will be asked about on-call across a timezone — whether you have carried a pager for a system whose users are awake while you are not. Written design documents matter more than they would locally, because a decision that would be settled at a desk gets settled in a document read eight hours later. And the data-residency question becomes contractual: the client's own obligations decide where your database runs, and being unbothered by that is a red flag to the person hiring you.
Markets with statutory pay-transparency rules
Longer loops with more stages, a system-design round that is genuinely weighted, and notice periods measured in months — state yours at the screen rather than at the offer. Take-home exercises are common and are usually discussed afterwards rather than scored in isolation, which means the conversation about your submission matters as much as the submission.
On pay questions, applicants across the EU have a right to pay information for the role before the interview and employers are not to ask about pay history. The scope is narrower than it is usually reported and the universal screening guide sets it out properly.
Markets with a published wage benchmark and a long onsite loop
The federal labour statistics office projects about 106,100 annual openings for software developers, QA analysts and testers over the 2025–2035 decade, with a median wage of $135,980 in May 2025. A frame rather than a band: the occupation code does not separate backend from anything else.
The loop is the familiar one — recruiter screen, technical screen, then several sessions in a block, typically including one system-design round and one on past work. The past-work session is scored on depth of ownership, so prepare one system you can be interrogated about for forty-five minutes.
One rule covers all three: find out whose interview you are actually in. An engineer interviewing with a client in another country is in that country's loop conducted in English, and preparing for the local version is how a strong candidate is surprised at stage two.
The two pages every job shares
This guide covers your field. These two cover the frame the questions are built on — the behavioural canon, and the screening call that decides who reaches an interview at all.
- Behavioral interview questionsThe canon every profession shares: error, conflict, pressure, initiative, and where your limits are.www.atshiring.com/en/interview-questions/behavioral
- Screening and first-round questionsThe recruiter call: introductions, the administrative gate, and where people lose money on salary.www.atshiring.com/en/interview-questions/screening
Before the interview
Ordering note
The ordering here is editorial judgement, not measured frequency. There is no public dataset ranking interview questions for this role, and the candidate-report archives that support company attributions on other pages of this site were not readable for engineering titles in this pass. So no question carries a company attribution and none pretends to. Sections follow the shape of a normal loop; within a section, the order reflects what we judge decides the outcome.
The one section that states a regulation carries the date a person checked it, and the sources are recorded in the page's own data. The craft opinions on this page — and there are several, on purpose — are written as opinions rather than as findings.
Sources
Everything consulted for this page, named in plain text.
- MHRSD Ministerial Resolution 28889 (18/2/1442H, 5 October 2020) — ICT roles nationalisation, via a Gulf law-firm client alert
- Saudi financial-press report of the ICT Saudization commencement, dated 27 June 2021
- Saudi expatriate work-permit skill classification (2025) — global-mobility alerts from two international advisory firms
- US Bureau of Labor Statistics — Occupational Outlook Handbook, Software Developers, QA Analysts and Testers
- Information Technology Industry Development Agency (ITIDA), Egypt — industry outlook
- Our own job-board reading, 2026-09-03, recorded in docs/notes/interview-questions/roles-shortlist.md (row 8)