← Snapchat Interview Insights

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

SeniorPrefer not to say
Apr 2026

Summary

Snapchat system design round, backend-flavored, focused entirely on building a price tracking and alert service from scratch. Pretty thorough scope, they wanted the full stack from ingestion to notification fanout.

Questions Asked (3)

Q1

Design a price tracking service where users can monitor product prices across e-commerce sites and get notified when prices drop below a threshold they set.

System DesignTechnical Trade-offs
Author's notes

This one sprawled fast.

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 architecture that handles crawling, price comparison, and notifications. Focus on trade-offs between polling vs. event-driven updates, storage choices, and notification delivery guarantees.

Pro tip: Proactively discuss how to handle anti-scraping measures and rate limits from e-commerce sites, and propose a hybrid approach using APIs where available and respectful crawling otherwise. This shows awareness of real-world constraints and legal/ethical considerations.

1. Clarify Requirements

Ask about scale (number of users, products, sites), update frequency, notification channels, and consistency needs. Define core features: user registration, product tracking, price threshold setting, and notifications.

2. High-Level Design

Sketch main components: API gateway, user service, product catalog, price fetcher, price storage, notification service, and scheduler. Explain data flow from user adding a product to receiving a notification.

3. Deep Dive into Key Components

Detail the price fetching mechanism (crawlers vs. APIs, scheduling, deduplication), storage schema (time-series DB for prices, relational for users/thresholds), and notification system (push, email, SMS with retries and idempotency).

4. Address Scalability and Reliability

Discuss partitioning, caching, rate limiting, fault tolerance, and monitoring. Explain how to handle failures in fetching or notifications, and ensure eventual consistency.

5. Discuss Trade-offs and Alternatives

Compare polling vs. event-driven updates, SQL vs. NoSQL, push vs. pull notifications, and cost implications. Justify choices based on requirements and constraints.

Key Points to Mention

  • Use a time-series database (e.g., InfluxDB) for efficient storage and querying of price history.
  • Implement a distributed scheduler (e.g., using Celery or Quartz) with rate limiting and backoff to avoid overloading e-commerce sites.
  • Design a notification service with idempotency, retries, and dead-letter queues to ensure reliable delivery.
  • Consider using a message queue (e.g., Kafka) to decouple price fetching from notification processing for scalability.
  • Handle anti-scraping by rotating user agents, using proxies, and respecting robots.txt; consider official APIs when available.
  • Cache frequently accessed data (e.g., product info, user thresholds) to reduce database load and latency.

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

Q2

How would you store price history for millions of products, and what kind of data model supports efficient threshold evaluation?

Data ModelingSystem Design
Author's notes

Time-series storage was the obvious answer and I said it, but I fumbled explaining why a general-purpose relational DB would struggle here at scale.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements: scale (millions of products, update frequency), query patterns (threshold evaluation, historical analysis), and consistency needs. Then propose a hybrid storage model: a time-series database or wide-column store for raw price history, and a derived, indexed structure (e.g., inverted index or materialized view) for efficient threshold queries. Discuss trade-offs between write throughput, read latency, and storage cost.

Pro tip: Emphasize that threshold evaluation often requires pre-computation or indexing (e.g., bucketing prices or using a search index) to avoid full scans; mention that you'd validate the design with back-of-the-envelope calculations for storage and QPS.

1. Clarify Requirements

Ask about data volume (millions of products, how many price points per product?), update frequency (real-time vs batch), query patterns (threshold evaluation: how many thresholds, latency requirements?), and retention policy.

2. Choose Storage for Raw History

Select a scalable time-series or wide-column store (e.g., Cassandra, Bigtable, or specialized TSDB) that handles high write throughput and efficient range scans by product and time.

3. Design Data Model

Model the data with a primary key like (product_id, timestamp) for raw history, and consider column families or partitions to optimize for time-range queries and compression.

4. Optimize for Threshold Evaluation

Create a derived index or materialized view that maps price ranges or thresholds to products, enabling fast lookups without scanning all history. For example, use an inverted index or a bucketed approach.

5. Address Trade-offs and Scalability

Discuss consistency (eventual vs strong), cost of maintaining derived views, and how to handle updates (e.g., stream processing to update indexes). Mention partitioning and sharding strategies.

Key Points to Mention

  • Time-series data modeling with composite keys (product_id + timestamp) for efficient range queries.
  • Use of wide-column stores (Cassandra, HBase) or time-series databases (InfluxDB, TimescaleDB) for high write throughput.
  • Derived indexes or materialized views to support threshold queries (e.g., inverted index on price buckets).
  • Stream processing (e.g., Kafka + Flink) to update indexes in near real-time as new prices arrive.
  • Partitioning and sharding strategies to distribute load across nodes.
  • Trade-offs between storage cost, query latency, and consistency (e.g., eventual consistency for derived views).

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

Q3

Walk through how you'd fan out notifications to millions of users simultaneously when a price drop event triggers.

System DesignAPI & Integrations
Author's notes

Pub/sub was the first thing I said.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements: scale (millions of users), latency (near real-time), and delivery guarantees (at-least-once vs exactly-once). Then propose a scalable, decoupled architecture using a message queue and fan-out service, and discuss trade-offs like push vs pull, batching, and prioritization.

Pro tip: Emphasize idempotency and deduplication to handle retries and avoid spamming users, and mention how you'd monitor and throttle the system to prevent cascading failures.

1. Clarify Requirements and Constraints

Ask about scale (number of users, events per second), latency expectations, delivery guarantees, and whether notifications are personalized. This shows you avoid assumptions and design for the right problem.

2. High-Level Architecture

Propose a decoupled pipeline: event triggers -> message queue (e.g., Kafka) -> fan-out service -> delivery channels (push, SMS, email). Explain how this scales horizontally and handles spikes.

3. Fan-Out and Delivery Strategy

Detail how to fan out: use a partitioned queue, worker pools, and batch processing. Discuss push vs pull models, and how to handle different channels (e.g., APNs, FCM) with retries and backoff.

4. Scalability and Reliability

Explain partitioning, sharding, and rate limiting to avoid overwhelming downstream services. Mention idempotency, deduplication, and dead-letter queues for failures.

5. Monitoring and Trade-offs

Discuss monitoring (latency, success rate), alerting, and trade-offs like cost vs latency, push vs pull, and exactly-once vs at-least-once delivery.

Key Points to Mention

  • Message queue (e.g., Kafka) for decoupling and buffering
  • Horizontal scaling with partitioned consumers and worker pools
  • Batching and rate limiting to protect downstream services
  • Idempotency and deduplication to handle retries
  • Push vs pull models and integration with third-party services (APNs, FCM)
  • Monitoring, alerting, and dead-letter queues for reliability

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