一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 12091|回复: 46
收起左侧

[实习] Ivan's 寻职系列(一):找实习 (Facebook, Google, Apple, Twitter, Palantir)

    [复制链接] |试试Instant~ |关注本帖
iveney 发表于 2015-5-4 07:35:59 | 显示全部楼层 |阅读模式

2014(1-3月)-[10]EE博士+3个月-1年 - 内推| 码农类实习@Facebookfresh grad应届毕业生

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
*首发一亩三分地,未经授权请勿转载*
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
## 前言 ##. Waral 鍗氬鏈夋洿澶氭枃绔,
这篇东西真是 long over due。我是去年去的 Facebook 暑期实习,今年转正的 full-time。本来应该实习完马上总结,但无奈回来后一直太忙,拖到现在入职前夕,终于感觉不能再拖必须得写出来。一来为了纪念自己终于结束了长达 11 年的大学生活,二来我喜欢分享,希望自己的经历能帮助到人。我预计会写一个系列共三(or 四)篇文章,首先是找实习经历(这篇),其次是实习经历,三是找工经历。最后如果有我时间,我会介绍一下full-time 后与 PhD 的对比。虽然我看过有不少 FB 的实习经历,但貌似没有 PhD 背景的,我可以来添砖加瓦一下。

## 背景 ##
先来点个人背景:国内 SYSU CS B.Sc,香港中文大学 CSE M.Phil, 美国 UIUC ECE PhD (fun fact,地里那篇早期的 fb 实习经历作者是我本科同学)。我的背景比较特殊一点,所以有必要介绍一下。我虽然就读于 ECE,但是个人的知识体系是建立在 CS 上的,还是偏理论那方面(我最感兴趣的是 Computability Approximation Algorithms 这些,不过充其量只是兴趣,自己没有那个天赋在这些方面有成就 :p),MS 和 PhD 阴差阳错地做起了 VLSI CAD (Computer-aided Design, a.k.a. Electronic Design Automation) 的东西,具体历程不表。别人看起来我是『做硬件的』,但我的 focus 主要是设计解决电路设计问题背景下的算法,EE/CE 的知识倒是其次。所以找起实习/工作来,总是要先跟别人解释一番。用我自己的话来说,就是 EE 壳 CS 心。这给我找回『老本行』的工作带来一点困难,因为别人看见我是 ECE 的,总是不自觉会 question 我的 match。这里的 take away 就是,找到自己的 niche point,合理包装自己。现在很流行 EE 转 CS,事实上不少 EE major 的人编程和算法能力比一些 CS major 的要扎实,但他们跟我 share the same pain point,就是如何 convince 别人(recruiter, interviewer)你拥有 CS 的 skill set。我的做法是,有一份 CV 和 一份 resume。CV 就是没有修饰过的,最平实的个人履历,找 research related positions (postdoc/faculty) 用的。而简历我有很多份,是面向 industry 的。简历和跟面试官的自我介绍里尽量强调跟 CS/IT 工作性质相关的经历与技能,(Plus: 如果可以,职位相关的技能),把别人的思路引到你想要的地方。举栗:如果你上过 Data Mining 的课,并且在找 DM 相关职位,那么完全可以把 DM 和 这门课放在简历靠前,并且和 interviewer 介绍时早点提到自己 looking for/interested in a DM related position。. Waral 鍗氬鏈夋洿澶氭枃绔,

## Timing ##
找实习的 timing 很重要,我这一次找得太迟,很多地方都几乎到了 close 的时候。最理想的找实习时间是 fall semester,因为种种原因,我秋季总是很忙,所以一直没有找。等到了二月底时,fellow TA 跟我说要去 FB 实习了,我才匆匆想起该找实习了,于是临时让 FB 的朋友 refer 了一下。这里真要感谢我的 recruiter Mikel,我那么 late notice 都能给我安排面试。相比之下隔壁实验室的哥们就没那么幸运……这种时候,以及后来找工作的过程中,我还是能感觉到在 prestigious 的大学就读,reputation还是有那么点作用的。我个人的 viewpoint,是比较偏向找工作侧重看实力的,但无可否认几乎所有我碰到的 recruiter ,都让我感觉非常重视我们学校的学生。至少,学校名声是一个很好的敲门砖

