← Confluent Interview Insights

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

Senior
May 2026

Summary

System design round at Confluent for a software engineer role. The whole thing was basically one giant question about building a disposable email service from scratch, and they wanted you to go pretty deep on almost every layer of the stack.

Questions Asked (3)

Q1

Design a disposable email service that issues auto-expiring addresses (like 10-minute inboxes) and can receive real messages. Walk through requirements, APIs, address generation with TTL semantics, SMTP ingress, spam controls, storage, retrieval, rate limiting, privacy, compliance, cleanup, observability, and capacity planning.

System DesignTechnical Trade-offsAPI & Integrations
Author's notes

This was basically the entire interview compressed into one prompt.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale, then design the system in layers: address generation with TTL, SMTP ingress, storage, retrieval, and cleanup. Emphasize trade-offs around spam, privacy, and capacity, and tie choices to Confluent's event-streaming strengths where relevant.

Pro tip: Treat disposable inboxes as a stream of events: use Kafka for ingestion, spam scoring, and cleanup triggers to decouple components and handle bursts gracefully. Explicitly call out abuse prevention and compliance early, since interviewers at infrastructure companies expect you to think about operational and legal risks, not just happy-path functionality.

1. Clarify requirements and scale

Ask about expected traffic (emails/day, concurrent inboxes), retention guarantees, supported protocols (SMTP only or also APIs), and privacy/compliance constraints. Define functional requirements (create inbox, receive mail, retrieve messages, auto-expire) and non-functional requirements (latency, durability, abuse resistance).

2. Design address generation and TTL semantics

Propose a scheme for generating unique, unguessable addresses (e.g., random tokens or UUIDs) with embedded or server-side TTL metadata. Explain how TTL is enforced: lazy deletion on access vs. scheduled cleanup, and how to handle extensions or early deletion.

3. Architect SMTP ingress and spam controls

Outline an SMTP server (e.g., Postfix or custom) that accepts mail for the disposable domain, validates recipients against active inboxes, and applies spam filtering (content checks, rate limits, DNSBLs). Consider using a message queue (Kafka) to buffer and process inbound mail asynchronously.

4. Define storage, retrieval, and cleanup

Choose a storage layer (e.g., object store for raw messages, database for metadata) with TTL support. Design APIs for listing and fetching messages, and implement cleanup via TTL indexes, scheduled jobs, or stream processing to purge expired data.

5. Address rate limiting, privacy, compliance, and observability

Describe rate limiting per IP/inbox to prevent abuse, privacy measures (encryption, no logging of message content), and compliance (GDPR, CAN-SPAM). Include observability: metrics on inbox creation, delivery rates, spam scores, and cleanup lag, plus alerting.

Key Points to Mention

  • TTL enforcement strategies: lazy deletion vs. background sweeper, and trade-offs in latency and resource usage.
  • SMTP ingress architecture: using a dedicated SMTP server, validating recipients, and buffering with a message queue for scalability.
  • Spam and abuse controls: rate limiting per IP/inbox, content filtering, DNSBLs, and CAPTCHA for inbox creation.
  • Storage design: separating metadata (fast lookup) from message content (object store), with TTL indexes for automatic cleanup.
  • Privacy and compliance: encrypting messages at rest, minimizing PII retention, and adhering to regulations like GDPR.
  • Capacity planning: estimating storage needs based on message size and retention, and scaling horizontally with stateless services and partitioned queues.

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

Q2

How would you design the storage schema for this service, including per-message TTL, indexing strategy, and how you'd handle cleanup of expired data at scale?

Data ModelingSystem Design
Author's notes

I went with a TTL column on messages and a background sweeper job, which is fine but pretty vanilla.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the service's requirements (message volume, retention needs, read/write patterns) and then propose a storage schema that balances performance, cost, and scalability. Discuss per-message TTL implementation, indexing for efficient queries, and cleanup strategies like lazy deletion and background compaction, emphasizing trade-offs.

Pro tip: Tie your answer to Confluent's core technology: mention how Kafka's log compaction and tiered storage can inspire or directly support TTL and cleanup, showing you understand their ecosystem.

1. Clarify Requirements and Constraints

Ask about message volume, retention period, read/write patterns, and consistency needs to tailor the design. This ensures your solution addresses the actual problem.

2. Design the Storage Schema

Propose a schema that includes a timestamp or expiration field per message, and consider partitioning by time or key for efficient TTL and queries. Discuss using a wide-column store or Kafka topics with time-based segments.

3. Implement Per-Message TTL

Explain how to enforce TTL: either via database-native TTL (e.g., Cassandra TTL, Redis EXPIRE) or by storing an expiration timestamp and filtering on read. Mention trade-offs like precision vs. overhead.

4. Define Indexing Strategy

Outline indexes needed for common queries (e.g., by message ID, timestamp, or key). Consider composite indexes, secondary indexes, and the impact on write performance and storage.

5. Handle Cleanup at Scale

Describe cleanup mechanisms: lazy deletion on read, background jobs (e.g., compaction, vacuuming), and partitioning by time to drop old data efficiently. Discuss how to avoid hotspots and ensure scalability.

Key Points to Mention

  • Time-based partitioning or sharding to simplify TTL and cleanup
  • Use of database-native TTL features (e.g., Cassandra, Redis) vs. application-level expiration
  • Indexing trade-offs: write amplification, storage overhead, and query performance
  • Lazy deletion vs. proactive cleanup, and how to handle tombstones
  • Compaction strategies (e.g., Kafka log compaction, LSM-tree compaction) for space reclamation
  • Monitoring and metrics for expired data cleanup to ensure SLAs

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

Q3

What consistency and availability tradeoffs would you make for this system, and how would you scale it to handle millions of inboxes per day while keeping costs under control?

Technical Trade-offsSystem Design
Author's notes

Went eventual consistency pretty quickly since losing a spam email to a race condition is not exactly a crisis.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the system's requirements and constraints, then discuss the CAP theorem tradeoffs and how they apply to this specific system. Propose a scalable architecture that handles millions of inboxes per day, emphasizing cost-efficiency through techniques like partitioning, replication, and tiered storage.

Pro tip: Demonstrate awareness of Confluent's core product (Kafka) by mentioning how Kafka's log-based storage and replication can be leveraged for durability and scalability, and discuss how to tune configurations for cost-performance balance.

1. Clarify Requirements and Constraints

Ask about the system's expected read/write patterns, latency requirements, and budget constraints to tailor your tradeoff decisions.

2. Discuss Consistency vs. Availability Tradeoffs

Explain that for an inbox system, availability and partition tolerance are often prioritized, but consistency can be tuned per operation (e.g., strong consistency for message delivery, eventual consistency for read receipts).

3. Design for Scalability

Propose a horizontally scalable architecture using partitioning (e.g., by user ID) and replication for fault tolerance, ensuring the system can handle millions of inboxes per day.

4. Optimize for Cost

Suggest cost-saving measures such as tiered storage (hot vs. cold data), compression, and efficient resource utilization through auto-scaling and spot instances.

5. Summarize and Validate

Recap the key decisions and explain how they meet the requirements, inviting feedback or further discussion.

Key Points to Mention

  • CAP theorem and its practical implications for distributed systems
  • Partitioning strategies (e.g., by user ID) to distribute load and enable horizontal scaling
  • Replication and fault tolerance to ensure high availability
  • Use of Kafka for durable, scalable message storage and processing
  • Tiered storage and data lifecycle policies to reduce costs
  • Monitoring and auto-scaling to maintain performance while controlling expenses

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