← Uber Interview Insights

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

SeniorPrefer not to say
May 2026

Summary

Uber system design round for a software engineer role. The whole session was basically one big question about batch processing pipelines and serving precomputed results at scale. Pretty deep dive, they kept pulling on threads.

Questions Asked (3)

Q1

Design a batch pipeline that computes the most popular food items per restaurant from order history, then exposes an API for clients to query those results.

System DesignTechnical Trade-offsData Modeling
Author's notes

This is a meaty one.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements (scale, latency, freshness, query patterns) and then walk through the end-to-end architecture: data ingestion, batch processing to compute popular items, storage of results, and API serving. Emphasize trade-offs in data modeling, batch vs. streaming, and how to keep the API performant and scalable.

Pro tip: Mention that you would precompute and store the top N popular items per restaurant (e.g., in a key-value store) to ensure low-latency API reads, and discuss how to handle updates incrementally to avoid full recomputation.

1. Clarify Requirements and Scope

Ask about data volume, update frequency, latency requirements, and query patterns (e.g., top K items per restaurant, time windows). This shapes the design.

2. Design Data Ingestion and Storage

Outline how order history is collected (e.g., Kafka, S3) and stored in a data lake or warehouse (e.g., HDFS, BigQuery) for batch processing.

3. Batch Processing Pipeline

Describe the batch job (e.g., Spark, MapReduce) that aggregates orders to compute popular items per restaurant, handling deduplication, time windows, and ranking.

4. Serving Layer and API Design

Explain how results are stored (e.g., Redis, Cassandra) and exposed via a RESTful API, including caching, pagination, and read scalability.

5. Trade-offs and Extensions

Discuss trade-offs (batch vs. streaming, cost vs. freshness) and potential improvements like incremental updates or real-time processing.

Key Points to Mention

  • Data modeling: star schema or denormalized tables for efficient aggregation; partitioning by date/restaurant.
  • Batch processing framework: Spark or Flink for scalability; use of window functions and top-N algorithms.
  • Storage for serving: low-latency store like Redis or Cassandra; precomputed results to avoid on-the-fly aggregation.
  • API design: REST endpoints with parameters (restaurant_id, limit, time_range); caching and rate limiting.
  • Trade-offs: batch latency vs. cost; freshness vs. complexity; handling data skew and hot keys.
  • Scalability: sharding by restaurant_id, read replicas, and asynchronous updates.

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

Q2

How would you design the getTopItems API, including pagination, filtering by category or price range, and multi-tenant access control?

API & IntegrationsSystem Design
Author's notes

Honestly felt more comfortable here.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale, then propose a RESTful API design with cursor-based pagination, flexible filtering, and tenant isolation enforced at the data access layer. Walk through the key components: endpoint definition, query parameters, authentication/authorization, and performance considerations.

Pro tip: Emphasize cursor-based pagination over offset-based for large datasets to avoid performance degradation and inconsistent results, and mention the importance of indexing on tenant_id and filter columns.

1. Clarify Requirements and Scale

Ask about expected traffic, data volume, latency requirements, and whether multi-tenancy is logical or physical. This shows you think about non-functional requirements before jumping to solutions.

2. Define API Contract

Specify the endpoint (e.g., GET /items/top), query parameters for pagination (cursor, limit), filtering (category, min_price, max_price), and sorting. Include response format with metadata like next_cursor.

3. Design Pagination and Filtering

Choose cursor-based pagination using a stable sort key (e.g., score or created_at). Explain how filters are applied efficiently, possibly using a search index like Elasticsearch for complex queries.

4. Implement Multi-Tenant Access Control

Enforce tenant isolation by extracting tenant ID from the auth token (e.g., JWT) and including it in every database query. Discuss row-level security or separate schemas/databases based on isolation needs.

5. Address Performance and Scalability

Mention indexing strategies (composite indexes on tenant_id and filter columns), caching, and read replicas. Discuss how to handle large result sets and potential rate limiting per tenant.

Key Points to Mention

  • Cursor-based pagination using a unique, sequential column (e.g., id or timestamp) to avoid offset inefficiencies.
  • Filtering by category and price range with proper indexing and query optimization.
  • Multi-tenant isolation via tenant ID from authentication context, enforced at the data layer.
  • Use of JWT or OAuth tokens for authentication and authorization.
  • Caching strategies (e.g., Redis) for frequently accessed top items per tenant.
  • Rate limiting and quotas per tenant to prevent abuse and ensure fairness.

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

Q3

Why use offline batch processing here instead of a real-time streaming approach? What are the trade-offs?

Technical Trade-offsSystem Design
Author's notes

Easiest part of the session for me.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the specific use case and requirements (e.g., data volume, latency tolerance, cost constraints) to ground your answer. Then compare offline batch and real-time streaming across key dimensions like latency, throughput, cost, complexity, and fault tolerance. Conclude by explaining why batch is the right choice for this scenario and acknowledge when streaming would be preferred.

Pro tip: Quantify the trade-offs with concrete numbers (e.g., 'batch can process 10x the volume at 1/5 the cost') and mention that many systems use a hybrid approach (Lambda architecture) to get the best of both worlds.

1. Clarify Requirements

Ask about the data volume, velocity, latency requirements, and business needs to ensure you understand the context before diving into trade-offs.

2. Define Batch vs. Streaming

Briefly define offline batch processing (high throughput, scheduled, high latency) and real-time streaming (low latency, continuous, complex) to set the stage.

3. Compare Trade-offs

Discuss trade-offs across dimensions: latency, throughput, cost, complexity, fault tolerance, and data completeness. Highlight that batch excels in throughput and cost, while streaming excels in latency.

4. Justify Batch for This Scenario

Explain why batch is suitable here: e.g., non-time-critical analytics, large historical data processing, cost efficiency, and simpler operations.

5. Acknowledge Streaming and Hybrid

Mention scenarios where streaming would be better (e.g., real-time alerts, fraud detection) and note that hybrid architectures (Lambda/Kappa) can combine both.

Key Points to Mention

  • Latency requirements: batch has higher latency (minutes to hours) vs. streaming (milliseconds to seconds).
  • Throughput and scalability: batch can handle massive volumes efficiently; streaming may struggle with high throughput.
  • Cost: batch is often cheaper due to resource utilization and simpler infrastructure; streaming requires always-on resources.
  • Complexity: streaming involves handling out-of-order events, exactly-once semantics, and state management; batch is simpler.
  • Fault tolerance: batch can easily retry failed jobs; streaming requires complex recovery mechanisms.
  • Data completeness: batch processes complete datasets; streaming may need to handle late or missing data.

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