## 公司 ##
这次的实习我一共投了 Facebook, Google, Twitter, Palantir,Apple。投的不多,一方面我个人风格比较喜欢小而精,focus usually gives the optimal outcome for me,另一方面由于找的时间迟,选择也不如别人多,而且我希望简历都是让别人给 refer 的。因为直接递简历的话,到 recruiter 手上的 turnover time 太长,除非是在 career fair 上直接递的。所以平时如果可以积累人脉,就尽量积累。我的 connection 主要来自校友或之前去实习时认识到的朋友,感谢他们,让我不需要去 career fair 上排队。我去过一次见识就再也没去了,比较火的公司都要排半小时队,感觉不是最有效率的方法(准确来说我后面去了几次 Engineering fair,不过都是搜刮 freebies 而不是投简历...)。这几间公司里,twitter 是给我印象最差的:这次的实习完全没有回音,而后来的找 full-time 过程也是回应非常慢或没有,面了两轮电面后就没消息了。这个年头竟然还是采取的『默拒』(说到这里我就想发个微信里抠鼻的表情。。。)。Palantir is just slightly better,recruiter 都是模板 email,面试官则给人比较傲慢的感觉(印度人?Anyway,咱不以最大的恶意揣测别人,而且我也有不少好朋友是印度人)。为 Google 点个赞,recruiter 异常迅猛。我跟他们解释我的 time frame 很 tight,他们就给我安排了一周后同一天的两个电面。面完非常体贴地第二天就给我消息说 pass 进入 host match 了。可惜可能是找的时间太迟(面完已经三月多了),一直没有 match 到 team。FB 则是大赞,整个 recruiting team 都让人感觉非常 professional,一直很有礼貌也很积极,让人感觉是真心为 candidate 设想。Apple 比较特殊,是我一个同学的推荐,因为比较 match,跟 manager 打了个电话就发 offer 了。虽然我是个忠(nao)实(can)用(guo)户(fen),考虑到苹果的 notorious self-censoring,我比较喜欢去一个能自豪地跟别人说自己做了什么东西的公司。题外话:苹果的 offer package 真心高大上,寄过来的 package 纸质、包装把其他公司碾成渣渣… 但是它家的 recruiter非常 push,一直在催我签 offer,很符合 Apple 那一贯的高冷傲娇感。

## 准备 ##. 1point 3acres 璁哄潧
正如上面所说,我找实习的时间比较尴尬,所以准备时间不大充分。但是现在回想起来,准备不充分总好过不行动。我秋季没有找的一个原因,就是觉得自己没时间准备,但如果不去找,那就甚至没有机会了,只能像这次一样很惊险地 rush。话说回来,这种时候是很能体现一个人基本功扎实的时候,包括 coding skills,basic algorithms,CS fundamentals。对于前两者,如果平时都有 keep coding,那么准备起来就不会那么辛苦。我自己做的 research 需要 implementation & experiment,所以对我来说不是大问题。对于后者,我主要指的是像操作系统、编译原理、并行计算、软件工程等的 CS 核心课程。如果你是 CS 科班出身,并且本科学习时有认真学好这些课程,心中有建立起 systematic 的 syllabus,那么 review 起来应该是很简单的事情。这里值得一提的就是刷题,虽然我个人觉得这样非常应试,从长远来看会使得整个 field 鱼龙混杂。对于个人来说,如果是刷出来的结果,那么未来注定是要”还"的,而对于面试官而言,也越来越难设计好的题目。但毋庸置疑的是,在所有人都刷题的大背景下,你不刷题,只会 put yourself at an inferior situation。顺应潮流,我刷了 leetcode。大概每天花3-4小时根据 AC 率切10-15题,前后一共10天,这么做下来大概 130 题左右。虽然不多,但是我会每道题尝试做不同的解法,比如很多题目也提示你可以写递归+迭代两个 version。中间看了一点CTCI,里面的题目我不是特别喜欢,但是里面提到的解题思路非常不错(use an example, draw a simple case, pattern matching 等)。Elements of Programming Interviews 的题目我超级喜欢。尽管可能偏难,但对于学习来说,是一个非常好的资源。另外,我还花时间 review 了一下前面提到的 fundamentals。最后,我侧重复习了 Machine Learning 相关的内容,把 Andrew Ng 的 notes 和 programming exercise 过了一遍(我之前上过偏理论的课,感觉没有 Ng 的讲得 practical 和接地气),因为我这次实习想找类似的 position。

