backend system design
Uber
DoorDash
Lyft

Uber System Design Interview: Design Uber Eats Search

Topics:
Search Engine
Geo Replication
Indexing Strategies
Roles:
Software Engineer
Backend Engineer
Senior Software Engineer
Experience:
Mid Level
Senior
Staff

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

  1. Clarify requirements and SLAs.
  2. Data model & indexing strategy: documents for restaurants and menu items, faceted fields for filters.
  3. Ingestion pipeline: transactional DB -> change stream -> Kafka -> indexer (near-real-time).
  4. Query path: API gateway -> regional query nodes -> cache -> ranked results with geo-filter & personalization.
  5. 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

1Design a location-based recommendation system for nearby restaurants
2Build a real-time indexing pipeline for menu updates and availability
3Design a federated search that merges results from multiple microservices (menus, promos, restaurants)
4Design a personalized ranking service for e-commerce/product search using learning-to-rank

Explore More Questions

Practice This Question with AI

Get real-time hints, detailed requirements, and insightful analysis of the question.

Uber Eats Search System Design Interview (Backend) | Voker