← Uber Interview Insights

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

SeniorPrefer not to say
Apr 2026

Summary

System design round at Uber for a software engineer role. The whole thing was basically one long question about shopping carts, which sounds mundane until you're 40 minutes in and still untangling consistency tradeoffs.

Questions Asked (4)

Q1

Design an online shopping cart service for a multi-merchant e-commerce platform, where each user has a separate cart per merchant and carts persist across devices and sessions.

System DesignData ModelingTechnical Trade-offs
Author's notes

This was the whole interview.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying functional and non-functional requirements, such as scale, consistency needs, and multi-device sync. Then design the data model for carts per user per merchant, and outline the API and storage layers. Finally, discuss trade-offs around consistency, caching, and partition tolerance.

Pro tip: Emphasize idempotency and conflict resolution for cart updates across devices, as this is a common real-world challenge. Also, mention how you would handle cart merging when a user logs in from a guest session.

1. Clarify Requirements

Ask about scale (users, merchants, items), consistency requirements (strong vs eventual), and features like guest carts, promotions, and inventory checks.

2. Design Data Model

Define entities: User, Merchant, Cart, CartItem, and their relationships. Choose a storage solution (e.g., NoSQL for scalability, SQL for transactions) and discuss sharding by user or merchant.

3. Define APIs and Sync Strategy

Outline RESTful or gRPC endpoints for cart operations (add, update, remove, get). Describe how carts persist across devices using a central store and how to handle concurrent updates (e.g., versioning, timestamps).

4. Address Scalability and Reliability

Discuss caching (e.g., Redis), read/write patterns, and how to ensure high availability and partition tolerance. Mention monitoring and failure recovery.

5. Discuss Trade-offs

Compare consistency models (strong vs eventual), storage choices (SQL vs NoSQL), and sync strategies (last-write-wins vs merge). Explain your recommendations based on requirements.

Key Points to Mention

  • Data partitioning strategy (e.g., sharding by user_id or merchant_id) to scale horizontally.
  • Idempotent operations and conflict resolution (e.g., using version numbers or timestamps) for multi-device updates.
  • Caching layer (e.g., Redis) for low-latency reads and handling cart retrieval.
  • Guest cart merging logic when a user logs in or creates an account.
  • Consistency trade-offs: eventual consistency for availability vs strong consistency for correctness.
  • API design considerations: REST vs gRPC, pagination, and rate limiting.

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

Q2

How would you handle checkout coordination across inventory and payment systems, and what happens if a write to one merchant's cart fails partway through?

System DesignTechnical Trade-offsAPI & Integrations
Author's notes

Blanked for a second on the recovery piece.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the scope: are we designing a new checkout system or debugging an existing one? Then outline a high-level architecture that decouples inventory and payment services, using asynchronous messaging and idempotency to handle partial failures. Finally, dive into the specific failure scenario, explaining how you would detect, recover, and ensure consistency.

Pro tip: Emphasize idempotency and compensating transactions (sagas) rather than distributed transactions, as they are more scalable and align with Uber's microservices architecture. Also, mention the importance of monitoring and alerting for partial failures to enable quick remediation.

1. Clarify requirements and constraints

Ask about scale, consistency requirements, and existing systems. Determine if the checkout is for a single merchant or multiple, and what SLAs are expected.

2. Design the high-level flow

Describe the sequence: cart validation, inventory reservation, payment authorization, and order confirmation. Highlight where synchronous vs asynchronous communication is used.

3. Address partial failure handling

Explain how to handle a write failure to one merchant's cart: use idempotent operations, retries with exponential backoff, and compensating actions (e.g., release inventory, void payment) if needed.

4. Ensure data consistency

Discuss patterns like Saga, outbox pattern, or event sourcing to maintain consistency across services without distributed transactions.

5. Monitor and recover

Outline how to detect failures (logging, metrics, tracing) and recover (dead-letter queues, manual intervention, reconciliation jobs).

