← Confluent Interview Insights

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

SeniorPrefer not to say
May 2026

Summary

System design round at Confluent for a software engineer role. The whole thing was essentially one big RSS feed design question with a lot of follow-ups baked in. Heavy emphasis on schema design and API shape, which I wasn't fully expecting.

Questions Asked (9)

Q1

Design an RSS news feed service that lets users subscribe to sources, ingests articles on a schedule, and serves each user a personalized feed.

System DesignData ModelingAPI & Integrations
Author's notes

The scope here is wide.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements (scale, latency, consistency) and then design the system in layers: data ingestion, storage, feed generation, and serving. Emphasize how you would leverage Confluent's ecosystem (Kafka, Kafka Connect, ksqlDB) for scalable, real-time data pipelines and discuss trade-offs between push vs pull models for feed delivery.

Pro tip: Highlight how Kafka's log-based storage and consumer groups enable decoupled, scalable ingestion and personalized feed generation, and mention exactly-once semantics for reliability. Also, discuss how to handle hot partitions and backpressure to show depth.

1. Clarify Requirements and Constraints

Ask about scale (users, sources, articles per day), latency expectations (real-time vs batch), consistency needs, and personalization criteria. This ensures the design meets the actual needs.

2. High-Level Architecture

Outline the main components: source ingestion (polling RSS feeds), message queue (Kafka), storage (article store, user subscriptions), feed generation service, and API layer. Sketch a diagram to visualize data flow.

3. Data Ingestion and Processing

Detail how to schedule and fetch RSS feeds (e.g., using a scheduler like Airflow or Kafka Connect), parse articles, and publish to Kafka topics. Discuss deduplication, error handling, and scaling ingestion.

4. Personalized Feed Generation

Explain how to match articles to user subscriptions: either fan-out on write (precompute feeds) or fan-out on read (query at request time). Discuss using Kafka Streams/ksqlDB for real-time filtering and ranking.

5. Serving and API Design

Design REST endpoints for subscribing to sources and fetching feeds. Discuss pagination, caching, and how to ensure low-latency reads (e.g., using a fast KV store like Redis or Cassandra).

Key Points to Mention

  • Use Kafka as the central backbone for decoupling ingestion, processing, and serving, enabling scalability and fault tolerance.
  • Leverage Kafka Connect for RSS source connectors and ksqlDB/Kafka Streams for real-time personalization and filtering.
  • Discuss trade-offs between fan-out on write (precomputed feeds) vs fan-out on read (on-demand queries) based on user activity and scale.
  • Address data modeling: how to store user subscriptions, articles, and feed items (e.g., normalized vs denormalized, partitioning strategies).
  • Mention reliability aspects: exactly-once processing, idempotent writes, and handling failures/retries in ingestion.
  • Consider performance optimizations: caching, CDN for static content, and efficient pagination for feed APIs.

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

Q2

Walk through your database schema: what tables do you need, what are the primary keys, and what indexes make the hot queries fast?

Data ModelingSystem DesignTechnical Trade-offs
Author's notes

This is where I felt most exposed.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the application and its access patterns, then design a normalized schema with primary keys and foreign keys, and finally identify hot queries and add indexes to support them. Explain trade-offs between normalization and denormalization, and justify each index based on query patterns.

Pro tip: Always tie indexes to specific queries and mention the cost of writes—showing you understand that indexes aren't free demonstrates maturity. Also, consider using covering indexes for hot queries to avoid table lookups.

1. Clarify requirements and access patterns

Ask about the application's read/write ratio, expected data volume, and the most frequent queries. This ensures your schema and indexes are tailored to actual usage.

2. Design core tables and relationships

Identify main entities (e.g., users, orders, products) and define tables with primary keys (often auto-increment or UUID) and foreign keys to enforce referential integrity.

3. Normalize to reduce redundancy

Apply normalization (up to 3NF) to eliminate data duplication and update anomalies, but be ready to denormalize for performance if needed.

4. Identify hot queries and add indexes

List the most frequent or critical queries, then create indexes on columns used in WHERE, JOIN, and ORDER BY clauses. Consider composite and covering indexes.