Practice makes perfect! 准备得差不多了,你可以跟你的同学进行 mock interview。学校一般有提供这么个服务,缺点是比较 general 而无法针对专业(或者不够真实)。我们专业的一个 honor society 则有提供专门的 technical interview,反馈还不错。我也 sign up 了我们系的 grad mentoring program,给小盆友们提供过类似的服务,回报社会ヽ(✿゚▽゚)ノ (其实还蛮好玩的,严重考虑做个 part-time)

## 流程 ##. 1point3acres.com/bbs
因为最后去的 FB,所以来详细说一下。PhD 的实习招聘流程跟 BS/MS 有点不一样,会让你先选择三个你的 top choice 方向/组。因为我兴趣是 ML (以及 CV),自然而然地就选择了 Ads, Feed, Image。接下来就是标准的两轮电面。没有什么很特殊的东西,就是基本的算法,以及 ML 相关知识。其中 ML 算是 domain knowledge,更大的情况下考察 PhD 时出现的几率会多点。老实说我有点 surprise,我并没有表现得我理想中的好,稍微有点磕磕碰碰,但最终还是很快就拿到了 offer。我感觉主要可能是以下几个原因:think out loud, 学校与个人背景, 面试官比较 nice (中国人). 后两条只是猜测,我觉得不用想太多,茶余饭后笑笑就好。而第一点,则是经过我的实践证明过的,我详细介绍一下。

在这么多的面经里,我觉得最有用,并且我也一直坚持实践的就是 think out loud。这样做的好处就是能让 interviewer 看到你的思路。我一般会大概描述一下我的 first impression:I think this question is about XXX, and seems can be solved by YYY。如果这时候 interviewer 没有提意见,我会继续说更具体一点的想法。然后我可能会思考个大概 30 secs,在草稿纸上一边打一些草稿,同时也会说我在想什么,但这时候我不会太考虑时间效率,因为后面可以 improve,其次是至少先有个 baseline,更重要的是,这是一个 improve 的过程,使你的解题过程更翔实丰满。等到想法比较成熟了,我会 outline 一下我的 solution,并且征求意见看是不是可行:do you think this make sense? If yes, I can go ahead and code it。如果不是太 absurd,interviewer 会说 no problem,那么我就开始 code 了(这时候如果面试官如果明知这个方法很有问题也不指正,那么似乎有点不厚道)。在 coding 的过程中,我喜欢一边 code 一边说我在干啥,解释一下为什么要这么做。当然,少数面试官不喜欢这样子,会让你别墨迹,赶紧闭嘴写出来。所以这里就见仁见智了。写完 solution,我会做一个 sanity check。如果有例子,那么我就直接用 ta 给的例子,否则自己 create 一个 example 作为 input,go through 一下自己的 code。这样做的好处就是,有很大的几率你能改正一些在 code 里逻辑不对的 statement,尽管你的思路很可能是对的。这样下来,我有 95% 的 confidence 我的 code 是 work 的。我一般面试后会做笔记,经验证,这个流程出来的 code 基本上不需要或者只需要很少的修改就能编译通过并且结果正确。. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷

