Design several large-scale systems
Company: Rippling
Role: Software Engineer
Category: System Design
Difficulty: hard
Interview Round: HR Screen
The interview note listed several system design prompts. For each one, discuss functional requirements, APIs, storage, scaling, consistency, fault tolerance, and observability.
1. **Ad event aggregator**
Design a system that ingests ad impressions, clicks, and conversions from many clients and produces near-real-time aggregates for advertisers. The system should support very high write throughput, deduplication, late-arriving events, and analytical queries by campaign, ad, user segment, region, and time window.
2. **News aggregator**
Design a platform that ingests articles from many publishers, deduplicates near-identical stories, classifies and ranks content, and serves personalized or non-personalized news feeds to users. The system should handle freshness, source quality, searchability, and feed generation at scale.
3. **Monitoring system**
Design an internal monitoring platform for collecting metrics from services and hosts, storing time-series data, powering dashboards, and triggering alerts. Discuss ingestion, querying, retention, aggregation, and cardinality control.
4. **Hotel booking system**
Design a hotel search and reservation platform that allows users to search by city and date, view room availability and prices, place a booking, and avoid double-booking under concurrent demand. Discuss inventory modeling, reservation workflow, payment, cancellations, and consistency guarantees.
Quick Answer: This prompt evaluates expertise in large-scale system architecture and distributed systems, including competencies in API and storage design, scalability, consistency and fault tolerance, ingestion and deduplication pipelines, real-time aggregation and analytics, search and ranking, concurrency control for bookings, and observability; it is categorized under System Design. It is commonly asked to assess an interviewee's ability to make trade-offs and operational decisions for high-throughput, correctness-sensitive services, testing practical application at an architectural level rather than low-level coding detail.