Deliveroo · Software Engineer
Updated · 2026-10-02

Deliveroo Software Engineer
Interview Guide

THE 60-SECOND BRIEF

At Deliveroo, a Software Engineer is at the heart of a hyper-local, high-velocity ecosystem that connects millions of customers with local restaurants and grocery partners. You are not just writing code; you are solving complex logistics, real-time dispatch, and high-concurrency challenges that ensure orders are delivered efficiently and reliably. The scale of the Deliveroo platform requires engineers who can navigate distributed systems while maintaining a relentless focus on the end-user experience. This role is critical because it bridges the gap between sophisticated backend infrastructure and the intuitive frontend interfaces that customers, riders, and restaurants interact with daily. Whether you are optimizing microservices for order processing or building responsive UI components, your work directly influences the operational performance and growth of the business.

This guide is scoped to a Software Engineer candidate at Deliveroo.

Deliveroo candidates report 3 rounds over 3-5 weeks. The stages below are what candidates describe, not a published process.

System DesignRate LimitingCoding Interviews

20 min read

Browse Software Engineer questions

See the practice prompts

14Practice promptsAcross five skill areas

At Deliveroo, a Software Engineer is at the heart of a hyper-local, high-velocity ecosystem that connects millions of customers with local restaurants and grocery partners. You are not just writing code; you are solving complex logistics, real-time dispatch, and high-concurrency challenges that ensure orders are delivered efficiently and reliably. The scale of the Deliveroo platform requires engineers who can navigate distributed systems while maintaining a relentless focus on the end-user experience. This role is critical because it bridges the gap between sophisticated backend infrastructure and the intuitive frontend interfaces that customers, riders, and restaurants interact with daily. Whether you are optimizing microservices for order processing or building responsive UI components, your work directly influences the operational performance and growth of the business. You will be expected to operate with autonomy, handle ambiguity, and contribute to a culture that values engineering excellence and fast-paced delivery.

01

Initial Recruiter Screen

reported

The process begins with a recruiter screening to assess your background and fit for the role.

What to demonstrate

  • The process begins with a recruiter screening to assess your background and fit for the role
  • Depth in System Design

How to prepare

  • Be able to walk your CV end to end in two minutes, and say why this company specifically.
  • Have your salary expectations, notice period and location constraints ready, and ask for the rest of the loop in writing.
Deliveroo Software Engineer candidate reports ↗
02

Technical Assessment

reported

An online assessment that serves as a critical filter, focusing on technical skills under time constraints.

What to demonstrate

  • An online assessment that serves as a critical filter
  • Focusing on technical skills under time constraints

How to prepare

  • Answer aloud and timed: What are the best practices for unit and integration testing in a production environment?
  • Answer aloud and timed: How do you handle database consistency in a distributed system?
Deliveroo Software Engineer candidate reports ↗
03

Domain Expertise Discussion

reported

Deeper discussions about your domain expertise, requiring you to defend architectural decisions and demonstrate senior-level judgment.

What to demonstrate

  • Deeper discussions about your domain expertise, requiring you to defend architectural decisions and demonstrate senior-level judgment
  • Depth in System Design

How to prepare

  • Answer aloud and timed: Implement a Rate Limiter to prevent API abuse.
  • Answer aloud and timed: Solve a medium-difficulty algorithmic problem involving data structures or string manipulation.
Deliveroo Software Engineer candidate reports ↗

PracHub editorial advice for the preparation topics above.

01

Articulate your trade-offs

When answering design questions, never provide a "perfect" solution without acknowledging its limitations. Discussing why you chose one approach over another is key.

02

Focus on the "Why

In your behavioral or technical discussions, explain the reasoning behind your decisions. This shows maturity and experience.

03

Be ready for API-centric questions

Since Deliveroo relies heavily on service-to-service communication, be prepared to discuss API versioning, error handling, and security.

Choose a category, try a prompt, then open its approach, worked solution or follow-up when you need it.

11 technical prompts0 include a worked solution

