← Waymo Interview Insights

Waymo·Software Engineer·Onsite - System Design / Architecture·Senior

SeniorPrefer not to say
Apr 2026

Summary

System design round at Waymo for a software engineer role. The main problem was elevator scheduling, which started reasonable enough but got hairy when the interviewer pushed into high-rise territory. Felt okay leaving but not great.

Questions Asked (2)

Q1

Design the operation logic for an elevator system, including request scheduling and multi-elevator allocation.

System DesignAlgorithms & Data StructuresTechnical Trade-offs
Author's notes

The core part went fine.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and constraints, then design a modular architecture separating request handling, scheduling, and elevator control. Discuss trade-offs between different scheduling algorithms and multi-elevator allocation strategies, and consider scalability and fault tolerance.

Pro tip: Relate the elevator system to Waymo's autonomous vehicle fleet management, highlighting similarities in resource allocation and real-time scheduling. Emphasize safety and efficiency, as these are critical for both domains.

1. Clarify Requirements

Ask questions to understand the scope: number of elevators, floors, traffic patterns, real-time constraints, and failure handling. Define functional and non-functional requirements.

2. High-Level Design

Outline the main components: request queue, scheduler, elevator controllers, and state management. Choose a communication model (e.g., event-driven) and data stores.

3. Scheduling Algorithm

Propose and compare algorithms like SCAN, LOOK, or destination dispatch. Discuss how to optimize for average wait time, throughput, and fairness.

4. Multi-Elevator Allocation

Design a strategy to assign requests to elevators, considering proximity, direction, load, and future requests. Mention centralized vs. distributed control.

5. Trade-offs and Scalability

Analyze trade-offs between simplicity and optimality, latency vs. throughput, and discuss how the system scales with more elevators/floors. Address fault tolerance and recovery.

Key Points to Mention

  • Scheduling algorithms: SCAN, LOOK, destination dispatch, and their pros/cons
  • Multi-elevator allocation strategies: nearest elevator, sector-based, or optimization-based
  • Real-time constraints and latency requirements
  • Fault tolerance: handling elevator failures, power outages, and communication breakdowns
  • Scalability: how the design adapts to more elevators or floors
  • Trade-offs: simplicity vs. optimality, centralized vs. distributed control

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q2

How would you partition floors across elevators in a high-rise building? What changes about your design at scale?

System DesignTechnical Trade-offsAdaptability & Ambiguity
Author's notes

This is where I started rambling.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the problem: what are the goals (minimize wait time, maximize throughput, fairness), constraints (number of elevators, floors, traffic patterns), and assumptions (peak hours, passenger arrival rates). Then propose a simple partitioning strategy (e.g., zoning or sectoring) and analyze its performance. Finally, discuss how the design must evolve at scale, considering dynamic allocation, machine learning for prediction, and trade-offs between complexity and efficiency.

Pro tip: Frame the problem as a resource allocation and scheduling challenge, similar to load balancing in distributed systems. Emphasize that at scale, static partitioning breaks down and you need adaptive, data-driven approaches—this shows you think beyond naive solutions.

1. Clarify Requirements and Constraints

Ask about building size, number of elevators, traffic patterns (e.g., morning up-peak, lunch inter-floor), and optimization goals (wait time vs. energy). Establish assumptions to bound the problem.

2. Propose a Baseline Partitioning Strategy

Suggest a simple static zoning approach: divide floors into contiguous zones, assign each elevator to a zone, and have it serve only those floors. Discuss pros (simplicity, predictability) and cons (inefficient during off-peak).

3. Analyze Performance and Trade-offs

Evaluate the baseline using metrics like average wait time, throughput, and fairness. Identify bottlenecks (e.g., lobby congestion) and consider alternatives like dynamic sectoring or destination dispatch.

4. Scale the Design

At scale (more floors/elevators), static zoning fails. Introduce dynamic allocation: use real-time data (passenger requests, elevator positions) to assign elevators optimally, possibly with ML for demand prediction. Discuss distributed control and communication overhead.

5. Summarize and Iterate

Conclude with a recommended approach that balances simplicity and scalability, and mention how you would validate it via simulation or A/B testing. Highlight key trade-offs and potential future improvements.

Key Points to Mention

  • Static zoning vs. dynamic allocation: when each is appropriate
  • Destination dispatch systems (e.g., assigning passengers to elevators based on destination)
  • Load balancing and scheduling algorithms (e.g., round-robin, shortest-seek-time-first)
  • Impact of traffic patterns (up-peak, down-peak, inter-floor) on partitioning
  • Scalability challenges: communication overhead, real-time optimization, and fault tolerance
  • Use of simulation or historical data to tune and validate the design

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.