Monday, March 23, 2015

典型有计划有目标找工经历



from here



先说下背景
master一年半项目毕业,gpa 3.6,修了一些distributed system方向的课。lc刷了3遍,cc150 两遍,glassdoor大致看了看,面试遇到的题目八九不离十。从去年九月份学校的career fair到年底签字,前后花了三个月找full time。一共认真面了11家公司,拿到GF等8个offer,最后从了G。

面试经过
1. AutoDesk: 按组招人。面的三番的office,电面一轮随便聊聊,直接就onsite了。面试当天三番交通非常堵,傻乎乎从南湾开过去,差点迟到。好在几轮面试都很简单。AutoDesk很像一个老人公司,所有面试官都是从senior 到principle,再到architect级别的。越是级别高的面试官越不会问算法题,聊聊对开源项目的理解,手上的project,谈笑风生一下就可以了。
2. HP Vertica: 按组招人。这家是在学校的careerfair投的,on campus面了一轮。因为是做数据库的公司,问到很多ds的设计问题,基本上课堂的理论就能应付。第二轮对方发过来一段代码,让你改进,提高效率,这个时候刷题锻炼出来的各种排序算法,复杂度分析就有用了,几个小时之内提交搞定。最后是去on site,按组招人的一个特点就是面试几轮不定,一般都是和组里的骨干一一见面,让大家觉得你不太差才可以。on site很顺利,题目也都不难。
3. Bloomburg: 统招。大B是非常想去的一家公司,传说逼格很高,整个面下来也确实如此。On campus面了一轮,两个面试官一个白练一个红脸,问了重复率很高的一道题,直接最优解答复,他们很高兴。On site的时候传闻如果面不到四轮就基本挂了,这个在我这得到证实。早上面试之前会发一张100刀的gift card,然后面试官过来领人。第一轮面的不错,谈笑风生。第二轮栽在了一个亚裔手上,看气场很像manager,非抓住c的东西不放,从头问到底。虽然面大B不一定要c和c++,但是如果简历里面出现,还是会被面试官抓住不放,几轮都是如此。所以对c++不熟,还是不要把相关项目放进简历了,哪怕列在最后一个也会被揪出来,因为面试官自己不懂java,所以肯定要去找自己明白的地方下手。第三轮是个hr,聊了之后被赶出。
4. Epic: 统招。前面面的不好,尤其是大B给我打击很大,于是海投各种公司,有点不淡定。Epic门槛比较低,电面瞎聊没有题,然后online做题,网上可以搜到无数真题,原封不动,看个三四个小时很足够了,最后的编程题居然不需要编译就可以了。On site就是一个tour,各种参观,话说他们的campus真的很漂亮。当地消费很低,Epic给的公司两三年就能买房了。全部行程的费用各种报销,非常大方,给个赞!
5. Yahoo:组招。学校careerfair,网申,内推都投过,等了两三个月终于有一个Director发信联系,介绍了自己的组,都是些非常火的big data的技术,问有没有兴趣面个试。拿到这个面试非常激动,Glassdoor上面搜了好多面经。电面两轮,果然和传闻一样,整个一个开心辞典,把java基础知识问了个底朝天。电面都没上coding,全是凭空胡侃。然后onsite去了sunnyvale的总部,我迟到了十分钟,烙印面试官看起来很忙的样子,有点不爽,上来也不寒暄,直接上题,记得是一道关于二叉树的,开始没想出来,后来他给了提示,还是勉强做出来了;第二轮白人director亲自上,开始问了些java虚函数的东西,我完全不会,他有点不爽;后来问了leetcode的原题,我用标准解法做出,他很满意,也把之前的不爽冲淡了些,开始谈笑风生,老白还是很容易满足的。
6. Ebay:组招。很早网申的,过了好久才有消息。一个国人manager的组,一看schedule,四轮面试三个中国人,心想妥妥的了。直接驱车前往onsite,和国人大哥们聊得很开心啊,题目也非常简单,是他们放水。。。心里一直觉得妥妥的。最后一轮是个烙印,描述了半天问题自己也没说明白,总是试图补充,二十分钟之后我断定这家伙是个二百五,对分布式key-value数据库完全不了解,还试图装作自己很懂。我那个无语了,都不想理他了。onsite之后被hr告知director要我去加面一轮,估计就是烙印那轮没过,报告了同样是烙印的director。去了之后director也没寒暄,直接出题,lc原题,我五分钟接触,然后他说this is a easy question,然后follow up,我想了半天写出来,他看了眼直接说very buggy,我当时就明白就是故意难为我,也不想和他follow up了。
7. AppDynamic:组招。三番的一家做网站性能分析的startup,非常有朝气,里面的人也非常牛逼。面我的都是senior,director级别的工程师,谈话很顺利,交流起来非常愉快,完全没有架子或者当面试官一口要吃掉你的感觉。startup的气氛我还是很喜欢的。现在想想startup style真的可以从细节当中体现出来。聊了很多开源项目,主要都是我在说遇到的各种bug,然后他们说,啊,这个bug是因为什么什么。。。顿时觉得被大神笼罩。
8. Nutanix:组招。非常有前景的一家公司,计划今年上市。面的偏前端网站的组,组里人不多,聊了六七个人,都非常愉快。有一轮techlead面,有一题卡住了,他直接告诉了我正确答案。感觉面试最后能不能中主要取决于组里有多缺人。
9. Linkedin: 统招。终于迎来了三巨头的第一站。面试之前重刷了lc,glassdoor上面面经又看了一遍,信心满满。L家的特点是题库小,原题重复率特别高,个人感觉把glassdoor做过一遍就差不多了。电面一轮,两个白人小哥,出了两道原题,我半小时那些,然后小哥就是,一般呢我们是要面五十分钟的,要不你再做一道,或者问问题。我果断说不做了,随便聊聊吧,心想做了两题已然拿下,万一第三题出了岔子就太亏了。onsite是一个campus day,早上大家先聚餐做游戏自我介绍,折腾两个小时,然后十点多才开始面试。一共四轮,一轮design,一轮纯聊天,两轮coding。前三轮都非常顺利,心想八九不离十了,把我带走吧。最后一轮coding三姐出了个题我一下子卡住了,她给的hint不多,可能自己也理解的不透彻,只是从某处找了题和答案过来考。我只能硬着头皮想,最后也没弄出来,三姐还说don’t worry,人挺好的,但是题真的是没做出来。开始还觉得三姐估计为难,结果回家一看glassdoor,擦,第一页第三题!!
10. Facebook: 统招。三巨头第二家,听说F今年大扩招,广发offer。临近毕业,和hr说时间比较赶,直接去onsite了,五轮。四轮coding,一轮manager,整体发挥不错,题目比较接近lc。有一轮国人面试官问对sql的底层了解多少,我顿时没话说了,如实答不怎么懂,然后就开始听他滔滔不绝,面试的最后还说good,我都不好意思了。国人大哥还是非常帮忙的。
11. Google: 统招。面试季的收官之战。说实话虽然刷了很多题,看了很多面经,听了很多算法课,但是面对G还是发虚的,原因就是题目太灵活多变,范围不确定,和面试官关系很大,一句话,就是看人品。所以面试之前还是抱着虚心求虐的态度去的。第一轮是个烙印面,出了题目和我讨论了一会,然后我开始coding,他说他要查查公司的邮件,让我不要介意。写完代码他问finished?我说yes,他花了十秒钟扫了一遍,就说好,开始用手机牌照了,完全没有要challenge我的意思,就这样水果了。第二轮国人大哥,非常帮忙,全程汉语,而且给了个灰常简单的题目,还被我写出几个bug,他也没在乎,改过来就好了。后面两轮都是老白,题目不难,也没有challenge。