Solve a medium-difficulty algorithmic problem involving data structures or string manipulation.

medium
Coding & Problem Solving

Solve a medium-difficulty algorithmic problem involving data structures or string manipulation.

Approach
  1. Restate the input: its shape, its size, and what is guaranteed about it.
  2. Name the brute-force solution and its complexity before improving on it.
  3. Choose the data structure from the access pattern, not from familiarity.
  4. State the target complexity and say which constraint rules the naive version out.
Follow-up
  • How does this change if the input no longer fits in memory?
  • What is the worst case, and how likely is it on real data?

Merge partitioned event streams into one ordered feed with bounded lateness

hard
k-way mergewatermarksout-of-order streams

The read-model service consumes 64 log partitions carrying about 4,000 events per second in total. Each partition is ordered within itself, but partitions drift by up to 30 seconds, and the activity feed must present a tenant's events in occurred_at order. Produce the merge. State its complexity, the buffer it requires in events and in bytes, what happens when one partition is idle, and what you do with an event that arrives after you have already emitted its position. Payloads average 1 KB.

Approach
  1. Merge with a min-heap over the 64 partition heads keyed on (occurred_at, event_id): O(log P) per event and O(n log P) overall. The tie-break on event_id is what makes the output deterministic when two partitions carry the same millisecond, which matters because the feed is paginated and a non-deterministic order reorders pages under the reader.
  2. Emitting the heap head is only correct once every partition has produced everything up to that timestamp, so the emit condition is a watermark: the minimum across partitions of the highest occurred_at seen, less the allowed lateness. Events are held until the watermark passes them, which is what turns individually ordered streams into a jointly ordered one.
  3. Size the buffer from the lateness rather than guessing: 4,000 events per second times 30 seconds is 120,000 buffered events, and at 1 KB each about 120 MB of heap. That number is the real price of the ordering guarantee and belongs in front of whoever asked for it.
  4. Handle the idle partition explicitly, because it fails the feed rather than corrupting it: a partition with no traffic never advances its own maximum, so the watermark freezes and output stops entirely. Either every partition emits a periodic idle marker carrying the broker's current time, or the watermark falls back to wall clock for a partition silent beyond a threshold.
Follow-up
  • The lateness budget is raised to five minutes. What is the new buffer, and what besides memory changes?
  • The consumer restarts. Where does it resume from, and what does the feed look like for the first 30 seconds?

Diff a projection against the primary without per-row point reads

hard
reconciliationrange hashingthrottling

The listing projection has drifted and some rows show a stale version. The primary holds 40,000,000 resource rows across 12,000 tenants while serving 1,200 writes and 14,000 reads per second. The obvious repair, reading each resource row and comparing its version against the projection, is correct and would eventually finish. Explain precisely why it is unacceptable here, then give a diff that finds the differing rows, state its complexity, and make it safe to run against a live primary. Replication lag is usually under 100 ms and is not bounded.

Approach
  1. Quantify the naive cost rather than calling it slow: 40,000,000 point reads at even 0.5 ms each is over five hours serialised, and the only lever is concurrency, which is exactly what you cannot spend. The primary's pool is sized for the write path, and 40,000,000 random reads evict the buffer cache that sustains the 85 percent cache hit rate, so the audit degrades the system it is auditing.
  2. Replace random access with one ordered pass per side. Both sides can be read in (tenant_id, resource_id) order, which is a sequential scan on each and a merge join in O(n) time and O(1) memory. For a dense diff that is the whole answer, and it reads the primary once instead of 40,000,000 times.
  3. For the expected sparse case, compare range hashes instead of rows: partition the key space, compute per range an order-independent aggregate over hash(resource_id, version), compare aggregates, and descend only into ranges that differ. With d differing rows and branching factor B, at most d ranges mismatch per level, so the drill-down examines O(d log_B(n/d)) ranges and reads full rows only in mismatching leaves.
  4. Aggregate with a sum modulo 2^64 or a multiset hash, never XOR. XOR is order-independent but self-cancelling, so two rows wrong in the same way, or a row duplicated on one side, leave the range aggregate matching and the range is declared clean.
