由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - g电面,新鲜面经
相关主题
一道大数据的题,讨论一下再问一道,很多string和regular expression比较
新鲜面试题G 电面一题
问个几道结构设计题google电面面经
Yelp面经+题目讨论LinkedIn NCG , Application Engineer面经
G家电面的两个题求airbnb电面面经
[面经]YELP家不刷题的惨烈后果CS 面试题总结(1)
问个算法题在线紧急求助一道system design面试题,面经内附
点评网站Y面经贴华人版程序员简历,大家帮忙拍砖成印度版
相关话题的讨论汇总
话题: heap话题: query话题: log话题: machine话题: int
进入JobHunting版参与讨论
1 (共1页)
a******8
发帖数: 90
1
1. 一个log里有页面的访问记录,如何获得前1000popular的(hash_map + heap)
followup,log里存在多个machine里,我原先说每个maintain heap,后来经提醒不work,
改用每个存heap,然后merge,再提了些优化的方案.面试官基本满意。
2.一个很大的table存了query -> occurrence,如何随机获得1个query,概率是基于每个
query的occurrence,
1 2 3
20 10 30
获得第一个数的概率是 20/60.
这题我很纠结,我上来就想到因为大数据量,用resevior sampling的变版做(
constant space),边想边写边测弄了快半小时才弄出来,最后也解释了半天,其实也
有很直接的方法,把累加做个数组就行了,用bst搜素log(n),当时面试就是有点一根
筋。最后问了问组的情况,听口音感觉是同胞里的一个大牛,希望能水过。(突然想起
来介绍的时候他的名字不像是同胞的)
b****g
发帖数: 192
2
谢谢分享,第一题是什么意思?
每个机器都维持一个min heap,最后再把这些heap们merge到一起吗?

work,

【在 a******8 的大作中提到】
: 1. 一个log里有页面的访问记录,如何获得前1000popular的(hash_map + heap)
: followup,log里存在多个machine里,我原先说每个maintain heap,后来经提醒不work,
: 改用每个存heap,然后merge,再提了些优化的方案.面试官基本满意。
: 2.一个很大的table存了query -> occurrence,如何随机获得1个query,概率是基于每个
: query的occurrence,
: 1 2 3
: 20 10 30
: 获得第一个数的概率是 20/60.
: 这题我很纠结,我上来就想到因为大数据量,用resevior sampling的变版做(
: constant space),边想边写边测弄了快半小时才弄出来,最后也解释了半天,其实也

a******8
发帖数: 90
3
嗯,是的

【在 b****g 的大作中提到】
: 谢谢分享,第一题是什么意思?
: 每个机器都维持一个min heap,最后再把这些heap们merge到一起吗?
:
: work,

b****g
发帖数: 192
4
谢谢
第二题:
我看你用了binary search找那个数,耗时O(lg n),但是前面把数组累加已经耗时O
(n)了,
有没有办法耗时O(lg n)?

【在 a******8 的大作中提到】
: 嗯,是的
j*****y
发帖数: 1071
5
第二题: 对于小的 case怎么做阿
比如
1 2 3
20 10 30
那么 frequence 的sum 是 60
那么产生一个 [1 60] 之间的随机数 r
如果 r <= 20 , 返回 1
否则如果 r <=30 , 返回 2
否则 返回 3
问题是出来一个随机数 r, 怎么有效判断它所在的区间呢?

work,

【在 a******8 的大作中提到】
: 1. 一个log里有页面的访问记录,如何获得前1000popular的(hash_map + heap)
: followup,log里存在多个machine里,我原先说每个maintain heap,后来经提醒不work,
: 改用每个存heap,然后merge,再提了些优化的方案.面试官基本满意。
: 2.一个很大的table存了query -> occurrence,如何随机获得1个query,概率是基于每个
: query的occurrence,
: 1 2 3
: 20 10 30
: 获得第一个数的概率是 20/60.
: 这题我很纠结,我上来就想到因为大数据量,用resevior sampling的变版做(
: constant space),边想边写边测弄了快半小时才弄出来,最后也解释了半天,其实也

e******o
发帖数: 757
6
那么多的数累加不会overflow 么?
j*****y
发帖数: 1071
7
怎么解决阿? 多谢

