← Attentive Interview Insights

Attentive·Software Engineer·Technical Phone Screen·Intermediate

Intermediate
Jun 2026

Summary

Attentive software engineer interview with a system design question centered on building a notification/broadcast system. The problem had a few moving parts and required thinking through scheduling, dedup, and state management on the fly.

Questions Asked (1)

Q1

Design a notification system that sends broadcast messages to company subscribers based on scheduled times. You're given a company-to-subscriber mapping and a list of broadcast logs with scheduling and delivery status info. Implement logic for two modes: one that takes a single current time and sends all overdue unprocessed broadcasts, and one that takes a time window and sends broadcasts scheduled within that range. Also explain how you'd prevent duplicate sends and track delivery state.

System DesignAPI & IntegrationsTechnical Trade-offs
Author's notes

The core question isn't hard to grasp but the details pile up fast.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the data model and requirements, then design a modular system with a scheduler, delivery service, and state store. Explain how each mode works, focusing on idempotency and status tracking to prevent duplicates. Conclude with trade-offs and scalability considerations.

Pro tip: Emphasize idempotency and exactly-once delivery semantics; use a unique broadcast ID and a transactional state store to ensure reliability. Mention how you'd handle failures and retries without duplicating messages.

1. Clarify Requirements and Data Model

Ask about scale, delivery guarantees, and failure handling. Define the company-subscriber mapping and broadcast log schema, including fields like broadcast ID, scheduled time, status, and delivery attempts.

2. Design Core Components

Outline a scheduler that triggers based on time, a delivery service that sends messages, and a state store (e.g., database) to track broadcast status. Explain how the two modes interact with these components.

3. Implement Mode 1: Single Current Time

Describe an algorithm that queries for broadcasts with scheduled time <= current time and status 'pending', then processes them. Use a transaction or lock to mark as 'processing' before sending to avoid duplicates.

4. Implement Mode 2: Time Window

Similar to Mode 1, but query for broadcasts with scheduled time within the given window. Ensure that only unprocessed broadcasts are selected, and handle overlapping windows carefully.

5. Address Duplicate Prevention and Delivery Tracking

Use idempotent operations: assign a unique ID per broadcast, update status atomically, and use a delivery log. Discuss retries with exponential backoff and dead-letter queues for failures.

Key Points to Mention

  • Idempotency: Use unique broadcast IDs and atomic status updates to prevent duplicate sends.
  • State management: Track status (pending, processing, sent, failed) in a persistent store with timestamps.
  • Concurrency: Use locks or optimistic concurrency control to handle multiple workers.
  • Scalability: Partition by company or time, use queues for asynchronous processing.
  • Failure handling: Implement retries with backoff, and monitor for stuck 'processing' states.
  • Trade-offs: Discuss consistency vs. availability, and batch vs. real-time processing.

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