报一个电面题目# 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
准确记录前一分钟的值,又不占用太多的内存呢?不知道大家有没有更好的办法。
就是一个Web Server,接受来自不同IP的访问,如果来自某一个IP的访问量大于某一个
值(比如1000个每分钟)的话就False,小于就是True。输入是IP和timeInSecond。
我开始是想有一个counter叫hit,在每一个新的hit到来的时候就更新一下,但是为了
节省内存,不能存储很多timestamp。我面试的时候是有点紧张,implement得不好。后
来想想可以这样做。记录上一次的timeInSecond,如果本次timeInSecond的差值在一分
钟以内的话,就增加一个hit的计数,如果这个计数大于1000个,就返回False,小于就
True。如果差值超过一分钟的话,就把hit归1。
但是我觉得这样也有漏洞的,因为理想状态下的话,hit也是可以递减的。怎样能让hit
准确记录前一分钟的值,又不占用太多的内存呢?不知道大家有没有更好的办法。