# Software Engineer 2
**Role:** Software Engineer · **Level:** L4
**Company:** [Deliveroo](https://scaleengineer.com/companies/deliveroo)
**Difficulty:** Medium
**Salary:** US$110000 - US$140000
**Experience:** 2 - 5
**Timeline:** ~14 days
This interview process is for a Software Engineer position at Deliveroo, specifically for the L4 level. It is designed to assess a candidate's technical skills, problem-solving abilities, and cultural fit within the company.
Canonical: https://scaleengineer.com/interviews/deliveroo/l4-software-engineer
---
## Overall evaluation

- Technical Skills
- Behavioral and Cultural Fit

## Questions asked

- Write a function to find the kth largest element in an unsorted array.
- Design a system to handle real-time analytics for a streaming service.
- Describe a situation where you disagreed with a team member. How did you resolve it?
- How would you optimize the performance of a web application experiencing high traffic?
- Explain the concept of CAP theorem and its implications for distributed systems.
- Tell me about a time you failed. What did you learn from it?
- What are the advantages of using microservices?
- How do you approach debugging a complex issue in a production environment?
- What is your experience with cloud platforms like AWS or GCP?
- How do you stay updated with new technologies and trends in software engineering?

## Preparation tips

### lists

- Review fundamental computer science concepts (data structures, algorithms, operating systems, databases).
- Understand Deliveroo's business model and technology stack.
- Prepare examples for behavioral questions using the STAR method (Situation, Task, Action, Result).
- Practice coding problems, focusing on time and space complexity.
- Research common system design patterns and trade-offs.
- Prepare questions to ask the interviewer about the role, team, and company culture.

### studyPlan

- {"title":"Data Structures and Algorithms","longDescription":"Weeks 1-2: Focus on core data structures (arrays, linked lists, trees, graphs, hash maps) and algorithms (sorting, searching, dynamic programming, greedy algorithms). Practice implementing these in your preferred language and analyze their time/space complexity. Solve at least 20 LeetCode medium problems.","shortDescription":"Weeks 1-2: Data Structures & Algorithms (LeetCode Medium x20)"}
- {"title":"System Design","longDescription":"Weeks 3-4: Dive into system design. Study concepts like scalability, availability, reliability, load balancing, caching, database design (SQL vs. NoSQL), and message queues. Review common system design interview questions and practice designing systems like a URL shortener or a social media feed.","shortDescription":"Weeks 3-4: System Design Fundamentals"}
- {"title":"Behavioral Preparation","longDescription":"Week 5: Prepare for behavioral questions. Identify key projects and experiences that demonstrate your skills in teamwork, problem-solving, leadership, and handling challenges. Use the STAR method to structure your answers. Research Deliveroo's company values and prepare examples that align with them.","shortDescription":"Week 5: Behavioral Questions & STAR Method"}
- {"title":"Mock Interviews","longDescription":"Week 6: Mock interviews. Conduct mock interviews with peers or mentors to simulate the interview environment. Get feedback on your technical explanations, coding style, and behavioral responses. Refine your answers and identify areas for improvement.","shortDescription":"Week 6: Mock Interviews & Refinement"}

## Location differences

- {"location":"London","differences":{"tips":["Research common technology stacks used in the specific region.","Be prepared to discuss case studies relevant to the local market.","Highlight any experience working with distributed teams or in a global context."],"interviewFocus":["Understanding of local market nuances in technology adoption.","Adaptability to regional engineering practices.","Communication skills in the local language and context."],"commonQuestions":["How would you optimize a database query for a high-traffic e-commerce platform?","Describe a time you had to deal with a production issue under pressure. What was your approach?","What are your thoughts on microservices vs. monolithic architectures for a food delivery service?"]}}
- {"location":"New York","differences":{"tips":["Brush up on data structures and algorithms, especially those related to sorting, searching, and graph traversal.","Practice coding problems on platforms like LeetCode or HackerRank.","Be ready to explain your thought process clearly and concisely."],"interviewFocus":["Strong foundation in core computer science principles.","Ability to write clean, efficient, and maintainable code.","Problem-solving and analytical thinking."],"commonQuestions":["How would you design a real-time notification system for order updates?","Tell me about a challenging technical problem you solved using data structures and algorithms.","What are the trade-offs between using a relational database and a NoSQL database for user profiles?"]}}

## Round 1: Coding Challenge
**Type:** Technical Coding Interview · **Difficulty:** Medium · **Duration:** 45 min
Assess coding proficiency with data structures and algorithms.
This round focuses on your fundamental coding skills. You will be given one or two coding problems to solve, typically involving data structures and algorithms. The interviewer will assess your ability to write clean, efficient, and correct code, as well as your problem-solving approach and communication skills. Be prepared to explain your thought process, discuss the time and space complexity of your solution, and consider edge cases.
**Interviewers look for:** Ability to translate a problem into a working code solution.; Understanding of algorithmic complexity.; Clean and well-commented code.; Ability to discuss trade-offs of different approaches.
**Evaluation criteria:** Correctness of the solution; Efficiency of the solution (time and space complexity); Code readability and maintainability; Problem-solving approach
**Common rejection reasons:** Inability to articulate thought process clearly.; Poorly structured or inefficient code.; Lack of understanding of fundamental algorithms or data structures.
## Questions

- Given a binary tree, invert the tree.
- Find the first non-repeating character in a string.
- Implement a function to merge two sorted arrays.

## Preparation tips

- Practice coding problems on platforms like LeetCode, HackerRank, or Coderbyte.
- Focus on understanding the underlying data structures and algorithms.
- Practice explaining your solutions out loud.
- Be comfortable coding in your preferred language without an IDE's full assistance.

## Round 2: System Design
**Type:** System Design Interview · **Difficulty:** Medium · **Duration:** 60 min
Assess system design capabilities for scalable applications.
This round evaluates your ability to design scalable and robust software systems. You'll be presented with a high-level problem (e.g., design a URL shortener, a social media feed, or a ride-sharing service) and asked to design the architecture. Focus on identifying core components, data models, APIs, and addressing aspects like scalability, availability, and performance. Be prepared to discuss trade-offs and justify your decisions.
**Interviewers look for:** Ability to break down complex problems into smaller components.; Knowledge of common system design patterns.; Understanding of scalability, performance, and reliability.; Ability to justify design choices.
**Evaluation criteria:** Understanding of distributed systems principles.; Ability to design scalable and reliable systems.; Consideration of trade-offs (e.g., consistency vs. availability).; Clarity and structure of the design.
**Common rejection reasons:** Lack of clarity in system design.; Failure to consider scalability and trade-offs.; Inability to handle ambiguity in requirements.
## Questions

- Design a system like Twitter's news feed.
- Design an API rate limiter.
- How would you design a distributed cache?

## Preparation tips

- Study common system design concepts (load balancing, caching, databases, message queues).
- Practice designing various systems, focusing on different aspects like read-heavy vs. write-heavy.
- Understand the trade-offs between different technologies and architectural patterns.
- Be prepared to draw diagrams and explain your design clearly.

## Round 3: Behavioral and Cultural Fit
**Type:** Behavioral Interview · **Difficulty:** Medium · **Duration:** 45 min
Assess cultural fit, teamwork, and problem-solving in non-technical scenarios.
This round focuses on your behavioral and cultural fit. You'll be asked questions about your past experiences, how you handle various situations, and your motivations. Use the STAR method (Situation, Task, Action, Result) to provide specific, concise, and impactful answers. Be prepared to discuss your strengths, weaknesses, career goals, and why you're interested in Deliveroo.
**Interviewers look for:** Evidence of collaboration and teamwork.; Ability to handle conflict and difficult situations.; Proactiveness and ownership.; Passion for Deliveroo's mission.
**Evaluation criteria:** Alignment with Deliveroo's values.; Teamwork and collaboration skills.; Problem-solving approach in non-technical contexts.; Motivation and career aspirations.
**Common rejection reasons:** Lack of self-awareness.; Inability to provide specific examples.; Poor communication or interpersonal skills.; Mismatch with company culture or values.
## Questions

- Tell me about a time you had to work with a difficult colleague. How did you handle it?
- Describe a project you are particularly proud of and your role in it.
- How do you handle constructive criticism?

## Preparation tips

- Prepare examples for common behavioral questions (teamwork, conflict resolution, leadership, failure).
- Use the STAR method to structure your answers.
- Research Deliveroo's company values and culture.
- Be honest and authentic in your responses.
