Amazon面试题# JobHunting - 待字闺中
n*r
1 楼
上周面的,已杯具。有些题不记得了,说点记得的。
第一个是Sr manager,问了工作经历,然后让设计Facebook的news feed,回答用long
polling来达到实时性。被问到这样的话连接太多,回答说用pub/sub来接收消息,再用
long polling来把消息传给web。面得一般,不好也不是太坏。
第二个是Sr SDE。有一组records,每个record由三个参数组成,开始时间,结束时间
,权重。找到一个set,这个set包含的records在时间上没有重叠,并且set的权重之和
最大。一下子想不到好解法,被一直催着写代码,结果连最简单的都写错。还和面试官
争论。面试结束时想到把这个问题变化成图来解决,每个record是图中的节点,如果两
个records没有时间上的重叠,就有一条边,最后找到所有的clique,计算权重之和,
返回权重之和最大的。面试官听了,没什么表情,问了问时间复杂度,说这样大概可行
。这个是面的最差的,我觉得他大概都想把我给直接赶出去。
第三个是SDE,从多个数中找到最大的k个。开始用的是max heap,被指出后,改正为
min heap。还问了些别的,都不难。
第四个是Sr SDE。问如何scale up一个系统,有web前端,数据库,后端模块通过消息
通信。给出一些扩展的方法,看起来他比较满意,相互讨论多过问问题。然后让设计一
个系统,通过电话号码找到人,用了B+ tree,让解释B+ tree的创建和优化。
第五个是Sr SDE,给一个数组,一个数X,找到数组中每一对加起来等于X的数。先给出
经典答案,用hash,时间复杂度O(n)。追问如果不允许用额外的内存,讲了两个解法,
一个是扫描数组,如果这个数小于X的一半,用X减去这个数的差来代替这个数,然后排
序,再扫描数组,找到临近值相等的数。另一个是排序,扫描数组,对每一个数Y,折
半查找X-Y。然后让白板写程序,还不错,一次写对,没有bug。还问了别的题,都不难
。
第一个是Sr manager,问了工作经历,然后让设计Facebook的news feed,回答用long
polling来达到实时性。被问到这样的话连接太多,回答说用pub/sub来接收消息,再用
long polling来把消息传给web。面得一般,不好也不是太坏。
第二个是Sr SDE。有一组records,每个record由三个参数组成,开始时间,结束时间
,权重。找到一个set,这个set包含的records在时间上没有重叠,并且set的权重之和
最大。一下子想不到好解法,被一直催着写代码,结果连最简单的都写错。还和面试官
争论。面试结束时想到把这个问题变化成图来解决,每个record是图中的节点,如果两
个records没有时间上的重叠,就有一条边,最后找到所有的clique,计算权重之和,
返回权重之和最大的。面试官听了,没什么表情,问了问时间复杂度,说这样大概可行
。这个是面的最差的,我觉得他大概都想把我给直接赶出去。
第三个是SDE,从多个数中找到最大的k个。开始用的是max heap,被指出后,改正为
min heap。还问了些别的,都不难。
第四个是Sr SDE。问如何scale up一个系统,有web前端,数据库,后端模块通过消息
通信。给出一些扩展的方法,看起来他比较满意,相互讨论多过问问题。然后让设计一
个系统,通过电话号码找到人,用了B+ tree,让解释B+ tree的创建和优化。
第五个是Sr SDE,给一个数组,一个数X,找到数组中每一对加起来等于X的数。先给出
经典答案,用hash,时间复杂度O(n)。追问如果不允许用额外的内存,讲了两个解法,
一个是扫描数组,如果这个数小于X的一半,用X减去这个数的差来代替这个数,然后排
序,再扫描数组,找到临近值相等的数。另一个是排序,扫描数组,对每一个数Y,折
半查找X-Y。然后让白板写程序,还不错,一次写对,没有bug。还问了别的题,都不难
。