一点小体会
1. 刷好题就完成90%了
一般技术面试前五分钟闲聊,可以当做热身,真正有用的是实打实的coding。遇到开心辞典一类的面试,基础知识也重要。极端的想,假如口语留意可以聊的风生水起,但是coding不过关,面试官还是会记下一笔。现有coding的硬实力,交流上面不太差就足够了。
2. 面到最后,面的最好
可以明显的感到公司招人时的心态是不一样的。一般公司都是前紧后松,开始筛选小心翼翼,只要最好的一类,然后过了一两个月,牛人都拿到offer然后拒了这家公司,hr发现名额没满,就开始放水。另外,个人觉得快到年底,面试官的心态越放松,出题难度有所降低。从自己的角度看,开始的几个面试因为没有经验,面试紧张,发挥不一定好,越是到了后面心里准备越充分,各种难题,硬场合,屎面试官都见多了,也就来着不拒了。所以我自己的策略是开始面入门级的,不是真心想去的公司,然后开始增加难度,挑战一下,面面startup。经过了极简单和极难,最后心态平和的去面最想去的公司。

最后
准备面试的过程中从地里获得了大量的信息和帮助,入职G之后希望帮助大家内推,尽自己的一份力。刷完了题,做好了准备的童鞋可以把简历和一小段英文自我介绍(自己的强项,优点)发到我邮箱,我一定第一时间帮大家内推。gneitui2015@gmail.com
非new grad请到https://www.google.com/about/careers搜下职位一起发给我吧。

