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%,真是乐开了花儿。等我去领英正式入职之后再来向大家报告在领英工作是什么样的体验。
onsite的更多相关文章
- [tour]2019HUST onsite签到
先定一个小目标,从签到题开始讲清楚 虽然因为我喜欢签到题的气球导致签到题并没有行使责任.. F.Mesh 和某CF题(我找不到了)完 全 一 致,由于某些玄学原因没有get到(orz谢罪) 给出一个6 ...
- Amazon onsite behavior question
https://www.1point3acres.com/bbs/thread-307462-1-1.html http://kraftshala.com/how-to-raise-the-bar-i ...
- jingchi.ai 2017.11.25-26 Onsite面试
时间:2017.11.25 - 11.26 地点:安徽安庆 来回路费报销,住宿报销. day1: 大哥哥问了我一个实际中他们遇到的问题.有n个点,将点进行分块输出,输出各个块的均值点.具体就是100* ...
- Petrozavodsk Summer-2016. Warsaw U Contest, XVI Open Cup Onsite.
Petrozavodsk Summer-2016. Warsaw U Contest, XVI Open Cup Onsite. Problem A. Gambling Problem B. Colo ...
- 【论文笔记】A Survey on Federated Learning: The Journey From Centralized to Distributed On-Site Learning and Beyond(综述)
A Survey on Federated Learning: The Journey From Centralized to Distributed On-Site Learning and Bey ...
- CROC 2016 - Final Round [Private, For Onsite Finalists Only] C. Binary Table FWT
C. Binary Table 题目连接: http://codeforces.com/problemset/problem/662/C Description You are given a tab ...
- codechef [snackdown2017 Onsite Final] AND Graph
传送门 题解给出了一个很强势的dp: i<K $$dp[i][len]*Fib[len+2-(t[i]==1)] -> dp[i+1][len]$$ $$dp[i][len]*Fib[le ...
- codechef [snackdown2017 Onsite Final] Fusing Weapons
传送门 题目描述 大厨最近迷上了一款勇者斗恶龙的游戏. 游戏每局开始前,会有 N 件武器摆成一圈.每件武器有一个整数的等级.大厨可以选择两件 相邻的等级相同(不妨设同为 A 级)的武器,将它们合成.这 ...
- codechef [snackdown2017 Onsite Final] Minimax
传送门 题目描述 考虑一个 N 行 N 列的网格,行列编号均为 1 ∼ N.每个格子中包含一个整数.记 ri 为第 i 行的最小值,Ci 为第 i 列的最大值.我们称一个网格为好的,当且仅当满足:$$ ...
随机推荐
- Android.mk中的经常使用语法
Android.mk编译文件是用来向Android NDK描写叙述你的C,C++源码文件的, 今天查了一些经常使用的的语法. 一 概述: 一个Android.mk文件用来向编译系统描写叙述你的源码. ...
- java并行体系结构
并行编程 线程通信 共享内存和消息传递 线程同步 控制不同线程的运行顺序 java并发 基于共享内存模型 指令重排序 编译器重排序 处理器重排序 cpu重排序 写缓存区(cache.寄存器) 内存屏障 ...
- BZOJ 2947 Poi2000 促销 set
标题效果:特定n天,首先插入一些每天.然后去掉最高值和最低值,要付出最大的值-至少值价格.乞讨n总天数支付的价格 堆/段树/平衡树光秃秃的标题 #include <set> #includ ...
- C++内存分配和拷贝构造函数写研究
昨晚参加笔试,开错题,有印象中的概念,但目前尚不清楚是怎么回事,什么原理,导致错误的话题.现在总结. 一.C++写内存分配研究 问题考察例如以下,请先不要看答案,看看你是否能做对,呵呵: waterm ...
- 【LaTeX排版】LaTeX纸排版<两>
1.文件夹的生成 直接使用命令\tableofcontents就可以. 其默认格式例如以下: 我们会发现.这种格式不一定是我们所期望的. 比方说,我们也希望章标题与页码之间也有点连线,而且也希 ...
- 管道通信(使用popen和pclose功能简单的控制管道)
函数原型: FILE *popen(const char * command ,const char *mode) int pclose(FILE * stream) 当心: 采用popen和pclo ...
- C#精华(文章3版本)笔记
C#精华(文章3版本) 跳转至: 导航. 搜索 文件夹 1 C#概述 2 数据类型 3 运算符和控制流 4 方法和參数 5 类 6 继承 7 接口 8 值类型(struct) 9 合式类型 10 异常 ...
- [转]JS中的prototype
JS中的phototype是JS中比较难理解的一个部分 本文基于下面几个知识点: 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个 ...
- Matlab基于学习------------------函数微分学
<span style="font-size:18px;">% 函数微分学 % 函数微分学难比功能区,中的积分函数的性质整体叙述性说明.在某些时候差描述叙事的斜率功能 ...
- Hash散列算法 Time33算法
hash在开发由频繁使用.今天time33也许最流行的哈希算法. 算法: 对字符串的每一个字符,迭代的乘以33 原型: hash(i) = hash(i-1)*33 + str[i] ; 在使用时.存 ...