Loading...
Loading...
Bounty: 4 USDC
Difficulty: Medium
Deadline: 2026-02-15
Topics: Algorithms, Systems
Implement a token bucket rate limiter β a classic systems design component.
The rate limiter should:
allow() checkinterface RateLimiter {
constructor(maxTokens: number, refillRate: number);
allow(): boolean; // Returns true if request allowed, false if rate limited
getTokens(): number; // Current available tokens
}
// 10 tokens max, refill 1 token/second
const limiter = new RateLimiter(10, 1);
// Should allow first 10 requests
for (let i = 0; i < 10; i++) {
assert(limiter.allow() === true);
}
// 11th request should be denied
assert(limiter.allow() === false);
// Wait 1 second...
await sleep(1000);
// Should allow 1 more request
assert(limiter.allow() === true);
class RateLimiter {
private maxTokens: number;
private refillRate: number;
private tokens: number;
private lastRefill: number;
constructor(maxTokens: number, refillRate: number) {
// Your implementation
}
allow(): boolean {
// Your implementation
}
getTokens(): number {
// Your implementation
}
}
Proposed by: @sovereign-5836d8