5. Discuss trade-offs and scaling

Explain how indexes speed reads but slow writes, and mention partitioning, sharding, or caching for scale. Also, note when to avoid indexes (e.g., low-cardinality columns).

Key Points to Mention

  • Primary keys: natural vs. surrogate, and their impact on performance and storage.
  • Index types: B-tree, hash, composite, covering, and when to use each.
  • Hot query patterns: e.g., lookups by user ID, time-range queries, and joins.
  • Trade-offs: read vs. write performance, storage overhead, and maintenance cost.
  • Normalization vs. denormalization: when to denormalize for read-heavy workloads.
  • Scaling considerations: partitioning, sharding, and read replicas for large datasets.

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

Q3

How do you handle deduplication during ingestion, especially when the same article reappears across re-fetches or gets syndicated by multiple sources?

System DesignTechnical Trade-offsData Modeling
Author's notes

I led with GUID as the dedup key, then they immediately asked what happens when GUID is missing or unstable.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the ingestion pipeline and requirements, then propose a multi-layered deduplication strategy that combines exact and fuzzy matching, and finally discuss trade-offs and how to handle edge cases at scale. Emphasize how you would leverage Kafka and Confluent ecosystem tools for scalable, real-time deduplication.

Pro tip: Mention that deduplication should be idempotent and consider using a compacted Kafka topic keyed by a canonical identifier to naturally handle duplicates. Also, highlight the importance of monitoring false positives/negatives and having a feedback loop to tune thresholds.

1. Clarify Requirements and Constraints

Ask about data volume, latency requirements, acceptable false positive/negative rates, and whether deduplication should be exact or fuzzy. Understand the sources and how articles are identified.

2. Design a Multi-Layer Deduplication Pipeline

Propose a pipeline with stages: exact match (e.g., URL, hash), near-duplicate detection (e.g., SimHash, MinHash), and semantic similarity if needed. Use Kafka Streams or ksqlDB for stateful processing.

3. Leverage Confluent Ecosystem for Scalability

Explain how to use Kafka topics with log compaction, Kafka Streams state stores, or ksqlDB for maintaining a deduplication index. Discuss partitioning strategies to scale horizontally.

4. Address Trade-offs and Edge Cases

Discuss trade-offs between latency and accuracy, storage costs for maintaining fingerprints, and how to handle updates or corrections. Mention strategies for syndicated content (e.g., canonical URL detection).

5. Monitor and Iterate

Describe how to monitor deduplication effectiveness (metrics like duplicate rate, false positives) and set up alerts. Suggest A/B testing or offline evaluation to tune algorithms.

Key Points to Mention

  • Exact vs. fuzzy deduplication techniques (hashing, SimHash, MinHash, Jaccard similarity)
  • Use of Kafka log compaction and key-based deduplication
  • Stateful stream processing with Kafka Streams or ksqlDB for maintaining deduplication state
  • Handling syndicated content via canonical URLs or content fingerprinting
  • Trade-offs: latency vs. accuracy, storage vs. cost, false positives vs. false negatives
  • Scalability considerations: partitioning, state store sizing, and distributed processing

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

Q4

Should you generate a user's feed at read time or write time? What are the trade-offs and which would you default to?

System DesignTechnical Trade-offsData Modeling
Author's notes

This is the core design question and I knew it was coming, but I still hedged too much.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the requirements: scale, latency, consistency, and cost. Then compare read-time (fan-out on read) vs write-time (fan-out on write) generation, highlighting trade-offs in latency, storage, and complexity. Conclude with a default choice (e.g., write-time for most social feeds) and mention hybrid approaches for edge cases.

Pro tip: Mention that the choice often depends on the read-to-write ratio and the cost of fan-out; for Confluent, emphasize how Kafka can be used to decouple and handle both patterns efficiently.

1. Clarify Requirements

Ask about scale (users, follows), latency SLAs, consistency needs, and cost constraints. This sets the context for the trade-off analysis.

2. Explain Read-Time Generation

