由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问两道onsite题目
相关主题
bloomberg onsite题G onsite面经兼求内推
Microsoft's interview questions谁能科普Time Series Daemon (TSD)系统设计
阿家Prime组新鲜面经终于可以上班了
又面了一上午,M家的,大家进来做题急, 请教个面试问题
Zenefits 现在真是跩啊,中途把我面试取消了Amazon Second phone
发个TA(猫头鹰)的面筋请教个编程题,比较急,坐等
问个算法题7考大家一道SQL面试题
问个近期亚麻高频题目问几个google电面的问题
相关话题的讨论汇总
话题: start话题: int话题: visited话题: pos话题: node
进入JobHunting版参与讨论
1 (共1页)
f*****u
发帖数: 308
1
两道题来自不同的公司.
题一:
有N个node,每个都不停的向外发送timestamps,具体发送哪些timestamp是每个node决定
的,从其他node来说是随机的.现在要收集这些node发送的所有timestamp.如果某个
timestamp被发现从超过99%的node上发送出来,记录下来.需要怎么做?这些timestamp很
多,是不能完全放进去内存里面的.如果node非常多,怎么scale?
题二:
一个mxn的grid,要在里面随机生成K个格子.最直接的方法是一个for循环从1到K生成K个
随机格子,但是对每个当前生成的格子,需要检查前面是否已经生成过了,如果重复了需
要重新生成,这样时间上就超过了O(K).有方法在O(K)时间内实现吗?
s*i
发帖数: 5025
2
第二个用hashset记载生成过的

【在 f*****u 的大作中提到】
: 两道题来自不同的公司.
: 题一:
: 有N个node,每个都不停的向外发送timestamps,具体发送哪些timestamp是每个node决定
: 的,从其他node来说是随机的.现在要收集这些node发送的所有timestamp.如果某个
: timestamp被发现从超过99%的node上发送出来,记录下来.需要怎么做?这些timestamp很
: 多,是不能完全放进去内存里面的.如果node非常多,怎么scale?
: 题二:
: 一个mxn的grid,要在里面随机生成K个格子.最直接的方法是一个for循环从1到K生成K个
: 随机格子,但是对每个当前生成的格子,需要检查前面是否已经生成过了,如果重复了需
: 要重新生成,这样时间上就超过了O(K).有方法在O(K)时间内实现吗?

p*****2
发帖数: 21240
3

第一题的解决方案就是kafka+spark+cassandra可以搞定了。

【在 f*****u 的大作中提到】
: 两道题来自不同的公司.
: 题一:
: 有N个node,每个都不停的向外发送timestamps,具体发送哪些timestamp是每个node决定
: 的,从其他node来说是随机的.现在要收集这些node发送的所有timestamp.如果某个
: timestamp被发现从超过99%的node上发送出来,记录下来.需要怎么做?这些timestamp很
: 多,是不能完全放进去内存里面的.如果node非常多,怎么scale?
: 题二:
: 一个mxn的grid,要在里面随机生成K个格子.最直接的方法是一个for循环从1到K生成K个
: 随机格子,但是对每个当前生成的格子,需要检查前面是否已经生成过了,如果重复了需
: 要重新生成,这样时间上就超过了O(K).有方法在O(K)时间内实现吗?

p*****2
发帖数: 21240
4

二维矩阵就是一维数组,参看经典的洗牌技术。

【在 f*****u 的大作中提到】
: 两道题来自不同的公司.
: 题一:
: 有N个node,每个都不停的向外发送timestamps,具体发送哪些timestamp是每个node决定
: 的,从其他node来说是随机的.现在要收集这些node发送的所有timestamp.如果某个
: timestamp被发现从超过99%的node上发送出来,记录下来.需要怎么做?这些timestamp很
: 多,是不能完全放进去内存里面的.如果node非常多,怎么scale?
: 题二:
: 一个mxn的grid,要在里面随机生成K个格子.最直接的方法是一个for循环从1到K生成K个
: 随机格子,但是对每个当前生成的格子,需要检查前面是否已经生成过了,如果重复了需
: 要重新生成,这样时间上就超过了O(K).有方法在O(K)时间内实现吗?

f*****u
发帖数: 308
5
大牛你就别在这儿开玩笑了吧.我是真心来请教一些可行方案的.你面试这么说必死无疑
的吧.很明显面试官想听的是一套lower level的解决方案的.