Tuesday, March 17, 2015

Google面经



from here




这周之内刚刚面的,趁还没忘,记下来给大家分享一下。因为签了NDA不想混不下去,具体题目内容就不说了,大概以leetcode难度为参考说一下。

总体感受:难度不是特别大,着重用算法知识解决问题的能力(当然还有算法复杂度分析的方法)。个人觉得Cracking the Code Interview里三句话很重要:

1. 做过的题就老实说做过了;

2. 如果你想要做任何假设,请先和面试官确认,尽量别等他/她问;

3. 重新看一遍你找工作时给recruiter的简历,确保别人问到上面的每个项目你都说得出来。




早上第一位面试官(第一位就迟到了,差点误了整天的日程)好像比较junior,所以问的问题比较入门+标准:

1. (easy)二叉树输出

2. (easy)矩阵输出

note: 第二题上来就花时间想了时空复杂度最优的方法,所以也没什么follow-up的讨论。




第二位显然比前一位淡定多了,可能是看前一位问的太简单了,所以加了一点难度:

1. (easy/medium)大量数据找少量最大值

2. (medium)字符串分割相关

notes:

1. 第一题是常见套题,就不细说了;

2. 第二题写了一白板的code,不过我先讲了思路,然后follow-up questions也回答上来了,估计面试官还算满意。

3. 第二题限于面试官约束的数据结构,写出的不是平均时间复杂度最优的方法。




中间是午饭不叙。




第三位目测介于上午两位中间,还没看同事问过什么问题,就甩出了一个和上午第一位本质类似的问题。我老实说我已经答过了,他又甩出了这个问题的扩展版:

1. (easy/medium)二叉树输出的扩展版,区别在于二叉树里的数据都有规律,问怎么迅速输出某一个节点的值,我用了log(N)的方法(懒得算数学的情况下是最优的);

2. (easy)多路数据合并。

notes:

1. 第一题有follow-up是问怎么写test case测试我的算法是对的;

2. 第二题也是常见套题的变形,主要是实现细节;

3. 面试官问了很多简历上的问题。




第四位面试官感觉可能是四个人里最senior的,临时顶替另一位同事都毫无压力。只甩出了一个他自己的原创问题,看我怎么解决。
notes:

1. 问题细节不便透露,但总体来说是一个很开放的问题,他在不断观察你设定了什么假设,以及利用你的知识背景做出的什么样的决定;
2. 有什么疑问随时和面试官交流,在这种开放性问题里这个很重要;

3. 在面试官提示的时候积极思考解决方案,尽量不要让他指出你的bug,并给出合理的解决方案;

