← Google Interview Insights

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

Senior
May 2026

Summary

Google SWE system design round, just one question the whole time: design a key-value store. Felt deceptively simple at first and then I realized how much was actually under the hood.

Questions Asked (1)

Q1

Design a key-value store.

System DesignTechnical Trade-offsData Modeling
Author's notes

I started with the basics, single node, in-memory, then the interviewer kept pushing on durability and consistency.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements: scale, consistency, latency, durability, and access patterns. Then propose a high-level design (e.g., distributed hash table with replication) and dive into key components like partitioning, replication, and consistency models. Discuss trade-offs and justify choices based on requirements.

Pro tip: Demonstrate awareness of real-world systems like DynamoDB and Bigtable, and explicitly state assumptions about scale and consistency to guide your design decisions. Show how you would handle failures and ensure availability.

1. Clarify Requirements

Ask questions to understand the expected scale (data size, QPS), consistency needs (strong vs eventual), latency requirements, durability, and access patterns (read/write ratio).

2. High-Level Design

Sketch the overall architecture: clients, API, partitioning, replication, and storage engine. Choose a data model (e.g., key-value pairs) and decide on a partitioning strategy (e.g., consistent hashing).

3. Deep Dive into Components

Detail critical components: how data is partitioned and replicated, consistency mechanisms (e.g., quorum, vector clocks), failure handling (hinted handoff, anti-entropy), and storage engine (LSM trees vs B-trees).

4. Discuss Trade-offs

Explain trade-offs between consistency and availability (CAP theorem), latency and durability, and different design choices (e.g., master-slave vs peer-to-peer replication).

5. Address Scalability and Fault Tolerance

Describe how the system scales horizontally, handles node failures, and ensures data durability and availability. Mention monitoring and operational considerations.

Key Points to Mention

  • Partitioning strategies: consistent hashing, range partitioning, and their impact on load balancing and scalability.
  • Replication: synchronous vs asynchronous, quorum-based replication (e.g., N, R, W), and trade-offs.
  • Consistency models: strong, eventual, causal, and mechanisms like vector clocks or versioning.
  • Storage engine: LSM trees vs B-trees, write-ahead logging, and compaction.
  • Failure handling: hinted handoff, read repair, anti-entropy, and gossip protocols.
  • Real-world examples: Amazon Dynamo, Google Bigtable, Cassandra, and their design choices.

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