← Google Interview Insights

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

SeniorPrefer not to say
May 2026

Summary

Google system design round for a software engineering role. The whole thing was one big design question about building a log processing pipeline end to end, and it went pretty deep across a lot of subsystems. Walked away feeling like I covered maybe 70% of what they wanted.

Questions Asked (5)

Q1

Design an end-to-end log processing system that ingests logs from many services and supports search and aggregation across the full pipeline.

System DesignTechnical Trade-offsData Modeling
Author's notes

Big question, lots of moving parts.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale (e.g., volume, latency, retention) to frame the design. Then propose a high-level architecture with ingestion, storage, indexing, and query layers, and dive into trade-offs for each component. Conclude by discussing how to handle failures, scaling, and cost optimization.

Pro tip: Emphasize the separation of ingestion and query paths to allow independent scaling, and mention using columnar storage with time-based partitioning for efficient aggregation and search.

1. Clarify Requirements

Ask about log volume (e.g., TB/day), latency requirements (real-time vs batch), retention period, query patterns (search vs aggregation), and consistency needs. This ensures the design meets actual needs.

2. High-Level Architecture

Outline components: log producers, ingestion pipeline (e.g., Kafka), storage (e.g., distributed file system or NoSQL), indexing (e.g., inverted index), and query service. Explain data flow from ingestion to query.

3. Deep Dive into Components

For each component, discuss technology choices and trade-offs. For example, Kafka for buffering, HDFS/S3 for raw storage, Elasticsearch for search, and Druid/ClickHouse for aggregation. Justify choices based on requirements.

4. Scalability and Reliability

Explain how to scale each layer (e.g., partitioning, replication) and handle failures (e.g., retries, dead-letter queues). Discuss monitoring and alerting for the pipeline itself.

5. Trade-offs and Optimizations

Summarize key trade-offs (e.g., cost vs performance, latency vs throughput) and propose optimizations like compression, tiered storage, and caching. Mention how to evolve the system over time.

Key Points to Mention

  • Use of a distributed message queue (e.g., Kafka) for reliable ingestion and decoupling.
  • Storage strategy: raw logs in object storage (e.g., S3) for durability and cost, indexed data in a search engine (e.g., Elasticsearch) for fast queries.
  • Time-based partitioning and columnar storage (e.g., Parquet) for efficient aggregation and retention management.
  • Trade-offs between real-time indexing (higher cost, lower latency) and batch indexing (lower cost, higher latency).
  • Handling schema evolution and diverse log formats with a schema registry or flexible parsing.
  • Security and access control: encryption, authentication, and authorization for log data.

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

Q2

How would you handle log parsing and structuring, and what are the tradeoffs between schema-on-read versus schema-on-write?

System DesignTechnical Trade-offsData Modeling
Author's notes

This came as a follow-up mid-design.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by outlining a concrete log parsing pipeline—ingestion, parsing, enrichment, and storage—then compare schema-on-read vs. schema-on-write across dimensions like flexibility, performance, and cost. Ground the tradeoffs in real-world scenarios (e.g., debugging vs. analytics) and tie back to Google-scale systems like BigQuery and Cloud Logging.

Pro tip: Emphasize that the choice isn't binary: many production systems use a hybrid approach, such as writing a minimal schema for critical fields while keeping raw logs for flexible querying. This shows you understand practical tradeoffs beyond textbook definitions.

1. Clarify requirements and constraints

Ask about log volume, variety, query patterns, latency needs, and retention policies to frame the problem. This ensures your answer is tailored to the specific use case.

2. Describe a log parsing and structuring pipeline

Outline steps: collect logs (e.g., Fluentd), parse with regex/grok or structured formats (JSON), enrich with metadata, and store in a suitable system (e.g., Elasticsearch, BigQuery). Mention handling of multiline logs and timestamps.

3. Define schema-on-read and schema-on-write

Briefly explain: schema-on-write enforces structure at ingestion (e.g., Avro, Parquet), while schema-on-read applies structure at query time (e.g., raw JSON in S3).

4. Compare tradeoffs across key dimensions

