onsite

领英、脸书面试以及onsite小记(北美)

 

最近两个月忙于找工作,投了不少简历,比较牛逼的公司里面就领英和脸书理我了,都是同学朋友内推的功劳。没想到自己也比较争气,一路杀到了最后一轮,拿到了两家的offer。

先上一下小弟超菜的背景:

非CS科班出身,网络相关专业,国内本科,北美硕士加一年零几个月的工作经验,工作之前没有什么大型开源项目经验,学校课程项目也就只有屈指可数的一两个拿的出手。从我之前的博客其实也可以看出来,工作中主要是用Python开发Openstack Neutron的插件。C++,JAVA和Python几乎全靠自学(从本科开始),去Coursera上过一个Algorithm的在线课程,看过几本算法书,仔细看过www.cplusplus.com上的tutorial,刷了三四遍Leetcode,看过CC150。除此之外,偶尔泡泡highscalibility.com看一些系统架构的文章,还在onsite之前抱抱佛脚,狂看了一些脸书的系统设计面试题。

面试过程:

领英和脸书的面试流程都是一样的,一轮电话面试,通过之后就是一轮onsite。由于我现在的工作也是在硅谷,所以我要求把电话面试改成了面对面的面试。这个到底好不好也是智者见智。好处是当面交流比较方便,尤其是像我这样的母语非英语的同学,讲电话容易听不清和紧张。坏处是coding会要写白板,自然比在电脑上敲代码要慢很多,更容易出错。不过想到onsite的时候都是写白板,所以其实也不算太坏,就当提前体验了嘛。

第一轮:

两家的第一轮都是一个小时长度的面试。领英先花一半的时间问了些基础知识和项目相关的问题,最后半小时写了一个coding问题,类似于LRU Cache, Random Queue 之类的题目。需要定义数据结构和实现一些取和放的方法。

脸书的第一轮非常简单暴力,除了稍微聊了一会儿我的经历,直接就是两个coding题目。第一题比较简单,属于LC上面最简单的一类题目。第二题比较难,但是出现频率在脸书的面试中还是比较高的,可惜我之前没有看到。。。要求是用一个每次读4KB内容的方法定义一个类,并在其中实现一个可以读任意长度内容的方法,比如读1个字节,或者读1个GB的字节等。需要读取的长度是第二个方法的输入参数。

领英的第一轮是在一个周五进行的,在胆战心惊的度过一个周末后的周一就收到好消息,可以进入onsite轮啦。脸书的第一轮也是在一个周五,在又一次胆战心惊的度过一个周末之后的周三,收到消息说可以进入下一轮了。于是我再一次非常勇敢地把两家的onsite安排在了相邻的两周的周五。

onsite:

领英的onsite不得不说是非常的变态啊,早上9点半开始一直到晚上5点半才出来,除了中午吃饭一小时,就一直老老实实地呆在同一间小房间里被各种人蹂躏。当然,吃饭的那一个小时也没闲着,有一个比较友善的人一直问我一些相对这一天的问题来说非常“友善”的问题。。。onsite的每一轮都是一个小时,每一轮都有两个人来面,一轮完了马上就是下一轮,可以溜出去上个厕所作唯一的休息。。。所以除开吃饭轮一共是六轮面试,三轮系统设计,两轮coding,一轮行为问题,直接把人往死里轮的节奏。

第一轮一上来是行为问题,把我简历上的边边角角都问的非常仔细,包括我为什么做,怎么做,如果再来一次会怎么改进,将来有什么计划,甚至还来了一个场景题。。。这在以技术见长的公司里面还是比较少见的

第二轮是一个系统设计,上来先问了三个跟图有关的关联度问题的解法,比如如何判断两个人是不是同一个人的好友之类的。然后问复杂度,然后改进,一直改进到两位面试官们满意,这是已经过去好久了。接着又问如何扩展到多个机器,如何划分这个图的信息,等等。乱答之,完全是混过去。事后得知面试官也觉得我这部分答得不太好,但是一开始的解题还是可以的。基于我的经验不够,这样的表现还算是可以谅解。

第三轮吃饭,略。

第四轮coding,LC的原题两题,秒杀咯,到此终于略微舒了一口气,也为下一轮被虐到渣也不剩埋下了伏笔。。。写完之后有稍微讨论了一下复杂度和扩展到多个机器就放我过了。

