面试(转载)
首先来个小测验,看你能看懂多少
1.array,list,BST,Hashtable,queue,stack,suffix tree,collection...
2.BFS,DFS,DP,D&C,Greedy,Dijkstra,tree traversal,recursion,quick sort...
3.A,F,G,L,M,O,T,Y...
4.OOP,GC,Polymorphism,interface,abstract class,singleton...
5.bar raiser,white board programming,lunch interview...
如果以上任何概念不能熟练给出详细解答,请在往下面看之后抓紧复习1.数据结构(这个如果一个没看懂可以按后退关窗口了)2.算法3.公司背景4.面向对象编程5.onsite流程.全看懂了也别骄傲,这其实只是很简单的小测验,拿笔每行接着写10项.
[公司面试心得]
下面按照公司我大概讲讲面试题的注意事项,由于有不少是1年前的题目,记得不太清楚,我以框架为主,后面主要讨论复习要点和经验教训:
A:phone interview会问到关于OOD的概念和设计,onsite有问过题:数组找定和,Hash table溢出, sBST,Rome letter,GC设计,byte[] getIP(int),deadlock,优化搜索速度.数组求定和是最最常见的问题,基本每两个interview就有一个问这个,后面还会说到,一定不要陷入固定思维,自己多想想不同的condition下的解答.听说最近在狂面人,可以在linkedin上面直接找到HR要面试.
F:现在已经很难进了,主页能找到一些puzzle,很多很tricky,不过也还算不难,觉得普通面试题缺乏挑战的童鞋可以拿做当onsite前热手,phone里面主要是基础题目,只记得链表反转,以OOP为主,没有onsite过. http://www.facebook.com/careers/puzzles.php
G:被问到都是非主流问题和设计,什么"估算躺在地上硬币总价值",无语.设计也都是开放性的,没啥参考价值,可能天生相克吧.
L:很注重java的概念,例如hash原理,多态,继承,gc等的深层概念和implementation,对于概念有点要求的过严了,但是还算是让人向往的公司吧
M:注重flawless的编程,pointer的操作(能用array/bitwise不要用hashtable),DP, dictionary/index,recursion.最近狠狠的涨了一下工资,让人很眼红的说
O:基本只看GPA3.8以上或者内荐,面试主要是algorithm,SQL
其实我大公司的面试经历不算多,也只能这样点到为止,但是还有一些公司,招人规模不及以上,但是我也稍微点评一下.
Bloomberg:变态的测试,据说除了c的测试外其他没有过的记录.面试也是集中与算法和数据结构,以c/c++为主要背景,压力大工作辛苦薪水高,一但进黑名单貌似是永远不会考虑了
ebay:招人不是很给力,最好内荐,OOP为主,一流的流量一流的薪水二流的软件,我的意思不是说ebay不好,而是说其实他家软件,尤其比起A来,还有很大上升空间,其实趁着软件还不够好参与开发是种机会,你懂的
rapleaf:漫天广告,实际上没啥诚意,现在市场转好,建议不要考虑
D.E.shawn/two sigma/citadel:面试门槛很高,但是效率也很高,舍得花钱,就是录取率不高,建议阅读相应金融知识,并且有相关实习经验或者大公司背景,new grad很有难度
laserfiche:坑爹专业户,如果你从没onsite经历可以去一下,否则就是浪费时间,薪水超低(尤其以LA为背景)
ning:新兴social network,100人不大但也还算不错的startup,不过他们manager很对不起我,估计我这辈子是不考虑了,推荐想做social network但是去不了F,L,T的
quantcast:强烈推荐,感觉非常棒,但是codetest也很难,时间很紧张,2个小时测试,到点的时候只写出2/7个答案,4小时写出完美程序,大概200行的样子,加上10个testcase,然后就悲剧了,估计就是嫌我慢
addepar:很个性的公司,先一轮phone,然后做蚂蚁大战,时间不限, http://addepar.com/challenge.php,要是我在学校可能还有心情测一测根本不太可能静心给他做这个,若是能达到400-600turn过关,那么可以拿到下轮面试,你要是觉得自己很牛没有题做,试试这个
epic:狂招人,面试比较简单,需要准备presentation,有性格测试
cisco/emc/ibm/adobe:感觉对local看的很重,不太招外州的人
yahoo/SAP:没落中,需求量越来越小
apple:对SDE需求不大,有些ee的职位,手机卖这么好,没听有招人(店面不算)
GS/UBS/Citi/boa:看重GPA,如果你喜欢做纯技术,去了会后悔的;如果想做金融软件,但是达不到bloomberg和hf标准,是个不错的跳板
fiverings:很小的HF,10几个人吧,问一下brain teaser和古怪的程序,有兴趣可以试一下,老板是从jane street出来自己做的
其实还有数不完的公司,不过本人主要经历也就这些.
[复习清单]
我只列出关键字和一些特别注意的要点,其实一个词可能包含无数知识点:
Array(pointer)
list(reverse,loop,ring)
tree(traversal,search)
sort
queue/stack(BFS,DFS)
hash table
string(suffix tree)
recursion
graph/greedy
divide and conquer
dynamic programming
bitwise
OOD(GC,serialization,exception,UML,singleton)
regular expression
deadlock/multi-thread
I/O,memory,buffer
testing(unit test,white box,black box,development cycle)
Network(TCP/IP,socket)
SQL(index,bcnf,3nf,optimization)
Scale(distributed system)
Security(buffer overflow,protocol)
Machine learning/AI
probability(bayes)
Web programming
最后是behavior(strength,weakness,goals)
参考书和网站:
crack the technical interview(强烈推荐)
programming interviews exposed(强烈推荐)
编程之美
data structures with java
algorithm design
database management system
computer networking
thinking in java
thinking in c++
software testing
java how to program
http://www.mitbbs.com/bbsdoc/JobHunting.html (还用多说么)
http://www.careercup.com (会上面的题不代表就能过面试!)
http://www