0
0
Rest APIprogramming~20 mins

Fixed window algorithm in Rest API - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Fixed Window Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of Fixed Window Rate Limiter Check
Consider a fixed window rate limiter that allows 3 requests per 10 seconds. Given the following sequence of request timestamps (in seconds): [1, 2, 3, 11, 12]. What is the output of the rate limiter for each request (True means allowed, False means blocked)?
Rest API
class FixedWindowLimiter:
    def __init__(self, limit, window_size):
        self.limit = limit
        self.window_size = window_size
        self.windows = {}

    def allow_request(self, timestamp):
        window = timestamp // self.window_size
        count = self.windows.get(window, 0)
        if count < self.limit:
            self.windows[window] = count + 1
            return True
        else:
            return False

limiter = FixedWindowLimiter(3, 10)
requests = [1, 2, 3, 11, 12]
results = [limiter.allow_request(t) for t in requests]
print(results)
A[True, True, True, False, False]
B[True, True, True, False, True]
C[True, True, True, True, False]
D[True, True, True, True, True]
Attempts:
2 left
💡 Hint
Remember that the fixed window resets counts every window_size seconds.
🧠 Conceptual
intermediate
1:30remaining
Understanding Fixed Window Algorithm Behavior
Which statement best describes a limitation of the fixed window rate limiting algorithm?
AIt uses a sliding window to smooth out request rates.
BIt can cause bursts of requests at window boundaries, allowing more requests than the limit in a short time.
CIt evenly distributes requests over time to prevent any bursts.
DIt tracks each request individually to prevent any overuse.
Attempts:
2 left
💡 Hint
Think about what happens when one window ends and the next begins.
🔧 Debug
advanced
2:00remaining
Identify the Bug in Fixed Window Implementation
What error will the following fixed window rate limiter code produce when calling allow_request(5) twice?
Rest API
class FixedWindowLimiter:
    def __init__(self, limit, window_size):
        self.limit = limit
        self.window_size = window_size
        self.windows = {}

    def allow_request(self, timestamp):
        window = timestamp // self.window_size
        if self.windows[window] < self.limit:
            self.windows[window] += 1
            return True
        else:
            return False

limiter = FixedWindowLimiter(1, 10)
print(limiter.allow_request(5))
print(limiter.allow_request(5))
AKeyError
BTypeError
CFalse, True
DTrue, False
Attempts:
2 left
💡 Hint
Check what happens when accessing a dictionary key that might not exist.
📝 Syntax
advanced
1:30remaining
Syntax Error in Fixed Window Code
Which option contains the correct syntax to increment the count for the current window in a fixed window rate limiter?
Rest API
window = timestamp // window_size
# increment count for window
Awindows[window] = windows[window] + 1 or 1
Bwindows[window] += 1 if window in windows else 1
Cwindows[window] = windows.get(window, 0) + 1
Dwindows[window] = windows[window] ? windows[window] + 1 : 1
Attempts:
2 left
💡 Hint
Use dictionary get method to provide a default value.
🚀 Application
expert
2:30remaining
Calculate Number of Allowed Requests in Fixed Window
A fixed window rate limiter allows 5 requests per 15 seconds. Given the request timestamps (in seconds): [2, 5, 7, 14, 15, 16, 29, 30], how many requests will be allowed in total?
A8
B6
C5
D7
Attempts:
2 left
💡 Hint
Group requests by their window and count up to the limit per window.