Describe how feed is built on demand by querying followed users' posts. Highlight pros: simplicity, storage efficiency, real-time updates. Cons: high latency, heavy read load, complex queries.

3. Explain Write-Time Generation

Describe precomputing feeds when a post is written (fan-out on write). Pros: low read latency, simple reads. Cons: high write amplification, storage cost, handling celebrities/inactive users.

4. Compare Trade-offs

Contrast latency, storage, write/read load, consistency, and complexity. Mention that write-time is better for read-heavy systems, read-time for write-heavy or low-scale.

5. State Default and Hybrid Approach

Default to write-time for typical social feeds (e.g., Twitter) due to read dominance. Suggest hybrid: write-time for most users, read-time for celebrities or inactive users.

Key Points to Mention

  • Fan-out on read vs fan-out on write
  • Read-to-write ratio and its impact on choice
  • Latency requirements for feed generation
  • Storage and write amplification costs
  • Handling celebrities/high-degree nodes (hybrid approach)
  • Use of Kafka or similar for decoupling and scalability

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

Q5

How would you implement cursor-based pagination on the feed endpoint, and why not just use OFFSET?

API & IntegrationsSystem DesignTechnical Trade-offs
Author's notes

Easy one to explain but I'd actually messed this up in a previous interview so I was ready.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by explaining the limitations of OFFSET pagination (performance degradation, inconsistency with concurrent writes) and then describe cursor-based pagination using a stable, unique key like a timestamp or ID. Outline the implementation steps: choosing a cursor, encoding it, querying with a WHERE clause, and returning the next cursor. Emphasize the benefits for real-time feeds and scalability.

Pro tip: Mention that cursors should be opaque to clients and include a tiebreaker (e.g., ID) when using timestamps to avoid duplicates or missed items. Also, discuss how to handle deletions or updates to items in the feed.

1. Explain OFFSET limitations

Discuss how OFFSET requires scanning and discarding rows, leading to slower queries as offset grows, and how concurrent inserts/deletes can cause skipped or duplicated items.

2. Introduce cursor-based pagination

Define a cursor as a pointer to a specific item in the feed, typically based on a unique, sequential field like created_at or id. Explain that it avoids scanning and provides stable pagination.

3. Design the cursor

Choose a field that is unique and sortable (e.g., timestamp + id). Encode it into an opaque string (e.g., base64) to prevent clients from manipulating it and to allow future changes.

4. Implement the query

Use a WHERE clause to fetch items after the cursor (e.g., WHERE created_at < cursor_time OR (created_at = cursor_time AND id < cursor_id) ORDER BY created_at DESC, id DESC LIMIT n). Return the next cursor based on the last item.

5. Handle edge cases and trade-offs

Discuss handling deletions, updates, and ensuring consistency. Mention that cursors are not random-access, so you can't jump to a page, but that's acceptable for feeds.

Key Points to Mention

  • Performance: OFFSET becomes slower as offset increases due to full table scans; cursor-based uses an index and is O(1) per page.
  • Consistency: OFFSET can skip or duplicate items when new items are inserted; cursor-based provides a stable snapshot.
  • Cursor design: Use a unique, sequential field (e.g., timestamp + ID) and encode it opaquely (e.g., base64).
  • Query pattern: Use WHERE with comparison operators and ORDER BY to fetch the next page efficiently.
  • Scalability: Cursor-based pagination works well with large datasets and real-time feeds, common in systems like Confluent's.
  • Trade-offs: Cursors don't support random access (e.g., jumping to page 5), but that's usually not needed for feeds.

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

Q6

A source suddenly gets millions of new subscribers and publishes a burst of articles. How does your fanout-on-write path handle that without falling over?

System DesignTechnical Trade-offsAdaptability & Ambiguity
Author's notes

Treat it as a celebrity source, skip the write fanout, serve those articles at read time from a cached source feed.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the fanout-on-write architecture and the specific bottlenecks (e.g., database writes, queue throughput, downstream services). Then propose a multi-layered strategy: backpressure, batching, and horizontal scaling, while discussing trade-offs between consistency and availability. Finally, emphasize monitoring and adaptive throttling to handle bursts gracefully.

