← Uber Interview Insights

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

SeniorPrefer not to say
Jun 2026

Summary

Uber system design round for a software engineer role. The whole session was basically one big deep-dive into a stock price alert system, covering everything from requirements to delivery guarantees. A lot of ground to cover in one interview.

Questions Asked (1)

Q1

Design a stock price alert system where users can set threshold-based alerts on securities and receive notifications when the market price crosses that threshold. Walk through requirements, APIs, data model, architecture, alert evaluation strategy, scalability, latency, reliability, deduplication, and notification delivery across push, email, and SMS.

System DesignTechnical Trade-offsAPI & Integrations
Author's notes

This is a lot to unpack in one question.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying functional and non-functional requirements, then design the core components: APIs for alert management, a data model for alerts and user preferences, and an event-driven architecture for price ingestion and alert evaluation. Discuss trade-offs in scalability, latency, reliability, deduplication, and notification delivery, emphasizing how to handle high throughput and ensure timely alerts.

Pro tip: Focus on the critical path: price ingestion to alert evaluation to notification, and explain how you would partition and scale each component. Demonstrate awareness of real-world constraints like market data volatility, user experience during market hours, and cost of notifications.

1. Clarify Requirements and Scope

Ask questions to understand scale (users, alerts, securities), latency requirements (real-time vs. near-real-time), supported notification channels, and reliability guarantees. Define functional requirements: create/update/delete alerts, threshold crossing detection, and multi-channel notifications.

2. Design APIs and Data Model

Define RESTful APIs for alert CRUD operations and user preferences. Design a data model for alerts (user_id, symbol, threshold, direction, status) and notifications, considering storage choices (SQL vs. NoSQL) for scalability and query patterns.

3. Architect the System

Propose an event-driven architecture: market data ingestion, a stream processing layer for alert evaluation, and a notification service. Discuss components like message queues (Kafka), stream processors (Flink), and databases for alert state.

4. Detail Alert Evaluation and Deduplication

Explain how to evaluate alerts efficiently: maintain a mapping of symbols to alerts, process price ticks in real-time, and detect threshold crossings. Implement deduplication to avoid repeated notifications for the same crossing, using state stores or caches.

5. Address Scalability, Latency, Reliability, and Notification Delivery

Discuss partitioning by symbol for parallel processing, ensuring low latency via in-memory computation, and achieving reliability with at-least-once processing and idempotent notifications. Cover notification delivery via push, email, SMS with retries, fallbacks, and user preferences.

Key Points to Mention

  • Partitioning alert evaluation by symbol to scale horizontally and handle high-frequency price updates.
  • Using a stream processing framework (e.g., Kafka + Flink) for real-time alert evaluation with exactly-once or at-least-once semantics.
  • Deduplication strategies: track last notified state per alert and use idempotent notification IDs to prevent duplicates.
  • Notification delivery: integrate with third-party services (APNs, FCM, SendGrid, Twilio) and handle failures with retries and dead-letter queues.
  • Data model considerations: storing alerts in a low-latency store (e.g., Redis) for fast lookup and a durable store (e.g., Cassandra) for persistence.
  • Latency vs. cost trade-offs: evaluating alerts on every tick vs. batching, and using push vs. pull for notifications.

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