← Uber Interview Insights

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

SeniorPrefer not to say
May 2026

Summary

Uber onsite system design round focused on a daily puzzle product with leaderboards and submission scoring. The interviewer was noticeably more relaxed than other rounds I'd heard about, which was a relief but also made me second-guess whether I was actually doing well or just not being pushed.

Questions Asked (3)

Q1

Design a daily puzzle platform where users submit one answer per day, get scored server-side, and can see a leaderboard broken down by locale, day, and all-time.

System DesignTechnical Trade-offsData Modeling
Author's notes

I went straight to the Redis sorted-set for the leaderboard and that was the right call.

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 daily puzzle serving, answer submission, and leaderboard computation. Focus on data modeling for efficient scoring and leaderboard queries across locale, day, and all-time dimensions, and discuss trade-offs between real-time and batch processing.

Pro tip: Emphasize idempotency and anti-cheat measures for daily submissions, and propose a tiered storage strategy (e.g., Redis for real-time leaderboards, Cassandra for historical data) to balance performance and cost.

1. Clarify Requirements and Scale

Ask about user volume, daily active users, locale granularity, leaderboard update frequency, and consistency requirements. Establish assumptions for scale (e.g., millions of DAU) and latency targets.

2. High-Level Architecture

Outline core components: API gateway, puzzle service, submission service, scoring service, leaderboard service, and data stores. Describe the flow from puzzle retrieval to answer submission and leaderboard updates.

3. Data Modeling and Storage

Design schemas for puzzles, submissions, scores, and leaderboards. Consider keys for locale, date, and user to support efficient queries. Choose databases (e.g., Redis for sorted sets, Cassandra for time-series) and explain partitioning and indexing strategies.

4. Scoring and Leaderboard Computation

Detail server-side scoring logic (e.g., correctness, time, streaks). Explain how to compute and update leaderboards: real-time via Redis sorted sets, and batch for all-time using MapReduce or stream processing. Discuss consistency and eventual vs strong consistency.

5. Trade-offs and Scalability

Discuss trade-offs: real-time vs batch, cost vs latency, consistency vs availability. Address scaling: sharding by locale/date, caching, read replicas, and handling peak loads. Mention anti-cheat and idempotency.

Key Points to Mention

  • Idempotent submission handling to prevent duplicate scoring
  • Use of Redis sorted sets for real-time leaderboards with O(log N) updates
  • Partitioning strategy for leaderboards by locale and date (e.g., composite keys)
  • Batch processing (e.g., Spark) for all-time leaderboards to avoid expensive real-time aggregations
  • Anti-cheat measures: rate limiting, server-side validation, anomaly detection
  • Caching strategies for puzzle content and leaderboard reads to reduce latency

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

Q2

How would you handle the submission burst that happens at midnight local time across different locales?

System DesignTechnical Trade-offs
Author's notes

Didn't see this follow-up coming.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the scenario: a submission burst occurs when many users in different time zones hit midnight simultaneously, causing a spike in write traffic. Then propose a multi-layered solution that combines client-side jitter, server-side rate limiting, and asynchronous processing to smooth the load and ensure reliability.

Pro tip: Emphasize that the goal is not to eliminate the burst but to make it graceful—prioritize user experience by ensuring submissions are accepted quickly and processed reliably, even if slightly delayed.

1. Clarify requirements and constraints

Ask about the expected scale (e.g., number of locales, users per locale), latency requirements, and whether submissions must be processed in real-time or can be queued.

2. Identify the root cause and impact

Explain that the burst is due to synchronized user behavior across time zones, and discuss potential impacts like overloaded databases, increased latency, or dropped requests.

3. Propose client-side mitigation

Suggest adding random jitter to client submission times or spreading submissions over a window (e.g., midnight ± 5 minutes) to reduce peak load.

4. Design server-side handling

Implement rate limiting, request queuing, and asynchronous processing (e.g., message queues) to absorb the burst and process submissions at a controlled rate.

5. Ensure scalability and monitoring

Use auto-scaling for backend services, monitor queue depths and error rates, and have fallback mechanisms (e.g., retries, dead-letter queues) to handle failures.

Key Points to Mention

  • Time zone awareness: submissions are tied to local midnight, so bursts occur at different times per locale, but may overlap if locales share time zones.
  • Jitter and randomization: adding a random delay on the client side can spread the load without affecting user experience.
  • Rate limiting and throttling: protect backend services by limiting the number of requests per user or per IP within a time window.
  • Asynchronous processing: use message queues (e.g., Kafka, RabbitMQ) to decouple submission acceptance from processing.
  • Auto-scaling: dynamically scale resources based on load to handle the burst, but be mindful of cold start and cost.
  • Idempotency and deduplication: ensure that retries or duplicate submissions don't cause issues, especially if clients retry after timeouts.

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

Q3

Where should scoring happen: on the client, on the server, or computed on-the-fly via a serverless function?

System DesignTechnical Trade-offs
Author's notes

Client-side scoring is an obvious no for anything competitive, so I dismissed it fast.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the scoring use case and requirements (e.g., real-time vs. batch, latency, consistency, security). Then compare client-side, server-side, and serverless options across dimensions like latency, scalability, cost, and maintainability. Finally, recommend a hybrid or context-specific solution, justifying trade-offs and mentioning Uber's scale and existing infrastructure.

Pro tip: Emphasize that scoring logic often needs to be consistent and secure, so client-side scoring is risky unless it's purely for UI feedback. At Uber's scale, a serverless approach can handle spiky traffic, but consider cold starts and cost; sometimes a dedicated service is better.

1. Clarify Requirements

Ask about the scoring context: is it for driver/rider ratings, fraud detection, or promotions? Determine latency needs, data sensitivity, and expected traffic patterns.

2. Evaluate Client-Side Scoring

Discuss pros: instant feedback, reduced server load. Cons: security risks (tampering), inconsistency across devices, and limited compute for complex models.

3. Evaluate Server-Side Scoring

Highlight benefits: centralized logic, security, consistency, and access to full data. Drawbacks: potential latency, scaling challenges, and cost of maintaining servers.

4. Evaluate Serverless Scoring

Explain serverless (e.g., AWS Lambda) advantages: auto-scaling, pay-per-use, reduced ops. Challenges: cold starts, execution time limits, and potential vendor lock-in.

5. Recommend and Justify

Propose a solution based on requirements, e.g., hybrid: client for simple UI scoring, serverless for complex or bursty scoring, server for consistent low-latency needs. Justify with trade-offs.

Key Points to Mention

  • Latency requirements: client-side for real-time UI, server-side for critical decisions.
  • Security and anti-tampering: client-side scores can be manipulated, so server-side validation is essential.
  • Scalability and cost: serverless scales automatically but may be costlier at high volume; dedicated servers can be more cost-effective.
  • Consistency: server-side ensures all users get the same score; client-side may vary by device or app version.
  • Data availability: server-side has access to full user history and context; client-side is limited.
  • Uber's scale and existing infrastructure: leverage existing microservices or consider serverless for spiky workloads like promotions.

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