【在 e******o 的大作中提到】
: 那么多的数累加不会overflow 么?
a******8
发帖数: 90
8
这是我当场写的,类似的思想是resevior sampling
1 2 3 4
40 30 20 10
int getO(int A[], int n)
{
//check n <= 1
int ret = 0;
int totalweight = A[0];
for(int i = 1; i < n; i++)
{
totalwieght += A[i];
int p = rand()%totalweight;
if(p <= A[i]) ret = i;//
}
return A[ret];
}
这个方法好处是不需要O(n)的空间,如果是支持多次查询,可以做一个array存累加值
,比如:
1 2 3 4
40 30 20 10
new array: 40 70 90 100
这样直接rand()%100,判断数落的空间,新建这个array要O(n),后面用binary search查
询,时间复杂度log(n).
大数据确实存在累加over flow,假如total weight远超过int size,而有一个weight就
是1,没法用正常方法取到。有个优化的方法就是对所有weight平均分下,先随机取出
期中一个,然后再进行上面的算法。在计算weight总值的时候要用到大数加减。不过面
试时间有限,这些都是后来想的。。。

【在 j*****y 的大作中提到】
: 第二题: 对于小的 case怎么做阿
: 比如
: 1 2 3
: 20 10 30
: 那么 frequence 的sum 是 60
: 那么产生一个 [1 60] 之间的随机数 r
: 如果 r <= 20 , 返回 1
: 否则如果 r <=30 , 返回 2
: 否则 返回 3
: 问题是出来一个随机数 r, 怎么有效判断它所在的区间呢?

p*****p
发帖数: 379
9
for循环里每次rand一下和for外面rand一次应该概率不同吧?感觉p应该放到外面?

