Uber System Design Interview: Design Uber Eats Search
Question Description
Overview
You are asked to design the search system for Uber Eats so users can find restaurants and dishes by keywords, cuisine, or location. The system must serve mobile and web clients globally, return relevant results within 200ms (95th percentile), maintain 99.9% uptime, scale to millions of daily queries, and reflect updates within a few minutes.
What you'll be asked to do
You should clarify query types (restaurant vs. dish vs. autosuggest), geographic scope (city vs. country), freshness requirements for availability/menu changes, and personalization depth. Then propose an architecture: ingestion (CDC + message bus), indexing (inverted index / OpenSearch or Elasticsearch), geo-aware sharding/replication, query service with ranking and personalization, and caches at region edge.
High-level flow/stages
- Clarify requirements and SLAs.
- Data model & indexing strategy: documents for restaurants and menu items, faceted fields for filters.
- Ingestion pipeline: transactional DB -> change stream -> Kafka -> indexer (near-real-time).
- Query path: API gateway -> regional query nodes -> cache -> ranked results with geo-filter & personalization.
- Operational concerns: monitoring, rate limiting, blue/green index rollouts, and A/B testing of ranking.
Skills & signals you should show
Demonstrate knowledge of inverted indices, geo-queries and geospatial indexing, sharding/replication strategies, consistency vs. freshness trade-offs, low-latency caching, and personalization (feature signals or learning-to-rank). Discuss scaling, failure modes, and measurable trade-offs (cost vs. latency vs. freshness).
Common Follow-up Questions
- •How would you implement autosuggest and typeahead for dishes and restaurants while keeping latency under 100ms?
- •Describe how you'd add personalization with learning-to-rank: what features, offline training pipeline, and online scoring approach would you use?
- •How do you ensure index freshness and handle menu or availability updates without impacting search performance?
- •If a city has a sudden surge in load (major event), how would you elastically scale the search service and protect SLA?
- •How would you design multi-language and typo-tolerance (fuzzy search) support for global users?
Related Questions
Explore More Questions
Practice This Question with AI
Get real-time hints, detailed requirements, and insightful analysis of the question.