Pro tip: Show you understand that fanout-on-write is inherently write-heavy; propose a hybrid approach where you selectively switch to fanout-on-read for high-fanout users to reduce write amplification. This demonstrates deep system design maturity and awareness of trade-offs.

1. Clarify the architecture and constraints

Ask questions to understand the current fanout-on-write implementation, expected scale, and SLAs. Identify critical components like databases, message queues, and downstream services that could become bottlenecks.

2. Identify failure points and bottlenecks

Analyze where the system is likely to fail under sudden load: write contention, queue backlog, database connection limits, or downstream service overload. Prioritize based on impact.

3. Propose mitigation strategies

Outline techniques such as batching writes, using asynchronous processing with backpressure, horizontal scaling of consumers, and rate limiting. Consider trade-offs like increased latency vs. durability.

4. Discuss adaptive and hybrid approaches

Suggest dynamic switching between fanout-on-write and fanout-on-read based on load, or using a tiered approach for different user segments. Explain how this reduces write amplification during bursts.

5. Emphasize monitoring and graceful degradation

Describe how to monitor key metrics (e.g., queue depth, write latency) and implement circuit breakers or load shedding to prevent cascading failures. Highlight the importance of post-mortem and iterative improvements.

Key Points to Mention

  • Backpressure mechanisms to slow down producers when consumers are overwhelmed
  • Batching and compression to reduce the number of writes and network overhead
  • Horizontal scaling of fanout workers and database sharding
  • Trade-offs between consistency, availability, and latency (CAP theorem)
  • Hybrid fanout models (write vs. read) for different user tiers
  • Monitoring, alerting, and auto-scaling policies to handle bursts

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

Q7

If a user unsubscribes from a source after their feed was already materialized under fanout-on-write, how do you clean up without a slow synchronous delete?

System DesignData ModelingTechnical Trade-offs
Author's notes

Soft-filter at read time using the subscription table rather than deleting materialized rows immediately.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by acknowledging the trade-off between consistency and latency, then propose an asynchronous cleanup using a tombstone or delete event. Describe a background process that consumes these events and removes the materialized feed entries, ensuring eventual consistency without blocking the unsubscribe operation.

Pro tip: Mention that you would monitor the lag of the cleanup process and have a fallback for read-time filtering to handle cases where cleanup hasn't completed yet, showing you think about edge cases and user experience.

1. Acknowledge the problem

Explain that synchronous deletion is slow and can impact user experience, so an asynchronous approach is needed.

2. Design the event flow

Propose that when a user unsubscribes, the system emits a tombstone or delete event to a queue or log (e.g., Kafka).

3. Implement background cleanup

Describe a consumer service that processes these events and deletes the materialized feed entries in the background.

4. Ensure eventual consistency

Discuss how to handle reads during the cleanup window, such as filtering out unsubscribed sources at read time or using a versioned feed.

5. Monitor and handle failures

Mention monitoring the cleanup lag, retrying failed deletions, and possibly compacting the feed store to remove stale data.

Key Points to Mention

  • Fanout-on-write materialization and its implications
  • Asynchronous processing using a message queue (e.g., Kafka)
  • Tombstone or delete events for cleanup
  • Eventual consistency and read-time filtering
  • Monitoring and alerting on cleanup lag
  • Idempotency and retry mechanisms for deletion

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

Q8

Two different RSS sources syndicate the exact same article. How do you detect that at ingestion and decide which copy to show the user?

System DesignData ModelingTechnical Trade-offs
Author's notes

Hardest follow-up for me.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements: what defines 'same article' (exact content, near-duplicate, same URL)? Then propose a multi-stage pipeline: normalize and fingerprint content at ingestion, use a similarity threshold to detect duplicates, and apply a deterministic tie-breaking policy to select which copy to show. Emphasize trade-offs between precision/recall, latency, and storage cost, and how you'd handle updates or corrections.

Pro tip: Mention that you'd store a canonical ID and provenance metadata (source, timestamp, fetch time) so you can always trace back and potentially switch sources if one becomes unreliable—this shows you think about long-term data governance, not just deduplication.