4. 这位面试官是street view组的,所以问的问题里面工程性的坑非常深,需要你做出很多合理假设,并规避一些可能存在的现实问题。

Saturday, February 28, 2015

总结

发信人: Sneijder10 (斯内德), 信区: JobHunting
标  题: 发点面经回馈下本版的帮助
发信站: BBS 未名空间站 (Fri Feb 27 16:11:53 2015, 美东)

从去年11月份开始,一直在本版向各位大牛取经学习。 最近刚刚接了M家的offer,job
hunting终于告一段落,虽然失败了很多,面试拿的也少,但对于一个非cs phd的背景
,已经很知足了。我背景是engineering,主要就是写code,做模拟,能转行主要是因
为学了些并行计算的东西,研究中写了大量的code,读了我们这个领域的一个famous 
open source code,从professional programmer里学到了很多实践经验。 虽然有些经
验,但实际找工作工程中大多数公司理都不会理我,Airbnb一个recruiter跟我说过一
些,大概意思就是说每天收到太多简历,对于非CS学生,仅仅从从简历上很难看出什么
, 所以非CS学生争取能多修几门cs的课,把keyword放上去。不然就像我一样,就是内
推也被拒或者石沉大海,这里面包括了很多本版好心的人帮我内推的,有ebay, 
linkedin, twitter, oracle 等。 在这里也想对帮助过我的人说声谢谢,以后我也会
帮助国人。

leetcode是从去年11月份yahoo是onsite失败后开始刷的,刷了一遍半,看了cracking 
the code的书,但是没有做每一道题,看了一部分algorithm的textbook, 在
careercup,glassdoor还有本版上找了很多面经。 Onsite 挂的公司有 Y家,G家,F家
, 电面挂的是Airbnb, 拿到的offer是 ServiceNow, M家, Bloomberg。 Wolfram的电面
了2个组,后来主动放弃了。 唯一的建议就是,如果你的dream company是FLG, 就好
好刷题吧,至少2遍, 而且是在纸上, 除非你是天才。。。 我错就是错在很长一段时
间都是在电脑上写了

每个公司面试的经历都不太一样,一家一家说说吧。 

Y家是去年11月面的mail组,都是阿三,但是考的题都不太难,主要当时还没怎么刷题
,很多data structure都不太熟,挂得很快,现在想来,真的很遗憾,感觉人家根本没
想难我,是我太挫了。。。 如果想去湾区,去不了你的dream company,Y家应该是一
个很不错的选择,从本版的反馈,Y家是可以学到很多知识的,而且他家现在想翻身,
很努力的再招各种talented people,文化也再改变,我在纽约部和manager谈的时候,
他就说他们想找new brain,是不是cs并不重要,所以非cs的同学都可以试试。

G和F应该是bar最高的,毫无疑问,G和F都没有过hire committee, 几乎同一周拿到的
拒信,G是recruiter打的电话,F是一封邮件,那一周真是心都碎了。。。 G家面试是5
轮,说好了有一轮要谈research,但最后还是做题。面试官都挺屌屌的,不过这么多面
试官里,可以很明显的感觉到G家的面试官基本功最好。 F家的氛围我是真的很喜欢,
很active,人也很nice,拿到面试也是多亏一个朋友内推。 面了4轮,有一轮design,
一轮culture fit,两轮做题,感觉题目不算太难,但是简单不代表就好过,感觉是挂
在了一个在家里做过2遍的题目, 说明有些题自己还是理解不够深刻, F家挂了后, 
痛定思痛,总结了下自己的问题,发现自己在准备的过程中犯了个严重的错误,code都
是电脑上写的,之后就立即在纸上写的,感觉效果很明显。

Airbnb 是苦苦求来的电面, 他家recruiter发信拒了后,我又回了一封扬扬洒洒的信
,解释为什么我不是cs背景,但也能写code, recruiter人很好,聊天通过后给了我电
面,面试的题目头一天准备到了,但是我傻逼,最难的一个corner case没有考虑,结
果导致写的算法根本没用。。。 显然最后就。。。 挂了,唯一一个挂掉的电面。 