Follow-up
  • The diff reports 900 stale rows. How do you decide between patching those rows and rebuilding the projection from resource_revision?
  • Same job, but the projection lives in a search index that cannot be scanned in key order. What changes?

Built from the rounds and topics Deliveroo candidates report.

Small steps. Visible outcomes.0 / 7 completed
ONE WEEK · YOUR PACE

Prepare, practise & reflect

One practical outcome each day. Spend longer where you need it.

0 / 7 done
01Map the Deliveroo loop
  • Write out the reported sequence: Initial Recruiter Screen, Technical Assessment, Domain Expertise Discussion.
  • For each round, write one sentence on what it is judging, from the description above, and mark the one you are least ready for.

Deliverable: A one-page map of the 3 reported rounds, with the weakest marked.

02Work System Design
  • Spend the session on System Design, which Deliveroo candidates report being tested on.
  • Write one worked example in System Design and time yourself on it.

Deliverable: One timed worked example in System Design.

03Work Rate Limiting
  • Spend the session on Rate Limiting, which Deliveroo candidates report being tested on.
  • Write one worked example in Rate Limiting and time yourself on it.

Deliverable: One timed worked example in Rate Limiting.

04Work Coding Interviews
  • Spend the session on Coding Interviews, which Deliveroo candidates report being tested on.
  • Write one worked example in Coding Interviews and time yourself on it.

Deliverable: One timed worked example in Coding Interviews.

05Answer out loud: Technical & Domain Knowledge
  • Answer aloud, timed: Explain the core differences between monolithic and Microservices architectures.
  • Answer aloud, timed: How do you ensure high availability and reliability when designing a REST API?

Deliverable: Spoken answers to 2 reported Technical & Domain Knowledge question(s), under time.

06Answer out loud: Coding & Problem Solving
  • Answer aloud, timed: Implement a Rate Limiter to prevent API abuse.
  • Answer aloud, timed: Solve a medium-difficulty algorithmic problem involving data structures or string manipulation.

Deliverable: Spoken answers to 2 reported Coding & Problem Solving question(s), under time.

07Dry run for Deliveroo
  • Run one full mock under time, then write down the two questions you most want to ask your interviewers.

Deliverable: A completed timed mock and two questions to ask.

Expand any day for tasks and deliverables. Your progress is saved on this device.

Behavioural rounds judge the decision you made and what it cost.

How do you handle database consistency in a distributed system?

medium
Technical & Domain Knowledge

How do you handle database consistency in a distributed system?

Approach
  1. Pick a story where you made the decision, not one where you watched it.
  2. State the situation in two sentences and spend the rest on the reasoning.
  3. Give the blast radius: what could have broken, and what you measured.
  4. Name the disagreement and how you resolved it with evidence.
Follow-up
  • What would you do differently if you ran that again?
  • How did you know your change caused the improvement?

Unblock an engineer without taking the keyboard

easy
mentoringleasesat-least-once

A teammate has spent two days on a job handler that occasionally writes duplicate rows. They are certain the queue is delivering twice by mistake. You suspect a lease expiring under a slow handler, so the job is running concurrently with itself. Describe how you have unblocked someone in this position: what you asked before offering a hypothesis, what you showed them rather than told them, and what you left them owning. Then say what you would do if their theory turned out to be the right one.

Approach
  1. Ask before diagnosing, and ask for things answerable from data they already have: the attempt count on the job rows that produced duplicates, the handler's observed duration against its lease expiry, and whether the duplicate rows share a natural key that a unique constraint could have caught.
  2. Teach the shape rather than the answer. A lease cannot distinguish a dead worker from a slow one, so a handler that outruns its lease is running twice by design, and deploys deliver the other half by killing handlers mid-run on every rollout. Both of their candidate theories produce identical duplicate rows, which is why the evidence has to come from timings rather than from argument.
  3. Hand over a checklist they execute: a natural key on every write the handler performs so the second copy collides rather than appends, the record of intent written before any external effect, a lease heartbeat while running, and the metric that shows it working.
  4. Keep ownership with them deliberately. Pair on the first write, then step back; if you finish it yourself you have closed one ticket and left the same person stuck on the next redelivery.