Discuss flexibility, performance, storage cost, data quality, and evolution. For example, schema-on-write offers faster queries and better compression but requires upfront modeling; schema-on-read is flexible but can lead to slower queries and inconsistent parsing.

5. Recommend a hybrid or context-specific approach

Suggest using schema-on-write for high-value, frequently queried logs and schema-on-read for exploratory or low-volume logs. Mention tools like BigQuery's schema-on-read external tables or Dataproc for flexible processing.

Key Points to Mention

  • Log parsing techniques: regex, grok, JSON, and handling of multiline logs
  • Schema-on-write benefits: faster queries, better compression, enforced data quality
  • Schema-on-read benefits: flexibility, agility, and support for evolving data
  • Tradeoffs: storage cost vs. compute cost, query performance, data consistency
  • Hybrid approaches: e.g., storing raw logs and parsed logs in separate tiers
  • Google-specific tools: Cloud Logging, BigQuery, Dataflow, and Pub/Sub for log processing

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

Q3

Walk through the query API layer: how do you support full-text search, time-range filters, and field-level aggregations, and how does a dashboard sit on top of that?

System DesignAPI & Integrations
Author's notes

Talked through exposing a query API backed by the hot index for recent data, with time-range filters pushing down to the index for efficiency.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by outlining the overall architecture of the query API layer, emphasizing how it abstracts the underlying search engine (e.g., Elasticsearch) and provides a unified interface for full-text search, time-range filters, and aggregations. Then, walk through each feature in detail, explaining the design choices, data modeling, and query execution flow. Finally, describe how the dashboard consumes this API, including how it handles real-time updates, caching, and user interactions.

Pro tip: Highlight the importance of designing the API to be stateless and scalable, and discuss how you would handle pagination, rate limiting, and query optimization to ensure low latency at Google scale. Mention trade-offs between consistency and availability, and how you might use techniques like query result caching or pre-aggregation to improve dashboard performance.

1. High-Level Architecture

Describe the components: API gateway, query service, search engine (e.g., Elasticsearch), and data storage. Explain how the query service translates API requests into search engine queries and returns results.

2. Full-Text Search

Explain how you support full-text search: indexing strategy (e.g., inverted index), tokenization, relevance scoring, and support for advanced features like fuzzy matching, phrase queries, and highlighting.

3. Time-Range Filters

Discuss how you handle time-range queries: storing timestamps in a sortable format, using range queries, and optimizing for time-based partitioning or sharding. Mention handling time zones and inclusive/exclusive bounds.

4. Field-Level Aggregations

Explain how aggregations are computed: using the search engine's aggregation framework (e.g., terms, histogram, date_histogram), handling nested aggregations, and ensuring performance with large datasets. Discuss pre-computation or caching for common aggregations.

5. Dashboard Integration

Describe how the dashboard sits on top: it makes API calls to fetch data, renders visualizations, and handles user interactions (filters, drill-downs). Discuss real-time updates via polling or websockets, caching strategies, and how to handle large result sets with pagination or incremental loading.

Key Points to Mention

  • Choice of search engine (e.g., Elasticsearch, Solr) and why it fits the use case
  • Index design: mapping, analyzers, and how they affect search and aggregation
  • Query DSL: how to combine full-text search with filters and aggregations in a single request
  • Performance optimizations: caching, pagination, query timeouts, and rate limiting
  • Dashboard considerations: real-time data, user experience, and handling of large datasets
  • Scalability and fault tolerance: sharding, replication, and handling failures

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

Q4

How do you ensure reliability in the pipeline, specifically around at-least-once versus exactly-once delivery, and how do you handle deduplication?

System DesignTechnical Trade-offs
Author's notes

At-least-once is the practical default because exactly-once is expensive and sometimes impossible across distributed systems.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the delivery semantics and their trade-offs, then explain how you design for reliability at each stage of the pipeline. Emphasize that exactly-once is often achieved through at-least-once delivery plus idempotent processing and deduplication, and discuss how you handle failures and scale.