servicenow和wolfram面试方法有点不一样样,servicenow第一面是做project,写一个
网页游戏,二面是remote在对方的ide上debug,修改程序。 运气不错,都顺利过了。 
onsite就是聊天,但可惜因为自己背景非常不match,虽然有一个engineer力挺,但是
manager不太看好我,给了个我在本版看到过的最低offer,后来那个engineer还跟我说
如果以后过得不开心,可以再联系他。 这家公司也是本版一个id给我内推的,真的很
感谢他。 其实他家现在发展趋势非常好,看看股票就知道了,本来我是想好了只要给
个standard package,哪怕match不了其他家,也去了,最后没能去成湾区真的很可惜
。 

wolfram电面了2个组,因为我research做了很多并行计算,所以有一个组想要我过去做
那块,另一个组是搞customer support,但比接电话的高级点。。。 说好听点的就是
consulting, 电面后丢给了我一堆题目做,要求用wolfram lang, 花了一天才做了一
题出来。。。 因为比较想去西海岸,所以最后就放弃了。 

最后就是M家了,话说M家的面试也不太好拿,至少2个人帮我内推过,都没音信,最后
我是在软软家网页上找到了管理我们学校这片区域的campus recruiter的联系方式,于
是又一封扬扬洒洒的信丢过去,第一轮电面秒过,直接跳过了campus onsite,去
seattle了,面的是office组。 这次面试应该是我准备最好一次了,也就是F家失败后
面,当时手上剩下的唯一一个onsite。 我是国米球迷,当时就想,小国际你赢一次吧
,哥这次就过了,结果那周小国际赢了,西雅图也几周第一次放晴(记得那个说下雨抑
郁的帖子么?我面试那天是第一次放晴哦,都是命。。。)面了4轮吧,都是白人,人
都挺好,题目平均难度不大,但是方差比较大,有的感觉比GF面的都还难,还好人品
爆发,都做出来了。第二天坐飞机回家,起飞前收到servicenow的口头offer,下飞机
就收到了软软家的口头offer。 

本来想着就这么结束了,没想到bloomberg最后时候给安排了面试,process 很快,连
续2天campus onsite,前些时刚去总部面,话说他家真的是高大上,各个高富帅,白富
美,和西边的文化简直一个天上一个地上,不过呢,你还是能很轻松的就看出谁是sde
,谁是搞金融的,哈哈   bloomberg的面的就比较轻松了,campus onsite做题,
onsite就是和manager聊天,因为我做过一个android app,一个小的practice,那
manager正好也懂,就问了我好多android的问题,可我大概有半年没碰了,当时写也是
各处查api,一下答不上来,搞的自己好囧,所以我觉得,简历上写的任何东西,真的
是要好好准备,说不清楚最好还是不写。后来manager出了一个ood,大概写了几个
class,他应该知道我没有找枪手写app,就让水过了。他家recruiter知道我已经有M家
offer后,很sweet的加速了过程,面试2天后就收到正式package,但仔细想了后,还是
决定去投奔软软了,至少病了可以找格蕾看看病哈~~~ LOL

说了这么多,希望能给很多像我一样对coding有passion的非CS phd同学一些经验。最
后上面经吧,因为签了NDA,题目就不一一针对公司了,混在一起,记得清楚的多给点
细节,记不清的就给个key word了。 请多多包涵。 哦, 版上不是经常都有各种讨伐
面试官的帖子么,现在回头一想,发现自己答得不太好的还真都是国人出的题目,难得
全白人的时候, 就都过了。。。 在这里我也不是想说国人出的就多难,至少我没答好
的那几题也还好,也许就是这么运气不好吧。。。 把自己变强才是王道啊


1. Return true or false whether a expression has extra parentheses 
eg.  1 + ((2+3)) 