Follow-up
  • How would you distinguish a genuine double-delivery from a lease expiry using only the data already stored?
  • Their handler calls an external endpoint before recording that it did. What do you tell them to change first?

Argue against a design, lose, and commit anyway

medium
disagreementservice boundariesdecision records

Describe a design you argued against and lost. State the failure you predicted as a named mechanism, not a feeling about complexity: two services that would need one transaction, a projection with no rebuild path, a write path with no idempotency key. Say what evidence you brought, what the decision maker weighed instead, and what you did after the decision was made: what you instrumented, what you wrote down, and whether the prediction came true. Five minutes.

Approach
  1. State the prediction in falsifiable form up front: the mechanism, the condition that triggers it, and the observable outcome. A prediction that cannot be checked also cannot be credited to you later.
  2. Show the evidence you had at the time and label each piece honestly as measured, analogous, or intuition. Keeping the intuition is fine; disguising it as data is the thing that erodes your standing in the next argument.
  3. Represent the opposing case at full strength, including the constraint you did not control: a fixed date, a team boundary, or the fact that the decision was cheap to reverse and yours was not.
  4. Make disagree-and-commit concrete. Name the artefact you left behind so the prediction could be settled without you: the alert and its threshold, the counter on the dashboard, the decision note that recorded the trade-off and the condition that would revisit it.
Follow-up
  • What threshold on that alert would have proved you right, and did anyone ever look at it?
  • If the same proposal arrived tomorrow with the same deadline, would you argue it the same way?
  • 01

    How do you handle database consistency in a distributed system?

  • 02

    A teammate has spent two days on a job handler that occasionally writes duplicate rows. They are certain the queue is delivering twice by mistake. You suspect a lease expiring under a slow handler, so the job is running concurrently with itself. Describe how you have unblocked someone in this position: what you asked before offering a hypothesis, what you showed them rather than told them, and what you left them owning. Then say what you would do if their theory turned out to be the right one.

  • 03

    Describe a design you argued against and lost. State the failure you predicted as a named mechanism, not a feeling about complexity: two services that would need one transaction, a projection with no rebuild path, a write path with no idempotency key. Say what evidence you brought, what the decision maker weighed instead, and what you did after the decision was made: what you instrumented, what you wrote down, and whether the prediction came true. Five minutes.

PracHub preparation framework ↗
How much time should I dedicate to preparing for the online assessment?

Dedicate at least 1–2 weeks to practicing medium-level coding problems and refreshing your knowledge on distributed system concepts. The assessment is designed to be challenging, so timed practice is essential.

Deliveroo Software Engineer candidate reports ↗
What differentiates a successful candidate from others?

Successful candidates demonstrate a balance of deep technical knowledge and a "product-first" mindset. They understand that their code serves a business purpose and can explain how their technical decisions impact the user.

Deliveroo Software Engineer candidate reports ↗
Is the interview process mostly remote?

Yes, the initial stages, including the online assessment and technical interviews, are conducted remotely. Do not overlook the MCQ section of the assessment. It covers specific topics like testing and microservices that are easy to brush off but critical for passing the initial filter.

Deliveroo Software Engineer candidate reports ↗
What topics does Deliveroo test in interviews?

Deliveroo interviews most often cover SQL, Problem Solving, Stakeholder Management, PostgreSQL, and Behavioral Interviewing. The exact emphasis depends on the specific role you apply for.

Deliveroo Software Engineer candidate reports ↗
Sources & methodology 3 sources ↗

No official company page is cited. Rounds and questions come from candidate reports and PracHub editorial material; each source shows the date it was read.