avatar
报一个电面题目# JobHunting - 待字闺中
c*a
1
说起来惭愧,其实我答得不好,不过还是报一报,简单的话大家别见笑。
就是一个Web Server,接受来自不同IP的访问,如果来自某一个IP的访问量大于某一个
值(比如1000个每分钟)的话就False,小于就是True。输入是IP和timeInSecond。
我开始是想有一个counter叫hit,在每一个新的hit到来的时候就更新一下,但是为了
节省内存,不能存储很多timestamp。我面试的时候是有点紧张,implement得不好。后
来想想可以这样做。记录上一次的timeInSecond,如果本次timeInSecond的差值在一分
钟以内的话,就增加一个hit的计数,如果这个计数大于1000个,就返回False,小于就
True。如果差值超过一分钟的话,就把hit归1。
但是我觉得这样也有漏洞的,因为理想状态下的话,hit也是可以递减的。怎样能让hit
准确记录前一分钟的值,又不占用太多的内存呢?不知道大家有没有更好的办法。
avatar
z*8
2
这题讨论太多了。。。
avatar
c*a
3
诚心问哪个版有讨论
本人没有什么面试经验
avatar
s*c
4
没太看明白,是要设计rate limiter吗

hit

【在 c***a 的大作中提到】
: 说起来惭愧,其实我答得不好,不过还是报一报,简单的话大家别见笑。
: 就是一个Web Server,接受来自不同IP的访问,如果来自某一个IP的访问量大于某一个
: 值(比如1000个每分钟)的话就False,小于就是True。输入是IP和timeInSecond。
: 我开始是想有一个counter叫hit,在每一个新的hit到来的时候就更新一下,但是为了
: 节省内存,不能存储很多timestamp。我面试的时候是有点紧张,implement得不好。后
: 来想想可以这样做。记录上一次的timeInSecond,如果本次timeInSecond的差值在一分
: 钟以内的话,就增加一个hit的计数,如果这个计数大于1000个,就返回False,小于就
: True。如果差值超过一分钟的话,就把hit归1。
: 但是我觉得这样也有漏洞的,因为理想状态下的话,hit也是可以递减的。怎样能让hit
: 准确记录前一分钟的值,又不占用太多的内存呢?不知道大家有没有更好的办法。

avatar
r*y
6
这东西叫rate limiter,在公司里是非常常见的,解决方法很多,你搜搜吧
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。