`
xiaomijsj
  • 浏览: 20072 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

amazon实习生面试

 
阅读更多

一面:电话面试(四月中旬)

第一次进行电话面试,不过感觉还好,很nice的gg,在面试过程中会适当给出引导,很不错。

1.项目相关

问了做过的项目的一些内容,然后比较详细地解释了一下目前所做的项目,刚开始面试官没有听懂,又在细节的方面进行介绍,最后面试官有点明白了,电话面试就是不太好交流啊。

项目的难点,以及怎么解决这些难点

2.算法相关

比较简单的一道题,一开始头脑短路,但是后来还是给出了比较好的解法。

两个整型数组,存放的都是正整数,第一个数组比第二个数组多个一个数,其他数都相同,怎么快速找出这个多出来的数?

法1,对于数据量不大的情况来说,将第一个数组的累加和减去第二个数组的累加和就得出来了,但是数据量大了就可能溢出了;

法2,将两个数组的每个数进行异或,最后的结果就是多出来的数。

方法1是面试官给的提示,然后叫我想有没有更好的方法,后来我给出了方法2,这个方法明显比方法1要好,令面试官比较满意,也顺利拿到现场面试的机会。

 

二面:两轮一对一面试(5.4)

第一轮

1.项目相关

基本同上

2.算法设计和书写

设计一种洗牌算法,当时就晕了,从来没考虑这个问题啊。。。只好临时想了!

首先,怎么初始化牌的表示?我是这样做的:

  黑桃:对应的数字+13*0(1-13)

  红桃:对应的数字+13*1(14-26)

  方块:对应的数字+13*2(27-39)

  梅花:对应的数字+13*3(40-52)

然后就是核心的洗牌算法了,我想了会,也在纸上写了一下,面试官后来直接给我他的电脑,叫我在电脑上敲,他站在我后面看着我敲,一边还“指指点点”,搞得那个紧张啊!!!

最后还是勉强把想法写下来了,虽然时间复杂度是不很好,算法的正确性也没来得及验证:

借助于哈希表的思想,利用线性探测解决冲突问题,具体想法如下:

  首先,建立一个大小为52的哈希表;

  然后,依次将每张牌初始值+Random(),然后将结果模52;

  最后,将结果放入哈希表,并利用线性探测解决冲突问题。

最后面试官还需要我用一种方法测试这种算法的可行性,就是说牌在每个位置是否是随机的。

想了一个随机进行N次,跟踪牌位置的算法,计算同一张牌出现在同意位置的概率,低于某个概率算法就是有效的。

整个这个算法写下来,并没有让面试官特别满意,第一是没有意识使用OO的思想,第二是验证部分没有想好。

 

第二轮

这个面试官gg感觉要好多了,一直面带笑容,不会的就会进行引导

1.自我介绍

简要说了基本情况。

2.项目相关

基本同上,稍微细致一些,有一些比较好的交流,面试gg很认真的听,还会给出一些见解

3.设计相关

设计一种client端,要求持续与server端连接,要求尽可能考虑全面的情况。

当时就懵了,以前压根就没考虑过这类型的问题,看来amazon还是挺看重实际运用能力,从后面的过程中也可以看出来。

我开始在纸上写了写,后来面试官叫我到前面黑板上给他讲讲,

开始我并没有想得很明白,但是通过与他一步步地交流,自己也清楚了很多。

后来就提取出了client、clientManager、threadPool等方面的内容。

分享到:
评论
1 楼 sunandtwins 2012-06-08  
哈哈,好巧

相关推荐

Global site tag (gtag.js) - Google Analytics