u*****n 发帖数: 126 | 1 在他们家遇到了两个傻B阿三。一个不停的纠正我的逗号和分号,另外一个给的hints都
是废话。最后挂了。他们家的阿三是我面过的所有公司中最极品的。所以面试他们家要
小心傻B阿三。当然他们家的华人美女HR相当的nice,是我遇到的所有HR中最nice的。
总共面了四轮:
第一轮:定义buddy system为一棵complete binary tree。一个node可能为0也可能为1
. 它的
value为1,当且仅当它所有的child的value均为1.
1
|
1 2
| |
1 2 3 4
| | | |
1 2 3 4 5 6 7 8
实现下列的method。
1' clearBit(int offset, int len);
2' setBit(int offset, int len);
第二轮:设计一个task dispatching system,里面有一个task queue和两个function。
1’ trigger。这个function运行并清空task queue中所有的tasks。
2‘ addTask。在trigger之前把task加入task queue,在trigger之后直接运行task。
第三轮:产生一个圆上的所有坐标。不用sqrt, sin, cos等内建函数。
提示:所有的点都是整点。首先我们可以利用对称性把圆分成8块,先画出0-45度角内
的点,然后映射之。对于其中0-45度角中的点,当X+1时,Y的值或者不变或者-1,然
后放入圆方程中看哪一个是对的。
第四轮:设计一个Map,满足下面的复杂度。
add: O(1) deletion: O(1) lookup: O(1) clear:O(1) iterate: O(number of
elements)。
提示:
如果我们用randomly accessed array,复杂度如下:
add: O(1) deletion: O(1) lookup: O(1) clear: O(size of array) iterate:
O(size of array)
如果我么用sequential array, 复杂度如下:
add: O(1) deletion: O(number of elements) lookup:O(number of elements)
clear: O(1) iterate:O(number of elements)
所以我们需要把这两个方法整合起来。 |
o**********e 发帖数: 18403 | 2 谢谢分享! 祝找到好工作!
希望别的 purestorage的同学
能分享一下经验和观察。
大家去nice一点,支持老中HR吧。
以后记住烙印的名字。 人肉伺候。。。 |
j******a 发帖数: 55 | 3 赞lz。
第三题还是不明白什么意思?能具体说说嘛?谢了 |
j**********3 发帖数: 3211 | |
t**********h 发帖数: 2273 | 5 不错,准备搞
为1
【在 u*****n 的大作中提到】 : 在他们家遇到了两个傻B阿三。一个不停的纠正我的逗号和分号,另外一个给的hints都 : 是废话。最后挂了。他们家的阿三是我面过的所有公司中最极品的。所以面试他们家要 : 小心傻B阿三。当然他们家的华人美女HR相当的nice,是我遇到的所有HR中最nice的。 : 总共面了四轮: : 第一轮:定义buddy system为一棵complete binary tree。一个node可能为0也可能为1 : . 它的 : value为1,当且仅当它所有的child的value均为1. : 1 : | : 1 2
|
u*****n 发帖数: 126 | 6 已经添加了些细节。如果还不懂请发我message。
【在 j******a 的大作中提到】 : 赞lz。 : 第三题还是不明白什么意思?能具体说说嘛?谢了
|
t**********h 发帖数: 2273 | 7 我也没明白,不可能都是整点吧?必然有不是整数的坐标(x,y)。是不是只要求出所
有整数的(x,y)?
【在 u*****n 的大作中提到】 : 已经添加了些细节。如果还不懂请发我message。
|
u*****n 发帖数: 126 | 8 屏幕上的像素必然是整点啊。需要用整点来模拟圆的形状。
【在 t**********h 的大作中提到】 : 我也没明白,不可能都是整点吧?必然有不是整数的坐标(x,y)。是不是只要求出所 : 有整数的(x,y)?
|
t**********h 发帖数: 2273 | 9 我以为是数学题。搞屏幕上,整数就make sense了。搞出来八分之一挨着对折就好了。
多谢
【在 u*****n 的大作中提到】 : 屏幕上的像素必然是整点啊。需要用整点来模拟圆的形状。
|
y***n 发帖数: 1594 | 10 华人美女HR给楼主留email吗,抓住机会,不要给阿三领先一步。 |
|
|
u*****n 发帖数: 126 | 11 当然,面试中没有遇到限制语言的公司。
【在 j**********3 的大作中提到】 : 这家让用java么
|
w********o 发帖数: 440 | 12 不明白这公司有啥去头
为1
【在 u*****n 的大作中提到】 : 在他们家遇到了两个傻B阿三。一个不停的纠正我的逗号和分号,另外一个给的hints都 : 是废话。最后挂了。他们家的阿三是我面过的所有公司中最极品的。所以面试他们家要 : 小心傻B阿三。当然他们家的华人美女HR相当的nice,是我遇到的所有HR中最nice的。 : 总共面了四轮: : 第一轮:定义buddy system为一棵complete binary tree。一个node可能为0也可能为1 : . 它的 : value为1,当且仅当它所有的child的value均为1. : 1 : | : 1 2
|
m*****k 发帖数: 731 | 13 buddy system,
谁能讲讲?
根据楼主的描述,叶子必然为0,那么就没有node会是1了,
还是我理解错了?
为1
【在 u*****n 的大作中提到】 : 在他们家遇到了两个傻B阿三。一个不停的纠正我的逗号和分号,另外一个给的hints都 : 是废话。最后挂了。他们家的阿三是我面过的所有公司中最极品的。所以面试他们家要 : 小心傻B阿三。当然他们家的华人美女HR相当的nice,是我遇到的所有HR中最nice的。 : 总共面了四轮: : 第一轮:定义buddy system为一棵complete binary tree。一个node可能为0也可能为1 : . 它的 : value为1,当且仅当它所有的child的value均为1. : 1 : | : 1 2
|
u*****n 发帖数: 126 | 14 叶子不一定为0。事实上,这两个function的主要功能就是设置在一个范围内叶子的数
值。而这些数值也会影响到它的祖先的数值。
【在 m*****k 的大作中提到】 : buddy system, : 谁能讲讲? : 根据楼主的描述,叶子必然为0,那么就没有node会是1了, : 还是我理解错了? : : 为1
|
J*********g 发帖数: 96 | 15
为1
谢谢分享,正在准备第一轮电面,有啥经验,难道真的是virtual概念考的很多吗?
【在 u*****n 的大作中提到】 : 在他们家遇到了两个傻B阿三。一个不停的纠正我的逗号和分号,另外一个给的hints都 : 是废话。最后挂了。他们家的阿三是我面过的所有公司中最极品的。所以面试他们家要 : 小心傻B阿三。当然他们家的华人美女HR相当的nice,是我遇到的所有HR中最nice的。 : 总共面了四轮: : 第一轮:定义buddy system为一棵complete binary tree。一个node可能为0也可能为1 : . 它的 : value为1,当且仅当它所有的child的value均为1. : 1 : | : 1 2
|
j**********3 发帖数: 3211 | |
u*****n 发帖数: 126 | 17 因为两侧点的密度不一样。
【在 j**********3 的大作中提到】 : 为什么是1/8不是1/4?
|
j**********3 发帖数: 3211 | 18 木有理解啊。。。
我觉得整个第一个1/4都要自己算一下吧?从1/8到1/4没办法用0-1/4推导出来。。
【在 u*****n 的大作中提到】 : 因为两侧点的密度不一样。
|
u*****n 发帖数: 126 | 19 (x,y) -> (y,x)
【在 j**********3 的大作中提到】 : 木有理解啊。。。 : 我觉得整个第一个1/4都要自己算一下吧?从1/8到1/4没办法用0-1/4推导出来。。
|
j**********3 发帖数: 3211 | 20 额。。。好聪明。。我开始怀疑我智商了。。。
【在 u*****n 的大作中提到】 : (x,y) -> (y,x)
|
|
|
j**********3 发帖数: 3211 | |
u*****n 发帖数: 126 | 22 这题的重点是queue是atomic的,那么你应该怎么去lock呢?
如果你这样的题不熟悉,建议你复习下EPI上的相关章节。应该不难。
【在 j**********3 的大作中提到】 : 我能再请教一下第2题怎么做么?谢谢了!
|
j**********3 发帖数: 3211 | 23 EPI都上来了啊。。。这算哪一章的啊。。。我只看了binary tree, bst, dp的章节。
。。
你面经里。。。我竟然一个都不会。。。
【在 u*****n 的大作中提到】 : 这题的重点是queue是atomic的,那么你应该怎么去lock呢? : 如果你这样的题不熟悉,建议你复习下EPI上的相关章节。应该不难。
|
u*****n 发帖数: 126 | 24 Ch18 Parallel computing |
j**********3 发帖数: 3211 | 25 我去看看,太谢谢lz了。
另外第4题,实在不会clear o(1), 就开贴子问了。但感觉我们都走错方向了。大牛可
否进去指导一下?
贴子的link是:
http://www.mitbbs.com/article_t/JobHunting/32706095.html
【在 u*****n 的大作中提到】 : Ch18 Parallel computing
|
e****t 发帖数: 1 | 26 第一题,画的图没怎么看懂,不知道一个原来为1的节点置0,它的子节点怎么处理,是
所有子节点都置0?感觉不需要,下面的python实现中仅把该节点下所有左孩子置0:
def setbit_down(A, x, n):
if x>=n:
return
if 2*x+1<=n and A[2*x+1]==0:
A[2*x+1]=1
setbit_down(A,2*x+1,n)
if 2*x+2<=n and A[2*x+2]==0:
A[2*x+2]=1
setbit_down(A,2*x+2,n)
def set_bit(A, pos, length):
if not A or pos<0 or length<=0:
return
n = len(A)-1 #last index of A
# pos+length和2*pos+1取较小的即可,避免重复操作,如果较小值仍然大于len(
A),则到len(A)为止
for x in range(pos, min(n+1,min(pos+length, 2*pos+1))):
# set self
if A[x] == 1:
continue
A[x]=1
# set descendants
setbit_down(A,x,n)
# set ancestors
while x>0:
# 如果该节点为1,并且它的邻居也是1,那么父亲也置为1,一直到根节
点为止
if (x%2==0 and A[x-1]==1) or (x%2==1 and x
A[(x-1)/2] = 1
x = (x-1)/2
def clear_bit(A, pos, length):
if not A or pos<0 or length<=0:
return
n = len(A)-1 #last index of A
for x in range(pos, min(n+1, pos+length)):
# clear self
if A[x]==0:
continue
A[x]=0
# clear descendants
while 2*x+1<=n:
A[2*x+1] = 0
x=2*x+1
# clear ancestors
while x>0:
if A[(x-1)/2]==0:
break
A[(x-1)/2] = 0
x = (x-1)/2
第二题能再解释下么,题目没有看懂,有以下几个问题:
1. addTask。在trigger之前把task加入task queue,在trigger之后直接运行task。
前半句能理解,但后半句”在trigger之后直接运行task“是什么意思?
2. 感觉队列会有个长度限制,设为N,trigger感觉就是flush,是消费者,每时每刻都
在不停弹出队首,并且执行task,addTask是生产者,调用一次addTask就把一个task加
入队尾。 请问我的理解正确吗?
3. 另外请问是一个线程运行trigger,另一个线程运行addTask么,还是有多个线程运
行addTask?
4. 如果刚运行trigger的时候发现队列为空,是等待addTask把task加入队列,还是直
接退出
5. 如果刚运行addTask的时候发现队列满了,是等待队列不满,还是直接退出?
下面是trigger为非阻塞(队空退出),addTask为阻塞(队满等待)的情况,请高手指
正,有没有race condition或者其他问题
Monitor:
addTask(task):
if count == N:
wait(NOTFULL)
q.push(task)
count++
trigger():
while q:
task = q.pop()
count--
if count == N-1:
signal(NOTFULL)
execute_task
第三题,还是没能理解楼主“当X+1时,Y的值或者不变或者-1”的意思,我的做法是
,假设圆方程是x*x+y*y=r2,x从0开始,到x*x>r2为止,对每个x,二分搜索y,使圆方
程成立
from sets import Set
def draw_circle_bi_search(r2):
result = Set([])
x = 1
y = 0
while x*x <= r2:
y_start = 0
y_end = x
while y_start <= y_end:
y_mid = y_start+(y_end-y_start)/2
if x*x + y_mid*y_mid == r2:
result.update(Set([(x,y_mid),(x,-y_mid),(-x,-y_mid),(-x,y_
mid),(y_mid,x),(y_mid,-x),(-y_mid,-x),(-y_mid,x)]))
break
elif x*x + y_mid*y_mid < r2:
y_start = y_mid+1
else:
y_end = y_mid-1
x+=1
return result
第四题,参考百度百科http://baike.baidu.com/view/1207363.htm
最后一段 |
h*******e 发帖数: 1377 | 27 这第四轮 最后一题 四个O(1)的解法是什么。 |
h*******e 发帖数: 1377 | 28 hashmap 加 double linkedlist怎样。 |
u*****n 发帖数: 126 | 29 在他们家遇到了两个傻B阿三。一个不停的纠正我的逗号和分号,另外一个给的hints都
是废话。最后挂了。他们家的阿三是我面过的所有公司中最极品的。所以面试他们家要
小心傻B阿三。当然他们家的华人美女HR相当的nice,是我遇到的所有HR中最nice的。
总共面了四轮:
第一轮:定义buddy system为一棵complete binary tree。一个node可能为0也可能为1
. 它的
value为1,当且仅当它所有的child的value均为1.
1
|
1 2
| |
1 2 3 4
| | | |
1 2 3 4 5 6 7 8
实现下列的method。
1' clearBit(int offset, int len);
2' setBit(int offset, int len);
第二轮:设计一个task dispatching system,里面有一个task queue和两个function。
1’ trigger。这个function运行并清空task queue中所有的tasks。
2‘ addTask。在trigger之前把task加入task queue,在trigger之后直接运行task。
第三轮:产生一个圆上的所有坐标。不用sqrt, sin, cos等内建函数。
提示:所有的点都是整点。首先我们可以利用对称性把圆分成8块,先画出0-45度角内
的点,然后映射之。对于其中0-45度角中的点,当X+1时,Y的值或者不变或者-1,然
后放入圆方程中看哪一个是对的。
第四轮:设计一个Map,满足下面的复杂度。
add: O(1) deletion: O(1) lookup: O(1) clear:O(1) iterate: O(number of
elements)。
提示:
如果我们用randomly accessed array,复杂度如下:
add: O(1) deletion: O(1) lookup: O(1) clear: O(size of array) iterate:
O(size of array)
如果我么用sequential array, 复杂度如下:
add: O(1) deletion: O(number of elements) lookup:O(number of elements)
clear: O(1) iterate:O(number of elements)
所以我们需要把这两个方法整合起来。 |
o**********e 发帖数: 18403 | 30 谢谢分享! 祝找到好工作!
希望别的 purestorage的同学
能分享一下经验和观察。
大家去nice一点,支持老中HR吧。
以后记住烙印的名字。 人肉伺候。。。 |
|
|
j******a 发帖数: 55 | 31 赞lz。
第三题还是不明白什么意思?能具体说说嘛?谢了 |
j**********3 发帖数: 3211 | |
t**********h 发帖数: 2273 | 33 不错,准备搞
为1
【在 u*****n 的大作中提到】 : 在他们家遇到了两个傻B阿三。一个不停的纠正我的逗号和分号,另外一个给的hints都 : 是废话。最后挂了。他们家的阿三是我面过的所有公司中最极品的。所以面试他们家要 : 小心傻B阿三。当然他们家的华人美女HR相当的nice,是我遇到的所有HR中最nice的。 : 总共面了四轮: : 第一轮:定义buddy system为一棵complete binary tree。一个node可能为0也可能为1 : . 它的 : value为1,当且仅当它所有的child的value均为1. : 1 : | : 1 2
|
u*****n 发帖数: 126 | 34 已经添加了些细节。如果还不懂请发我message。
【在 j******a 的大作中提到】 : 赞lz。 : 第三题还是不明白什么意思?能具体说说嘛?谢了
|
t**********h 发帖数: 2273 | 35 我也没明白,不可能都是整点吧?必然有不是整数的坐标(x,y)。是不是只要求出所
有整数的(x,y)?
【在 u*****n 的大作中提到】 : 已经添加了些细节。如果还不懂请发我message。
|
u*****n 发帖数: 126 | 36 屏幕上的像素必然是整点啊。需要用整点来模拟圆的形状。
【在 t**********h 的大作中提到】 : 我也没明白,不可能都是整点吧?必然有不是整数的坐标(x,y)。是不是只要求出所 : 有整数的(x,y)?
|
t**********h 发帖数: 2273 | 37 我以为是数学题。搞屏幕上,整数就make sense了。搞出来八分之一挨着对折就好了。
多谢
【在 u*****n 的大作中提到】 : 屏幕上的像素必然是整点啊。需要用整点来模拟圆的形状。
|
y***n 发帖数: 1594 | 38 华人美女HR给楼主留email吗,抓住机会,不要给阿三领先一步。 |
u*****n 发帖数: 126 | 39 当然,面试中没有遇到限制语言的公司。
【在 j**********3 的大作中提到】 : 这家让用java么
|
w********o 发帖数: 440 | 40 不明白这公司有啥去头
为1
【在 u*****n 的大作中提到】 : 在他们家遇到了两个傻B阿三。一个不停的纠正我的逗号和分号,另外一个给的hints都 : 是废话。最后挂了。他们家的阿三是我面过的所有公司中最极品的。所以面试他们家要 : 小心傻B阿三。当然他们家的华人美女HR相当的nice,是我遇到的所有HR中最nice的。 : 总共面了四轮: : 第一轮:定义buddy system为一棵complete binary tree。一个node可能为0也可能为1 : . 它的 : value为1,当且仅当它所有的child的value均为1. : 1 : | : 1 2
|
|
|
m*****k 发帖数: 731 | 41 buddy system,
谁能讲讲?
根据楼主的描述,叶子必然为0,那么就没有node会是1了,
还是我理解错了?
为1
【在 u*****n 的大作中提到】 : 在他们家遇到了两个傻B阿三。一个不停的纠正我的逗号和分号,另外一个给的hints都 : 是废话。最后挂了。他们家的阿三是我面过的所有公司中最极品的。所以面试他们家要 : 小心傻B阿三。当然他们家的华人美女HR相当的nice,是我遇到的所有HR中最nice的。 : 总共面了四轮: : 第一轮:定义buddy system为一棵complete binary tree。一个node可能为0也可能为1 : . 它的 : value为1,当且仅当它所有的child的value均为1. : 1 : | : 1 2
|
u*****n 发帖数: 126 | 42 叶子不一定为0。事实上,这两个function的主要功能就是设置在一个范围内叶子的数
值。而这些数值也会影响到它的祖先的数值。
【在 m*****k 的大作中提到】 : buddy system, : 谁能讲讲? : 根据楼主的描述,叶子必然为0,那么就没有node会是1了, : 还是我理解错了? : : 为1
|
J*********g 发帖数: 96 | 43
为1
谢谢分享,正在准备第一轮电面,有啥经验,难道真的是virtual概念考的很多吗?
【在 u*****n 的大作中提到】 : 在他们家遇到了两个傻B阿三。一个不停的纠正我的逗号和分号,另外一个给的hints都 : 是废话。最后挂了。他们家的阿三是我面过的所有公司中最极品的。所以面试他们家要 : 小心傻B阿三。当然他们家的华人美女HR相当的nice,是我遇到的所有HR中最nice的。 : 总共面了四轮: : 第一轮:定义buddy system为一棵complete binary tree。一个node可能为0也可能为1 : . 它的 : value为1,当且仅当它所有的child的value均为1. : 1 : | : 1 2
|
j**********3 发帖数: 3211 | |
u*****n 发帖数: 126 | 45 因为两侧点的密度不一样。
【在 j**********3 的大作中提到】 : 为什么是1/8不是1/4?
|
j**********3 发帖数: 3211 | 46 木有理解啊。。。
我觉得整个第一个1/4都要自己算一下吧?从1/8到1/4没办法用0-1/4推导出来。。
【在 u*****n 的大作中提到】 : 因为两侧点的密度不一样。
|
u*****n 发帖数: 126 | 47 (x,y) -> (y,x)
【在 j**********3 的大作中提到】 : 木有理解啊。。。 : 我觉得整个第一个1/4都要自己算一下吧?从1/8到1/4没办法用0-1/4推导出来。。
|
j**********3 发帖数: 3211 | 48 额。。。好聪明。。我开始怀疑我智商了。。。
【在 u*****n 的大作中提到】 : (x,y) -> (y,x)
|
j**********3 发帖数: 3211 | |
u*****n 发帖数: 126 | 50 这题的重点是queue是atomic的,那么你应该怎么去lock呢?
如果你这样的题不熟悉,建议你复习下EPI上的相关章节。应该不难。
【在 j**********3 的大作中提到】 : 我能再请教一下第2题怎么做么?谢谢了!
|
|
|
j**********3 发帖数: 3211 | 51 EPI都上来了啊。。。这算哪一章的啊。。。我只看了binary tree, bst, dp的章节。
。。
你面经里。。。我竟然一个都不会。。。
【在 u*****n 的大作中提到】 : 这题的重点是queue是atomic的,那么你应该怎么去lock呢? : 如果你这样的题不熟悉,建议你复习下EPI上的相关章节。应该不难。
|
u*****n 发帖数: 126 | 52 Ch18 Parallel computing |
j**********3 发帖数: 3211 | 53 我去看看,太谢谢lz了。
另外第4题,实在不会clear o(1), 就开贴子问了。但感觉我们都走错方向了。大牛可
否进去指导一下?
贴子的link是:
http://www.mitbbs.com/article_t/JobHunting/32706095.html
【在 u*****n 的大作中提到】 : Ch18 Parallel computing
|
h*******e 发帖数: 1377 | 54 这第四轮 最后一题 四个O(1)的解法是什么。 |
h*******e 发帖数: 1377 | 55 hashmap 加 double linkedlist怎样。 |
u***n 发帖数: 117 | 56 不是很明白这里第一题和第二题。
第一轮: offset 和 len 代表的含义是? (binary tree是以array形式存储?这能解
释offset,但len呢?array的总长度?似乎不太make sense)
第二轮: 这里的考点是在call这两个方法时需要对队列加锁来达到正确性吗?
我基本思路是需要设置一个boolean变量 a 来确认是否已经trigger了。
trigger(){
aquire(mutex_a);
a = true;
dispatch all tasks in the queue;
head = null;
tail = null;
release(mutex_a);
}
addtask(){
aquire(mutex_a);
if(a)
dispatch the task;
else{
if(head == null){
head = task;
tail = task;
} else{
tail.next = task;
tail = task;
}
}
release(mutex_a);
} |
p******o 发帖数: 4 | 57 udben 什么时候onsite? 同样不明白第二题,queue atomic怎么影响lock策略?
【在 u***n 的大作中提到】 : 不是很明白这里第一题和第二题。 : 第一轮: offset 和 len 代表的含义是? (binary tree是以array形式存储?这能解 : 释offset,但len呢?array的总长度?似乎不太make sense) : 第二轮: 这里的考点是在call这两个方法时需要对队列加锁来达到正确性吗? : 我基本思路是需要设置一个boolean变量 a 来确认是否已经trigger了。 : trigger(){ : aquire(mutex_a); : a = true; : dispatch all tasks in the queue; : head = null;
|
I*******d 发帖数: 108 | 58 还是没看懂第一道题。。。一个node可能为0也可能为1
. 它的
value为1,当且仅当它所有的child的value均为1.
就是说不是所有的child的value都为1的话这个node的value可能为0??但题目下面的
这个图怎么不make sense.
还有
1' clearBit(int offset, int len);里面的len是啥意思? |
j****l 发帖数: 687 | 59 有一个child的value为0的话这个node的value为0
--- clearBits(int offset, int len);里面的len是啥意思?
这个函数都是从最下面一层开始clearBit。 将offset到(offse
t+len-1)设置为0。
这个题目假设bit存储在bits[level][number]里。
【在 I*******d 的大作中提到】 : 还是没看懂第一道题。。。一个node可能为0也可能为1 : . 它的 : value为1,当且仅当它所有的child的value均为1. : 就是说不是所有的child的value都为1的话这个node的value可能为0??但题目下面的 : 这个图怎么不make sense. : 还有 : 1' clearBit(int offset, int len);里面的len是啥意思?
|
u*****n 发帖数: 126 | 60 这个解法不是最优解。
【在 u***n 的大作中提到】 : 不是很明白这里第一题和第二题。 : 第一轮: offset 和 len 代表的含义是? (binary tree是以array形式存储?这能解 : 释offset,但len呢?array的总长度?似乎不太make sense) : 第二轮: 这里的考点是在call这两个方法时需要对队列加锁来达到正确性吗? : 我基本思路是需要设置一个boolean变量 a 来确认是否已经trigger了。 : trigger(){ : aquire(mutex_a); : a = true; : dispatch all tasks in the queue; : head = null;
|
|
|
u*****n 发帖数: 126 | 61 正解
【在 j****l 的大作中提到】 : 有一个child的value为0的话这个node的value为0 : --- clearBits(int offset, int len);里面的len是啥意思? : 这个函数都是从最下面一层开始clearBit。 将offset到(offse : t+len-1)设置为0。 : 这个题目假设bit存储在bits[level][number]里。
|
p******o 发帖数: 4 | 62 请问unichen大牛,怎么才是最优,能给一点儿思路吗?atomic operation怎么影响
lock? 明天就要onsite了,心急如焚~~还有最后一题怎么做到clear() O(1), 同求思路
。。
多谢好人!
多谢好人!
多谢好人!
【在 u*****n 的大作中提到】 : 这个解法不是最优解。
|
u*****n 发帖数: 126 | 63 1‘ 考虑啥时候加锁。
4‘ size可以告诉你哪些元素是有效的。 |
y*****i 发帖数: 141 | 64 今天去了个2轮的onsite,问了2和4. 感谢楼主!这公司前途怎么样我不懂,位置太好
了,在castro上。适合爱吃拉面的人。。另外他们家邻居竟然是Quora。。。 |
u***n 发帖数: 117 | 65 谢谢jewwel的解答,那就是说offset 和 len都是指最下面一层的,对吗?另外有个小
细节想请教,用二维数组bits[level][number]存储是他们给出的吗?每个level的
number个数是不一致的,我本来以为他们是要用一位数组来存。
【在 j****l 的大作中提到】 : 有一个child的value为0的话这个node的value为0 : --- clearBits(int offset, int len);里面的len是啥意思? : 这个函数都是从最下面一层开始clearBit。 将offset到(offse : t+len-1)设置为0。 : 这个题目假设bit存储在bits[level][number]里。
|
d*****h 发帖数: 8 | 66 你的onsite是分两次的吗?求分享下你的完整的解题思路,谢谢。尤其是第二题
【在 y*****i 的大作中提到】 : 今天去了个2轮的onsite,问了2和4. 感谢楼主!这公司前途怎么样我不懂,位置太好 : 了,在castro上。适合爱吃拉面的人。。另外他们家邻居竟然是Quora。。。
|
d*****h 发帖数: 8 | 67 LZ, 第一题就是glassdoor上大家说的buddy bitmap吗?这题看起来就很正常啊但怎么
好多人说难。是有什么限制或者follow up吗?
第二题的addTask里说的“trigger之后”是指trigger被调用之后但是还在运行还是指
trigger被调用之后都算?
第四题: 我的解法是用一个Hashmap,加一个field: version。 entry的形式是<
Integer, Node>
class Node
{
int value;
int version;
}
每次clear时map的version++。这样是符合要求的吗?
谢谢~
为1
【在 u*****n 的大作中提到】 : 在他们家遇到了两个傻B阿三。一个不停的纠正我的逗号和分号,另外一个给的hints都 : 是废话。最后挂了。他们家的阿三是我面过的所有公司中最极品的。所以面试他们家要 : 小心傻B阿三。当然他们家的华人美女HR相当的nice,是我遇到的所有HR中最nice的。 : 总共面了四轮: : 第一轮:定义buddy system为一棵complete binary tree。一个node可能为0也可能为1 : . 它的 : value为1,当且仅当它所有的child的value均为1. : 1 : | : 1 2
|
d*****h 发帖数: 8 | 68 请问你是已经onsite完了吗?能分享下你的面经和解法吗?谢谢
【在 p******o 的大作中提到】 : 请问unichen大牛,怎么才是最优,能给一点儿思路吗?atomic operation怎么影响 : lock? 明天就要onsite了,心急如焚~~还有最后一题怎么做到clear() O(1), 同求思路 : 。。 : 多谢好人! : 多谢好人! : 多谢好人!
|
d*****h 发帖数: 8 | 69 如果addTask()不变, trigger()改成
trigger(){
aquire(mutex_a);
a = true;
release(mutex_a);
dispatch all tasks in the queue;
head = null;
tail = null;
}
这样呢?
【在 u*****n 的大作中提到】 : 这个解法不是最优解。
|
j****l 发帖数: 687 | 70 Q: offset 和 len都是指最下面一层的,对吗?
A: yes
Q: 用二维数组bits[level][number]存储是他们给出的吗?
A: yes
【在 u***n 的大作中提到】 : 谢谢jewwel的解答,那就是说offset 和 len都是指最下面一层的,对吗?另外有个小 : 细节想请教,用二维数组bits[level][number]存储是他们给出的吗?每个level的 : number个数是不一致的,我本来以为他们是要用一位数组来存。
|
|
|
s********x 发帖数: 81 | 71 第四题的解法不错,但是iteration的时候,复杂度是O(n),n等于hash size的数量
【在 d*****h 的大作中提到】 : LZ, 第一题就是glassdoor上大家说的buddy bitmap吗?这题看起来就很正常啊但怎么 : 好多人说难。是有什么限制或者follow up吗? : 第二题的addTask里说的“trigger之后”是指trigger被调用之后但是还在运行还是指 : trigger被调用之后都算? : 第四题: 我的解法是用一个Hashmap,加一个field: version。 entry的形式是< : Integer, Node> : class Node : { : int value; : int version;
|
a*********2 发帖数: 187 | 72 请问一下第四轮的那题,
要想做到在hash table里面,O(1)clear, 是否只能选择hash table allocate在连续
的存储空间里,这样最后可以一次全部free掉?
如果这样的话,hash table是不能有任何conflict,也不能在table里面存放链表?
实在没有头绪,请各位指教.
为1
【在 u*****n 的大作中提到】 : 在他们家遇到了两个傻B阿三。一个不停的纠正我的逗号和分号,另外一个给的hints都 : 是废话。最后挂了。他们家的阿三是我面过的所有公司中最极品的。所以面试他们家要 : 小心傻B阿三。当然他们家的华人美女HR相当的nice,是我遇到的所有HR中最nice的。 : 总共面了四轮: : 第一轮:定义buddy system为一棵complete binary tree。一个node可能为0也可能为1 : . 它的 : value为1,当且仅当它所有的child的value均为1. : 1 : | : 1 2
|
a*********2 发帖数: 187 | 73 请问第四题,hash table是否可以认为是理想的,不会产生conflict的? 实在不知道
clear O(1)应该如何才能做到. |
z***y 发帖数: 73 | 74 哈哈哈哈哈哈。
本来觉得他们公司挺好的,结果上glassdoor一看,各种搞笑。
说他们家面试题目有的比较晦涩,给了提示后就更加晦涩啦;有得吐槽,自己压根不懂
C++,简历也跟C++没半毛钱关系,结果电面第一个问题就是C++。
据说他们家的经典题目:
1.C++对象内存布局;
2.Buddy bitmap,应该就是lz说的这个;
3.Draw circle,应该也是lz说的;
4.设计一个key value系统,也是lz说的题目。
Buddy那题感觉是做内存管理的,假设内存池可以支持256K 128K 64K 32K四种大小,那
么就可以理解成一个这种树,可以分配256K必须他下面的2个128k可用,递归下去所有
子节点都要为可用。很好理解。 |
a*********2 发帖数: 187 | 75 unichen的面经里面有四轮的题,请问一下,pure storage的onsite,有第5道题吗? |
h****j 发帖数: 15 | 76 感谢楼主,对于第二题,有些疑问,楼主的描述不太像一个通常的task dispatch
system,一般addtask里不直接运行task的。
请问一下addTask()和trigger()是运行在两个线程里的么?
两个线程共享一个task queue,这个queue需要用锁来保护。
trigger线程里面有一个for loop,不断的从queue里面拿出task执行。如果队列空,停
等。
addtask线程里面不断的将新的task写入queue里面
这个理解对么?多谢! |
u***n 发帖数: 117 | 77 不是很明白这里第一题和第二题。
第一轮: offset 和 len 代表的含义是? (binary tree是以array形式存储?这能解
释offset,但len呢?array的总长度?似乎不太make sense)
第二轮: 这里的考点是在call这两个方法时需要对队列加锁来达到正确性吗?
我基本思路是需要设置一个boolean变量 a 来确认是否已经trigger了。
trigger(){
aquire(mutex_a);
a = true;
dispatch all tasks in the queue;
head = null;
tail = null;
release(mutex_a);
}
addtask(){
aquire(mutex_a);
if(a)
dispatch the task;
else{
if(head == null){
head = task;
tail = task;
} else{
tail.next = task;
tail = task;
}
}
release(mutex_a);
} |
p******o 发帖数: 4 | 78 udben 什么时候onsite? 同样不明白第二题,queue atomic怎么影响lock策略?
【在 u***n 的大作中提到】 : 不是很明白这里第一题和第二题。 : 第一轮: offset 和 len 代表的含义是? (binary tree是以array形式存储?这能解 : 释offset,但len呢?array的总长度?似乎不太make sense) : 第二轮: 这里的考点是在call这两个方法时需要对队列加锁来达到正确性吗? : 我基本思路是需要设置一个boolean变量 a 来确认是否已经trigger了。 : trigger(){ : aquire(mutex_a); : a = true; : dispatch all tasks in the queue; : head = null;
|
I*******d 发帖数: 108 | 79 还是没看懂第一道题。。。一个node可能为0也可能为1
. 它的
value为1,当且仅当它所有的child的value均为1.
就是说不是所有的child的value都为1的话这个node的value可能为0??但题目下面的
这个图怎么不make sense.
还有
1' clearBit(int offset, int len);里面的len是啥意思? |
j****l 发帖数: 687 | 80 有一个child的value为0的话这个node的value为0
--- clearBits(int offset, int len);里面的len是啥意思?
这个函数都是从最下面一层开始clearBit。 将offset到(offse
t+len-1)设置为0。
这个题目假设bit存储在bits[level][number]里。
【在 I*******d 的大作中提到】 : 还是没看懂第一道题。。。一个node可能为0也可能为1 : . 它的 : value为1,当且仅当它所有的child的value均为1. : 就是说不是所有的child的value都为1的话这个node的value可能为0??但题目下面的 : 这个图怎么不make sense. : 还有 : 1' clearBit(int offset, int len);里面的len是啥意思?
|
|
|
u*****n 发帖数: 126 | 81 这个解法不是最优解。
【在 u***n 的大作中提到】 : 不是很明白这里第一题和第二题。 : 第一轮: offset 和 len 代表的含义是? (binary tree是以array形式存储?这能解 : 释offset,但len呢?array的总长度?似乎不太make sense) : 第二轮: 这里的考点是在call这两个方法时需要对队列加锁来达到正确性吗? : 我基本思路是需要设置一个boolean变量 a 来确认是否已经trigger了。 : trigger(){ : aquire(mutex_a); : a = true; : dispatch all tasks in the queue; : head = null;
|
u*****n 发帖数: 126 | 82 正解
【在 j****l 的大作中提到】 : 有一个child的value为0的话这个node的value为0 : --- clearBits(int offset, int len);里面的len是啥意思? : 这个函数都是从最下面一层开始clearBit。 将offset到(offse : t+len-1)设置为0。 : 这个题目假设bit存储在bits[level][number]里。
|
p******o 发帖数: 4 | 83 请问unichen大牛,怎么才是最优,能给一点儿思路吗?atomic operation怎么影响
lock? 明天就要onsite了,心急如焚~~还有最后一题怎么做到clear() O(1), 同求思路
。。
多谢好人!
多谢好人!
多谢好人!
【在 u*****n 的大作中提到】 : 这个解法不是最优解。
|
u*****n 发帖数: 126 | 84 1‘ 考虑啥时候加锁。
4‘ size可以告诉你哪些元素是有效的。 |
y*****i 发帖数: 141 | 85 今天去了个2轮的onsite,问了2和4. 感谢楼主!这公司前途怎么样我不懂,位置太好
了,在castro上。适合爱吃拉面的人。。另外他们家邻居竟然是Quora。。。 |
u***n 发帖数: 117 | 86 谢谢jewwel的解答,那就是说offset 和 len都是指最下面一层的,对吗?另外有个小
细节想请教,用二维数组bits[level][number]存储是他们给出的吗?每个level的
number个数是不一致的,我本来以为他们是要用一位数组来存。
【在 j****l 的大作中提到】 : 有一个child的value为0的话这个node的value为0 : --- clearBits(int offset, int len);里面的len是啥意思? : 这个函数都是从最下面一层开始clearBit。 将offset到(offse : t+len-1)设置为0。 : 这个题目假设bit存储在bits[level][number]里。
|
d*****h 发帖数: 8 | 87 你的onsite是分两次的吗?求分享下你的完整的解题思路,谢谢。尤其是第二题
【在 y*****i 的大作中提到】 : 今天去了个2轮的onsite,问了2和4. 感谢楼主!这公司前途怎么样我不懂,位置太好 : 了,在castro上。适合爱吃拉面的人。。另外他们家邻居竟然是Quora。。。
|
d*****h 发帖数: 8 | 88 LZ, 第一题就是glassdoor上大家说的buddy bitmap吗?这题看起来就很正常啊但怎么
好多人说难。是有什么限制或者follow up吗?
第二题的addTask里说的“trigger之后”是指trigger被调用之后但是还在运行还是指
trigger被调用之后都算?
第四题: 我的解法是用一个Hashmap,加一个field: version。 entry的形式是<
Integer, Node>
class Node
{
int value;
int version;
}
每次clear时map的version++。这样是符合要求的吗?
谢谢~
为1
【在 u*****n 的大作中提到】 : 在他们家遇到了两个傻B阿三。一个不停的纠正我的逗号和分号,另外一个给的hints都 : 是废话。最后挂了。他们家的阿三是我面过的所有公司中最极品的。所以面试他们家要 : 小心傻B阿三。当然他们家的华人美女HR相当的nice,是我遇到的所有HR中最nice的。 : 总共面了四轮: : 第一轮:定义buddy system为一棵complete binary tree。一个node可能为0也可能为1 : . 它的 : value为1,当且仅当它所有的child的value均为1. : 1 : | : 1 2
|
d*****h 发帖数: 8 | 89 请问你是已经onsite完了吗?能分享下你的面经和解法吗?谢谢
【在 p******o 的大作中提到】 : 请问unichen大牛,怎么才是最优,能给一点儿思路吗?atomic operation怎么影响 : lock? 明天就要onsite了,心急如焚~~还有最后一题怎么做到clear() O(1), 同求思路 : 。。 : 多谢好人! : 多谢好人! : 多谢好人!
|
d*****h 发帖数: 8 | 90 如果addTask()不变, trigger()改成
trigger(){
aquire(mutex_a);
a = true;
release(mutex_a);
dispatch all tasks in the queue;
head = null;
tail = null;
}
这样呢?
【在 u*****n 的大作中提到】 : 这个解法不是最优解。
|
|
|
j****l 发帖数: 687 | 91 Q: offset 和 len都是指最下面一层的,对吗?
A: yes
Q: 用二维数组bits[level][number]存储是他们给出的吗?
A: yes
【在 u***n 的大作中提到】 : 谢谢jewwel的解答,那就是说offset 和 len都是指最下面一层的,对吗?另外有个小 : 细节想请教,用二维数组bits[level][number]存储是他们给出的吗?每个level的 : number个数是不一致的,我本来以为他们是要用一位数组来存。
|
s********x 发帖数: 81 | 92 第四题的解法不错,但是iteration的时候,复杂度是O(n),n等于hash size的数量
【在 d*****h 的大作中提到】 : LZ, 第一题就是glassdoor上大家说的buddy bitmap吗?这题看起来就很正常啊但怎么 : 好多人说难。是有什么限制或者follow up吗? : 第二题的addTask里说的“trigger之后”是指trigger被调用之后但是还在运行还是指 : trigger被调用之后都算? : 第四题: 我的解法是用一个Hashmap,加一个field: version。 entry的形式是< : Integer, Node> : class Node : { : int value; : int version;
|
a*********2 发帖数: 187 | 93 请问一下第四轮的那题,
要想做到在hash table里面,O(1)clear, 是否只能选择hash table allocate在连续
的存储空间里,这样最后可以一次全部free掉?
如果这样的话,hash table是不能有任何conflict,也不能在table里面存放链表?
实在没有头绪,请各位指教.
为1
【在 u*****n 的大作中提到】 : 在他们家遇到了两个傻B阿三。一个不停的纠正我的逗号和分号,另外一个给的hints都 : 是废话。最后挂了。他们家的阿三是我面过的所有公司中最极品的。所以面试他们家要 : 小心傻B阿三。当然他们家的华人美女HR相当的nice,是我遇到的所有HR中最nice的。 : 总共面了四轮: : 第一轮:定义buddy system为一棵complete binary tree。一个node可能为0也可能为1 : . 它的 : value为1,当且仅当它所有的child的value均为1. : 1 : | : 1 2
|
a*********2 发帖数: 187 | 94 请问第四题,hash table是否可以认为是理想的,不会产生conflict的? 实在不知道
clear O(1)应该如何才能做到. |
z***y 发帖数: 73 | 95 哈哈哈哈哈哈。
本来觉得他们公司挺好的,结果上glassdoor一看,各种搞笑。
说他们家面试题目有的比较晦涩,给了提示后就更加晦涩啦;有得吐槽,自己压根不懂
C++,简历也跟C++没半毛钱关系,结果电面第一个问题就是C++。
据说他们家的经典题目:
1.C++对象内存布局;
2.Buddy bitmap,应该就是lz说的这个;
3.Draw circle,应该也是lz说的;
4.设计一个key value系统,也是lz说的题目。
Buddy那题感觉是做内存管理的,假设内存池可以支持256K 128K 64K 32K四种大小,那
么就可以理解成一个这种树,可以分配256K必须他下面的2个128k可用,递归下去所有
子节点都要为可用。很好理解。 |
a*********2 发帖数: 187 | 96 unichen的面经里面有四轮的题,请问一下,pure storage的onsite,有第5道题吗? |
h****j 发帖数: 15 | 97 感谢楼主,对于第二题,有些疑问,楼主的描述不太像一个通常的task dispatch
system,一般addtask里不直接运行task的。
请问一下addTask()和trigger()是运行在两个线程里的么?
两个线程共享一个task queue,这个queue需要用锁来保护。
trigger线程里面有一个for loop,不断的从queue里面拿出task执行。如果队列空,停
等。
addtask线程里面不断的将新的task写入queue里面
这个理解对么?多谢! |
x*****0 发帖数: 452 | 98 你好,
请问,如果queue是atomic的,多线程环境下会产生怎样的并发问题呢?
实在想不明白,求解释。谢谢了
【在 u*****n 的大作中提到】 : 这题的重点是queue是atomic的,那么你应该怎么去lock呢? : 如果你这样的题不熟悉,建议你复习下EPI上的相关章节。应该不难。
|
x*****0 发帖数: 452 | 99 请问,也就是说你需要lock,unlock操作来确保queue是atomic的吗?
不是说直接把queue定义成atomic的就成了,比如java中的BlockQueue?
【在 u*****n 的大作中提到】 : 这题的重点是queue是atomic的,那么你应该怎么去lock呢? : 如果你这样的题不熟悉,建议你复习下EPI上的相关章节。应该不难。
|
w********o 发帖数: 440 | 100 昨天一个挺老实的华人被老印老板干掉!敢来几个月。这个公司看来也不靠谱
为1
【在 u*****n 的大作中提到】 : 在他们家遇到了两个傻B阿三。一个不停的纠正我的逗号和分号,另外一个给的hints都 : 是废话。最后挂了。他们家的阿三是我面过的所有公司中最极品的。所以面试他们家要 : 小心傻B阿三。当然他们家的华人美女HR相当的nice,是我遇到的所有HR中最nice的。 : 总共面了四轮: : 第一轮:定义buddy system为一棵complete binary tree。一个node可能为0也可能为1 : . 它的 : value为1,当且仅当它所有的child的value均为1. : 1 : | : 1 2
|
|
|
x*****0 发帖数: 452 | 101 你好,
请问,如果queue是atomic的,多线程环境下会产生怎样的并发问题呢?
实在想不明白,求解释。谢谢了
【在 u*****n 的大作中提到】 : 这题的重点是queue是atomic的,那么你应该怎么去lock呢? : 如果你这样的题不熟悉,建议你复习下EPI上的相关章节。应该不难。
|
x*****0 发帖数: 452 | 102 请问,也就是说你需要lock,unlock操作来确保queue是atomic的吗?
不是说直接把queue定义成atomic的就成了,比如java中的BlockQueue?
【在 u*****n 的大作中提到】 : 这题的重点是queue是atomic的,那么你应该怎么去lock呢? : 如果你这样的题不熟悉,建议你复习下EPI上的相关章节。应该不难。
|
w********o 发帖数: 440 | 103 昨天一个挺老实的华人被老印老板干掉!敢来几个月。这个公司看来也不靠谱
为1
【在 u*****n 的大作中提到】 : 在他们家遇到了两个傻B阿三。一个不停的纠正我的逗号和分号,另外一个给的hints都 : 是废话。最后挂了。他们家的阿三是我面过的所有公司中最极品的。所以面试他们家要 : 小心傻B阿三。当然他们家的华人美女HR相当的nice,是我遇到的所有HR中最nice的。 : 总共面了四轮: : 第一轮:定义buddy system为一棵complete binary tree。一个node可能为0也可能为1 : . 它的 : value为1,当且仅当它所有的child的value均为1. : 1 : | : 1 2
|
w*****1 发帖数: 7 | 104 大神你好,小弟也马上要onsite,buddy system有点问题麻烦大神解答下,我感觉你贴
出的python代码应该不对的吧,之前在别的文章中看到offset 和 len是只针对最后一
层,然后用bit[level][number]感觉更make sense,不知道是不是面试官要求用一维数
组表示的呢?跪谢大神解答!
为1
【在 u*****n 的大作中提到】 : 在他们家遇到了两个傻B阿三。一个不停的纠正我的逗号和分号,另外一个给的hints都 : 是废话。最后挂了。他们家的阿三是我面过的所有公司中最极品的。所以面试他们家要 : 小心傻B阿三。当然他们家的华人美女HR相当的nice,是我遇到的所有HR中最nice的。 : 总共面了四轮: : 第一轮:定义buddy system为一棵complete binary tree。一个node可能为0也可能为1 : . 它的 : value为1,当且仅当它所有的child的value均为1. : 1 : | : 1 2
|
w*****1 发帖数: 7 | 105 大神你好,小弟也马上要onsite,buddy system有点问题麻烦大神解答下,我感觉你贴
出的python代码应该不对的吧,之前在别的文章中看到offset 和 len是只针对最后一
层,然后用bit[level][number]感觉更make sense,不知道是不是面试官要求用一维数
组表示的呢?跪谢大神解答!
为1
【在 u*****n 的大作中提到】 : 在他们家遇到了两个傻B阿三。一个不停的纠正我的逗号和分号,另外一个给的hints都 : 是废话。最后挂了。他们家的阿三是我面过的所有公司中最极品的。所以面试他们家要 : 小心傻B阿三。当然他们家的华人美女HR相当的nice,是我遇到的所有HR中最nice的。 : 总共面了四轮: : 第一轮:定义buddy system为一棵complete binary tree。一个node可能为0也可能为1 : . 它的 : value为1,当且仅当它所有的child的value均为1. : 1 : | : 1 2
|
b*******1 发帖数: 55 | 106 "
就是一个二维数组,但是每层长度不一样,A[0]长度为1,A[1]为2,A[2]为4,依次类
推。每个元素可以为0或者为1,clearBit或者setBit都是说的最后一层从offset开始到
offset+len-1置为1或0
"
【在 w*****1 的大作中提到】 : 大神你好,小弟也马上要onsite,buddy system有点问题麻烦大神解答下,我感觉你贴 : 出的python代码应该不对的吧,之前在别的文章中看到offset 和 len是只针对最后一 : 层,然后用bit[level][number]感觉更make sense,不知道是不是面试官要求用一维数 : 组表示的呢?跪谢大神解答! : : 为1
|