1. Define duplicate criteria and scope

Clarify what constitutes a duplicate: exact content match, near-duplicate (e.g., minor edits), or same canonical URL. Consider whether to dedupe across all sources or only within a time window.

2. Normalize and fingerprint content

Extract and normalize the article's core content (title, body, author, published date) by stripping HTML, ads, and source-specific boilerplate. Generate a robust fingerprint using hashing (e.g., SHA-256) for exact matches and SimHash/MinHash for near-duplicates.

3. Detect duplicates at ingestion

Compare fingerprints against a store of existing articles using efficient lookup (e.g., hash table for exact, LSH for near-duplicates). If a match exceeds a similarity threshold, flag as duplicate and link to the canonical entry.

4. Decide which copy to show

Apply a deterministic policy: prefer the source with higher authority, earlier publication time, richer content, or better user engagement. Alternatively, show the canonical copy and list other sources as 'also available on'.

5. Handle updates and edge cases

Monitor for updates: if the canonical source changes, re-evaluate. Handle cases where duplicates arrive out of order or with conflicting metadata. Consider allowing manual override or user preference.

Key Points to Mention

  • Content normalization: stripping HTML, ads, and source-specific boilerplate to compare core article content.
  • Fingerprinting techniques: cryptographic hashes for exact duplicates, SimHash/MinHash for near-duplicates, and locality-sensitive hashing (LSH) for scalable similarity search.
  • Trade-offs between precision and recall: setting similarity thresholds, and the cost of false positives vs. false negatives.
  • Tie-breaking policies: source authority, publication timestamp, content completeness, and user engagement metrics.
  • Scalability and performance: indexing strategies, streaming vs. batch processing, and latency requirements at ingestion.
  • Data modeling: storing canonical IDs, provenance metadata, and version history to support auditing and future re-evaluation.

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

Q9

How would you add full-text search over article titles and summaries, and where does that index live?

System DesignTechnical Trade-offsAPI & Integrations
Author's notes

I said keep it out of the primary relational store and push it to a dedicated search layer.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements: data volume, query patterns, latency, and consistency needs. Then propose a dedicated search index (e.g., Elasticsearch) populated via a change data capture pipeline from the primary database, and discuss trade-offs like operational overhead and eventual consistency. Finally, explain how the index is queried and kept in sync.

Pro tip: Emphasize that full-text search is a derived read model, not the source of truth, and that using CDC (e.g., Debezium) to stream changes into the index avoids dual-write inconsistencies. Mention that Confluent's own ecosystem (Kafka + Connect) is a natural fit for this pattern.

1. Clarify Requirements

Ask about scale (number of articles, QPS), latency tolerance, and whether search must be strongly consistent with the primary database. This shapes the choice of technology and sync strategy.

2. Choose a Search Engine

Select a dedicated full-text search engine like Elasticsearch or OpenSearch, which provides inverted indexes, relevance scoring, and text analysis. Avoid using the primary database for full-text search unless scale is tiny.

3. Design the Index Schema

Define fields for title and summary with appropriate analyzers (e.g., standard, language-specific). Consider storing article ID as a keyword for lookups and enabling highlighting.

4. Implement Index Population and Sync

Use a change data capture (CDC) pipeline (e.g., Debezium + Kafka Connect) to stream inserts/updates/deletes from the primary database to the search index. Alternatively, use application-level dual writes with a transactional outbox pattern.

5. Query and Maintain the Index

Expose a search API that queries the index with multi-match queries across title and summary. Handle index updates, reindexing for schema changes, and monitor for lag and failures.

Key Points to Mention

  • Inverted index and relevance scoring (TF-IDF, BM25) as core to full-text search.
  • Eventual consistency between primary DB and search index, and how to handle read-after-write.
  • CDC with Kafka Connect / Debezium as a robust sync mechanism, aligning with Confluent's streaming platform.
  • Operational considerations: index size, sharding, replication, and monitoring.
  • Alternatives like PostgreSQL full-text search (tsvector) for smaller scale, and trade-offs.
  • API design: query parameters, pagination, and result ranking.

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