Key Points to Mention

  • Idempotency keys to prevent duplicate operations on retries
  • Saga pattern for distributed transaction management
  • Compensating transactions to roll back partial failures
  • Asynchronous messaging (e.g., Kafka) for decoupling services
  • Outbox pattern to ensure reliable event publishing
  • Monitoring, alerting, and reconciliation for failure detection and recovery

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

Q3

How would you detect when a cart item goes out of stock or its price changes, and surface that to the user?

System DesignProduct Sense & Ideation
Author's notes

Honestly my weakest answer.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the requirements and scale, then propose a real-time detection system using event-driven architecture and caching. Explain how to surface changes to users via WebSocket or polling, and discuss trade-offs between consistency, latency, and cost.

Pro tip: Emphasize idempotency and graceful degradation: ensure that even if real-time updates fail, the checkout process validates stock and price to prevent user frustration and financial discrepancies.

1. Clarify Requirements and Scope

Ask about scale (e.g., number of users, items), consistency needs (real-time vs. eventual), and user experience goals (e.g., immediate notification vs. on checkout).

2. Design Detection Mechanism

Propose a system where inventory and pricing services publish events on changes. Use a message queue (e.g., Kafka) to propagate updates to a cart service that maintains a real-time view.

3. Surface Changes to Users

Describe how to push updates to clients via WebSockets or server-sent events, with fallback to polling. Include UI indicators (e.g., banners, badges) to highlight changes.

4. Handle Consistency and Failures

Discuss strategies like versioning, optimistic UI updates, and reconciliation at checkout. Ensure idempotent operations and handle race conditions.

5. Evaluate Trade-offs and Optimize

Compare latency, cost, and complexity of different approaches. Suggest optimizations like batching updates or using in-memory caches for hot items.

Key Points to Mention

  • Event-driven architecture with pub/sub for real-time updates
  • WebSocket or server-sent events for pushing updates to clients
  • Caching strategies (e.g., Redis) to reduce database load
  • Idempotency and reconciliation at checkout to handle stale data
  • Graceful degradation: fallback to polling or validation on checkout
  • User experience considerations: clear notifications and seamless recovery

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

Q4

Walk through how you'd merge a guest user's cart into their account cart when they log in.

System DesignData Modeling
Author's notes

Short discussion, felt more like a sanity check than a deep dive.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and constraints, then outline a high-level design covering data models, merge logic, and edge cases. Walk through the flow step-by-step, emphasizing consistency, idempotency, and scalability, and conclude with trade-offs and potential optimizations.

Pro tip: Discuss how to handle merge conflicts when the same item exists in both carts with different quantities or prices, and propose a deterministic resolution strategy (e.g., sum quantities, take the latest price). Also mention the importance of idempotency to handle retries safely.

1. Clarify Requirements and Constraints

Ask about expected cart size, concurrency, consistency requirements, and whether merging should be synchronous or asynchronous. Confirm if guest cart should be deleted after merge.

2. Define Data Models and Storage

Describe how carts are stored (e.g., key-value store, relational DB) and the schema for cart items, including user ID, guest session ID, item details, and timestamps.

3. Design Merge Logic

Outline the algorithm: fetch both carts, combine items, resolve conflicts (e.g., sum quantities, apply promotions), and persist the merged cart. Ensure atomicity via transactions or idempotent operations.

4. Handle Edge Cases and Failures

Address scenarios like empty carts, duplicate items, price changes, concurrent logins, and partial failures. Propose retry mechanisms and idempotency keys.

5. Discuss Scalability and Trade-offs

Explain how the design scales with millions of users, considering sharding, caching, and eventual consistency. Compare synchronous vs. asynchronous merge and their impact on user experience.

Key Points to Mention

  • Idempotency of the merge operation to handle retries safely
  • Conflict resolution strategies for duplicate items (e.g., sum quantities, latest price)
  • Atomicity and consistency guarantees (transactions, locking, or optimistic concurrency)
  • Data model design for carts and items, including guest session tracking
  • Scalability considerations: sharding, caching, and asynchronous processing
  • Edge cases: empty carts, concurrent logins, and failure recovery

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