Amazon Phone Interview, 并求建议

原帖地址:一亩三分地

面试官先自我介绍,然后让我介绍一个most pround of project,整个过程大概10分钟, 他没有问具体技术细节只问了一下team组成和具体职责。

然后是CS基础知识: BST vs HashTable (定义,应用,特点,如何实现,complexity), 如何设计phonebook (Tree vs HashTable, 如果内存有限怎么优化,如果要按字母顺序该怎么优化), 语言细节(他想问的是java,不过我用C++他就换了C++的题, abstract class的定义,实现和应用; 继承和多态, virtual function),大概问了20分钟。

之后是coding, 在[size=14.6666669845581px][size=14.6666669845581px]www.collabedit.com 上面写, 看到题吓了一跳,居然是设计并实现扫雷。/*
aa 1. Design a minesweeper game (http://minesweeperonline.com/)
a. A minesweeper game has a board with MxN squares. The squares are initially covered.
b. A square contains one of the following objects
i. A mine
ii. A number – tell how many mines lay hidden in the eight surrounding squares
iii. Nothing – an empty square
c. User click on a square to uncover a square
i. Uncover a mine – game ends
ii. Uncover an empty square – continue playing, all the surrounding empty squares got uncovered
iii. Uncover a number – continue playing
5×6 Tiles

1 1 1 – – –
1 M 1 – 1 1
1 1 2 1 2 M
– – 1 M 2 1
– – 1 1 1 –

d. Focus on
i. Board initialization (randomness, uniformly distributed)
ii. A logic to uncover a square
*/复制代码一共只有不到30分钟时间,我写了Board initialization这一部分,面试官也表示满意。中间包括询问具体要求,讨论方法,coding,告诉面试官C++的syntax和library花了不少时间 (他用java,让我解释了rand(), passing by reference)。第二部分只讨论了一下方法,他顺便问了一下如何优化内存,如何优化设计。因为这时已经1小时了,他给了5分钟让我提问就结束了。

面试感觉挺好,他也说了满意,结果第二天直接来了拒信,正好HR问我的面试感受于是我就回信陈述了一下情况。 又过了一天,HR说和一个senior engineer讨论了面试结果后决定加面,给了两个选项 1. 和另一个面试官电面; 2.做一个code review。不知道选哪一个比较好,请大家给点建议。