Bird
Raised Fist0
Rest APIprogramming~5 mins

Fixed window algorithm in Rest API - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is the Fixed Window Algorithm in rate limiting?
It is a method to limit the number of requests a user can make in a fixed time period, like allowing 100 requests per minute. If the limit is reached, further requests are blocked until the next time window starts.
Click to reveal answer
beginner
How does the Fixed Window Algorithm count requests?
It counts all requests within the current fixed time window, for example, from 12:00:00 to 12:00:59. When the window ends, the count resets to zero for the next window.
Click to reveal answer
intermediate
What is a downside of the Fixed Window Algorithm?
It can cause bursts of traffic at the edges of windows. For example, a user can send the maximum allowed requests at the end of one window and again at the start of the next, effectively doubling the allowed rate temporarily.
Click to reveal answer
beginner
In the Fixed Window Algorithm, what happens when the request count exceeds the limit?
The system rejects or delays further requests until the current time window ends and the count resets.
Click to reveal answer
beginner
Why is the Fixed Window Algorithm easy to implement?
Because it only needs to track the count of requests in a simple fixed time window, without complex calculations or storing timestamps for each request.
Click to reveal answer
What does the Fixed Window Algorithm use to limit requests?
AA fixed time period to count requests
BA sliding time window
CRandom request sampling
DUser IP address only
What happens when the request count reaches the limit in a fixed window?
ARequests are always allowed
BRequests are blocked until the window resets
CRequests are queued indefinitely
DThe limit increases automatically
What is a common problem with the Fixed Window Algorithm?
AIt allows bursts of requests at window edges
BIt requires complex calculations
CIt never resets the count
DIt blocks all requests
Which of these is NOT true about the Fixed Window Algorithm?
AIt limits requests per fixed time period
BIt resets the count after each time window
CIt is simple to implement
DIt tracks requests individually with timestamps
Why might someone choose the Fixed Window Algorithm?
ABecause it perfectly smooths request rates
BBecause it never blocks requests
CBecause it is easy and fast to implement
DBecause it tracks each request's exact time
Explain how the Fixed Window Algorithm controls the number of API requests.
Think about counting requests in a set time and what happens when the limit is reached.
You got /4 concepts.
    Describe one advantage and one disadvantage of the Fixed Window Algorithm.
    Consider simplicity and how traffic might spike.
    You got /2 concepts.

      Practice

      (1/5)
      1.

      What is the main idea behind the Fixed window algorithm in rate limiting?

      easy
      A. Count requests in fixed time intervals and block if limit exceeded
      B. Allow unlimited requests without any restrictions
      C. Count requests over a sliding time window for smooth limiting
      D. Block all requests after the first one

      Solution

      1. Step 1: Understand fixed window concept

        The fixed window algorithm divides time into fixed intervals (windows) and counts requests in each interval.
      2. Step 2: Identify how blocking works

        If the number of requests in the current window exceeds the limit, further requests are blocked until the next window.
      3. Final Answer:

        Count requests in fixed time intervals and block if limit exceeded -> Option A
      4. Quick Check:

        Fixed window = count + block in fixed intervals [OK]
      Hint: Fixed window counts requests per fixed time block [OK]
      Common Mistakes:
      • Confusing fixed window with sliding window algorithm
      • Thinking it allows unlimited requests
      • Assuming it blocks all requests immediately
      2.

      Which of the following is the correct way to check the current window start time in a fixed window algorithm using Python?

      import time
      window_size = 60  # seconds
      current_time = int(time.time())
      window_start = ?
      easy
      A. current_time - (current_time % window_size)
      B. current_time % window_size
      C. current_time + window_size
      D. window_size - current_time

      Solution

      1. Step 1: Calculate window start using modulo

        The window start is the current time minus the remainder when divided by window size, to align to window boundary.
      2. Step 2: Apply formula

        Using current_time - (current_time % window_size) gives the start of the current fixed window.
      3. Final Answer:

        current_time - (current_time % window_size) -> Option A
      4. Quick Check:

        Window start = current_time - remainder [OK]
      Hint: Use modulo to find window start time [OK]
      Common Mistakes:
      • Using modulo alone without subtraction
      • Adding window size instead of subtracting remainder
      • Confusing window start with window end
      3.

      Given the following Python code snippet implementing a fixed window rate limiter, what will be the output?

      requests = [1, 1, 1, 1, 1]
      limit = 3
      window_start = 0
      count = 0
      for req in requests:
          if count < limit:
              count += req
              print("Allowed")
          else:
              print("Blocked")
      medium
      A. Allowed Allowed Allowed Allowed Allowed
      B. Blocked Blocked Blocked Blocked Blocked
      C. Allowed Allowed Allowed Blocked Blocked
      D. Allowed Allowed Blocked Allowed Blocked

      Solution

      1. Step 1: Trace request counts

        Count starts at 0. For each request (value 1), count increases until it reaches limit 3.
      2. Step 2: Determine allowed or blocked

        First 3 requests increase count to 3 and print "Allowed". Next requests exceed limit, so print "Blocked".
      3. Final Answer:

        Allowed Allowed Allowed Blocked Blocked -> Option C
      4. Quick Check:

        Count ≤ 3 allowed, else blocked [OK]
      Hint: Count requests and block after limit reached [OK]
      Common Mistakes:
      • Assuming all requests allowed
      • Resetting count incorrectly
      • Confusing count comparison operator
      4.

      Identify the bug in this fixed window rate limiter code snippet and select the fix:

      limit = 5
      window_size = 60
      count = 0
      window_start = int(time.time())
      
      if int(time.time()) - window_start > window_size:
          count = 0
      
      count += 1
      if count > limit:
          print("Blocked")
      else:
          print("Allowed")
      medium
      A. Increase limit to 10
      B. Change count += 1 to count = 1
      C. Remove the if condition checking time difference
      D. Move window_start update inside the if block to reset window

      Solution

      1. Step 1: Identify window reset logic

        The code resets count when window expires but does not update window_start, so window never moves forward.
      2. Step 2: Fix by updating window start time

        Inside the if block, update window_start = int(time.time()) to start a new window correctly.
      3. Final Answer:

        Move window_start update inside the if block to reset window -> Option D
      4. Quick Check:

        Reset count and window start together [OK]
      Hint: Update window start when resetting count [OK]
      Common Mistakes:
      • Not updating window start time
      • Resetting count incorrectly
      • Ignoring time difference condition
      5.

      You want to implement a fixed window rate limiter that allows 10 requests per minute per user. Which approach correctly handles multiple users without mixing counts?

      hard
      A. Store counts in a list without user identification
      B. Use a dictionary with user IDs as keys and counts as values, reset counts per user each window
      C. Use a single global count for all users and reset every minute
      D. Allow unlimited requests for all users

      Solution

      1. Step 1: Understand per-user counting

        Each user must have a separate count to avoid mixing requests between users.
      2. Step 2: Use dictionary keyed by user ID

        A dictionary with user IDs as keys and counts as values allows tracking each user's requests independently and resetting counts per window.
      3. Final Answer:

        Use a dictionary with user IDs as keys and counts as values, reset counts per user each window -> Option B
      4. Quick Check:

        Separate counts per user = dictionary keyed by user [OK]
      Hint: Track counts per user with dictionary keys [OK]
      Common Mistakes:
      • Using a single global count for all users
      • Not resetting counts per user
      • Ignoring user identification in counting