Design a News Feed and Mail Service
Company: Confluent
Role: Software Engineer
Category: System Design
Difficulty: medium
Interview Round: Onsite
Design the following systems:
1. **Aggregate news feed**
Build a service that ingests articles from many publishers, deduplicates and ranks them, and serves feeds to multiple client types, especially mobile clients. Explain API design choices, including when to use REST versus RPC, how pagination should work, how caching should be handled, and how the API surface should adapt to different client capabilities.
2. **Temporary email service**
Design a disposable email platform that creates inboxes on demand, receives inbound mail, and lets users read messages for generated addresses. Two hard requirements are:
- generated usernames should look plausibly human rather than obviously random, to reduce rejection by external websites;
- usernames must never be reused, and the system generates a very large number of new addresses every day.
Discuss how to generate human-looking addresses at scale, how to check uniqueness quickly, and what tradeoffs arise if probabilistic structures such as Bloom filters are considered.
Quick Answer: This question evaluates a candidate's proficiency in large-scale system design, including distributed ingestion and deduplication, content ranking, API design choices (REST versus RPC), pagination and caching strategies, and techniques for generating and ensuring uniqueness of human-looking disposable email addresses.