2. Valid parentheses  很多follow up, leetcode上相关的都做一边就好,最后一个
follow up是user defined parentheses, the input can be very very long

3. Least common ancestor of tree nodes a & b

4. Search a number in a matrix. In the matrix, each row and the col are both
in ascending order. Write an efficient algorithm  在cracking code上看到过这
题的思路,现场运气不错,居然写出来了

5. add two string

6. LRU cache

7. Parse CSV. Please pay attention to all corner cases. You can google the 
CSV format

8. Find the second smallest number with one pass

9. Add node in a linked list

9. Kth largest number in a BST

10. Dot product of a sparse vector. Follow up, what you can do to improve 
the efficiency if a vector has millions elements, and the other is very 
small. 

11. two sum

12. single number

13. Use quicksort to find the median number. Use two heap to find the median
number in real time

14. Use vector to realize queue

15. Linked List Cycle

16. Build a trie for strings like (cat, cats, ...)

17. Using iterative method for in-order traversal

18. Tiny URL, 谁都知道算法,但是还会问到很多server方面的, htable之类的,这
个我是真心不太懂

19. 有一题类似minimum window substring 但简单了很多, 记不清了

20. rotation of a vector (in place) 

21. OOD for a mail folder structure. 类似的还有,你有一个系统可以把公司分类
到各个不同的category,点每一个category都可以看到公司列表,展开这个category,
底下还有sub-category,  一个公司可能属于不同的category, 如何实现insert , 
delete, 或者update  要考虑各种scale的问题。 总结下,其实就是要建几个class,
用trie结构。

22. stock problem, one transaction, two transaction...

23. largest sum of a contiguous array  eg: (2, 3, -1, 2, 4, 2, -8) 

24. 很多圆,重叠在一起,如果算圆所占的面积,可以有一定误差

25. same tree,subtree



祝愿还在找工作的都能找到中意的offer

Tuesday, February 10, 2015

G onsite 2015/02/09

from here

斗胆面了谷歌,小弟很弱,不出意外挂了,因为每轮只面我一道题。

1. 给你一个target number,和一个list,list里面装的都是整数。问是否能用list里面的所有数字,只用四则运算和括号之类的,问能不能得到target number。很像24点,不过是它的扩展。
2. 给你一堆input,每一个input是一条边,表示谁和谁是朋友,例如
1 - 2
3 - 4
4 - 5
要求找出所有的groups,每个group里面的人认识,group和group间的人不认识。如上面的例子,返回 {1, 2}, {3, 4, 5}
3. 先讲了半天什么事profiling。所谓的profiling是指一个程序,里面有许多函数,我们记录每个函数什么时候开始执行,什么时候执行结束。输入就是一堆entry,每个entry有:函数名,时间戳,开始执行/执行结束,例如:
main 0 ENTER
foo 5 ENTER
foo 50 EXIT
bar 60 ENTER
bar 90 EXIT
main 100 EXIT
输出有以下要求:1.按照CPU执行的顺序来显示结果。2. 若一个函数a里面调用函数b,函数b要求缩进。
main 100
foo 45
bar 30
4. 给两组点,第一组的点都在圆上,第二组的点都在圆外,从第一组里面和第二组里面分别找一点,这两点之间的距离最小。

小弟技术浅薄,经验少,估计要挂了……希望各位大大集思广益~

Monday, February 9, 2015

FB面经

发信人: tdscdma (tdscdma), 信区: JobHunting
标  题: FB面经
发信站: BBS 未名空间站 (Mon Feb  9 17:47:01 2015, 美东)

FB已挂,上面经。
Round 1: 1. Given an array, find the max drop. Buying stock 的变种。buying 
stock是找最大的increase,这个是找decrease.
               2. Build BST from an array. leetcode原题。
               3. Combine logs. 一个用户可能有多个log, log1, log2, log3, 这
些log之间有相同元素,combine所有相似log. 给了两个解法,建graph找connected 
components, 和iterative. 最后就写了iterative, 有个小bug, 改了。

