← Optiver Interview Insights

Optiver·Software Engineer·Technical Phone Screen·Intermediate

Intermediate
Jun 2026

Summary

Interviewed for a software engineering role at Optiver and got hit with a pretty involved system design/coding problem about building a news delivery engine from scratch. The problem had a lot of moving parts and the efficiency constraint at the end is where things got interesting.

Questions Asked (1)

Q1

Design and implement a news publishing delivery system that supports adding and removing subscriptions, ingesting news items, and running publish cycles that deliver eligible news to subscribers based on their topic interests and per-cycle delivery limits.

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

This one took me a while to fully internalize.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and constraints, then outline a high-level architecture with core components (subscription manager, news ingester, publisher). Dive into data structures and algorithms for efficient matching and delivery, and discuss trade-offs around consistency, scalability, and latency.

Pro tip: Emphasize idempotency and failure recovery in publish cycles, as real-world systems must handle partial failures and retries without duplicate deliveries. Also, proactively discuss how you would test and monitor the system to ensure reliability.

1. Clarify Requirements and Constraints

Ask questions to understand scale (number of subscribers, news volume), delivery guarantees (at-least-once, exactly-once), latency expectations, and consistency needs. Confirm functional requirements: add/remove subscriptions, ingest news, publish cycles with per-cycle limits.

2. Design Core Components and Data Model

Define entities: Subscriber, Subscription (topic, limit), NewsItem (topics, content). Choose data stores: e.g., a relational DB for subscriptions and a document store or queue for news. Outline services: SubscriptionService, NewsIngestionService, PublisherService.

3. Design Publish Cycle Algorithm

For each cycle, fetch eligible news (matching subscriber topics, not yet delivered, within per-cycle limit). Use efficient indexing (e.g., inverted index on topics) to find matching subscribers. Implement delivery with idempotency keys and track delivery status.

4. Address Scalability and Reliability

Discuss partitioning (e.g., by subscriber or topic), caching, and asynchronous processing. Handle failures with retries, dead-letter queues, and idempotent operations. Consider rate limiting and backpressure.

5. Discuss Trade-offs and Extensions

Compare SQL vs NoSQL, push vs pull delivery, batch vs real-time. Mention monitoring, metrics, and potential optimizations like precomputed digests or machine learning for relevance.

Key Points to Mention

  • Idempotency and exactly-once delivery semantics to avoid duplicate news delivery.
  • Efficient topic matching using inverted indexes or pub/sub patterns.
  • Per-cycle delivery limits and how to enforce them (e.g., counters, quotas).
  • Scalability via partitioning, sharding, and asynchronous processing.
  • Failure handling: retries, dead-letter queues, and transactional outbox pattern.
  • Monitoring and observability: metrics, logging, and alerting for delivery success rates.

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