【在 a******8 的大作中提到】
: 这是我当场写的,类似的思想是resevior sampling
: 1 2 3 4
: 40 30 20 10
: int getO(int A[], int n)
: {
: //check n <= 1
: int ret = 0;
: int totalweight = A[0];
: for(int i = 1; i < n; i++)
: {

c**m
发帖数: 535
10
1. Find 1000 popular URLs in a log.
对于这种log里找popular URL的题目,首先肯定是要用hash去保存每一个URL的
frequency。然后对于返回top k:option 1, sort, O(nlogn);option2,用一个
size为k的min_heap,O(nlogk)。
Follow up,如果log存在多个machine里,那么肯定是要merge result了。这个时候每
个machine如果只是存一个size为k的heap显然是不够的了。所以我们可以对于每个
machine:opt 1,sort the URL frequency;opt 2, use a min_heap to store all
URL frequency。这里个人感觉opt 1好一些。
2. Return a query based on the occurrence from a big table。
首先这个很大的table,也就是一个很大file,然后不能完全放入main memory里面,是
吧?那个这个其实跟“从一个大文件里随机取出一行”是一样道理的,只不过是加了
occurrence这个条件。思路就是依次从头开始取,然后统计,并且同时计算当前概率,
然后继续下一行。只需要扫描一遍即可。Pseudocode:
all_occur = 0;
chosen = “”;
for (query in table) {
this_occur = query.occurence;
all_occur += this_occur;
if (random(0, all_occur) <= this_occur) chosen = query;
}
return chosen;
还望大家指点~~
相关主题
[面经]YELP家不刷题的惨烈后果再问一道,很多string和regular expression比较
问个算法题G 电面一题
点评网站Y面经google电面面经
进入JobHunting版参与讨论
c**m
发帖数: 535
11
恩,你这个跟我想的一样。

【在 a******8 的大作中提到】
: 这是我当场写的,类似的思想是resevior sampling
: 1 2 3 4
: 40 30 20 10
: int getO(int A[], int n)
: {
: //check n <= 1
: int ret = 0;
: int totalweight = A[0];
: for(int i = 1; i < n; i++)
: {

j*****y
发帖数: 1071
12
thanks

all

【在 c**m 的大作中提到】
: 1. Find 1000 popular URLs in a log.
: 对于这种log里找popular URL的题目,首先肯定是要用hash去保存每一个URL的
: frequency。然后对于返回top k:option 1, sort, O(nlogn);option2,用一个
: size为k的min_heap,O(nlogk)。
: Follow up,如果log存在多个machine里,那么肯定是要merge result了。这个时候每
: 个machine如果只是存一个size为k的heap显然是不够的了。所以我们可以对于每个
: machine:opt 1,sort the URL frequency;opt 2, use a min_heap to store all
: URL frequency。这里个人感觉opt 1好一些。
: 2. Return a query based on the occurrence from a big table。
: 首先这个很大的table,也就是一个很大file,然后不能完全放入main memory里面,是

j*****y
发帖数: 1071
13
thanks.

【在 a******8 的大作中提到】
: 这是我当场写的,类似的思想是resevior sampling
: 1 2 3 4
: 40 30 20 10
: int getO(int A[], int n)
: {
: //check n <= 1
: int ret = 0;
: int totalweight = A[0];
: for(int i = 1; i < n; i++)
: {

e******o
发帖数: 757
14
I think keeping track of the average should solve this problem

【在 j*****y 的大作中提到】
: 怎么解决阿? 多谢
j*****y
发帖数: 1071
15
能更仔细点吗?
thanks.

I think keeping track of the average should solve this problem

【在 e******o 的大作中提到】
: I think keeping track of the average should solve this problem
p*****2
发帖数: 21240
16
第二题纪录一个总数就可以了吧?
G****A
发帖数: 4160
17
第2题应该不是你理解的那个意思。

all

【在 c**m 的大作中提到】
: 1. Find 1000 popular URLs in a log.
: 对于这种log里找popular URL的题目,首先肯定是要用hash去保存每一个URL的
: frequency。然后对于返回top k:option 1, sort, O(nlogn);option2,用一个
: size为k的min_heap,O(nlogk)。
: Follow up,如果log存在多个machine里,那么肯定是要merge result了。这个时候每
: 个machine如果只是存一个size为k的heap显然是不够的了。所以我们可以对于每个
: machine:opt 1,sort the URL frequency;opt 2, use a min_heap to store all
: URL frequency。这里个人感觉opt 1好一些。
: 2. Return a query based on the occurrence from a big table。
: 首先这个很大的table,也就是一个很大file,然后不能完全放入main memory里面,是

r*******n
发帖数: 3020
18
第一题的followup, 我认为每个machine维持一个大小为K的heap,
然后再合并为一个大小为K的heap,就是所要的结果,没有问题啊。

all

【在 c**m 的大作中提到】
: 1. Find 1000 popular URLs in a log.
: 对于这种log里找popular URL的题目,首先肯定是要用hash去保存每一个URL的
: frequency。然后对于返回top k:option 1, sort, O(nlogn);option2,用一个
: size为k的min_heap,O(nlogk)。
: Follow up,如果log存在多个machine里,那么肯定是要merge result了。这个时候每
: 个machine如果只是存一个size为k的heap显然是不够的了。所以我们可以对于每个
: machine:opt 1,sort the URL frequency;opt 2, use a min_heap to store all
: URL frequency。这里个人感觉opt 1好一些。
: 2. Return a query based on the occurrence from a big table。
: 首先这个很大的table,也就是一个很大file,然后不能完全放入main memory里面,是

Y**Y
发帖数: 66
19
第一题同一个页面可能在多个机器里吗?
比如说,一个页面在机器1里有1000个,在机器2里有2000个。所以这个页面的访问数是
3000.

work,

【在 a******8 的大作中提到】
: 1. 一个log里有页面的访问记录,如何获得前1000popular的(hash_map + heap)
: followup,log里存在多个machine里,我原先说每个maintain heap,后来经提醒不work,
: 改用每个存heap,然后merge,再提了些优化的方案.面试官基本满意。
: 2.一个很大的table存了query -> occurrence,如何随机获得1个query,概率是基于每个
: query的occurrence,
: 1 2 3
: 20 10 30
: 获得第一个数的概率是 20/60.
: 这题我很纠结,我上来就想到因为大数据量,用resevior sampling的变版做(
: constant space),边想边写边测弄了快半小时才弄出来,最后也解释了半天,其实也

Y**Y
发帖数: 66
20
找top K可以用randomized partition, 可以average O(n)吧?

all

【在 c**m 的大作中提到】
: 1. Find 1000 popular URLs in a log.
: 对于这种log里找popular URL的题目,首先肯定是要用hash去保存每一个URL的
: frequency。然后对于返回top k:option 1, sort, O(nlogn);option2,用一个
: size为k的min_heap,O(nlogk)。
: Follow up,如果log存在多个machine里,那么肯定是要merge result了。这个时候每
: 个machine如果只是存一个size为k的heap显然是不够的了。所以我们可以对于每个
: machine:opt 1,sort the URL frequency;opt 2, use a min_heap to store all
: URL frequency。这里个人感觉opt 1好一些。
: 2. Return a query based on the occurrence from a big table。
: 首先这个很大的table,也就是一个很大file,然后不能完全放入main memory里面,是

相关主题
LinkedIn NCG , Application Engineer面经在线紧急求助一道system design面试题,面经内附
求airbnb电面面经贴华人版程序员简历,大家帮忙拍砖成印度版
CS 面试题总结(1)某大公司面试题
进入JobHunting版参与讨论
Y**Y
发帖数: 66
21
这个要求每个页面只在一个机器里,不知原题有这个条件没有。

【在 r*******n 的大作中提到】
: 第一题的followup, 我认为每个machine维持一个大小为K的heap,
: 然后再合并为一个大小为K的heap,就是所要的结果,没有问题啊。
:
: all

e******o
发帖数: 757
22
有问题,比如top 3
machine 1 A 50 B 40 C 37
machine 2 E 50 F 20 G 10 C 8 B2
如果只存 3 个的话,结果是AEB, 而正确答案是AEC

【在 r*******n 的大作中提到】
: 第一题的followup, 我认为每个machine维持一个大小为K的heap,
: 然后再合并为一个大小为K的heap,就是所要的结果,没有问题啊。
:
: all

m*****k
发帖数: 731
23
this only works when a certain key stays on a certain machine 吧。

【在 r*******n 的大作中提到】
: 第一题的followup, 我认为每个machine维持一个大小为K的heap,
: 然后再合并为一个大小为K的heap,就是所要的结果,没有问题啊。
:
: all

c*u
发帖数: 22
24
先求总数,返回第一个小于么.
for 1..n
sum += weight[n]
if(rand()*totalWeight < sum)
return query[n];

【在 a******8 的大作中提到】
: 这是我当场写的,类似的思想是resevior sampling
: 1 2 3 4
: 40 30 20 10
: int getO(int A[], int n)
: {
: //check n <= 1
: int ret = 0;
: int totalweight = A[0];
: for(int i = 1; i < n; i++)
: {

l**h
发帖数: 893
25
it's a variant to this one:
http://www.geeksforgeeks.org/select-a-random-number-from-stream

【在 c*u 的大作中提到】
: 先求总数,返回第一个小于么.
: for 1..n
: sum += weight[n]
: if(rand()*totalWeight < sum)
: return query[n];

Y*****y
发帖数: 361
26
See this paper "Weighted random sampling with a reservoir":
http://dl.acm.org/citation.cfm?id=1138834
a******8
发帖数: 90
27
版上的大牛真多啊,paper都能被翻出来,顺便update下,电面过了,onsite了。。

【在 Y*****y 的大作中提到】
: See this paper "Weighted random sampling with a reservoir":
: http://dl.acm.org/citation.cfm?id=1138834

c***r
发帖数: 35
28
第一题要当场写代码吗?比如写一个build min heap and merge several min heap?
s*****n
发帖数: 5488
29
it is about map-reduce.

【在 b****g 的大作中提到】
: 谢谢分享,第一题是什么意思?
: 每个机器都维持一个min heap,最后再把这些heap们merge到一起吗?
:
: work,

t*********h
发帖数: 941
30
这个难道不是biased的?favor后面的元素?

【在 a******8 的大作中提到】
: 这是我当场写的,类似的思想是resevior sampling
: 1 2 3 4
: 40 30 20 10
: int getO(int A[], int n)
: {
: //check n <= 1
: int ret = 0;
: int totalweight = A[0];
: for(int i = 1; i < n; i++)
: {

相关主题
面试: Take home project新鲜面试题
问一道glassdoor上看到的yahoo电面题问个几道结构设计题
一道大数据的题,讨论一下Yelp面经+题目讨论
进入JobHunting版参与讨论
Y********f
发帖数: 410
31
为什么很多人认为merge heap呢,不对啊,应该merge hash map啊

【在 r*******n 的大作中提到】
: 第一题的followup, 我认为每个machine维持一个大小为K的heap,
: 然后再合并为一个大小为K的heap,就是所要的结果,没有问题啊。
:
: all

1 (共1页)
进入JobHunting版参与讨论
相关主题
贴华人版程序员简历,大家帮忙拍砖成印度版G家电面的两个题
某大公司面试题[面经]YELP家不刷题的惨烈后果
面试: Take home project问个算法题
问一道glassdoor上看到的yahoo电面题点评网站Y面经
一道大数据的题,讨论一下再问一道,很多string和regular expression比较
新鲜面试题G 电面一题
问个几道结构设计题google电面面经
Yelp面经+题目讨论LinkedIn NCG , Application Engineer面经
相关话题的讨论汇总
话题: heap话题: query话题: log话题: machine话题: int