Skip to main content

Any software role

Coding problem: Sliding-Window Rate Limiter. An API lets each client make at most `limit` accepted requests in any window of `window_ms` milliseconds. You get the incoming `requests` as `[client_id, timestamp_ms]` pairs in time order. Decide, in order, whether each request is accepted, and return a list of booleans.

TechnicalMid levelTests: Problem solving
Drill this questionCreate a free account to answer out loud with Ava and get feedback.

What the interviewer is looking for

  • What a strong solution looks like: per client, a queue (deque) of accepted timestamps; for each request drop timestamps <= t - window_ms from the front, accept if fewer than limit remain, and only then push t. O(n) amortised time, O(clients × limit) space.
  • Think aloud. Interviewers are judging how you reason, not only the final code.
  • Be ready for: Memory is O(limit) per client — how do a sliding-window counter or a token bucket approximate this in O(1)? How do you enforce it across many API servers (Redis sorted sets or INCR with expiry, atomicity via Lua, clock skew)? What should a rejected response include so clients back off (429, Retry-After)?

A structure to follow: Clarify, plan, code, test, analyse

  1. Step 1

    Clarify

    Restate the problem, ask about empty input, duplicates and size limits, and agree on one example.

  2. Step 2

    Plan

    Say the simple approach first and its cost, then the better one. Explain why before you type.

  3. Step 3

    Code

    Write small named steps and talk through each. A clear solution beats a clever one.

  4. Step 4

    Test

    Walk your own example through the code, then an edge case. Fix what you find calmly.

  5. Step 5

    Analyse

    State time and space cost in plain words and say what you would change for much larger input.

This is guidance on shape, not a script. Use your own real experience and facts; never invent details to fill a gap. See the STAR guide and answer frameworks.

Common slips

  • Starting to code before agreeing what the answer must be.
  • Going silent when stuck instead of saying what you are trying.
  • Never running your own example through the code.

How to practise it

Solve it once in the editor without hints, then explain your solution aloud in under two minutes.

Browse all questions

Coding problem: Sliding-Window Rate Limiter. An API lets each client make at most `limi... | How to answer