← Uber Interview Insights

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

Senior
Apr 2026

Summary

System design round at Uber for a software engineer role. The whole session was basically one big question about building a location-aware food delivery platform, and it went deep fast.

Questions Asked (1)

Q1

Design a simplified food delivery platform where merchants can register restaurants with location and menu data, and customers can query for the nearest restaurants within a given radius, sorted by distance. The system needs to support 100M+ daily active users globally with sub-100ms read latency and strong consistency on writes.

System DesignTechnical Trade-offsData Modeling
Author's notes

This one sprawled in every direction.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying functional and non-functional requirements, then design a scalable architecture that separates write and read paths. Use a geospatial indexing strategy (e.g., geohash or S2) for efficient nearest-neighbor queries, and employ a globally distributed database with strong consistency for writes and low-latency reads via caching and read replicas.

Pro tip: Emphasize the trade-off between consistency and latency: use synchronous replication for writes to ensure strong consistency, but serve reads from local replicas or caches to meet sub-100ms latency. Also, consider sharding by geographic region to distribute load and reduce cross-region traffic.

1. Clarify Requirements and Scale

Ask questions to understand functional requirements (e.g., search radius, sorting, menu updates) and non-functional requirements (100M+ DAU, sub-100ms reads, strong consistency on writes). Estimate QPS and storage needs.

2. High-Level Architecture

Outline components: API gateway, write service, read service, geospatial index, database, cache, and CDN. Separate read and write paths to optimize for different SLAs.

3. Data Modeling and Geospatial Indexing

Design schemas for restaurants and menus. Choose a geospatial indexing technique (e.g., geohash, S2, or Quadtree) to efficiently query nearby restaurants. Discuss how to store and update location data.

4. Scalability and Consistency

Address global distribution: shard data by region, use a distributed database (e.g., Spanner, CockroachDB) for strong consistency on writes, and employ read replicas and caching for low-latency reads. Discuss trade-offs.

5. Performance Optimization and Trade-offs

Detail caching strategies (e.g., Redis for hot data), CDN for static assets, and asynchronous replication for reads. Discuss how to handle consistency vs. latency and potential bottlenecks.

Key Points to Mention

  • Geospatial indexing (geohash, S2, Quadtree) for efficient radius queries
  • Sharding by geographic region to distribute load and reduce latency
  • Strong consistency on writes using synchronous replication or consensus protocols (e.g., Raft, Paxos)
  • Caching and read replicas to achieve sub-100ms read latency
  • Trade-offs between consistency, availability, and latency (CAP theorem)
  • Handling menu updates and ensuring data freshness across replicas

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