Suppose 你已经有了第一阶段的 code。如果面试官同意你的 implementation,而其实存在更好的算法,他会让你尝试 improve。在算法框架对的前提下,identify the bottleneck。最常用的无非就是利用 Sorting/Hashing/Dynamic Programming/Memoization 来 cache 一些 result(for those unfamiliar, 你没看错,不是 memorization),2^n -> n^2, n^2 -> n log(n) -> n, n->log(n)。比起一些需要算法 design 得很 fancy 才有好效率的题目,我更 prefer 这种题目,既可以体现 interviewee 设计与改进算法、熟练使用基本数据结构的能力,又能给 interviewer 机会对 interviewee 循循善诱,poke further 最终了解更多。我见过最好的题目,可以有很多个 version 的算法,而每个 version 都是上一个 version 的改进,并且能体现出 unique insight。比如说,一道题目可以有一个 no-brainer brute-force exponential-time algorithm,只需要稍加思考,就能进化到 n^2。而最终最 beautiful 的 O(n) solution,则需要一些 non-obvious observation。这里每做一次改进,interviewer 都能适当地给 hint。是否独立思考出来而不用给 hint,能否进化到下一个 version,都是能划分 candidate level 的一个地方。总的来说,好的面试/面试题应该能反映你解决问题的能力的一个过程,而不是简单粗暴地看你能不能码出代码的一个测试。Conversely,如果一个面试无法给你这么一个机会来表现自己的能力,那么也许这个面试设计得并不合理。这个 topic 可以讲得很深,就此打住 ;)
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
值得一提的就是,think out loud 有一个前提,就是你的英语口语要过关。如果你不能流利表达自己的想法,那么你是很难 fit in 一个 team work 的环境的。我比较惭愧的是在美国生活那么久,结识到的 native friends 寥寥无几,而实验室也没有 native speaker。所以我只能平时一有机会,都抓紧时间跟别人多用英语交谈。我比较喜欢纯正的美音,所以我有时间我也会看看 youtube 上的短视频纠正一下。想系统地学,则推荐 American Accent Training。我觉得有 Chinese accent 不是坏事,但是这很容易跟发音错误混淆。

相比之下,Google 的题目则非常 interesting,很合我口味。虽然短短两小时面试,却涉及到了 OOP design, probability, statistics, linear algebra, math (real analysis), algorithm & data structure, multi-thread 等,不可谓不广博——一般别的公司 45 mins 面试也就问一题而已。后来找 full-time 的时候,google 的面试题也的确让我感觉是设置得在深度和广度上都是最好的。

