Waymo OA 面试真题解析:RateLimiter 限流器设计

13次阅读
没有评论

Implement a class, RateLimiter, which wraps a given function, allowing it to be called no more than once every n milliseconds.

TODO: Implement this class.

class RateLimiter:
    """Rate limiter class which will only allow the wrapped function to be called with specified frequency."""

    def __init__(self, fn, millis_between_calls):
        self.fn = fn
        self.millis_between_calls = millis_between_calls

    def run_rate_limited(self):
        # TODO: Implement this.
        pass

Sample Usage:

rate_limited = RateLimiter(tracked_function, 1000)
rate_limited.run_rate_limited()

这道题要求实现一个限流器 RateLimiter,用来包装任意函数,并保证它在两次调用之间至少间隔指定的毫秒数。核心思路是记录上一次真正执行函数的时间戳,每次调用时先比较当前时间与上次执行时间的差值:如果已经超过阈值,就立即调用被包装函数并更新记录;否则需要等待剩余时间后再执行。常见实现会结合时间戳和 sleep 控制节流,考察的是对时间管理、类封装以及函数包装的理解。

正文完
 0