← Uber Interview Insights

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

Senior
Jun 2026

Summary

Uber system design round for a software engineer role, one big question that expanded in every direction the longer we talked. The scope kept growing and I'm not sure I covered everything they wanted.

Questions Asked (1)

Q1

Design a real-time driver heatmap for Uber that shows drivers where rider demand is concentrated. Walk through event ingestion, geospatial aggregation, pipeline architecture, how updates get pushed to driver apps, data retention, and how it scales to millions of drivers globally.

System DesignTechnical Trade-offsData Modeling
Author's notes

This one sprawled.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale, then design a high-level architecture that separates ingestion, aggregation, and serving. Walk through each component in detail, emphasizing trade-offs and scalability. Conclude with how updates are pushed to drivers and how data retention is handled.

Pro tip: Emphasize the use of approximate geospatial indexing (like geohashes or S2 cells) to balance accuracy and performance, and discuss how you'd handle hot spots and load skew.

1. Clarify Requirements and Scale

Ask questions to understand expected QPS, latency requirements, geographic granularity, and update frequency. Establish that the system must handle millions of drivers and riders globally.

2. Design Event Ingestion

Propose a scalable ingestion layer (e.g., Kafka) to collect rider demand events and driver location updates. Discuss partitioning by geographic region for parallelism.

3. Geospatial Aggregation

Explain how to aggregate demand in real-time using a stream processing framework (e.g., Flink, Spark Streaming). Use geospatial indexing (geohash, S2) to bucket events into cells and compute counts per cell over sliding windows.

4. Serving and Push Updates

Store aggregated heatmap data in a low-latency store (e.g., Redis, Cassandra) and push updates to driver apps via WebSockets or long polling. Discuss how to handle frequent updates and minimize bandwidth.

5. Data Retention and Scalability

Outline retention policies: keep recent data for real-time heatmap, and optionally store historical data for analytics. Discuss scaling strategies: sharding by region, auto-scaling, and handling hot spots.

Key Points to Mention

  • Use of geospatial indexing (geohash, S2 cells) for efficient aggregation and querying
  • Stream processing with windowing (e.g., sliding windows) to compute real-time demand
  • Choice of data stores: low-latency for serving (Redis) and durable for retention (Cassandra, S3)
  • Push mechanism: WebSockets or server-sent events for real-time updates to drivers
  • Scalability considerations: partitioning by geography, handling hot spots, and load balancing
  • Trade-offs: accuracy vs. latency, cost vs. freshness, and consistency vs. availability

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