Round2 . Behavior+coding. 1. Find island number from an matrix. (1 is 
island). 我说见过,或者DFS/BFS, 或者pattern match.
                              2. Read 4k. 我说见过,然后说了一下解法
                              3. 3sum from 3 different array. 原题变种

Round3. 1. Best time buy stock...
              2. sqrt(float x). 现场泰勒展开推了牛顿公式。
              3. 一道很复杂的multiple weight BST,非常长. 给了两个解法,一个
用splay tree, 一个traditional method + cost function.

Round4. News feed backend design. 画了框图挨个解释,什么2PC, vector clock, 
LRU, DHT全说了,还解释了一下paxos。然后估算各种pull, push时间,被老印否了。(
我哪能知道怎么算具体数,最多说个大概方向)。

然后就跪了。目测老印给了very negative feedback. 最后他都不想和我握手。。。

G家ONSITE



from here



第一题, 找出一个二叉树的最深节点。

这个题目实际是送分给我的。结果我太紧张,用递归函数完成算法,但是把返回最深节点程序写成了返回最深深度。后来考官提醒我不对,我方寸有点乱,推翻全部递归算法,重新用DFS写了一个非递归算法。结果虽然正确,但是过于复杂。后来想了想,其实这个问题稍微修改一下原有递归算法就好了。面试官是个老白,人还算NICE。




第二题,一个LIST里面放了很多句子,找出每个句子共同的PREFIX。这个问题不是很难,我写了个比较函数,然后依次比较每个句子。考官问我算法效率,我说是LIST长度乘最长的LIST单词长度。 他问我有没有更好的算法,我说可以先扫描LIST,找出最短的句子,以它为初始比较,可以减少比较次数。面试官感觉是个东欧白人,比较NICE.




第三题,设计一个 KEY-VALUE机制,必须在O(1)做下列操作: 插入,删除,get(),random_get(),可以使用hashmap.

这个题目非常tricky. 貌似可以直接使用一个HASHMAP就能完成,但是实际上random_get必须把每个K-V对与一个0到N的整数关联,这个如果直接把MAP放到一个LIST里面去,算法效率就变成了O(N). 我最终使用了两个HASHMAP来实现这个功能,一个HASH表记录0-N的整数下标与KEY的关系,另外一个HASH表记录K-V,还有这个下标。这个算法其实在删除时也有问题,因为删除后会有下标GAP.我实际上是使用了一个机制,让删除操作,每次只删除HASH表最后那个K-V值(之前让最后值与删除值换个位置)。面试官是个亚裔小年轻,非常NICE.



第四题,找出一个GRAPH里面全部的三角形

我的算法: 先做一个访问队列,从一个节点开始BFS遍历,每次把一个节点的所有未访问过的邻居点放入一个LIST,判断这个邻居LIST里面有多少点互相连接。这个就是与这个节点有关的三角形,对它们计数并把结果记入累加器。之后把这个LIST加入队列,继续遍历。累加器最后返回三角形总数。

这个面试官是个三哥,态度很糟糕。似乎看不懂我写的算法,问了很多莫名其妙的问题。估计他给我的REVIEW很差。请各位大神看看,我的算法确实有问题,还是三哥有问题。


第五题 字符串PATTERN MATCH。 一个P字符串 ,一个S字符串。P中下划线 "_"字符通配S的单个字符,"%" 通配S中任意长度字符。

我的算法出现了一个问题,P字符串“ABC_AB%AB"与S字符串 "ABCXABXXXXABAB"这样的匹配,我报FALSE,他说正确的应该是TRUE.

修改过程没有完成时间到了。




好了,情况就这些了,祝各位好运!




补充内容 (2015-2-8 15:46):

这次G家先前电面了我两轮,都比较顺利。后来G出机票让我来ONSITE,题目我没有我想象的难,没想到没过,略有些失望。我不是科班出身,编程和算法都是自学的,没有工作经验应该也是FAIL的原因之一