Pro tip: Show that you understand the cost of exactly-once: it typically requires coordination (e.g., transactions, distributed locks) and can impact latency and throughput. Mention that sometimes at-least-once with idempotency is a pragmatic choice, and that Google often uses this approach in systems like Pub/Sub and Dataflow.

1. Clarify requirements and semantics

Define what reliability means for the use case: is exactly-once truly needed, or is at-least-once with idempotency acceptable? Consider the cost and complexity of each guarantee.

2. Design for at-least-once delivery

Explain how to ensure messages are not lost: use acknowledgments, retries with backoff, and durable storage. Discuss how to handle duplicates that arise from retries.

3. Implement deduplication and idempotency

Describe techniques for deduplication: unique message IDs, idempotent writes, and deduplication windows. Mention how to handle out-of-order and late data.

4. Achieve exactly-once when necessary

Explain how to combine at-least-once with deduplication to get exactly-once processing, or use transactional guarantees (e.g., two-phase commit, stream processing frameworks with exactly-once semantics).

5. Monitor, test, and iterate

Discuss how to verify reliability: monitoring for duplicates, lag, and failures; chaos testing; and iterating based on observed issues.

Key Points to Mention

  • At-least-once vs exactly-once trade-offs: exactly-once is more expensive and complex, often requiring coordination.
  • Idempotent processing: designing operations that can be applied multiple times without changing the result.
  • Deduplication strategies: unique IDs, deduplication stores (e.g., Redis, Bigtable), and time-based windows.
  • Exactly-once semantics in stream processing: e.g., Apache Beam/Dataflow, Flink, Kafka transactions.
  • Handling failures and retries: exponential backoff, dead-letter queues, and ensuring no data loss.
  • Monitoring and observability: tracking duplicates, latency, and system health to ensure reliability.

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

Q5

What are your cost and scale targets, and how does the architecture change as ingestion volume grows, say into the TB per day range?

System DesignTechnical Trade-offsProduct Analytics & Metrics
Author's notes

This is where I wish I'd been more decisive from the start.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the business context and defining concrete cost and scale targets (e.g., cost per GB ingested, latency SLOs, availability). Then walk through how the architecture evolves from a simple pipeline to a distributed, tiered system as volume grows to TB/day, emphasizing trade-offs and bottlenecks at each stage.

Pro tip: Anchor your answer in a specific real-world example (e.g., 'At my last job we handled 500GB/day and hit a wall with X, so we introduced Y'). Quantify the impact of each architectural change on cost and performance to show you think like an owner.

1. Clarify requirements and define targets

Ask about data sources, velocity, variety, latency needs, and budget constraints. Propose concrete targets like cost per GB ingested (<$0.10), end-to-end latency (<5 min), and availability (99.9%).

2. Start with a baseline architecture

Describe a simple pipeline: ingestion (e.g., Kafka/PubSub), processing (e.g., Flink/Spark), storage (e.g., S3/BigQuery), and serving. Explain how it meets small-scale needs but breaks at TB/day.

3. Identify bottlenecks and scaling challenges

Discuss limits: single broker throughput, partition hotspots, storage costs, query performance, and operational complexity. Use numbers to show where the baseline fails.

4. Evolve the architecture for TB/day

Introduce changes: partitioning and sharding, tiered storage (hot/cold), batch vs. stream processing, autoscaling, and cost optimization (compression, columnar formats). Explain how each addresses a bottleneck.

5. Summarize trade-offs and future-proofing

Highlight trade-offs (e.g., cost vs. latency, complexity vs. flexibility) and how you'd monitor and iterate. Mention potential next steps like multi-region or serverless.

Key Points to Mention

  • Cost targets: cost per GB ingested/processed, total cost of ownership, and cost breakdown (compute, storage, network).
  • Scale targets: throughput (TB/day), latency SLOs, data retention, and availability.
  • Partitioning and sharding strategies to distribute load and avoid hotspots.
  • Tiered storage (hot/warm/cold) and data lifecycle policies to reduce cost.
  • Batch vs. stream processing trade-offs and when to use each.
  • Autoscaling, backpressure, and monitoring to handle spikes and ensure reliability.

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