听起来像是欧洲人,accent听起来有点吃力,先上题目:
1.leetcode上原题 number of islands
2.follow up:count rank 2 islands, where a rank 2 island is an island inside
a lake located on a continent. A continent is a piece of land located in
the ocean; the ocean is any body of water that touches the edges of the map.
Example:
000000000
000001100
001111100
011000100
001010100
001000100
001111100
000000000
上面这个例子里应该返回1.
3.If the input 2d array is too large to fit in memory, how to handle?
我从第二个follow up开始就回答的磕磕绊绊,最后也没写code,一直在跟面试官讨论
。后来思路终于讨论出来了,但第二个follow up面试官提示说water的那个dfs和第一
问里的dfs有什么不同,后来明白他想说water的dfs要考虑对角线情况。第三个follow
up更是不知道怎么回答,瞎扯了一通。
请教各位大侠们,第三问该怎么考虑?
Sunday, August 9, 2015
Thursday, August 6, 2015
http://www.mitbbs.com/article_t/JobHunting/33021551.html
发信人: rogerbay (rogerbay), 信区: JobHunting
标 题: Yelp phone + onsite面经
关键字: 面试,yelp
发信站: BBS 未名空间站 (Thu Aug 6 12:46:27 2015, 美东)
这周二的时候onsite的。
phone是skype面,一位白人,预定是45分钟。先聊了30分钟简历,然后面试官给了一题
Anagram,很简单,用python解了。followup是不用sort,如何判断两个string是不是
anagram,用int[256]就可以。
Onsite面,先是recruiter带着参观了公司10分钟。
Onsite第一面,印度小哥,说是做transaction的,给了一道fib,分别写了递归和迭代
解,然后问了各自的时间复杂度,空间复杂度。下一道题是power set,求是否存在一
个power set满足某个sum,因为整个set都是正数,所以可以剪枝,然后问了一下时间
复杂度。因为做得比较快,小哥有给了一道sqrt,我给了两个解法,一个二分,一个牛
顿法。印度小哥很满意,问了一下问题就离开了。
Onsite第二面。给一个map,key是class,value是一个list,list里包括这个class对
应的所有lectures的时间段。然后再给一个class的list,求是否能在这个map里,对每
个class至少找到一个时间段,而且各时间段之间不冲突。
比如{'class100':[1-2,3-4], 'class120':[1-2]},那么可以挑class120的[1-2]和
class100的[3-4],他们之间互相不会有冲突。DFS解就可以了,但这一面面得不太好。
Onsite第三面,给两个function, 一个decode(str) -> int,一个encode(int) -> str
,字符串只包含字母和数字。然后写一个function,tryDecode(mutated_str) -> int
,输入是一个经过变化的str,所有的字母都变成了小写。用这个mutated_str去还原之
前所有可能的字符串,然后尝试decode,如果decode都不成功返回-1, 如果有任一成功
就返回这个int。用DFS解就好,最后问了一下时间复杂度。
Onsite第四面,一位白人资深经理。先问简历,问之前Project。然后给了一个简单的
DB设计,many To many。下一题是,先说了tail的工作原:使用fseek到文件末,然后往
回走到需要的行数,再打印出最后的几行。共有fseek, fsize, fgetch可以使用,
fgetch是返回下一个char,并且cursor往下走一个。使用这三个function,从一个很大
的(Tb, Pb)的文件里随机返回一行。所有行之间能被返回的概率可以不等,但每一行都
有被返回的概率。
总体感受:他家氛围比较安静。祝各位好运!
标 题: Yelp phone + onsite面经
关键字: 面试,yelp
发信站: BBS 未名空间站 (Thu Aug 6 12:46:27 2015, 美东)
这周二的时候onsite的。
phone是skype面,一位白人,预定是45分钟。先聊了30分钟简历,然后面试官给了一题
Anagram,很简单,用python解了。followup是不用sort,如何判断两个string是不是
anagram,用int[256]就可以。
Onsite面,先是recruiter带着参观了公司10分钟。
Onsite第一面,印度小哥,说是做transaction的,给了一道fib,分别写了递归和迭代
解,然后问了各自的时间复杂度,空间复杂度。下一道题是power set,求是否存在一
个power set满足某个sum,因为整个set都是正数,所以可以剪枝,然后问了一下时间
复杂度。因为做得比较快,小哥有给了一道sqrt,我给了两个解法,一个二分,一个牛
顿法。印度小哥很满意,问了一下问题就离开了。
Onsite第二面。给一个map,key是class,value是一个list,list里包括这个class对
应的所有lectures的时间段。然后再给一个class的list,求是否能在这个map里,对每
个class至少找到一个时间段,而且各时间段之间不冲突。
比如{'class100':[1-2,3-4], 'class120':[1-2]},那么可以挑class120的[1-2]和
class100的[3-4],他们之间互相不会有冲突。DFS解就可以了,但这一面面得不太好。
Onsite第三面,给两个function, 一个decode(str) -> int,一个encode(int) -> str
,字符串只包含字母和数字。然后写一个function,tryDecode(mutated_str) -> int
,输入是一个经过变化的str,所有的字母都变成了小写。用这个mutated_str去还原之
前所有可能的字符串,然后尝试decode,如果decode都不成功返回-1, 如果有任一成功
就返回这个int。用DFS解就好,最后问了一下时间复杂度。
Onsite第四面,一位白人资深经理。先问简历,问之前Project。然后给了一个简单的
DB设计,many To many。下一题是,先说了tail的工作原:使用fseek到文件末,然后往
回走到需要的行数,再打印出最后的几行。共有fseek, fsize, fgetch可以使用,
fgetch是返回下一个char,并且cursor往下走一个。使用这三个function,从一个很大
的(Tb, Pb)的文件里随机返回一行。所有行之间能被返回的概率可以不等,但每一行都
有被返回的概率。
总体感受:他家氛围比较安静。祝各位好运!
Monday, August 3, 2015
http://www.mitbbs.com/article_t1/JobHunting/32990199_0_1.html
首先,无干货,可略过。
其次,我的经历不一定对所有人适用,也不是说我这么做就是对的,我工作时间也不长
所以有些问题看的也肤浅,主要目的是抛砖,一不小心又码字码多了,有耐心的同学可
以看看,欢迎指正和建议。
######################################
###
再说一下我的背景,既然很多人感兴趣,但是再细节就没有了。。
北美cs top25水校ms不到两年
之前在一只湾区的三哥驴(非L),版上已经有人猜出来了
做的东西还算可以,大数据的infra
######################################
###
除了刷题之外的准备。。
真正开始准备找工作是半年之前,我相信我在的驴比版上大部分公司都忙,所以开始的
时候进度比较慢,最开始的时候并没有主要刷题,而是列了一些我觉得必须要了解到一
定程度的system和framework来学习,我花了大概三个月时间来看一些paper,
opensource project的文档,presentation,source code和engineering blog。因为
工作中都在用,所以其实没有非常痛苦,但是尽量从design的角度来看问题会学到更多
东西,很多时候问问自己别人为什么要这样做,再结合自己真正的经历会收获很多。这
段时间也是自己对整个knowledge base查缺补漏的重要时间,只要看到不是很理解的概
念基本上都要查清楚,design很多时候其实是考察你的knowledge base和基本功是不是
扎实,没有knowledge base是很难做好design。
后面我还专门花时间来看跟Java concurrency有关的内容,joshua bloch的那本书我看
了一遍,然后又看了一遍Java concurrent library里面几个经典的数据结构的实现,
这个我觉得对我的帮助非常之大,很多东西以前模模糊糊突然会变得清楚很多,理解了
别人是怎么实现的,其实也能学会很多时候各种常见的优化是怎么做的。甚至很多
concurrency design和实现的技巧都是在这里学到的,比如之前不知道IntAccumulator
,AtomicIntArray,再比如我们都知道blockingqueue简单来说怎么实现,但是Java的
LinkedBlockdingQueue其实比较精巧,throughput较高,然后再跟之前接触过的
disruptor queue做比较,总结下来现在无非就是从最早的compareset busy wait浪费
cpu再到用wait condition节省cpu再到compareset busy wait浪费cpu但是提供更好的
throughput。另外就是直接对memory进行volatile读操作可以在很多时候节省读的时候
的锁。新的concurrenthashmap大量用到了这些,其实也提供了很多在做concurrent的
题目的时候一些重要的优化的方法。
做完这些事情之后本来想把Kafka的源码再读一下,但是时间不够了,虽然之前design
还是大体有些了解,但是我觉得hadoop,storm,kafka,Hbase,Cassandra这几个非常
典型的framework是我面试中必然要非常了解的东西,之前接触Kafka并不是非常多,所
以特意又把Kafka的paper和design doc研读了一下,然后又看了大量的其它公司的
engineering blog来了解别人都在做什么,都有什么问题。
之前没有做过很多跟web service相关的东西,所以这个类型的东西还是要看一下,
thanks god,版上有位F的大牛分享了很多有用的资料,有关最经典的几个系统的
design和实现,跟F相关的网上能找到的视频我基本上都看过一遍,文档我也都看过一
遍,基本上类似的问题都能用相同的原则来解决。
有些同学说design没有经验搞不定, 这个也对也不完全对,没有搞过确实缺乏第一手
资料,会不知道可能会出现哪些问题,但是不代表最常见的问题你没有其它途径可以知
道,大家对于各个系统的改进都是基于现有系统出现的常见问题,没做过可以,但是不
能作为不会做的借口,想要了解别人是怎么做的不是一件很难的事情。现在大部分常见
的系统整体来说都是大同小异,有一些最根本的原则其实大家都在遵循,然后区别往往
是针对不同use case的个别的优化。
所以这里我觉得比较有用的准备方法是,在弄明白一个design之前,先要做好几个准备
1. 先把一个process或者一个系统是怎么工作的搞清楚,这里是指,design一个
service需要cpu,memory,disk,network等等很多component协调工作,这些东西分别
都在什么时候用到,为什么要有这些东西,分别有什么特点。
相信大家都很熟悉有一篇文章叫做The numbers eveyone should know,在没有这篇文
章基础上的design都是瞎扯。
2. 要清楚这个design到底是为了解决什么问题,use case是什么,design一个系统根
本上讲是为了解决一个存在的problem,这个problem会有general的要求,比如latency
,比如throughput,比如load,比如哪种操作比较频繁,比如有没有consistency要求
,是不是reactive,是不是需要highly available,等等等等,这样跟第1点相结合才
能明白瓶颈可能在哪里,哪些东西可以tradeoff,进而才会有design的solution
3. knowledge base的储备要尽量够,操作系统,distributed system,concurrency这
些东西很难啃,我也曾经自学过几个大学的distributed system公开课,很多同学想绕
过这些走捷径,但是越难的东西就越有价值。知识量不够不是问题,看一点补充一点,
只要能坚持下来,到了一个时间点基本上还是可以有质变的。
所有的套路都是建立在这些东西基础之上,慢慢总结下来就会明白,在什么情况下可以
怎么做来解决什么样的问题。很多时候不需要你自己去想新的solution,但是对于现有
的solution能够做到灵活运用也不是一件很简单的事情。
简而言之,就是靠平时积累打好知识的基础+多偷学别人现有的东西+自己多总结多站
在解决问题的角度来思考,而不仅仅把这些当作面试题。
另外,我觉得就准备一般面试而言,版上有两大神贴,这两大神贴里面的内容相当的赞
,而且我也完完整整的读了所有的内容,这两大神贴现在还在第一页上
1. 就是beidapig大牛的总结贴
2. 就是另一个facebook大牛的总结经验内推贴
我对web service这一块的总结基本上就靠这两个帖子里面的内容,所以特别感谢这两
位。
以上这些事情其实工作之后断断续续一直都在做,但是集中精力做大概是持续了四个月
时间。
然后我觉得需要开始集中强化一下算法和coding。
######################################
###
有关算法coding:
在之前一个帖子说过了,LC+本版过去半年的面经。
不好意思,我不太擅长把东西整理的很有条理,所以基本上现在这些东西还是处于只有
我一个人能明白是什么的状态,非常之乱所以不好意思献丑。
但是我这里想说的是,总结的结果没有那么重要,过程才是最重要的,如果你看别人面
经的目的就是为了明白这几道题目或者期望面试碰到原题,我觉得面经是看不完的。这
个版上的资源非常之丰富,其实都不需要完全消化就能很容易拿到offer。
看一道题目就理解一道题目而且能够跟之前类似的问题融汇起来才是目的,其实看完版
上半年的面经并没有那么难,我这件事情坚持了一个多月时间,每天晚上看四,五个小
时,每个帖子每道题目,所有的回帖,都仔仔细细看过,这是我感觉算法突飞猛进的一
个重要时间段。
还有现在很多面试的很多题目不是偏向于算法而是coding的基本功,这个没办法就是多
练习,越是麻烦不好写的题目越是要多练习,其实都有规律可以遵循。
版上的难题我一个都没有遇到,我觉得LC中等到中等偏上难度的题目应该是大部分面试
的平均水平,花费大量时间在某些难题上面不一定有意义,还不如把基础打的更佳牢固
些。如果你面试中被问到难题,基本说明面试官在面试前就对你不是非常认可,需要用
一些比较难的题目来考察你。
我本身也面过不少candidates,所以我相信这个是大部分面试官常见的思路,其实真实
的事情是很多时候面试官想让你过你就能过,不想让你过你怎么样也过不了。面试不是
考试,不是题做出来就能100分,况且有很多题目都没有评分标准。
所以我说,刷题只是整个面试过程中最最基本的部分,只是必要的一个条件,远远不是
全部,如果能力够了刷题刷的不好也照样拿offer,大家互相什么水平随便聊两句都知
道个差不多,并不是所有人都喜欢面算法面刷题。
######################################
###
后面就真正进入面试的阶段,然后为了心无旁骛破釜沉舟我把之前没用的假期都用了,
然后开始全职专心致志搞。
面试的时候我的策略是先面练手的公司,然后中间状态最好的时候面最想去的公司,最
后再冲击难一点的hot preipo,不过发现面试的时间基本上自己也说了不算,之前做好
的计划基本没用。
最后三个周我基本上没有太刷题,最多就是看看之前掌握的感觉不是特别好的内容,然
后随便东戳一下西戳一下看看新的帖子,每天再练习两个设计题目,如果需要保持手感
就手写几道题目。每个公司onsite之前我还会把glassdoor上的面经浏览一下,主要是
为了心里有数,不会紧张。
所有的onsite基本上都在最后的两个周时间,这段时间比较艰难。
有关其他:
相比刚毕业的时候,这次找工作还是有一些感触比较深的地方:
1。简历非常重要,即使是去面FG这种大公司,很多时候面试结果在真正面之前就决定
了大半,如果简历还拿得出手自己对做的东西非常熟,有很大加成,所以请大家还是要
刷刷简历,好好准备。我有好几次都是聊简历相关的东西一轮面试就糊弄过去了,面试
官一般也不会为难。
2。找工作请找靠谱的朋友内推和找目标公司的recruiter,recruiter大部分是非常帮
忙的,所以请在一开始的时候对他们好一点,他们如果觉得你有戏会尽力帮你拿到
offer。recruiter在面试中起到的作用可以非常大,他们帮你安排面试官,他们可以看
到你的feedback,他们甚至可以有比较好的私人关系帮你match好的组,所以,在拿到
offer之前,注意是之前,装装孙子没有坏处。拿到offer之后主动权就在你自己手里了
,大局已定后双方的地位会互换,negotiate offer这个环节其实就一条。。。有
compete offer你就牛逼,没有你就。。。
3。面试过程也是不断学习的一个过程,这也是我为什么拼了命也要面这么多公司的一
个原因,因为我想多知道一些细节别的公司是怎么做的,所以面试的时候不要担心大胆
问,很多问题都是他们要解决的真实存在的问题,也是你将来可能会碰到的问题,如果
面下来10个公司只是这些总结下来的东西已经可以帮你再搞定一个面试了
4。另一个我觉得很有帮助的是有一群志同道合的朋友和能够指点自己的大腿,在整个
工作过程中我觉得从我的同事身上学到了很多很多东西,帮助很大,这点我不得不赞一
下我之前的驴的所有中国人,可能因为都被三哥压迫所以大家特别团结,平时对于各种
技术问题的交流都很到位,没有人会有所保留。现在我那一拨的人基本走的差不多了,
我算走的比较晚的,一般都是越牛的人走的越早,我最终的offer在所有人里面也就是
个中等水平吧。
5。运气,很重要,同样的人换一个环境可能是完全不同的结果。我之前问过一个大牛
找工作最重要的是什么,曰:运气。现在我很相信这个。。。
All in all,我不是牛人,我不是国内top20毕业也不是北美top20毕业,我本科也不是
学cs的,但是我特别相信版上之前一位前辈的话,大家能来到美国读一个decent学位说
明大家的智商都没任何问题,很多时候结果怎样只取决于自己的决心和毅力有多强大。
只要肯努力,结果就不会太差。
其次,我的经历不一定对所有人适用,也不是说我这么做就是对的,我工作时间也不长
所以有些问题看的也肤浅,主要目的是抛砖,一不小心又码字码多了,有耐心的同学可
以看看,欢迎指正和建议。
######################################
###
再说一下我的背景,既然很多人感兴趣,但是再细节就没有了。。
北美cs top25水校ms不到两年
之前在一只湾区的三哥驴(非L),版上已经有人猜出来了
做的东西还算可以,大数据的infra
######################################
###
除了刷题之外的准备。。
真正开始准备找工作是半年之前,我相信我在的驴比版上大部分公司都忙,所以开始的
时候进度比较慢,最开始的时候并没有主要刷题,而是列了一些我觉得必须要了解到一
定程度的system和framework来学习,我花了大概三个月时间来看一些paper,
opensource project的文档,presentation,source code和engineering blog。因为
工作中都在用,所以其实没有非常痛苦,但是尽量从design的角度来看问题会学到更多
东西,很多时候问问自己别人为什么要这样做,再结合自己真正的经历会收获很多。这
段时间也是自己对整个knowledge base查缺补漏的重要时间,只要看到不是很理解的概
念基本上都要查清楚,design很多时候其实是考察你的knowledge base和基本功是不是
扎实,没有knowledge base是很难做好design。
后面我还专门花时间来看跟Java concurrency有关的内容,joshua bloch的那本书我看
了一遍,然后又看了一遍Java concurrent library里面几个经典的数据结构的实现,
这个我觉得对我的帮助非常之大,很多东西以前模模糊糊突然会变得清楚很多,理解了
别人是怎么实现的,其实也能学会很多时候各种常见的优化是怎么做的。甚至很多
concurrency design和实现的技巧都是在这里学到的,比如之前不知道IntAccumulator
,AtomicIntArray,再比如我们都知道blockingqueue简单来说怎么实现,但是Java的
LinkedBlockdingQueue其实比较精巧,throughput较高,然后再跟之前接触过的
disruptor queue做比较,总结下来现在无非就是从最早的compareset busy wait浪费
cpu再到用wait condition节省cpu再到compareset busy wait浪费cpu但是提供更好的
throughput。另外就是直接对memory进行volatile读操作可以在很多时候节省读的时候
的锁。新的concurrenthashmap大量用到了这些,其实也提供了很多在做concurrent的
题目的时候一些重要的优化的方法。
做完这些事情之后本来想把Kafka的源码再读一下,但是时间不够了,虽然之前design
还是大体有些了解,但是我觉得hadoop,storm,kafka,Hbase,Cassandra这几个非常
典型的framework是我面试中必然要非常了解的东西,之前接触Kafka并不是非常多,所
以特意又把Kafka的paper和design doc研读了一下,然后又看了大量的其它公司的
engineering blog来了解别人都在做什么,都有什么问题。
之前没有做过很多跟web service相关的东西,所以这个类型的东西还是要看一下,
thanks god,版上有位F的大牛分享了很多有用的资料,有关最经典的几个系统的
design和实现,跟F相关的网上能找到的视频我基本上都看过一遍,文档我也都看过一
遍,基本上类似的问题都能用相同的原则来解决。
有些同学说design没有经验搞不定, 这个也对也不完全对,没有搞过确实缺乏第一手
资料,会不知道可能会出现哪些问题,但是不代表最常见的问题你没有其它途径可以知
道,大家对于各个系统的改进都是基于现有系统出现的常见问题,没做过可以,但是不
能作为不会做的借口,想要了解别人是怎么做的不是一件很难的事情。现在大部分常见
的系统整体来说都是大同小异,有一些最根本的原则其实大家都在遵循,然后区别往往
是针对不同use case的个别的优化。
所以这里我觉得比较有用的准备方法是,在弄明白一个design之前,先要做好几个准备
1. 先把一个process或者一个系统是怎么工作的搞清楚,这里是指,design一个
service需要cpu,memory,disk,network等等很多component协调工作,这些东西分别
都在什么时候用到,为什么要有这些东西,分别有什么特点。
相信大家都很熟悉有一篇文章叫做The numbers eveyone should know,在没有这篇文
章基础上的design都是瞎扯。
2. 要清楚这个design到底是为了解决什么问题,use case是什么,design一个系统根
本上讲是为了解决一个存在的problem,这个problem会有general的要求,比如latency
,比如throughput,比如load,比如哪种操作比较频繁,比如有没有consistency要求
,是不是reactive,是不是需要highly available,等等等等,这样跟第1点相结合才
能明白瓶颈可能在哪里,哪些东西可以tradeoff,进而才会有design的solution
3. knowledge base的储备要尽量够,操作系统,distributed system,concurrency这
些东西很难啃,我也曾经自学过几个大学的distributed system公开课,很多同学想绕
过这些走捷径,但是越难的东西就越有价值。知识量不够不是问题,看一点补充一点,
只要能坚持下来,到了一个时间点基本上还是可以有质变的。
所有的套路都是建立在这些东西基础之上,慢慢总结下来就会明白,在什么情况下可以
怎么做来解决什么样的问题。很多时候不需要你自己去想新的solution,但是对于现有
的solution能够做到灵活运用也不是一件很简单的事情。
简而言之,就是靠平时积累打好知识的基础+多偷学别人现有的东西+自己多总结多站
在解决问题的角度来思考,而不仅仅把这些当作面试题。
另外,我觉得就准备一般面试而言,版上有两大神贴,这两大神贴里面的内容相当的赞
,而且我也完完整整的读了所有的内容,这两大神贴现在还在第一页上
1. 就是beidapig大牛的总结贴
2. 就是另一个facebook大牛的总结经验内推贴
我对web service这一块的总结基本上就靠这两个帖子里面的内容,所以特别感谢这两
位。
以上这些事情其实工作之后断断续续一直都在做,但是集中精力做大概是持续了四个月
时间。
然后我觉得需要开始集中强化一下算法和coding。
######################################
###
有关算法coding:
在之前一个帖子说过了,LC+本版过去半年的面经。
不好意思,我不太擅长把东西整理的很有条理,所以基本上现在这些东西还是处于只有
我一个人能明白是什么的状态,非常之乱所以不好意思献丑。
但是我这里想说的是,总结的结果没有那么重要,过程才是最重要的,如果你看别人面
经的目的就是为了明白这几道题目或者期望面试碰到原题,我觉得面经是看不完的。这
个版上的资源非常之丰富,其实都不需要完全消化就能很容易拿到offer。
看一道题目就理解一道题目而且能够跟之前类似的问题融汇起来才是目的,其实看完版
上半年的面经并没有那么难,我这件事情坚持了一个多月时间,每天晚上看四,五个小
时,每个帖子每道题目,所有的回帖,都仔仔细细看过,这是我感觉算法突飞猛进的一
个重要时间段。
还有现在很多面试的很多题目不是偏向于算法而是coding的基本功,这个没办法就是多
练习,越是麻烦不好写的题目越是要多练习,其实都有规律可以遵循。
版上的难题我一个都没有遇到,我觉得LC中等到中等偏上难度的题目应该是大部分面试
的平均水平,花费大量时间在某些难题上面不一定有意义,还不如把基础打的更佳牢固
些。如果你面试中被问到难题,基本说明面试官在面试前就对你不是非常认可,需要用
一些比较难的题目来考察你。
我本身也面过不少candidates,所以我相信这个是大部分面试官常见的思路,其实真实
的事情是很多时候面试官想让你过你就能过,不想让你过你怎么样也过不了。面试不是
考试,不是题做出来就能100分,况且有很多题目都没有评分标准。
所以我说,刷题只是整个面试过程中最最基本的部分,只是必要的一个条件,远远不是
全部,如果能力够了刷题刷的不好也照样拿offer,大家互相什么水平随便聊两句都知
道个差不多,并不是所有人都喜欢面算法面刷题。
######################################
###
后面就真正进入面试的阶段,然后为了心无旁骛破釜沉舟我把之前没用的假期都用了,
然后开始全职专心致志搞。
面试的时候我的策略是先面练手的公司,然后中间状态最好的时候面最想去的公司,最
后再冲击难一点的hot preipo,不过发现面试的时间基本上自己也说了不算,之前做好
的计划基本没用。
最后三个周我基本上没有太刷题,最多就是看看之前掌握的感觉不是特别好的内容,然
后随便东戳一下西戳一下看看新的帖子,每天再练习两个设计题目,如果需要保持手感
就手写几道题目。每个公司onsite之前我还会把glassdoor上的面经浏览一下,主要是
为了心里有数,不会紧张。
所有的onsite基本上都在最后的两个周时间,这段时间比较艰难。
有关其他:
相比刚毕业的时候,这次找工作还是有一些感触比较深的地方:
1。简历非常重要,即使是去面FG这种大公司,很多时候面试结果在真正面之前就决定
了大半,如果简历还拿得出手自己对做的东西非常熟,有很大加成,所以请大家还是要
刷刷简历,好好准备。我有好几次都是聊简历相关的东西一轮面试就糊弄过去了,面试
官一般也不会为难。
2。找工作请找靠谱的朋友内推和找目标公司的recruiter,recruiter大部分是非常帮
忙的,所以请在一开始的时候对他们好一点,他们如果觉得你有戏会尽力帮你拿到
offer。recruiter在面试中起到的作用可以非常大,他们帮你安排面试官,他们可以看
到你的feedback,他们甚至可以有比较好的私人关系帮你match好的组,所以,在拿到
offer之前,注意是之前,装装孙子没有坏处。拿到offer之后主动权就在你自己手里了
,大局已定后双方的地位会互换,negotiate offer这个环节其实就一条。。。有
compete offer你就牛逼,没有你就。。。
3。面试过程也是不断学习的一个过程,这也是我为什么拼了命也要面这么多公司的一
个原因,因为我想多知道一些细节别的公司是怎么做的,所以面试的时候不要担心大胆
问,很多问题都是他们要解决的真实存在的问题,也是你将来可能会碰到的问题,如果
面下来10个公司只是这些总结下来的东西已经可以帮你再搞定一个面试了
4。另一个我觉得很有帮助的是有一群志同道合的朋友和能够指点自己的大腿,在整个
工作过程中我觉得从我的同事身上学到了很多很多东西,帮助很大,这点我不得不赞一
下我之前的驴的所有中国人,可能因为都被三哥压迫所以大家特别团结,平时对于各种
技术问题的交流都很到位,没有人会有所保留。现在我那一拨的人基本走的差不多了,
我算走的比较晚的,一般都是越牛的人走的越早,我最终的offer在所有人里面也就是
个中等水平吧。
5。运气,很重要,同样的人换一个环境可能是完全不同的结果。我之前问过一个大牛
找工作最重要的是什么,曰:运气。现在我很相信这个。。。
All in all,我不是牛人,我不是国内top20毕业也不是北美top20毕业,我本科也不是
学cs的,但是我特别相信版上之前一位前辈的话,大家能来到美国读一个decent学位说
明大家的智商都没任何问题,很多时候结果怎样只取决于自己的决心和毅力有多强大。
只要肯努力,结果就不会太差。
system design
2) design
解这种题是个*交流*的过程,或者说是给出方案然后获取反馈的不断循环的过程。
一般的流程:
首先你要问清楚requirement;
然后可以讲一下high level architecture,就是分成哪几个component,互相之间如果
interact,在白板上画一画;
之后面试官可能会让你深入某个component detail讨论;
也有可能变换requirement让你重新设计
另外,f家还喜欢让你估算机器之类的,做一些back-of-envelopme calculation。所以
最好对一些计算机相关的基本常数,fb的用户量等等有个大概的了解。
准备的时候建议看看fb的design高频题。一方面有可能面试的时候刚好碰到这几个
topic,另一方面其实很多design都是相通的。
之前有个帖子讲这个,原帖已经被删了,这儿有个备份http://blog.csdn.net/sigh1988/article/details/9790337
另外补充一点我收集的材料
a) 首先你可以从整体上了解一下facebook的architecture
http://www.quora.com/Facebook-Engineering/What-is-Facebooks-arc
http://www.ece.lsu.edu/hpca-18/files/HPCA2012_Facebook_Keynote.
http://www.quora.com/Facebook-Engineering/What-have-been-Facebo
除了下面给出的一些资料,fb engineering page里还有很多不错的内容
https://www.facebook.com/Engineering
b) news feed
这里有个talk
http://www.infoq.com/presentations/Facebook-News-Feed
对应的slides
http://readme.skplanet.com/wp-content/uploads/2012/11/0-3_Faceb
还有一些quora上的讨论
http://www.quora.com/Activity-Streams/What-are-the-scaling-issu
http://www.quora.com/What-are-best-practices-for-building-somet
http://www.quora.com/What-is-the-best-storage-solution-for-buil
c) facebook chat
这里有两个notes,其中第二个里面还有相应的tech talk links
https://www.facebook.com/notes/facebook-engineering/facebook-chat/
14218138919
https://www.facebook.com/notes/facebook-engineering/chat-stability-and-
scalability/51412338919
d) typeahead search & graph search
关于typeahead search的tech talk和notes
https://www.facebook.com/video/video.php?v=432864835468
https://www.facebook.com/note.php?note_id=365915113919
https://www.facebook.com/note.php?note_id=389105248919
关于graph search的paper, tech talk, notes。其中paper很值得一看。
http://db.disi.unitn.eu/pages/VLDBProgram/pdf/industry/p871-cur
https://newsroom.fb.com/Photos-and-B-Roll/4362/Graph-Search-Whiteboard
https://www.facebook.com/note.php?note_id=10151240856103920
https://www.facebook.com/note.php?note_id=10151347573598920
https://www.facebook.com/note.php?note_id=10151361720763920
https://www.facebook.com/note.php?note_id=10151432733048920
https://www.facebook.com/note.php?note_id=10151755593228920
e) facebook messages
两个tech talks
http://www.youtube.com/watch?v=XAuwAHWpzPc
http://www.infoq.com/presentations/HBase-at-Facebook
以及eng notes
https://www.facebook.com/note.php?note_id=10150148835363920
https://www.facebook.com/note.php?note_id=10150162742108920
f) photo storage
相关的papers和notes
https://www.usenix.org/conference/osdi10/finding-needle-haystack-facebooks-
photo-storage
https://www.usenix.org/legacy/events/osdi10/tech/full_papers/Beaver.pdf
https://www.usenix.org/legacy/events/osdi10/tech/slides/beaver.pdf
https://www.facebook.com/note.php?note_id=76191543919
g) social graph data store
相关的note, video, paper
https://www.facebook.com/notes/facebook-engineering/tao-the-power-of-the-
graph/10151525983993920
https://www.usenix.org/conference/atc13/technical-sessions/presentation/
bronson
http://www.cs.cmu.edu/~pavlo/courses/fall2013/static/papers/117
h) tiny URL
这里有一些讨论
http://n00tc0d3r.blogspot.com/2013/09/big-data-tinyurl.html
http://stackoverflow.com/questions/742013/how-to-code-a-url-sho
http://stackoverflow.com/questions/3376163/what-are-the-things-
i) POI
参考这里
http://www.slideshare.net/mmalone/scaling-gis-data-in-nonrelati
http://www.mitbbs.ca/article_t/JobHunting/32476139.html
解这种题是个*交流*的过程,或者说是给出方案然后获取反馈的不断循环的过程。
一般的流程:
首先你要问清楚requirement;
然后可以讲一下high level architecture,就是分成哪几个component,互相之间如果
interact,在白板上画一画;
之后面试官可能会让你深入某个component detail讨论;
也有可能变换requirement让你重新设计
另外,f家还喜欢让你估算机器之类的,做一些back-of-envelopme calculation。所以
最好对一些计算机相关的基本常数,fb的用户量等等有个大概的了解。
准备的时候建议看看fb的design高频题。一方面有可能面试的时候刚好碰到这几个
topic,另一方面其实很多design都是相通的。
之前有个帖子讲这个,原帖已经被删了,这儿有个备份http://blog.csdn.net/sigh1988/article/details/9790337
另外补充一点我收集的材料
a) 首先你可以从整体上了解一下facebook的architecture
http://www.quora.com/Facebook-Engineering/What-is-Facebooks-arc
http://www.ece.lsu.edu/hpca-18/files/HPCA2012_Facebook_Keynote.
http://www.quora.com/Facebook-Engineering/What-have-been-Facebo
除了下面给出的一些资料,fb engineering page里还有很多不错的内容
https://www.facebook.com/Engineering
b) news feed
这里有个talk
http://www.infoq.com/presentations/Facebook-News-Feed
对应的slides
http://readme.skplanet.com/wp-content/uploads/2012/11/0-3_Faceb
还有一些quora上的讨论
http://www.quora.com/Activity-Streams/What-are-the-scaling-issu
http://www.quora.com/What-are-best-practices-for-building-somet
http://www.quora.com/What-is-the-best-storage-solution-for-buil
c) facebook chat
这里有两个notes,其中第二个里面还有相应的tech talk links
https://www.facebook.com/notes/facebook-engineering/facebook-chat/
14218138919
https://www.facebook.com/notes/facebook-engineering/chat-stability-and-
scalability/51412338919
d) typeahead search & graph search
关于typeahead search的tech talk和notes
https://www.facebook.com/video/video.php?v=432864835468
https://www.facebook.com/note.php?note_id=365915113919
https://www.facebook.com/note.php?note_id=389105248919
关于graph search的paper, tech talk, notes。其中paper很值得一看。
http://db.disi.unitn.eu/pages/VLDBProgram/pdf/industry/p871-cur
https://newsroom.fb.com/Photos-and-B-Roll/4362/Graph-Search-Whiteboard
https://www.facebook.com/note.php?note_id=10151240856103920
https://www.facebook.com/note.php?note_id=10151347573598920
https://www.facebook.com/note.php?note_id=10151361720763920
https://www.facebook.com/note.php?note_id=10151432733048920
https://www.facebook.com/note.php?note_id=10151755593228920
e) facebook messages
两个tech talks
http://www.youtube.com/watch?v=XAuwAHWpzPc
http://www.infoq.com/presentations/HBase-at-Facebook
以及eng notes
https://www.facebook.com/note.php?note_id=10150148835363920
https://www.facebook.com/note.php?note_id=10150162742108920
f) photo storage
相关的papers和notes
https://www.usenix.org/conference/osdi10/finding-needle-haystack-facebooks-
photo-storage
https://www.usenix.org/legacy/events/osdi10/tech/full_papers/Beaver.pdf
https://www.usenix.org/legacy/events/osdi10/tech/slides/beaver.pdf
https://www.facebook.com/note.php?note_id=76191543919
g) social graph data store
相关的note, video, paper
https://www.facebook.com/notes/facebook-engineering/tao-the-power-of-the-
graph/10151525983993920
https://www.usenix.org/conference/atc13/technical-sessions/presentation/
bronson
http://www.cs.cmu.edu/~pavlo/courses/fall2013/static/papers/117
h) tiny URL
这里有一些讨论
http://n00tc0d3r.blogspot.com/2013/09/big-data-tinyurl.html
http://stackoverflow.com/questions/742013/how-to-code-a-url-sho
http://stackoverflow.com/questions/3376163/what-are-the-things-
i) POI
参考这里
http://www.slideshare.net/mmalone/scaling-gis-data-in-nonrelati
http://www.mitbbs.ca/article_t/JobHunting/32476139.html
Thursday, July 30, 2015
http://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=138852&extra=page%3D1%26filter%3Dsortid%26sortid%3D311%26sortid%3D311
2015(4-6月) 码农类 硕士 全职@Bloomberg - 网上海投 - 技术电面 Onsite |Failfresh grad应届毕业生
| 电面:简历项目聊了半小时,. more info on 1point3acres.com 数据结构区别,各自优缺点,Vector, Array,Arraylist,三哥, Array 念成“阿利”。 很久都不明白。。。 算法: LRU cache; Onsite:俩轮游。。。 国人+白人: 聊简历。。 URL 背后机制: DNS IP lookup, Load balancer,。。。 follow up: 网站架构:大型网站入口 (Load balancer?),Heavy work load: 水平拆分,垂直拆分,Application servers communicate? TCP/IP??;(非网络专业 已经答不下去了) Map Reduce:总体机制 mapper-combiner-partitioner-reducer, 如何实现 word count; 已过去近50分钟。。 算法: Single number, follow up:出现频率不一,但仅有一个出现一次,找到那个出现一次的数 (要求无额外空间,brutal force)。 白人: 聊简历。。 智力题: (面经原题)立方体表面刷黑漆,拆成27个小立方体,抛掷其中一个立方体 朝上一面为黑的概率是多少.鏈枃鍘熷垱鑷�1point3acres璁哄潧 算法: (面经原题)把数组中非零数字都靠左,保持原顺序, 为零的数字靠右。. 1point 3acres 璁哄潧 下楼。。。。走好。。。。 |
http://www.mitbbs.com/article_t/JobHunting/33016843.html
这个周一刚刚面完,来发给面经回报本版,求个offer。
他家是按照组面的,面试流程很长,3轮phone + 6轮onsite,所以前后七个星期。
我面的是ArcGIS Server组,题目难度偏低,主要是culture fit + 聊天。
第一轮phone,问了stock I,strstr,Leetcode原题。
第二轮phone,特别简单,一个int数组求和。另一题是在[0, m]的随机数范围内产生[1
, n]个不重复的随机数。
第三轮phone,纯聊天,和一个Product engineer聊天。他家的product engineer相当
于QA。
两个星期后,收到onsite邀请。公司在redlands,位于LA东边,靠近Riverside。整个
onsite长达四天,第一天到达,第二天面试,第三天可以多逗留一天,访问当地社区,
逛一逛之类,第四天离开。
Onsite的每轮面试都是两个面试官。
Onsite第一面,ArcGIS组的VP,主要是问问简历,聊天,问了两个简单的rest设计题。
Onsite第二面,面试官是之前phone第三面的QA,也是聊简历,解释一下mapreduce,原
理之类,主要还是交流沟通,communication。
Onsite第三面,一个白人小哥,比较Geeky,问了个简单的mapreduce题,平面里有多少
个点在多边形内。剩下时间都是聊天,聊简历上的project。
Onsite lunch,他家有一个自己的小食堂,不贵,味道一般般,出去的话也没有太多可
以吃的,因为那个地方比较村。吃饭的时候是第二轮的phone面试官,主要还是聊天,
各种聊天。聊天中得知,工作了五年以上的员工,可以在旁边的univ of Redlands读一
个学位,公司付学费。
Onsite 第四面,白人大叔。问简历+问了个find top k frequent words from stream
,用hashmap + heap解了。剩下时间聊简历。
Onsite 第五面,phone第一面的面试官。主要还是问简历,问了一些Pig latin的语法
细节之类。剩下时间还是聊简历。
Onsite 第六面,白人+一位看不出哪里人(貌似是东南亚某国)。看不出哪里来的那位问
了java的细节,wait和sleep的区别,java gc,young代, per代,minor gc, full gc
,stringbuilder, stringbuffer,然后问了个reverse words in string。spring依赖
注入,exception, error这些等等。这个看不出哪里来的人的反应读不太出来,不知道
他满意了没有。
总体感觉:他家环境很不错,里面就像个庭院,郁郁葱葱。缺点是那个地方有点村,开
车到LA要一个小时。听面试官说工作压力不大。
他家是按照组面的,面试流程很长,3轮phone + 6轮onsite,所以前后七个星期。
我面的是ArcGIS Server组,题目难度偏低,主要是culture fit + 聊天。
第一轮phone,问了stock I,strstr,Leetcode原题。
第二轮phone,特别简单,一个int数组求和。另一题是在[0, m]的随机数范围内产生[1
, n]个不重复的随机数。
第三轮phone,纯聊天,和一个Product engineer聊天。他家的product engineer相当
于QA。
两个星期后,收到onsite邀请。公司在redlands,位于LA东边,靠近Riverside。整个
onsite长达四天,第一天到达,第二天面试,第三天可以多逗留一天,访问当地社区,
逛一逛之类,第四天离开。
Onsite的每轮面试都是两个面试官。
Onsite第一面,ArcGIS组的VP,主要是问问简历,聊天,问了两个简单的rest设计题。
Onsite第二面,面试官是之前phone第三面的QA,也是聊简历,解释一下mapreduce,原
理之类,主要还是交流沟通,communication。
Onsite第三面,一个白人小哥,比较Geeky,问了个简单的mapreduce题,平面里有多少
个点在多边形内。剩下时间都是聊天,聊简历上的project。
Onsite lunch,他家有一个自己的小食堂,不贵,味道一般般,出去的话也没有太多可
以吃的,因为那个地方比较村。吃饭的时候是第二轮的phone面试官,主要还是聊天,
各种聊天。聊天中得知,工作了五年以上的员工,可以在旁边的univ of Redlands读一
个学位,公司付学费。
Onsite 第四面,白人大叔。问简历+问了个find top k frequent words from stream
,用hashmap + heap解了。剩下时间聊简历。
Onsite 第五面,phone第一面的面试官。主要还是问简历,问了一些Pig latin的语法
细节之类。剩下时间还是聊简历。
Onsite 第六面,白人+一位看不出哪里人(貌似是东南亚某国)。看不出哪里来的那位问
了java的细节,wait和sleep的区别,java gc,young代, per代,minor gc, full gc
,stringbuilder, stringbuffer,然后问了个reverse words in string。spring依赖
注入,exception, error这些等等。这个看不出哪里来的人的反应读不太出来,不知道
他满意了没有。
总体感觉:他家环境很不错,里面就像个庭院,郁郁葱葱。缺点是那个地方有点村,开
车到LA要一个小时。听面试官说工作压力不大。
Wednesday, July 29, 2015
http://www.mitbbs.com/article_t/JobHunting/33015301.html
总共5小时 面了7个人(包含一开始HR 和中午吃饭1小时)..
第一轮HR帮你热身30分钟 先下马威
1.AMAZON的BASE上限是160K..全公司没有人BASE超过这个上限..连CEO JEFF 也一样.
2.一般不发SDE III offer. Amazon SDE II 包含MSFT SDE II 到MSFT Senior SDE
一半的range(60,61,62)
#1
设计Drones Schedule/Deliver system
#2
Median of Integer Stream
http://www.ardendertat.com/2011/11/03/programming-interview-que
#3
设计 Elevator schedule system to minimize everyone’s wait time
#4
Given DLL Package dependency, print the installation sequence.
先用DFS 把Graph 的End NODES 找出..再由End node 向上找没有children 的Node…
etc
50%的时间在问behavior questions
第一轮HR帮你热身30分钟 先下马威
1.AMAZON的BASE上限是160K..全公司没有人BASE超过这个上限..连CEO JEFF 也一样.
2.一般不发SDE III offer. Amazon SDE II 包含MSFT SDE II 到MSFT Senior SDE
一半的range(60,61,62)
#1
设计Drones Schedule/Deliver system
#2
Median of Integer Stream
http://www.ardendertat.com/2011/11/03/programming-interview-que
#3
设计 Elevator schedule system to minimize everyone’s wait time
#4
Given DLL Package dependency, print the installation sequence.
先用DFS 把Graph 的End NODES 找出..再由End node 向上找没有children 的Node…
etc
50%的时间在问behavior questions
Subscribe to:
Posts (Atom)