← Uber Interview Insights

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

Senior
Jun 2026

Summary

Uber system design round for a software engineer role, focused entirely on the search component of Uber Eats. Lots of follow-up questions and they also wanted a full metric monitoring design layered on top, which I was not expecting.

Questions Asked (2)

Q1

Design the search component for Uber Eats. How would you architect it to handle restaurant and item discovery at scale?

System DesignTechnical Trade-offsData Modeling
Author's notes

This is where most of the session went.

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 search architecture that separates query understanding, retrieval, and ranking. Focus on how to handle Uber Eats' unique aspects like geo-spatial constraints, real-time availability, and personalization while ensuring low latency and high availability.

Pro tip: Emphasize the trade-offs between freshness (e.g., real-time menu updates) and search relevance, and propose a hybrid approach using both inverted indexes and vector search for semantic understanding. Also, discuss how to handle the 'cold start' problem for new restaurants and items.

1. Clarify Requirements and Scope

Ask about scale (e.g., number of restaurants, items, queries per second), latency requirements, consistency needs, and key features like filters, sorting, and personalization. Define what 'search' includes: restaurant discovery, item search, or both.

2. High-Level Architecture

Outline the main components: query parser, search index, ranking service, and data pipelines. Discuss using a distributed search engine like Elasticsearch for text search and a geo-spatial index for location-based filtering.

3. Data Modeling and Indexing

Explain how to model restaurants and items, including attributes like cuisine, price, ratings, and availability. Describe the indexing strategy: inverted index for text, geohash for location, and possibly embeddings for semantic search.

4. Ranking and Personalization

Detail the ranking pipeline: candidate generation, scoring (e.g., relevance, distance, popularity, personalization), and re-ranking. Mention machine learning models for personalization and how to incorporate real-time signals like current order volume.

5. Scalability, Availability, and Trade-offs

Discuss scaling the index (sharding, replication), caching strategies, and handling failures. Address trade-offs between consistency and availability, and between freshness and cost. Mention monitoring and A/B testing.

Key Points to Mention

  • Geo-spatial indexing and filtering (e.g., geohash, quadtree) to handle location-based queries efficiently.
  • Real-time updates: how to keep the index fresh with menu changes, availability, and promotions without impacting search latency.
  • Personalization: using user history, preferences, and context to rank results, and how to balance with business rules.
  • Scalability: sharding the index by geography or cuisine, using read replicas, and caching frequent queries.
  • Trade-offs: consistency vs. availability (CAP theorem), latency vs. freshness, and cost vs. performance.
  • Evaluation: offline metrics (NDCG, MRR) and online metrics (CTR, conversion) to measure search quality.

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 metric monitoring system for the Uber Eats search component you just described?

Product Analytics & MetricsSystem DesignRoot Cause Analysis
Author's notes

Blindsided me a bit.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the goals of the monitoring system: ensure search reliability, performance, and relevance. Then propose a layered metrics framework covering system health, search quality, and business impact, and explain how you would collect, visualize, and alert on these metrics.

Pro tip: Tie every metric to a user-facing outcome or business KPI, and mention how you'd avoid alert fatigue by setting dynamic thresholds and using anomaly detection.

1. Define monitoring objectives

Clarify what the monitoring system should achieve: detect outages, performance regressions, relevance drops, and business impact. Align with SLOs and SLIs.

2. Identify key metrics

List metrics across layers: infrastructure (CPU, memory), service (latency, error rate, QPS), search quality (CTR, zero-result rate, ranking metrics), and business (orders, revenue).

3. Design data collection and storage

Choose tools for metrics collection (e.g., Prometheus, StatsD), logging (e.g., ELK), and tracing (e.g., Jaeger). Ensure scalability and low overhead.

4. Set up visualization and alerting

Create dashboards for real-time monitoring and define alert rules with appropriate thresholds and escalation policies. Use anomaly detection to reduce noise.

5. Iterate and improve

Regularly review metrics and alerts, conduct post-mortems, and refine the system based on incidents and changing requirements.

Key Points to Mention

  • SLIs/SLOs for search (e.g., latency < 200ms, availability 99.9%)
  • Search-specific metrics: zero-result rate, click-through rate, conversion rate, ranking relevance
  • Use of distributed tracing to debug latency issues
  • Alerting best practices: avoid alert fatigue, use multi-window burn rates
  • Integration with incident management (e.g., PagerDuty) and runbooks
  • Business impact metrics: orders per search, revenue per search

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