Pass 面试之后,就是标准的 team match 流程了,大概就是再跟你确定一下 interest,然后就是看看能 match 到什么 team。这个貌似没什么好说的。发了 offer 后,我稍微等了一下 google 的 host match。虽然今天的 google 已经不是 10年前那个,但周末能戴着badge去大华在本科时留下的光环还是让我决定等它一下。虽然最终没等到 match,现在看起来也不能不说其实是一件『幸运』的事情,因为没去 FB 之前,我不太了解这间公司,直到去了才被它的文化所感染并且喜欢上它(I am not alone,最近FB还被评为 #1 best company to work in, glassdoor 上员工的评分也一直很高)。正所谓祸兮,福之所倚。要真 match 到了,估计又要纠结好一阵(谁叫你丫选择困难)。

## 总结 ##
我在美国一共找过三次实习,教训就是,找实习一定要早做准备,be active,这样依赖运气的成分就会少点。我提倡注重平时积累总结,这样 review 起来就不会那么辛苦。这其中也包括口语,这样表达交流起来会更流畅,也是你能 think out loud 的大前提。最后,你可以尝试 mock interview 来 test 自己的 ability。

写着写着没想到能写这么长,本来想连着实习经历一起写的,只能分成两篇。看来不小心解锁了 PhD 职业的写 paper 的技能……. Waral 鍗氬鏈夋洿澶氭枃绔,


. from: 1point3acres.com/bbs

评分

23

查看全部评分

本帖被以下淘专辑推荐:

billb 发表于 2015-5-4 08:21:17 | 显示全部楼层
请问phd在起薪上是不是比MS有优势呢?
回复 支持 反对

使用道具 举报

wizard19900509 发表于 2015-5-4 08:29:28 | 显示全部楼层
billb 发表于 2015-5-4 08:21
请问phd在起薪上是不是比MS有优势呢?

优势非常大。。。
回复 支持 反对

使用道具 举报

tbu 发表于 2015-5-4 08:41:37 | 显示全部楼层
赞!感谢LZ如此详实的分享自己的经验!
回复 支持 反对

使用道具 举报

billb 发表于 2015-5-4 09:22:39 | 显示全部楼层

果然读书多 就是有好处 那LZ是不是已经EB1了吧
回复 支持 反对

使用道具 举报

liusicong999 发表于 2015-5-4 10:02:24 | 显示全部楼层
LZ的eb1办下来了吗?
回复 支持 反对

使用道具 举报

joykong 发表于 2015-5-4 10:13:45 来自手机 | 显示全部楼层
感谢分享~期待下回分解~
回复 支持 反对

使用道具 举报

carmeloandy 发表于 2015-5-4 21:11:35 | 显示全部楼层
楼主辛苦了,写的真是太详细了。。
回复 支持 反对

使用道具 举报

 楼主| iveney 发表于 2015-5-5 11:56:52 | 显示全部楼层
billb 发表于 2015-5-4 08:21
请问phd在起薪上是不是比MS有优势呢?

. 鍥磋鎴戜滑@1point 3 acres有,但我感觉不是非常 significant。recruiter: PhD ~= 5年的工作经验,MS ~= 2, 但多出的3年下来你应该能拿到比 PhD 起薪高的工资。
回复 支持 反对

使用道具 举报

 楼主| iveney 发表于 2015-5-5 11:57:20 | 显示全部楼层
billb 发表于 2015-5-4 09:22
果然读书多 就是有好处 那LZ是不是已经EB1了吧

没,我还没入职呢。
回复 支持 反对

使用道具 举报

 楼主| iveney 发表于 2015-5-5 11:57:33 | 显示全部楼层
carmeloandy 发表于 2015-5-4 21:11
楼主辛苦了,写的真是太详细了。。

我也觉得,吐血了都。
回复 支持 反对

使用道具 举报

purplepapa 发表于 2015-5-5 12:15:35 | 显示全部楼层
感谢楼主分享,期待续集:)
回复 支持 反对

使用道具 举报

yanzhang0219 发表于 2015-5-5 12:44:17 | 显示全部楼层
非常期待续集。
回复 支持 反对

使用道具 举报

JohnnyHuo 发表于 2015-5-5 23:02:31 | 显示全部楼层
好详尽的经验分享,赞
回复 支持 反对

使用道具 举报

vannem 发表于 2015-5-6 04:29:57 | 显示全部楼层
恩 就喜欢这种标红重点的文章 或者写个abstract或者introduction更好了
回复 支持 反对

使用道具 举报

林微熙 发表于 2015-5-6 06:57:42 | 显示全部楼层
赞一个
写得好
期待后续
回复 支持 反对

使用道具 举报

此用户无名 发表于 2015-5-6 08:58:08 | 显示全部楼层
期待后续文章。
我这种喜欢看文章,自己不努力刷题做project的人死穴在此。
回复 支持 反对

使用道具 举报

QINGMO17 发表于 2015-5-6 09:35:38 | 显示全部楼层
双料校友路过手动点赞。。。不过每次看到这种大牛经验贴都觉得我这种社科🐶离转CS都还是太遥远了
祝工作顺利!
回复 支持 反对

使用道具 举报

 楼主| iveney 发表于 2015-5-10 06:25:00 | 显示全部楼层
QINGMO17 发表于 2015-5-6 09:35
双料校友路过手动点赞。。。不过每次看到这种大牛经验贴都觉得我这种社科🐶离转CS都还是太遥远了{:4 ...
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
结婚生娃的才是人生赢家啊……
回复 支持 反对

使用道具 举报

wsd10 发表于 2015-5-10 07:58:38 | 显示全部楼层
收藏了此贴!
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-8 20:08

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表