Waymo

Waymo Software Engineer Interview Questions

59+ questions from real Waymo Software Engineer interviews, reported by candidates.

59
Questions
6
Round Types
8
Topic Areas
2025-2026
Year Range

Round Types

Phone 37 Onsite 10 Coding 4 Phone Screen 3 Technical 2 System Design 1

Top Topics

Questions

Hi All, I have an upcoming virtual onsite with waymo for L5 SWE. I just had a call with the recruiter today and she had mentioned that one of the rounds would be a data system design round, less on th

Recently did an SWE coding phone screen. Between the 5 min intro, and 7 min questions at the end, I only have like 30ish mins for two questions. I coded the first one within like 20 mins, but that onl

They asked very detailed questions about my resume, including some behavioral questions, such as how I recovered from a failed project, a project I'm particularly proud of, and how I handled conflicts

At the end of August, I applied to many micro-enterprises, and then the HR contacted me saying that several hiring managers were interested. I followed up with the group that best matched my backgroun

**Round 1** **Context** The session began with a discussion regarding project background, followed by a coding challenge. **Problem Statement** Given a list of tasks, where each task has a specific ID

LeetCode #871: Minimum Number of Refueling Stops. Difficulty: Hard. Topics: Array, Dynamic Programming, Greedy, Heap (Priority Queue). Asked at Waymo in the last 6 months.

LeetCode #1944: Number of Visible People in a Queue. Difficulty: Hard. Topics: Array, Stack, Monotonic Stack. Asked at Waymo in the last 6 months.

LeetCode #359: Logger Rate Limiter. Difficulty: Easy. Topics: Hash Table, Design, Data Stream. Asked at Waymo in the last 6 months.

LeetCode #528: Random Pick with Weight. Difficulty: Medium. Topics: Array, Math, Binary Search, Prefix Sum, Randomized. Asked at Waymo in the last 6 months.

Hi. I am in the loop for Waymo for the role of [Senior Software Engineer, Quantitative Evaluations](https://careers.withwaymo.com/jobs/senior-software-engineer-quantitative-evaluations-mountain-view-c

Hi everyone, I have an upcoming onsite interview for a Product Data Scientist role at Waymo. I’d love to hear your thoughts on what my high-level interview strategy should be, key areas to focus on, a

Waymo Data engieer

Technical 2025

Did anyone has done Data engineer interview recently. Any pointers for prep - this is going to be coding round sql?

Waymo Data Engineer

Technical 2025

Does anyone know what is expected for Interview with Waymo Data engineer. This is Coding round as per recuriter Sql is focus. ANy pointers will be gerat

## Problem Simulate a ball dropping through a grid of deflectors, determining the column where it exits at the bottom. ## Likely LeetCode equivalent LeetCode 1706 - Where Will the Ball Fall. ## Tags matrix,simulation,arrays,swe

## Problem Implement a board-based game or simulation on a 2D grid, tracking state of cells and computing outcomes based on rules. ## Likely LeetCode equivalent LeetCode 289 - Game of Life. ## Tags matrix,simulation,arrays,swe

## Problem You are given a trip log as a list of `(timestamp, odometer_reading)` tuples recorded at irregular intervals. Compute the average speed of the car, excluding periods when the car was stationary (speed = 0). ```python from typing import List, Tuple def average_moving_speed(log: List[Tuple[float, float]]) -> float: # log: list of (time_seconds, distance_km) sorted by time # returns: average speed in km/h over moving segments only pass ``` **Example:** ``` log = [(0, 0), (3600, 60), (7200, 60), (10800, 120)] # Segment 0->1: 60 km/h (moving) # Segment 1->2: 0 km/h (stopped) # Segment 2->3: 60 km/h (moving) average_moving_speed(log) -> 60.0 ``` ## Follow-ups 1. What is the threshold to distinguish a brief slowdown from a genuine stop? 2. How would you identify and report distinct stop locations along the route? 3. If timestamps have GPS drift (jitter of +/-2 s), how does that affect speed calculation? 4. How would you extend this to compute fuel efficiency (L/100 km) if fuel data is added?

## Problem Design a car leasing system where customers can reserve vehicles for date ranges. The system must prevent double-booking, compute total charges, and handle early returns with partial refunds. ```python from datetime import date class CarLeasingSystem: def add_car(self, car_id: str, daily_rate: float) -> None: ... def reserve(self, car_id: str, customer: str, start: date, end: date) -> str: # returns reservation_id ... def cancel(self, reservation_id: str) -> float: # returns refund amount ... def available(self, start: date, end: date) -> list[str]: # car_ids ... ``` **Example:** ``` add_car("C1", daily_rate=50.0) reserve("C1", "alice", date(2024,6,1), date(2024,6,7)) -> "RES-001" reserve("C1", "bob", date(2024,6,5), date(2024,6,9)) -> raises ConflictError available(date(2024,6,8), date(2024,6,10)) -> ["C1"] ``` ## Follow-ups 1. How do you efficiently query available cars for a date range when there are 10,000 vehicles? 2. What data structure supports overlap detection in O(log n)? 3. How would you add a loyalty discount for customers with more than 10 past reservations? 4. How would you handle time zones if cars are rented across multiple countries?

## Problem N cars start at position 0 on a one-lane road and drive at constant speeds. A "passing event" occurs the instant a faster car catches a slower car ahead of it. Count the total number of passing events. ```python def count_passes(speeds: list[int]) -> int: # speeds[i] = speed of car i; cars start at positions 0..N-1 # car i starts ahead of car i+1 (i.e., position i) # returns total number of times a car overtakes the car directly ahead pass ``` **Example:** ``` speeds = [3, 4, 2, 5] # Car 1 (speed 4) passes Car 0 (speed 3) # Car 3 (speed 5) passes Car 2 (speed 2), then Car 1, then Car 0 count_passes([3, 4, 2, 5]) -> 4 ``` ## Follow-ups 1. Is this equivalent to counting inversions? If so, can you solve it in O(n log n) using merge sort? 2. What changes if the road has finite length and cars exit when they reach the end? 3. How would you extend this to return the exact times each passing occurs? 4. What if cars start at distinct initial positions instead of 0, 1, 2, ..., N-1?

## Problem Given a list of bus stops with (latitude, longitude) coordinates and a query point, return the ID of the nearest bus stop. Optimize for repeated queries over the same stop dataset. ```python from dataclasses import dataclass @dataclass class Stop: id: str lat: float lon: float class BusStopFinder: def __init__(self, stops: list[Stop]): ... def nearest(self, lat: float, lon: float) -> str: ... ``` **Example:** ``` stops = [Stop("A", 40.7128, -74.0060), Stop("B", 40.7580, -73.9855)] finder = BusStopFinder(stops) finder.nearest(40.730, -74.000) -> "A" ``` Use Euclidean distance as an approximation (haversine not required). ## Follow-ups 1. What data structure would you use to answer nearest-neighbor queries sub-linearly? Walk through a k-d tree insertion. 2. When does Euclidean distance fail for geographic coordinates, and how does haversine fix it? 3. If stops are updated in real time (added/removed every few seconds), how do you keep the structure fresh? 4. How would you extend this to return the K nearest stops sorted by distance?

## Problem Consolidate or compress a sequence of values by merging consecutive identical or overlapping entries into a compact representation. ## Likely LeetCode equivalent LeetCode 56 - Merge Intervals. ## Tags arrays,sorting,two_pointers,swe

See All 59 Waymo Software Engineer Questions

Full question text, answer context, and frequency data for subscribers.

Get Access