j*h 发帖数: 3 | 1 攒人品。
实现一个控制调用某第三方API次数的控制器。对于接收到的调用请求,一秒钟内只能
响应N次, 超过N次,就忽略。 |
l******y 发帖数: 140 | |
b**********5 发帖数: 7881 | 3 google guava rate limiter..
【在 j*h 的大作中提到】 : 攒人品。 : 实现一个控制调用某第三方API次数的控制器。对于接收到的调用请求,一秒钟内只能 : 响应N次, 超过N次,就忽略。
|
b**********5 发帖数: 7881 | 4 你们这些人, 面经从来是发了点问题, 从来没答案。。。
【在 j*h 的大作中提到】 : 攒人品。 : 实现一个控制调用某第三方API次数的控制器。对于接收到的调用请求,一秒钟内只能 : 响应N次, 超过N次,就忽略。
|
j*h 发帖数: 3 | 5 实现的数据结构,可以是circular array, dequeue, priority queue
class Service{
bool handleRequest(double timestamp){
}
};
【在 j*h 的大作中提到】 : 攒人品。 : 实现一个控制调用某第三方API次数的控制器。对于接收到的调用请求,一秒钟内只能 : 响应N次, 超过N次,就忽略。
|
b**********5 发帖数: 7881 | 6 did u ever mention google guava rate limiter? did the interviewer say that u
can't use any existing library?
【在 j*h 的大作中提到】 : 实现的数据结构,可以是circular array, dequeue, priority queue : class Service{ : bool handleRequest(double timestamp){ : } : };
|
q********c 发帖数: 1774 | 7 Of course you cannot use other library. 看来这是个高频题。
u
【在 b**********5 的大作中提到】 : did u ever mention google guava rate limiter? did the interviewer say that u : can't use any existing library?
|
b**********5 发帖数: 7881 | 8 but this goes against the spirit of uber. in fact, this goes against the
spirit of programming! why would i want to reinvent some rate limiter when
there's a perfectly good rate limiter provided to me by the excellent
engineers from google?!
【在 q********c 的大作中提到】 : Of course you cannot use other library. 看来这是个高频题。 : : u
|
k**l 发帖数: 2966 | 9 工作的角度没错
从interview的角度,好像一般更喜欢你自己能实现/优化一个常见的功能
大概意思是如果你会做看懂别人的东西会比较容易些吧
【在 b**********5 的大作中提到】 : but this goes against the spirit of uber. in fact, this goes against the : spirit of programming! why would i want to reinvent some rate limiter when : there's a perfectly good rate limiter provided to me by the excellent : engineers from google?!
|
b**********5 发帖数: 7881 | 10 if it's a 常见的功能, then it's probably optimized already by someone else...
【在 k**l 的大作中提到】 : 工作的角度没错 : 从interview的角度,好像一般更喜欢你自己能实现/优化一个常见的功能 : 大概意思是如果你会做看懂别人的东西会比较容易些吧
|
f*******r 发帖数: 976 | 11 这题和这贴相似:http://www.mitbbs.com/article_t/JobHunting/33088133.html
具体解法可以看5楼
【在 j*h 的大作中提到】 : 攒人品。 : 实现一个控制调用某第三方API次数的控制器。对于接收到的调用请求,一秒钟内只能 : 响应N次, 超过N次,就忽略。
|
k******a 发帖数: 44 | 12 感觉上可以用一个list,
每次来一个request, 判断和list head的时间间隔,
如果在1秒以外,remove list head, 直到list head在1秒以内
然后,如果队列的长度为N, 则忽略,如果不是N,那就把请求的时间加入list, 并处
理请求
但是如果多线程就比较麻烦了,可以加synchronized,但是速度不会理想 |
k******a 发帖数: 44 | 13 感觉上可以用一个list,
每次来一个request, 判断和list head的时间间隔,
如果在1秒以外,remove list head, 直到list head在1秒以内
然后,如果队列的长度为N, 则忽略,如果不是N,那就把请求的时间加入list, 并处
理请求
但是如果多线程就比较麻烦了,可以加synchronized,但是速度不会理想 |