中级农民
- 积分
- 128
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2011-2-8
- 最后登录
- 1970-1-1
|
本帖最后由 darksteel 于 2011-4-26 02:33 编辑
好些天之前发的,怎么这会突然冒出大量求经验的 。。为了回报社会,简单介绍一下过程。
申请Amazon的intern一般三面,一般一上来给你安排两个,感觉算是一轮的,有时候甚至是背靠背在同一天的。如果面的还行,就会有第三面。
别的有些公司的intern申请也有点类似,三个电面无onsite,细微之处有点区别。
简单说下涉及的技术问题:
1.多态和重载的区别.--
我不是特别清楚他到底期待什么,只能从定义正面说说,再扯点自己的理解。如果有人对这个问题有比较深的理解,还希望能帮忙指出答题的要点。
2.一个OO design的问题。设计一些类表示那些二维图形,三角,矩形,圆之类的。
这我也不是特有把握。本科时候记得有类似的作业,先定义个shape基类,然后派生出各个图形的类。我也就凭感觉说说。
他还问些细节,比如要设置哪些成员变量。还进一步要求两个成员方法draw和rotate,包括函数签名的设计(需要哪些参数),大概怎么实现。
这是我第一次电面,经验不是很丰富,这些问题本身也有一定开放性,到现在我也不知道他最期待的是什么。只是感觉这类设计问题不一定要答的很完美,说清楚自己的考虑,让他感受到你的思维就好。另外尽量体会他想要的是什么。有时候面试官想引导你说出某个结论的话,能感到比较明显的倾向。
3.编程题:判断一个二叉树是否是BST
这个网上肯定能找到,方法有不止一种。
好像可以这么做:先判断根节点,取其左儿子的最右边的后代和右儿子最左的后代,判断是否满足大小关系,然后再递归判断两个儿子。
好可以这么做:判断中序遍历是否满足条件。递归的做法好像得用个全局变量。这题我不太记得网上现成的结论,这些都是事后跟别人讨论以后自己总结的。
当时我用的方法是,递归的判断,设置上下界。大概这样的 ..
bool isBST(root, x, y)
if(root == NULL) return true;
if(root->v < x || root->v > y) return false;
return isBST(root->left, x, root->v) && isBST(root->right, root->v, y);
初始的时候x,y传入负无穷和正无穷。这个方法由于没有测试过,我不敢确定是否正确,感觉上是可以的。当时面试官似乎很满意,这个可能不是他期望的方法。.google и
另外说一句,Amazon的编程题是你在纸上写完之后念给他听 ,方式上比较落后。
4. 找一个数组中和为给定值的pair的个数。. 1point3acres.com
careercup上的题,网上也见过,先说了排序后从两头扫描的方法,然后他引导我说出hash的方法。有时候先说说朴素方法感觉总是没错的,这样会有递进的余地。. 1point3acres
5.给定n个元素的数组a,求数组b,b = a[0]*a[1]...a[i-1]*a[i+1]...a[n-1]。
这个题网上肯定也能找着。先说了算出所有a的乘积然后每次除以b的方法,问有什么情况不行,答有b为0的情况,问怎么解决,答统计0的个数,多于1个0则b全为0,一个0的话单独处理这个就可以其它位置b都是0。然后他引导我说出另外的方法就是另外定义两个数组,c=a[0]*a[1]...a[i-1],d=a[n-1]*a[n-2]...a[i+1],然后根据c和d算b的方法,并问复杂度。. check 1point3acres for more.
这题是要念给他听的,注意细节。另外他期望对输入进行些检查,比如a是否为null。这题他不期望处理乘积超出整型的情况。. From 1point 3acres bbs
. 1point 3acres
6.谈谈的hashtable的理解,说说解决冲突的方式和各操作的复杂度。
很平凡的题,解决冲突有chaining和linear probing等,对这些常用数据结构还是要熟悉些。
7.给定一个n,求小于等于n的最大的斐波那契数。. 1point 3 acres
就是递推上去,不用考虑太精密的logn算法。他想考验的是中间可能会有超出整型范围的情况。一开始先正常写,他提出这一点之后改变一点实现,做些判断就好,当然能自己提到这一点更好。. .и
. check 1point3acres for more.
面试过去有一阵了,不知是否遗漏什么细节,但大体应该就是这样。感觉要谨慎但自信,说出方法前多考虑一下,但一旦说出来要感觉很有底气,哪怕实际并不是这样。真要是自己发觉说错了,还是赶紧提出来,总比他指出来强。先说说朴素的方法总没错。编程题写之前先把思路说给他听应该也没错,对自己的方法的复杂度要清楚。上面这些都是技术的部分,其实面试受很多因素影响,还是要准备的全面些。感觉Amazon实习的门槛不算很高,但待遇貌似挺好,并且听说Amazon的实习生留下来的机会相对比较大。对我来说,项目经历比较少是软肋,希望能借此机会丰富下背景,以后找fulltime的时候选择更多些,从这个角度来说Amazon其实还是个不错的选择,做的东西比较主流。这个面经实在是比较朴素,题都不算很难,大家有什么评论和看法,欢迎指教。 |
|