← Waymo Interview Insights

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

SeniorPrefer not to say
Apr 2026

Summary

Third round at Waymo for a software engineering role, focused entirely on data system design. The session was more nuanced than a typical design round because the interviewer kept pushing into the data imbalance problem between simulation and real-world testing.

Questions Asked (2)

Q1

Design a system to collect simulation logs and aggregate the results across large-scale runs.

System DesignData ModelingTechnical Trade-offs
Author's notes

This felt scoped enough that I had a decent starting point, pipeline ingestion, some kind of distributed aggregation layer, storage with queryability.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements: scale (number of runs, log volume), log types, aggregation needs, and latency. Then propose a scalable pipeline: ingestion (agents/streaming), storage (object store + metadata DB), and aggregation (batch/stream processing). Discuss trade-offs between cost, latency, and complexity, and how to handle failures and schema evolution.

Pro tip: Emphasize idempotency and exactly-once semantics in log collection and aggregation, as simulation runs can be retried and logs duplicated. Also, mention partitioning strategies (e.g., by run ID, timestamp) to enable efficient aggregation and querying.

1. Clarify Requirements and Constraints

Ask about scale (runs per day, log size per run), log types (structured/unstructured), aggregation metrics (success rate, latency percentiles), and latency requirements (real-time vs batch).

2. Design Data Collection and Ingestion

Propose a scalable ingestion layer: agents on simulation nodes that buffer and ship logs to a message queue (e.g., Kafka) or directly to object storage. Ensure reliability with retries and backpressure.

3. Design Storage and Data Model

Store raw logs in object storage (e.g., S3) partitioned by run ID/date for cheap retention. Store metadata and aggregated results in a database (e.g., BigQuery, Cassandra) for fast queries.

4. Design Aggregation Pipeline

Use stream processing (e.g., Flink, Spark Streaming) for real-time aggregates or batch processing (e.g., Spark) for cost efficiency. Define aggregation windows and handle late/out-of-order data.

5. Address Scalability, Reliability, and Trade-offs

Discuss partitioning, replication, fault tolerance, and cost. Compare push vs pull, batch vs stream, and how to handle schema evolution and data retention.

Key Points to Mention

  • Partitioning strategies (by run ID, timestamp) for efficient storage and aggregation
  • Idempotency and exactly-once processing to handle retries and duplicates
  • Choice of storage: object store for raw logs, columnar DB for aggregates
  • Stream vs batch processing trade-offs (latency, cost, complexity)
  • Schema evolution and data retention policies
  • Monitoring and alerting on pipeline health and data quality

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

Q2

How would you address the imbalance between having a huge volume of simulation data versus very limited real on-vehicle test data?

Technical Trade-offsData ModelingAdaptability & Ambiguity
Author's notes

Didn't see this pivot coming mid-design.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Acknowledge the imbalance as a core challenge in autonomous driving and propose a multi-pronged strategy: use simulation for scalable coverage, real data for validation and grounding, and techniques like domain adaptation and transfer learning to bridge the gap. Emphasize a systematic approach to prioritize real data collection and maximize its value through careful experimental design and simulation fidelity improvements.

Pro tip: Highlight that simulation is not just for generating data but also for creating targeted scenarios that are underrepresented in real data, and that real data should be used to calibrate and validate simulation, creating a virtuous cycle.

1. Acknowledge the imbalance and its implications

Start by recognizing that simulation data is abundant but may lack realism, while real data is scarce but crucial for safety. Explain that both have complementary strengths and weaknesses.

2. Leverage simulation for scalable training and testing

Describe how simulation can generate diverse scenarios, including edge cases, to train models and test them at scale. Mention techniques like domain randomization to improve generalization.

3. Maximize the value of real data

Discuss strategies to get the most out of limited real data, such as active learning, data augmentation, and prioritizing data collection for critical scenarios. Emphasize validation and fine-tuning on real data.

4. Bridge the sim-to-real gap

Explain methods to reduce the discrepancy between simulation and reality, such as domain adaptation, transfer learning, and using real data to calibrate simulation parameters.

5. Implement a continuous feedback loop

Propose a system where real-world data informs simulation improvements and vice versa, ensuring ongoing refinement of both data sources and models.

Key Points to Mention

  • Domain adaptation and transfer learning to bridge sim-to-real gap
  • Active learning to select the most informative real-world samples
  • Data augmentation and synthetic data generation techniques
  • Simulation fidelity and validation against real data
  • Prioritizing real data collection for safety-critical edge cases
  • Metrics for evaluating model performance on real vs. simulated data

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