Design a100-QPS hardware-signal sink with bounded batching and durable acceptance. Explain flush timing, object commit recovery, duplicates, backpressure, and the limits of memory-only buffering.
Persist Hardware Signals through an Asynchronous Sink
Company: Apple
Role: Software Engineer
Category: System Design
Difficulty: medium
Interview Round: Onsite
Design a service that receives hardware signals at about100 requests per second and efficiently persists them to object storage. Discuss asynchronous batching, memory buffering, and durability under failures.
### Clarifying Questions
The reported request rate is100 QPS; payload sizes, burst shape, retention, and acceptable persistence delay are unspecified. Clarify what an acknowledgment guarantees, whether duplicate signals are possible, and whether ordering is needed per device. Do not infer a massive throughput requirement from the service name.
### What a Strong Answer Covers
A durable ingestion boundary, bounded buffers, size/time-based batch flushing, object naming and commit tracking, retry and deduplication behavior, and recovery after a process crash.
### Follow-up Questions
- What is lost if the service acknowledges after writing only to memory?
- How would you handle a low-volume stream that never fills a size-based batch?
Overview: Design a100-QPS hardware-signal sink with bounded batching and durable acceptance. Explain flush timing, object commit recovery, duplicates, backpressure, and the limits of memory-only buffering.
Persist Hardware Signals through an Asynchronous Sink
Apple
Jul 25, 2026
mediumSoftware EngineerOnsiteSystem Design
0
0
Design a service that receives hardware signals at about100 requests per second and efficiently persists them to object storage. Discuss asynchronous batching, memory buffering, and durability under failures.
Clarifying Questions Guidance
The reported request rate is100 QPS; payload sizes, burst shape, retention, and acceptable persistence delay are unspecified. Clarify what an acknowledgment guarantees, whether duplicate signals are possible, and whether ordering is needed per device. Do not infer a massive throughput requirement from the service name.
What a Strong Answer Covers Guidance
A durable ingestion boundary, bounded buffers, size/time-based batch flushing, object naming and commit tracking, retry and deduplication behavior, and recovery after a process crash.
Follow-up Questions Guidance
What is lost if the service acknowledges after writing only to memory?
How would you handle a low-volume stream that never fills a size-based batch?