面试官问“设计一个敲击计数器”,90%的人写得出来,却想不明白它背后的系统设计哲学作者:Echo_Wish前几天看到一个经典算法题:Design Hit Counter(敲击计数器)题目很简单:设计一个系统。支持两个操作:hit(timestamp)表示当前时刻收到一次访问。getHits(timestamp)返回最近5分钟内收到多少次访问。很多人一看:“这不就是计数器吗?”结果真正开始写代码的时候发现:事情远没有想象中简单。因为这道题考察的从来不是计数。而是:如何在有限资源下维护一个不断流动的时间窗口。如果你认真研究过日志系统、监控系统、Prometheus、Kafka Metrics、流计算窗口统计,你会发现:Design Hit Counter本质上就是时间窗口统计的缩小版。今天咱们就从算法、工程和架构三个角度聊聊这道经典题。一个计数器为什么会成为经典面试题?
面试官问“设计一个敲击计数器”,90%的人写得出来,却想不明白它背后的系统设计哲学
面试官问“设计一个敲击计数器”,90%的人写得出来,却想不明白它背后的系统设计哲学作者:Echo_Wish前几天看到一个经典算法题:Design Hit Counter(敲击计数器)题目很简单:设计一个系统。支持两个操作:hit(timestamp)表示当前时刻收到一次访问。getHits(timestamp)返回最近5分钟内收到多少次访问。很多人一看:“这不就是计数器吗?”结果真正开始写代码的时候发现:事情远没有想象中简单。因为这道题考察的从来不是计数。而是:如何在有限资源下维护一个不断流动的时间窗口。如果你认真研究过日志系统、监控系统、Prometheus、Kafka Metrics、流计算窗口统计,你会发现:Design Hit Counter本质上就是时间窗口统计的缩小版。今天咱们就从算法、工程和架构三个角度聊聊这道经典题。一个计数器为什么会成为经典面试题?