Interview questions
Implement a multi-button click detector
This question evaluates competency in real-time event stream processing, per-button state management, and timing-based classification of input events such as distinguishing single versus long presses.
Implement a click detector for multiple physical buttons.
You receive button state updates as a stream. Each update provides:
button_id(integer)statewhere1 = pressed,0 = released- (initially) updates arrive every 10 ms per button (you may assume updates are ordered in time).
A “click” is a press followed by a release. Classify each completed click as:
- Single Click: press duration ≤ 200 ms
- Long Click: press duration ≥ 500 ms
For each detected click, output something like:
Button 1: Single ClickButton 2: Long Click
Requirements / edge cases:
- Support multiple buttons concurrently.
- Handle back-to-back clicks on the same button (press/release cycles repeated over time).
- Handle no click (e.g., no transitions) without producing output.
- Clarify/handle what to do for press durations in the (200 ms, 500 ms) gap.
Follow-up:
If state updates do not arrive every 10 ms (variable intervals), how would you modify the implementation? Assume you can obtain timestamps (e.g., via a system call like now_ms()) for each update.
Community answers
Nothing here yet.
Join in on CSWork →