Redian新闻
>
耳垂子大不一定说明你有福气,
avatar
耳垂子大不一定说明你有福气,# Joke - 肚皮舞运动
k*s
1
在frys上买了一个卡巴斯基己用,rebate要求是original UPC
不过我仔细查看了下包装,盒子上的UPC外面被人另外贴了个UPC。这是frys干的吗?
我是不是应该把它撕掉再把下面那个挖出来呢?
另外要求的first page of quick guide或者installation disk是什么意思啊,感觉好
诡异。把这个寄回去了产品就不完整了啊
avatar
w*v
2
被U家猎头联系,安排电面。
第一轮,用coderpad做题,首先merge two sorted list。然后实现功能,使得某函数
在过去给定时段(比如过去10秒)的调用次数不超过100次。
第二轮,同样用coderpad。实现key value store。同时要求限制容量,新的数据挤走
旧的数据,类似LRU。
两轮都要求现场调试加测试。我感觉还不错,但几天后收到猎头反馈,说不match,但
有可能再联系我。我追问反馈细节,猎头就不理我了。:-(
感觉U的bar似乎不低。
avatar
x*f
3
有可能只是你祖辈是橱子。
avatar
b*r
4
就是上面的upc,撕下来或剪下
证明你以前用过同类产品 做升级rebate用的 找个以前版本拍照打印
包子

【在 k********s 的大作中提到】
: 在frys上买了一个卡巴斯基己用,rebate要求是original UPC
: 不过我仔细查看了下包装,盒子上的UPC外面被人另外贴了个UPC。这是frys干的吗?
: 我是不是应该把它撕掉再把下面那个挖出来呢?
: 另外要求的first page of quick guide或者installation disk是什么意思啊,感觉好
: 诡异。把这个寄回去了产品就不完整了啊

avatar
f*d
5
赞面经!
“实现功能,使得某函数在过去给定时段(比如过去10秒)的调用次数不超过100次。
”这个怎么做的?能贴一下代码吗?谢谢!

【在 w**v 的大作中提到】
: 被U家猎头联系,安排电面。
: 第一轮,用coderpad做题,首先merge two sorted list。然后实现功能,使得某函数
: 在过去给定时段(比如过去10秒)的调用次数不超过100次。
: 第二轮,同样用coderpad。实现key value store。同时要求限制容量,新的数据挤走
: 旧的数据,类似LRU。
: 两轮都要求现场调试加测试。我感觉还不错,但几天后收到猎头反馈,说不match,但
: 有可能再联系我。我追问反馈细节,猎头就不理我了。:-(
: 感觉U的bar似乎不低。

avatar
k*s
6
晕,本人愚钝,您说的UPC是那张贴在外面的纸,还是盒子的一部分?
怎么找以前的版本啊,google行吗

【在 b****r 的大作中提到】
: 就是上面的upc,撕下来或剪下
: 证明你以前用过同类产品 做升级rebate用的 找个以前版本拍照打印
: 包子

avatar
w*x
7
google leaky bucket
[在 futureinhand (Future in Hands) 的大作中提到:]
:赞面经!
:“实现功能,使得某函数在过去给定时段(比如过去10秒)的调用次数不超过100次。
:...........
avatar
i*t
8
外面那张纸

【在 k********s 的大作中提到】
: 晕,本人愚钝,您说的UPC是那张贴在外面的纸,还是盒子的一部分?
: 怎么找以前的版本啊,google行吗

avatar
f*r
9
U的bar比较高啊

被U家猎头联系,安排电面。
第一轮,用coderpad做题,首先merge two sorted list。然后实现功能,使得某函数
在过去给定时段(比如过去10秒)的调用次数不超过100次。
第二轮,同样用coderpad。实现key value store。同时要求限制容量,新的数据挤走
旧的数据,类似LRU。
两轮都要求现场调试加测试。我感觉还不错,但几天后收到猎头反馈,说不match,但
有可能再联系我。我追问反馈细节,猎头就不理我了。:-(
感觉U的bar似乎不低。

【在 w**v 的大作中提到】
: 被U家猎头联系,安排电面。
: 第一轮,用coderpad做题,首先merge two sorted list。然后实现功能,使得某函数
: 在过去给定时段(比如过去10秒)的调用次数不超过100次。
: 第二轮,同样用coderpad。实现key value store。同时要求限制容量,新的数据挤走
: 旧的数据,类似LRU。
: 两轮都要求现场调试加测试。我感觉还不错,但几天后收到猎头反馈,说不match,但
: 有可能再联系我。我追问反馈细节,猎头就不理我了。:-(
: 感觉U的bar似乎不低。

avatar
k*s
10
求好心人发我个可以做卡巴升级rebate的quick start guide吧
双黄包送上
avatar
f*r
11
我的思路是用一个circular ring来实现,因为只要求最近10秒,这个ring只要保存11
个元素就可以了,每个元素保存一个pair p. p的第一个值是epoch time
的秒,第二个值是在该秒调用的次数。每次这个函数被调用,就查询一下最近10的总的
调用次数,如果超过了100次,就返回true。否则就返回false。C++代码如下:
class Counter {
private:
vector > counter;
int index;
const int times;
public:
Counter(int seconds, int ts) : counter(seconds+1), index(-1), times(ts) {}
bool quotaExceeded() {
time_t current = time(NULL);
long sum = 0;
for (int i = 0, e = counter.size(); i < e; ++i) {
if (counter[i].first >= current - 10) {
// This happens in the last 10 seconds.
sum += counter[i].second;
} else {
counter[i] = make_pair(0, 0);
}
}
// More than 100 times, we return here directly.
if (sum >= times) return true;
if (index != -1 && counter[index].first == current)
counter[index].second++;
else {
index = (index+1)%counter.size();
counter[index] = make_pair(current, 1);
}
return false;
}
};
比如,你有个函数g,你想要保证g每10秒只被调用100次,那你就可以这么做:
void g() {
static Counter counter(10, 100);
if (counter.quotaExceeded()) return;
std::cout << "g() " << count << std::endl;
}

赞面经!
“实现功能,使得某函数在过去给定时段(比如过去10秒)的调用次数不超过100次。
”这个怎么做的?能贴一下代码吗?谢谢!

【在 f**********d 的大作中提到】
: 赞面经!
: “实现功能,使得某函数在过去给定时段(比如过去10秒)的调用次数不超过100次。
: ”这个怎么做的?能贴一下代码吗?谢谢!

avatar
b*r
12
盖在外面的UPC 小心撕下来或连同盒子减下来
网上很多 没有我发份给你

【在 k********s 的大作中提到】
: 晕,本人愚钝,您说的UPC是那张贴在外面的纸,还是盒子的一部分?
: 怎么找以前的版本啊,google行吗

avatar
f*d
13
谢谢!点赞!

11
time

【在 f*******r 的大作中提到】
: 我的思路是用一个circular ring来实现,因为只要求最近10秒,这个ring只要保存11
: 个元素就可以了,每个元素保存一个pair p. p的第一个值是epoch time
: 的秒,第二个值是在该秒调用的次数。每次这个函数被调用,就查询一下最近10的总的
: 调用次数,如果超过了100次,就返回true。否则就返回false。C++代码如下:
: class Counter {
: private:
: vector > counter;
: int index;
: const int times;
: public:

avatar
k*s
14
有哪位童鞋打印norton的start guide做过卡巴的rebate吗?
我想核实下:)
avatar
c*t
15
我觉得你这个似乎有问题?
首先你返回true or false是O(1)吗?这种题目一般要求查询O(1) 复杂度,而你里面还
有for loop.我没细看。
其次,你时间判断 “counter[i].first >= current - 10” 我怎么觉得有点问题?
你下面调用
if (counter.quotaExceeded()) return;
std::cout << "g() " << count << std::endl;
如果在0.000000000秒有100次调用。第10.00000秒你执行if 判断,答案是不能再调用
了。
但实际上是可以调用的,因为假设你if判断执行了0.01毫秒,到第二行std::cout....
真正执行的时候,
第0.0000000000秒的已经过期了。
所以 “counter[i].first >= current - 10” 中的等号是不是应该去掉?
为什么不用queue 呢?
每次只要检查queue前端是否已经过时,过时弹出,这个是不变量,
然后只要 return queue.size<100;
queue size最多100。
而且我们还要考虑多线程调用的情况。

11
time

【在 f*******r 的大作中提到】
: 我的思路是用一个circular ring来实现,因为只要求最近10秒,这个ring只要保存11
: 个元素就可以了,每个元素保存一个pair p. p的第一个值是epoch time
: 的秒,第二个值是在该秒调用的次数。每次这个函数被调用,就查询一下最近10的总的
: 调用次数,如果超过了100次,就返回true。否则就返回false。C++代码如下:
: class Counter {
: private:
: vector > counter;
: int index;
: const int times;
: public:

avatar
k*s
16
有哪位童鞋打印norton的start guide做过卡巴的rebate吗?
我想核实下:)
avatar
f*r
17

我觉得你这个似乎有问题?
首先你返回true or false是O(1)吗?这种题目一般要求查询O(1) 复杂度,而你里面还
有for loop.我没细看。
=======================================================
你还是仔细看完再做评论,没看你就发表评论不好。还有一个就是这题根本没写O(1)的
复杂度。你可以写一个O(1)或者是O(-1)的给大家来欣赏一下。
其次,你时间判断 “counter[i].first >= current - 10” 我怎么觉得有点问题?
你下面调用
if (counter.quotaExceeded()) return;
std::cout << "g() " << count << std::endl;
如果在0.000000000秒有100次调用。第10.00000秒你执行if 判断,答案是不能再调用
了。
但实际上是可以调用的,因为假设你if判断执行了0.01毫秒,到第二行std::cout....
真正执行的时候,
第0.0000000000秒的已经过期了。
==========================================
if判断根本就不要0.01秒,你的假设就已经错了。跟你说一下,Linux不是real time
kernel。你要精确到0.01秒,你还得要发明个hard real-time kernel再来做这道题。
所以 “counter[i].first >= current - 10” 中的等号是不是应该去掉?
为什么不用queue 呢?
================================================
你知道C++ queue是怎么实现的吗?queue和circular ring相比有什么好处吗?
每次只要检查queue前端是否已经过时,过时弹出,这个是不变量,
然后只要 return queue.size<100;
queue size最多100。
=================================================
loop through 100效率高还是loop 10个效率高?
而且我们还要考虑多线程调用的情况。
================================================
对,是要考虑多线程,reentrant, 还要考虑IPC等等
还要考虑时钟漂移,处理器过热等

【在 c*******t 的大作中提到】
: 我觉得你这个似乎有问题?
: 首先你返回true or false是O(1)吗?这种题目一般要求查询O(1) 复杂度,而你里面还
: 有for loop.我没细看。
: 其次,你时间判断 “counter[i].first >= current - 10” 我怎么觉得有点问题?
: 你下面调用
: if (counter.quotaExceeded()) return;
: std::cout << "g() " << count << std::endl;
: 如果在0.000000000秒有100次调用。第10.00000秒你执行if 判断,答案是不能再调用
: 了。
: 但实际上是可以调用的,因为假设你if判断执行了0.01毫秒,到第二行std::cout....

avatar
d*y
18
我搞了一个,给我email我可以给你发过去。
我也在做卡巴Antivirus 2011 3 user的rebate。这个rebate有两个rebate form,其中
一个说要original UPC code,另外一个upgrade要求是"a copy of original UPC code
",不知道后者是前者的复印件,还是需要把盒子上印上去的UPC code也剪下来(说明
一下盒子本身印了UPC code,然后又在其上贴了一个UPC code;如果将贴的UPC用为第
一个表,印在盒子上的用为第二个表,则盒子就被开了天窗,有点不忍心,不知道前辈
是如何做的)。

【在 k********s 的大作中提到】
: 有哪位童鞋打印norton的start guide做过卡巴的rebate吗?
: 我想核实下:)

avatar
r*n
19
也许我没看仔细,这个解法似乎没有解决sparse caller的情况:比如说20秒的window
,前10秒每秒调用1次,这样buffer的每个counter是1,后10秒只在最后1秒调用1次,
那么前面的9个couter清空了么?

11
time

【在 f*******r 的大作中提到】
: 我的思路是用一个circular ring来实现,因为只要求最近10秒,这个ring只要保存11
: 个元素就可以了,每个元素保存一个pair p. p的第一个值是epoch time
: 的秒,第二个值是在该秒调用的次数。每次这个函数被调用,就查询一下最近10的总的
: 调用次数,如果超过了100次,就返回true。否则就返回false。C++代码如下:
: class Counter {
: private:
: vector > counter;
: int index;
: const int times;
: public:

avatar
h*x
20

Yes, I did it last year.So far so good.

【在 k********s 的大作中提到】
: 有哪位童鞋打印norton的start guide做过卡巴的rebate吗?
: 我想核实下:)

avatar
e*2
21
java的DelayQueue。
avatar
i*8
22

zkss?有包子
我圡了,norton的guide能做kaspersky的rebate?。。

【在 h******x 的大作中提到】
:
: Yes, I did it last year.So far so good.

avatar
f*r
23
你代码没看懂,再仔细读读。前9个不清空,看你的window大小,只有超过了window
size的才被清空。

window

【在 r*****n 的大作中提到】
: 也许我没看仔细,这个解法似乎没有解决sparse caller的情况:比如说20秒的window
: ,前10秒每秒调用1次,这样buffer的每个counter是1,后10秒只在最后1秒调用1次,
: 那么前面的9个couter清空了么?
:
: 11
: time

avatar
c*t
24
我说的是0.01毫秒,不是0.01秒。你怪别人看你代码不仔细,你就不能仔细看看别人说
的?
你那个确实是bug. 没有什么real time kernel那么复杂,程序执行有一个特征时间,
比如一次程序执行的特征时间是千分之一毫秒,你时间window判断的浮点数误差只要小
于这个特征时间,
就可以排除这个bug.
楼主缺乏精益求精的科学态度。

【在 f*******r 的大作中提到】
: 你代码没看懂,再仔细读读。前9个不清空,看你的window大小,只有超过了window
: size的才被清空。
:
: window

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。