面试经历

发信人: goodluck0 (goodluck), 信区: JobHunting
标  题: 分享面试经历
发信站: BBS 未名空间站 (Sun Feb  8 03:23:38 2015, 美东)

fresh phd找工,最近面了几家公司,分享一下面试经历,希望对近期找工的同学有所
帮助。Disclaimer:下面针对各个公司的描述是基于自己的经历,不一定可以
generalize。

Google

题目:这几个公司中相对最有挑战性的,但其难度也远没有超过leetcode,leetcode原
题少,变体多,代码量相对大。
要求:可以有bug,但尽量自己指出或者被指出后能立即更正,最终代码需要保证100%
正确。
安排:无电面,onsite 5轮(4轮coding + 1轮phd thesis)。部分coding换成system
design也有可能。
特点:1. 题目常常条件不足,需要自己问清楚。2. 需要检查输入是否有效。3. 考了
一点很基础的物理和数学知识(嵌入在了题里面)。4. 写完代码喜欢进行一些有意思
的讨论,比如code的某个分支在什么情况下会被调用,比如已知输入的范围哪些语句可
能出现buffer overflow以及如何解决。

Facebook

题目:多leetcode原题,难度一般,代码量不大
要求:尽量无bug,特别是简单题,但有bug也不一定就会挂
安排:电面一轮,onsite 4轮(2轮coding + 1轮system design + 1轮聊天/coding)
特点:1. 需要检查输入是否有效。2. 每个题目代码量不大但尽量多做几个

Twitter

题目:一半leetcode原题一半变体,难度一般,代码量有大有小
要求:可以有bug,感觉不太严格,我自己觉得还有bug的时候面试官说这样就可以了
安排:电面一轮,onsite 5轮(全coding)
特点:1. 题目well defined,可以假设输入有效。2. 问了好几个关于数据结构以及涉
及到interface design要求写clean code

Airbnb

题目:难度一般,很多字典和字符串的题目,多leetcode变体,代码量相对大
要求:在电脑上写,能把给出的不算刁钻的test case跑对
安排:电面一轮,onsite 6轮(3轮coding + 1轮project deep dive + 2轮culture
fit)
特点:1. 面试官把标准答案记得很清楚,需要在写之前把思路细节讲清楚并优化到最
优,能少用一点空间就少用一点,即使不能在数量级上产生影响。2. culture fit很独
特但也没有十分刁难,喜欢了解他们商业模式,爱学新东西,有common sense的人

Uber

题目:难度简单(取决于组和面试官)
要求:按照面试官喜好,有让电脑上写也有白板的
安排:电面一轮,onsite 3轮(2轮coding + 1轮system design)
特点:面试难度方差很大

Quora

题目:题目跟Google的难度差不多,一半leecode原题,代码量有大有小
要求:可以有bug,但尽量自己指出来或被指出后立即更正
安排:电面一轮,onsite 4.5轮(4轮coding + 0.5轮聊天)
特点:1. 题目well defined,可以假设输入有效。2. 算法题居多,每道题都要分析复
杂度。3. 有一轮practical interview,关键考点是能否较快用grep扒一个不熟悉的
code base

Square

题目:难度一般偏简单,glassdoor上原题重复率高。
要求:在电脑上写,能把给出的不算刁钻的test case跑对
安排:电面两轮,onsite不知道因为最近不招人
特点:code写好就行,不关心复杂度

Dropbox

题目:难度一般,有的题目很tricky
要求:据说很高,做对题目也会挂
安排:电面两轮,onsite不知道因为第二轮电面挂
特点:1. 偏重系统。2. 有tricky题目。

高频考点
请参考leetcode和本版面经对号入座

- LRU cache
- 各种花式数据结构的Iterator
- Trie。实现hasPrefix()和getWords()
- 字符串字典题目
- 各种数求和,three/permutation/combination/subset sums,考虑是否可重用,是
否unique
- DFS/BFS
- 2^n iteration + bit operations