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

No comments:

Post a Comment