第五轮系统设计,跟内存有关的一个设计。。。内存。。。不可以用已有的任何STL容器,因为这些容器需要分配多少内存空间是不太确定的,而且分配的内存地址也很可能不连续,所以要自己设计一个用且只用给定大小内存的信息读写系统。。。当然,内存的声明,使用,回收,寻址都要自己来设计啦。。。一上来毫无头绪,面试官大人也不屑于给我提点,只能挤牙膏一般这边挤一点,那边挤一点,顺便观察人家脸色,看到对路就继续往下猜,居然最后也七七八八混了个大概样子出来,不过卡在了寻址那里。面试官大人高抬贵手放我一马,接着问了问同步和锁的问题就算结束了。这里必须感谢国人面试官大哥,虽然我回答的不咋滴,但是他尽量挑我的闪光点说,还是给了一个积极的评价。

第六轮coding,LC的原题两题,继续秒之,找了一点自信回来。

第七轮系统设计,两个面试官里面有一个好像以前是谷歌的大牛,所以一上来就是讨论TCP的滑动窗口。我搜肠刮肚把以前还给老师的知识都一一抢回来才勉强通过,接着有讨论如何用这个滑动窗口实现可靠的多播,最后还问怎么用这玩意儿实现事务一致性。。。又被玩残了。。。

七轮结束之后,我咬着牙用毅力把自己残破的身心拖回了车里,修整了好一会儿才终于攒足了开回家的力气。。。

 

一周之后的周五我又准时来到了脸书的onsite战场。脸书相比领英好了不少,才四轮45分钟的面试。两轮coding,一轮系统设计,一轮行为问题加简单coding。

第一轮,系统设计,不过这次的设计比较简单,是一个网站系统的设计,讲讲基础架构,搞搞分表,哈希,索引,负载均衡啥的关键字忽悠,然后过一过大致工作流程就算过关啦。还稍微比较了正索引和逆索引的优劣。

第二轮,coding,与LC的原题很类似的一题,不幸的是我想偏了,其实挺简单的,结果花了好长时间,不过最终还是搞出来了。算复杂度也是算不出来,在一顿提醒之后终于是搞了出来。唉,不是科班出身理论方面就是比较弱啊。。。

中间和HR吃饭,略。

第三轮,行为问题,和领英差不多,为啥来脸书,为啥要离开原公司,之前干了啥,有啥比较自豪的项目,等等。最后来了一个coding,实在比较简单,略过。

第四轮,coding,LC的原题两题,外加一个引申题,算是三题,继续秒之。稍微问了下复杂度。

四轮之后,我就神清气爽的回家了。被领英暴虐之后果然被虐能力有了极大的提高,心理素质也好了不少。哦,还有一个因素就是在去脸书onsite之前的一天,领英的HR正好告诉我面试结果比较积极,很有希望拿offer,所以去脸书面试的时候就更加放松了,嘿嘿。

面试小节:

面试心得这个东西每个人都不一样,要说到底是什么因素使一个人能够拿到offer,我觉得也是没有一定答案的。但是其中非常重要的一点肯定是要让面试官爽啊。到不一定是为了让他给自己写个好评啥的,而是毕竟面试官找的是一个将来可能的同事,就算这个被面试的人超级牛逼,但是说话啊动作啊什么的让人很不爽,那面试官也肯定非常不希望和这样的人做同事,对吧?接下来我个人觉得很重要的一点就是基本功了,有时也被称之为感觉或者直觉。在面试的时候通常人都会比较紧张,一紧张就容易出错,平时想得到的东西也会忘记,这个时候基本功扎实就会比较占便宜,跟着感觉走,慢慢可能正确的思路就来了。基本功的还有另一个方面就是写干净正确的代码。虽然我的理论基本功不是很扎实,还好通过不断地练习,coding的基本功还可以,写出来的代码bug比较少,也比较整洁,我觉得这一点也是很关键的。最后就是自信了,哪怕被虐成渣,也要有自信,要抱着“不是爷不行,只是爷在这一块领域不太懂,给爷一些时间,说不定比你还厉害呢”的阿Q精神,千万不能怂了。

 

大致就是这样了。最后我还是选择了去领英,一来做的东西听上去更NB,二来感觉公司潜力更大,三来给的薪水也多了不少。至于薪水方面,由于我之前是传统软件行业,而领英属于是互联网企业,工资标准提高了不少,算上股票奖金啥的,这一跳几乎涨了70%,真是乐开了花儿。等我去领英正式入职之后再来向大家报告在领英工作是什么样的体验。

你可能感兴趣的:(it)