← Waymo Interview Insights

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

Senior
Jun 2026

Summary

System design round at Waymo focused entirely on data storage at scale. No coding, just a long open-ended conversation about storage choices and schema design. Felt more like a senior architecture discussion than a typical SWE interview.

Questions Asked (3)

Q1

How would you decide between a relational database, a NoSQL store, and a columnar warehouse for storing large volumes of data?

System DesignTechnical Trade-offsData Modeling
Author's notes

This is the kind of question where you think you know the answer until you're actually saying it out loud.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the data characteristics (volume, velocity, variety, access patterns) and the application requirements (consistency, latency, scalability). Then map each database type to the scenarios where it excels, using concrete examples. Finally, recommend a decision framework based on trade-offs, and mention that polyglot persistence is often the pragmatic choice.

Pro tip: Emphasize that the choice should be driven by access patterns and consistency requirements, not by hype or familiarity. Also, mention that you would prototype with a small dataset to validate assumptions before committing.

1. Clarify Requirements

Ask about data volume, schema flexibility, read/write patterns, latency and consistency needs, and query complexity. This ensures you understand the problem before prescribing a solution.

2. Evaluate Relational Databases

Discuss when RDBMS (e.g., PostgreSQL, MySQL) is appropriate: structured data, ACID transactions, complex joins, and moderate scale. Mention that they can scale vertically and with read replicas, but sharding is complex.

3. Evaluate NoSQL Stores

Cover key-value, document, and wide-column stores (e.g., MongoDB, Cassandra, DynamoDB). Highlight their strengths: horizontal scalability, flexible schemas, high write throughput, and eventual consistency. Note trade-offs in query flexibility and transactions.

4. Evaluate Columnar Warehouses

Explain that columnar warehouses (e.g., Redshift, BigQuery, Snowflake) are optimized for analytical queries over large datasets, with columnar storage, compression, and massively parallel processing. They are not ideal for transactional workloads.

5. Decide and Justify

Synthesize by matching requirements to the best-fit database, and consider polyglot persistence. Justify your choice with trade-offs and mention potential hybrid architectures (e.g., OLTP in RDBMS, OLAP in warehouse).

Key Points to Mention

  • CAP theorem and consistency models (ACID vs BASE)
  • Scalability patterns: vertical vs horizontal scaling, sharding, replication
  • Data modeling differences: normalized vs denormalized, schema-on-write vs schema-on-read
  • Query patterns: OLTP vs OLAP, point lookups vs full scans, aggregations
  • Performance considerations: indexing, partitioning, compression, caching
  • Real-world examples: use cases for each database type (e.g., user profiles in MongoDB, financial transactions in PostgreSQL, analytics in BigQuery)

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

Q2

Given a set of access patterns, how would you design the schema including entities, relationships, indexes, and partitioning keys?

Data ModelingSystem DesignTechnical Trade-offs
Author's notes

Spent probably too long on the entity-relationship part and didn't get to partitioning until they nudged me.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the access patterns and their priorities, then design the schema to optimize for the most frequent and critical queries. Iterate on the design by considering trade-offs between normalization, denormalization, indexing, and partitioning to meet performance and scalability requirements.

Pro tip: Always tie your design decisions back to the specific access patterns and quantify the impact (e.g., 'This index reduces read latency for the most frequent query by 80%'). Also, mention how you would validate the design with load testing and monitoring.

1. Clarify Access Patterns

Ask questions to understand the read/write patterns, query frequency, latency requirements, and data volume. Prioritize patterns based on business impact.

2. Identify Entities and Relationships

Extract core entities from the access patterns and define their relationships (1:1, 1:N, M:N). Consider whether to embed or reference based on access patterns.

3. Design Indexes

Choose indexes (e.g., primary, secondary, composite) to support the most frequent and critical queries. Consider index overhead on writes and storage.

4. Choose Partitioning Keys

Select partitioning keys to distribute data evenly and enable efficient queries. Consider access patterns that require cross-partition queries and how to mitigate.

5. Validate and Iterate

Review the design against all access patterns, identify bottlenecks, and propose optimizations. Discuss how to test and monitor the schema in production.

Key Points to Mention

  • Trade-offs between normalization and denormalization for read vs. write performance
  • Choice of database technology (SQL vs. NoSQL) based on access patterns and scalability needs
  • Index types (B-tree, hash, geospatial, etc.) and their impact on query performance and write amplification
  • Partitioning strategies (hash, range, consistent hashing) and their effect on data distribution and query routing
  • Handling of hot partitions and skew, and techniques like salting or composite keys
  • Consideration of secondary indexes and materialized views for complex queries

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

Q3

How do you balance schema and storage design for a workload that needs to support both real-time writes and heavy analytics queries?

System DesignTechnical Trade-offsData Modeling
Author's notes

Mixed OLTP and OLAP requirements in one question.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the workload characteristics (write volume, query patterns, latency SLAs) and then propose a hybrid architecture that separates the write-optimized and read-optimized paths. Discuss trade-offs between normalization for writes and denormalization/columnar storage for analytics, and explain how to keep them in sync. Emphasize that the right balance depends on specific requirements and that you would validate with benchmarks.

Pro tip: Mention that you would avoid premature optimization and instead start with a simple design, measure bottlenecks, and then evolve—this shows pragmatism and aligns with Waymo's iterative engineering culture.

1. Clarify Requirements

Ask about write throughput, query complexity, data freshness, and latency SLAs to understand the constraints. This ensures your design is grounded in actual needs rather than assumptions.

2. Propose a Hybrid Architecture

Suggest using a row-based OLTP database (e.g., PostgreSQL, Spanner) for real-time writes and a columnar OLAP store (e.g., BigQuery, ClickHouse) for analytics. Explain that this separation allows each system to be optimized for its purpose.

3. Address Data Synchronization

Describe how to keep the systems in sync, such as change data capture (CDC) or dual writes with eventual consistency. Discuss trade-offs like latency and complexity.

4. Optimize Schema for Each Workload

For writes, use a normalized schema to ensure fast inserts and updates. For analytics, use a denormalized, columnar schema with partitioning and clustering to speed up queries.

5. Discuss Trade-offs and Alternatives

Acknowledge that a single system (e.g., HTAP databases like TiDB, SingleStore) might suffice for smaller scale, but for heavy analytics, separation is often better. Mention that you would benchmark and iterate.

Key Points to Mention

  • Separation of concerns: OLTP vs OLAP systems
  • Data synchronization mechanisms (CDC, ETL, streaming)
  • Schema design: normalization vs denormalization, columnar vs row-based
  • Trade-offs: latency, consistency, cost, complexity
  • Scalability and performance considerations (partitioning, indexing)
  • Real-world examples: Lambda architecture, HTAP databases

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