z***e 发帖数: 58 | 1 估计是跪了
简历题, 网站架构方面。
第一道题 nondetermistic testing 怎么测试, 这个题卡住了 不知道怎么回答。
第二题: 有序数组中查找第一个出现的数,数组里面可能有重复。 做完之后写test
case,如何设计test case, 考虑哪方面, 感觉还行。
第三题: 就是这个题把我整跪了,
def inc:
while True:
v = v + 1 //---A
set(s) // ---B
def disp:
while True:
wait(s) //---C
print v //----D
求输出序列的可能情况 v 是shared value 初始为0
s是binary semophore 初始为0。set(s) 置s为1,wait(s) unset s 并且blocking。
第一问 0 是否能输出, 回答 不能,因为会blocking , OK。
第二问, 后面的情况,会输出什么样的递增数字, 我一想执行序列可能为 ABABCD,
这样的话 有些number 就missing了,然后他问是否任意的都missing? 我说是,然后
OK,他问我 能否重复出现数字,我回答如果重复的话 就是CDCD 就waiting了。。然后
我知道悲剧了,因为他给个例子。。 ABCABDCD, 这样的话就有两个重复,然后又问我
能否多次重复,我就抽自己嘴巴了,说能,然后就没时间了,后来发现其实是不能的,
最多重复两次
另外求大神指导 这种多线程题怎么准备啊。 |
s**x 发帖数: 7506 | 2 semaphore set 应该是 增加 1,不是单纯的set 1, 所以 可以 inc inc inc disp
disp disp, 所以重复是可能的。
你可能被set 误导了, set 就是 signal,就是可用资源数加1. |
z***e 发帖数: 58 | 3
他说是binary semaphore。。。
【在 s**x 的大作中提到】 : semaphore set 应该是 增加 1,不是单纯的set 1, 所以 可以 inc inc inc disp : disp disp, 所以重复是可能的。 : 你可能被set 误导了, set 就是 signal,就是可用资源数加1.
|
T******e 发帖数: 157 | 4 多谢lz分享经验
想问下第二道题是怎么回事
然后坐等大神解答第三道题 |
T******e 发帖数: 157 | 5 第三道题是不是跟平台什么的有关,具体看sheduler? |
z***e 发帖数: 58 | 6 不是的 就是两个线程 不知道何时会调用 所以应该考虑所有的abcd 交错的情况。 他
后来给的又重复的情况的trick太难想了 。不过也应该能推导出来。 |
z***e 发帖数: 58 | 7
第二道题就是有序数组 然后给你一个key 求第一个key出现的下标 数组里面的数字可
能有重复
【在 T******e 的大作中提到】 : 多谢lz分享经验 : 想问下第二道题是怎么回事 : 然后坐等大神解答第三道题
|
h*******0 发帖数: 270 | 8 第一题nondetermistic testing是什么东西? 能详细说说吗? 谢谢 |
h*******0 发帖数: 270 | 9 二分查找加点小变化?
【在 z***e 的大作中提到】 : : 第二道题就是有序数组 然后给你一个key 求第一个key出现的下标 数组里面的数字可 : 能有重复
|
z***e 发帖数: 58 | 10
就是测试多线程并发的状况,比如说好几个线程一块run,不过当时他没有继续dig
into,看我不会就move on了。我后来查了一下,就是如何测试多线程的程序。 不过当
时没想起来。。。 郁闷。
【在 h*******0 的大作中提到】 : 第一题nondetermistic testing是什么东西? 能详细说说吗? 谢谢
|
|
|
z***e 发帖数: 58 | 11
这个题很经典来的,就是 1 , 2, 2, 2, 查找 2 返回1 ,也就是第一次出现的下
表,二分查找就行了,中间需要改一点点。我当时好像这个思路:
while(low < high)
{
mid = low + (high - low)/2;
if(num[mid] < key)
low = mid + 1;
else
high = mid;
}
恩 这个比较直接,也不难。
【在 h*******0 的大作中提到】 : 二分查找加点小变化?
|
a*********0 发帖数: 2727 | 12 这个用hook?或者tight loop?
【在 z***e 的大作中提到】 : : 这个题很经典来的,就是 1 , 2, 2, 2, 查找 2 返回1 ,也就是第一次出现的下 : 表,二分查找就行了,中间需要改一点点。我当时好像这个思路: : while(low < high) : { : mid = low + (high - low)/2; : if(num[mid] < key) : low = mid + 1; : else : high = mid;
|
n*****f 发帖数: 17 | |
j****3 发帖数: 129 | 14 请问是fresh grad 的职位吗?
【在 z***e 的大作中提到】 : 估计是跪了 : 简历题, 网站架构方面。 : 第一道题 nondetermistic testing 怎么测试, 这个题卡住了 不知道怎么回答。 : 第二题: 有序数组中查找第一个出现的数,数组里面可能有重复。 做完之后写test : case,如何设计test case, 考虑哪方面, 感觉还行。 : 第三题: 就是这个题把我整跪了, : def inc: : while True: : v = v + 1 //---A : set(s) // ---B
|
x*****0 发帖数: 452 | |