← Uber Interview Insights

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

SeniorPrefer not to say
Jun 2026

Summary

System design round at Uber for a software engineering role. The whole session was focused on designing a heatmap system, which sounds straightforward until you get into the tile pyramid and real-time aggregation stuff. Walked away feeling like I covered the basics but probably left some depth on the table with the trade-off discussion.

Questions Asked (3)

Q1

Design a heatmap system that ingests user activity events (with coordinates and weights), serves rendered tiles at different zoom levels, and supports both real-time and historical views.

System DesignTechnical Trade-offsData Modeling
Author's notes

I started with the ingestion side because that felt most concrete to me.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale, then design a pipeline that ingests events into a stream processor for real-time aggregation and a batch store for historical data. Propose a tile-based serving layer that precomputes heatmap tiles at multiple zoom levels using a quadtree or geohash-based spatial index, and discuss trade-offs between latency, cost, and accuracy.

Pro tip: Emphasize how you would handle the 'hot' real-time path versus the 'cold' historical path separately, and mention using a time-series database or columnar store for efficient range queries. Also, proactively discuss how to handle late-arriving data and ensure idempotency in the aggregation pipeline.

1. Clarify Requirements and Scale

Ask about expected event volume, geographic distribution, zoom levels, latency requirements for real-time vs. historical, and accuracy needs. This shapes the entire architecture.

2. Design Ingestion and Storage

Propose a scalable ingestion layer (e.g., Kafka) to buffer events, then split into real-time stream processing (e.g., Flink) for immediate aggregation and batch processing (e.g., Spark) for historical data. Store aggregated data in a time-series or columnar database optimized for spatial and temporal queries.

3. Design Tile Generation and Serving

Explain how to precompute heatmap tiles at multiple zoom levels using a spatial index (e.g., quadtree, geohash) and store them in a tile server or CDN. For real-time, generate tiles on-the-fly from recent aggregates; for historical, serve precomputed tiles.

4. Address Trade-offs and Optimizations

Discuss trade-offs: precomputation vs. on-the-fly, accuracy vs. performance, cost of storing all zoom levels. Mention techniques like dynamic tile generation, caching, and approximate algorithms (e.g., sampling) for high zoom levels.

5. Handle Edge Cases and Scalability

Cover late data, idempotency, backfill, and how to scale with increasing load. Mention monitoring, alerting, and potential bottlenecks (e.g., hot partitions).

Key Points to Mention

  • Use of stream processing (e.g., Kafka + Flink) for real-time aggregation and batch processing (e.g., Spark) for historical data.
  • Spatial indexing with quadtree or geohash to efficiently map coordinates to tiles at different zoom levels.
  • Tile precomputation and caching strategies (e.g., CDN) to reduce latency for historical views.
  • Trade-offs between precomputed tiles and on-the-fly rendering for real-time views, including cost and freshness.
  • Handling late-arriving data and ensuring idempotent updates in the aggregation pipeline.
  • Scalability considerations: partitioning by geohash or time, and using a distributed database like Cassandra or BigTable for serving.

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

Q2

What are the trade-offs between precomputing heatmap tiles versus computing them on demand?

Technical Trade-offsSystem Design
Author's notes

This came as a follow-up and I fumbled it a bit.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by defining the problem context: heatmap tiles are visualizations of aggregated spatial data, often used for demand/supply patterns. Then compare precomputing (offline batch generation) versus on-demand (real-time computation) across dimensions like latency, cost, freshness, and scalability. Conclude with a recommendation based on use case, such as using precomputed tiles for historical analysis and on-demand for real-time dashboards.

Pro tip: Mention that a hybrid approach—precomputing frequently accessed tiles and computing others on demand—often balances cost and freshness, and discuss how caching and incremental updates can optimize both.

1. Clarify requirements

Ask about data volume, update frequency, latency requirements, and query patterns to understand the trade-off space.

2. Define precomputing and on-demand

Briefly explain what each approach entails: precomputing generates tiles ahead of time and stores them; on-demand computes tiles when requested.

3. Compare across key dimensions

Analyze trade-offs in terms of latency, cost (compute/storage), data freshness, scalability, and complexity.

4. Consider hybrid and optimization techniques

Discuss how caching, incremental updates, and tiered storage can mitigate downsides of each approach.

5. Recommend based on use case

Suggest which approach fits scenarios like real-time monitoring vs. historical analysis, and justify with trade-offs.

Key Points to Mention

  • Latency: Precomputed tiles offer low latency but may be stale; on-demand provides fresh data but with higher latency.
  • Cost: Precomputing requires significant storage and batch compute; on-demand uses compute per request but less storage.
  • Data freshness: On-demand ensures up-to-date data, crucial for real-time applications; precomputed may lag.
  • Scalability: Precomputing scales with storage and batch processing; on-demand scales with request volume and compute resources.
  • Complexity: Precomputing involves pipeline management and invalidation; on-demand requires efficient query engines and caching.
  • Hybrid approach: Combine both to balance cost, latency, and freshness, e.g., precompute popular tiles and compute others on demand.

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

Q3

How would you handle the aggregation pipeline for this system, and what retention policy would you apply to the event data?

System DesignData Modeling
Author's notes

Talked through time-series storage and rolling aggregations.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the system's scale, data sources, and query patterns to tailor the pipeline design. Then describe a multi-stage aggregation pipeline (e.g., using Kafka, Flink, and a time-series database) that balances latency, throughput, and cost. Finally, justify a tiered retention policy based on data value, compliance, and storage costs.

Pro tip: Tie your retention policy to Uber's specific use cases (e.g., real-time pricing vs. historical analytics) and mention how you'd automate data lifecycle management with tools like Apache Airflow or cloud-native solutions.

1. Clarify Requirements

Ask about data volume, velocity, variety, and query latency requirements to understand the system's constraints. Identify key stakeholders and their needs (e.g., real-time dashboards vs. batch reports).

2. Design Aggregation Pipeline

Propose a pipeline architecture: ingestion (Kafka), stream processing (Flink/Spark Streaming), storage (time-series DB like Cassandra or Druid), and serving layer. Explain how you'd handle windowing, joins, and exactly-once semantics.

3. Define Retention Policy

Propose a tiered retention strategy: hot data (last 7 days) in fast storage, warm data (last 90 days) in cheaper storage, and cold data (older) in archival storage like S3 Glacier. Justify based on access patterns and compliance.

4. Address Trade-offs and Scalability

Discuss trade-offs between latency, cost, and complexity. Explain how the pipeline scales horizontally and how retention policies can be adjusted dynamically based on business needs.

5. Summarize and Validate

Summarize your approach and invite feedback. Validate assumptions with the interviewer and adjust based on their input.

Key Points to Mention

  • Use of stream processing frameworks like Apache Flink or Spark Streaming for real-time aggregation.
  • Storage solutions: time-series databases (e.g., Druid, Cassandra) for fast queries and data lakes (S3) for long-term storage.
  • Retention policy tiers: hot (7 days), warm (90 days), cold (1+ years) with automated lifecycle management.
  • Compliance considerations (GDPR, CCPA) and data anonymization for long-term retention.
  • Cost optimization by moving data to cheaper storage as it ages and using compression.
  • Monitoring and alerting for pipeline health and data quality.

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