← Confluent Interview Insights

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

SeniorPrefer not to say
Jun 2026

Summary

System design round at Confluent with two back-to-back problems. Both had real depth to them and the second one in particular went in a direction I wasn't expecting at all.

Questions Asked (2)

Q1

Design an aggregated news feed service that ingests articles from many publishers, deduplicates and ranks them, and serves different client types including mobile. Cover API design, REST vs RPC tradeoffs, pagination, caching, and how the API surface should adapt to different client capabilities.

System DesignAPI & IntegrationsTechnical Trade-offs
Author's notes

I spent too long on the ingestion pipeline and didn't get to the mobile-specific API stuff until they nudged me.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale, then design the ingestion pipeline with deduplication and ranking, followed by the API layer. Compare REST and RPC tradeoffs for different client needs, and detail pagination, caching, and client-specific adaptations.

Pro tip: Emphasize how Confluent's event streaming platform (Kafka) can be leveraged for scalable ingestion and real-time processing, showing alignment with the company's core technology.

1. Clarify Requirements and Scale

Ask about expected QPS, number of publishers, article volume, latency requirements, and client types. This ensures the design meets actual needs and shows you think before coding.

2. Design Ingestion and Processing Pipeline

Outline a pipeline using a message queue (e.g., Kafka) to ingest articles, then process for deduplication (e.g., SimHash) and ranking (e.g., ML models). Mention scalability and fault tolerance.

3. Design API Surface and Choose REST vs RPC

Decide on REST for public, cacheable endpoints and gRPC for internal, high-performance communication. Discuss tradeoffs: REST simplicity vs RPC efficiency, and how to adapt for mobile (e.g., GraphQL or field selection).

4. Implement Pagination and Caching

Use cursor-based pagination for stable, efficient paging. Implement caching at CDN, API gateway, and service levels with appropriate TTLs and invalidation strategies.

5. Adapt API for Different Clients

Provide tailored responses for mobile (reduced payload, compression) vs web (richer data). Consider API versioning, content negotiation, or separate endpoints.

Key Points to Mention

  • Deduplication techniques: SimHash, MinHash, or exact match with bloom filters.
  • Ranking algorithms: personalized vs global, using ML models or heuristics.
  • REST vs RPC tradeoffs: REST for simplicity and caching, gRPC for performance and streaming.
  • Pagination: cursor-based vs offset-based, and why cursor is better for dynamic feeds.
  • Caching strategies: CDN for static content, Redis for hot data, and cache invalidation.
  • Client adaptation: GraphQL for flexible queries, or REST with sparse fieldsets and compression.

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

Q2

Design a disposable email service where inboxes are created on demand and users can receive and read mail at generated addresses. Two hard constraints: generated usernames must look human enough to not get flagged by external sites, and usernames must never be reused even at very high daily generation volume. How do you generate human-looking addresses at scale, verify uniqueness efficiently, and what are the tradeoffs if you use a probabilistic structure like a Bloom filter?

System DesignAlgorithms & Data StructuresTechnical Trade-offs
Author's notes

The Bloom filter part is what got me.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements (scale, latency, cost) and then propose a two-part solution: a human-like username generator using curated word lists and patterns, and a uniqueness enforcement mechanism combining a Bloom filter for fast probabilistic checks with a persistent store for exact verification. Discuss tradeoffs of Bloom filters (false positives, memory vs. accuracy) and how to handle them, and mention operational aspects like monitoring and scaling.

Pro tip: Emphasize that false positives in Bloom filters are acceptable if you have a fallback to exact storage, but false negatives are not—so design the system to never reuse a username even if it means occasionally rejecting a valid one. Also, consider using a deterministic generator with a counter to guarantee uniqueness without collisions.

1. Clarify Requirements and Constraints

Ask about expected daily volume, latency requirements, storage budget, and whether usernames need to be memorable or just human-like. Confirm that 'never reused' means globally unique forever.

2. Design Human-Like Username Generation

Propose using a combination of common first names, last names, and optional numbers or separators, sourced from curated lists. Use randomness with patterns (e.g., first.last, firstlast123) to mimic human choices, and avoid sequential or predictable patterns.

3. Ensure Uniqueness at Scale

Use a Bloom filter for fast probabilistic membership checks to avoid hitting the database for most collisions. On a positive (possibly false positive), verify against a persistent store (e.g., a database or distributed KV store) that holds all issued usernames. If truly unique, issue and add to both structures.

4. Analyze Bloom Filter Tradeoffs

Discuss false positive rate, memory usage, and how to tune parameters (size, hash functions) based on expected volume. Mention that false positives cause extra database lookups but are safe; false negatives are impossible if implemented correctly. Consider alternatives like cuckoo filters or deterministic generation.

5. Address Scalability and Reliability

Propose sharding the Bloom filter and storage by username prefix or hash to scale horizontally. Discuss persistence, replication, and how to handle failures (e.g., if the Bloom filter is lost, rebuild from the store).

Key Points to Mention

  • Bloom filter false positives vs. false negatives and how to handle them
  • Tuning Bloom filter parameters (size, hash functions) for expected volume
  • Using a persistent store as the source of truth for uniqueness
  • Human-like generation strategies: word lists, patterns, randomness
  • Scalability: sharding, distributed Bloom filters, and caching
  • Alternatives: deterministic generation with counters, cuckoo filters, or exact set with efficient indexing

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