← Booking.com Interview Insights
This was a lot to hold in your head at once.
Start by clarifying requirements and scale, then walk through the pipeline stage by stage: ingestion, buffering, processing, storage, and query. Emphasize trade-offs, especially how you decouple writes from reads to handle the async vs. low-latency tension.
Pro tip: Propose a dual-path architecture: a fast path for real-time metrics (e.g., stream processing with approximate aggregations) and a batch path for accurate historical data, and discuss how to reconcile them.
Ask about event volume, latency requirements, data retention, query patterns, and consistency needs. Establish assumptions like billions of events/day, sub-second dashboard latency, and 1-year retention.
Services emit events asynchronously via lightweight agents (e.g., Fluentd, Filebeat) to a durable, scalable buffer like Kafka. Discuss partitioning, replication, and backpressure handling.
Use stream processing (e.g., Flink, Spark Streaming) for real-time aggregations and a batch layer (e.g., Spark) for accurate rollups. Address windowing, late data, and exactly-once semantics.
Store hot data in a time-series DB or search engine (e.g., Elasticsearch, Druid) for fast queries, and cold data in cheap object storage (e.g., S3) with columnar format (Parquet). Discuss tiering and retention policies.
Provide a query service that routes to hot or cold storage, caches frequent queries, and supports real-time dashboards and alerting. Discuss push vs. pull for alerts and how to handle high cardinality.
AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.