【在 p*****2 的大作中提到】
:
: 二维矩阵就是一维数组,参看经典的洗牌技术。

f*****u
发帖数: 308
6
大牛你是说Fisher–Yates shuffle算法?能再稍微解释下这里怎么用不?

【在 p*****2 的大作中提到】
:
: 二维矩阵就是一维数组,参看经典的洗牌技术。

p*****2
发帖数: 21240
7

这个方案应该是工业界认可的。如果面试官希望听到一些low level的,你可以给他们
讲讲到底地层是如何工作的。

【在 f*****u 的大作中提到】
: 大牛你就别在这儿开玩笑了吧.我是真心来请教一些可行方案的.你面试这么说必死无疑
: 的吧.很明显面试官想听的是一套lower level的解决方案的.

w***n
发帖数: 58
8
knuth shuffle is o(n) >> o(k).....
To pick random K out of N, first pick 1 out of N, then pick 1 out of N - 1..
.. pick 1 out of N - K +1. Every time you pick you could map range to the
left over numbers. You just need to use a sorted list to keep track of
elements already picked. O(klgk)
l*********b
发帖数: 65
9
第一题:如果每个node不会发送相同的时间戳的话: hashmap 戳收到的数量> 如果相同node会发送相同的时间戳: hashmap 存储哪些node发送过这个时间戳> 然后应该有个数字代表99%的 node吧 如果hashmap的
value (对于第二种情况就是value的size) 超过了这个数字 就记录这个时间戳。
对于超多数据 根据时间戳进行hash 这样相同时间戳的数据会被分到同一台机器上 就
可以了吧
第二题: 想半天不知道咋做 看到回复里说洗牌算法 亮瞎狗眼 好聪明。。。
S********e
发帖数: 74
10
第一题感觉可以把timestamp hash到不同的机器上,继而计算tiamstamp的个数
第二题是reservior sampling 的变种把

【在 f*****u 的大作中提到】
: 两道题来自不同的公司.
: 题一:
: 有N个node,每个都不停的向外发送timestamps,具体发送哪些timestamp是每个node决定
: 的,从其他node来说是随机的.现在要收集这些node发送的所有timestamp.如果某个
: timestamp被发现从超过99%的node上发送出来,记录下来.需要怎么做?这些timestamp很
: 多,是不能完全放进去内存里面的.如果node非常多,怎么scale?
: 题二:
: 一个mxn的grid,要在里面随机生成K个格子.最直接的方法是一个for循环从1到K生成K个
: 随机格子,但是对每个当前生成的格子,需要检查前面是否已经生成过了,如果重复了需
: 要重新生成,这样时间上就超过了O(K).有方法在O(K)时间内实现吗?

f*******w
发帖数: 1243
11
第二题resevoir sampling都overkill了吧,因为size是已知的
不过思路是一样的
f*******w
发帖数: 1243
12
写了一下第二题,O(k),用hash来实现swap..
vector randomPick(vector > &input, int k) {
int n = input[0].size(), total = input.size() * n;
unordered_map visited;
vector res; int start = 0;
for (int i = 0; i < k; ++i) {
int pos = rand() % (total - start) + start;
int x = pos / n, y = pos % n;
if (visited.find(pos) != visited.end()) {
res.push_back(visited[pos]);
int tmp = visited[pos];
visited[pos] = (visited.find(start) == visited.end()) ? input[
start / n][start % n] : visited[start];
visited[start] = tmp;
} else {
res.push_back(input[x][y]);
visited[pos] = (visited.find(start) == visited.end()) ? input[
start / n][start % n] : visited[start];
visited[start] = input[x][y];
}
++start;
}
return res;
}
1 (共1页)
进入JobHunting版参与讨论
相关主题
问几个google电面的问题Zenefits 现在真是跩啊,中途把我面试取消了
A 公司网页点击问题发个TA(猫头鹰)的面筋
google onsite 录取率到底多少? (转载)问个算法题7
发几道今天面的题问个近期亚麻高频题目
bloomberg onsite题G onsite面经兼求内推
Microsoft's interview questions谁能科普Time Series Daemon (TSD)系统设计
阿家Prime组新鲜面经终于可以上班了
又面了一上午,M家的,大家进来做题急, 请教个面试问题
相关话题的讨论汇总
话题: start话题: int话题: visited话题: pos话题: node