AWS组的Hiring Event,HR联系之后发了OA,通过之后就直接Onsite了。
第一轮:2位三哥哥
- 前20-30 mins BQ
- 一道算法题,给你2个log files,log file有每一个用户的行为,怎么求同时在2个log files中都出现的用户。抽离出中心思想就是intersection of two arrays。
- follow-up:如果有多个文件,比如1000个文件,怎么求?我给的思路是先给每个log file分别排序,然后用Heap做。没让写代码,只说了一下大概的思路。
第二轮:1位白人大爷
- 前20-30 mins BQ
- 说一个你自己的project,然后说high level design,然后说有什么trade off,如何改进。相当于个人简历和系统设计的结合体。
第三轮:1位白人小哥
- 前20-30 mins BQ. check 1point3acres for more.
- 一些简单的很随机的小问题,比如TreeMap和HashMap的区别,用List和HashSet查找有什么区别。
- 一道算法题是Boggle Game,用Trie + DFS的解法。有一点小bug,并无大碍。
第四轮:战斗民族小哥
- 前20-30 mins BQ
- 用Heap来实现Stack,Stack的功能包括Push(int num), Pop(), getMax(), getAverage(),我并没有想出来,小哥提示之后做出来了。
思路大概是定义一个新的class,比如Node类,里面包含attribute包括order和maxVal。所以Heap里装的是这个Node,Heap里的nodes是用order来作为comparator。
因此每次要push一个数字的话,要新建一个Node,然后根据Heap顶元素来确定当前数字的order,并求出当前的maxVal,全部存到Node里面然后push进Heap。
class Node {
int order;
int maxVal;
}
总结:
- 得BQ者得亚麻,这个不用多说了,地里也有不少总结亚麻BQ的帖子,我个人是总结了11个例子,一个例子能套进多个祖训里面。
- 交流很重要,比如最后一轮,思路我并没有想到,但是经过讨论和提示后要能迅速写出来。
- 亚麻Move的很快,Onsite之后第二天就打电话来说通过了。