分享个CS找工作的经验
看得懂中文的人都知道要去看一亩三分地,导致繁中的资源很少
但是由于看了某些文起肚烂,我就来写一篇找CS工作的经验分享
结果:
- Offer: FLAG x 2,MS x 2 (不同组允许同时面),Expedia、大Startup x 2,小St
artup x 3
- (因为有offer)婉拒onsite:5
- (因为有offer)取消电面: 3
- 沉船:LinkedIn、MS (XBOX)、Amazon (Flex)、高盛、Citadel、Two Sigma、Uber
、和一些startup
我先介绍我的1. 战略分析,再来2. 经验,附上3. 背景
经验分成三个部分:2a, 刷题/解题、2b. System Design和2c. Behavioral Question
最后给个4. 心得做为结尾
1. 战略分析
这只是我的分析,对不对请读者自己斟酌
去各大公司网站上投履历是有用的!我的FLAG实习就是海投来的
但是能找内推就找内推
LinkedIn上面直接丢recruiter也并无不可
有些时候可以跳掉phone screen就争取看看
我G有跳掉phone screen
合理战略,把一些可有可无的公司放在前面,面挂了也没关系那种
所以我是先找一堆startup来练习面试
当然因为我有一些实习经验,加上我是在职换工作,相对好拿面试
如果没有办法拿到这么多面试的朋友可能就多找mock 的机会
我个人是几乎不可能去湾区
所以我甚至拿湾区(LinkedIn、Uber)、纽约(高盛、two signma)、芝加哥(Citadel)的公
司来练
我还有拿contractor的职位来练
timeline:
- 2019/06初: 开始准备,猛刷题,海投履历,leetcode 400题
- 2019/06中:开始接受不是很想去的公司的phone screen、online assessment
- 2019/07中:leetcode 600+,不是很想去的公司有些有offer/onsite
内推想去的的公司的phone screen、online assessment
- 2019/08中:想去的公司开始onsite,不是很想去的公司offer
- 2019/09初:开始有想去公司offer
2. 经验
这是我的经验,未必是通例,参考参考吧
2a. 刷题/解题:
- 基本的那些资料结构要熟,时间、空间复杂度要讲得出来,基本的sort、tree、
BST、Graph、recursion、Union Find等等,这些东西要知道怎么用
- DP就听天由命了,我至今也不是每题都想得到
- 至少要能用英文把自己的想法解释清楚
- 解释完想法后,面试官答应了再开始coding,不要糊里糊涂就开始乱写
- 摆脱IDE,就算你不练白板coding,至少要无IDE(无autocomplete... etc)环境的
coding,这样面试才不会漏东漏西
- 重点:题不是刷过了就算了!会忘!我是一新一旧的刷,每刷一个新题就练一个旧的
这样可以确保某些公司求快的你可以迅速出答案,例如F要45分钟出两题标准答案
- 某些公司如G几乎不考原题,就要想尽办法练新题,想办法自己想出答案
参加Leetcode的竞赛是不错的练习,我最后三次参加竞赛是解出四题、三题、四题
- 题目不是Leetcode test case过了就算了,要确定是最佳解,我个人是C++在刷
如果我的解答时间不是TOP 30%我就会看答案,并且改我的写法
- 重点:要练HackerRank!一大堆online assessment是他们家的系统,因为系统不熟
挂掉是很悲惨的事
- 重点:解题的时候想不出标准答案,也要给个半残的答案,解释给面试官听
他同意你的解释,你写个半残的答案出来,至少不是0分
- 我2016 Leetcode 400题时拿到 FLAG实习
650题时,开始拿西雅图startup offer
750题时,拿西雅图中型startup 和MS offer
850题时,拿西雅图FLAG offer
2b. System Design
我也是很头痛,我在学校待太久,没有真的做过大的系统
我就是读一读Grokking the System Design Interview - Educative.io
看看Youtube的影片
- 基本:Grokking每个章节都看得懂的程度
- 基本:盖上Grokking网站之后,自己画出所有内容
- 基本:要把题目问清楚,各种requirement问出来,写在白板上列表
- 重点:问面试官再来他想看什么
这是我面试久了才发现的事,Grokking和Youtube、每个影片讲的流程不一样
有时候是要看High level archi,有些人想看Capacity analysis
有些人想看DB design,所以我翻船一两次之后我了解到:
问完requirement后,应该要问面试官想看什么,然后顺着面试官讲
我曾经在high level画完之后,面试官想看load balancing/scaling的问题
当时经验不足,欲哭无泪,没时间了
2c. Behavioral Question
(这是我的偏见)按照亚麻的13条Leadership principles去准备
亚麻的能答出来,其他就能答出来,掰故事也要掰出来
BQ就是那些乱七八糟的东西
无用,但是你查到的每一题,你都要有答案
连G家都有Googliness,有够弱智
我G的面试官(好二六,摆明要放水)和我一起
边骂G干嘛学A弄那个没有用的
边把我的答案(某些是掰的,ㄏㄏ)填入问卷里面
(PS. 我亚麻遇到全老印面试官,我flag offer x 2,亚麻挂了,请各位自己解读)
3. 背景:
- 学历:台湾top 3 CS学士、美国某中西部CS硕博
- 实习经验:湾区FLAG一次,没拿到return offer
X公司一次,西雅图分部
- 正职经验:X公司1.5 y
4. 心得
论钱其实FLAG给的不是最多的
我有大startup offer给的非常非常猛(有些人1M/4y就在吹,颇ㄏ)
听到我有FLAG的Offer之后还要加钱
只是我个人志向不在拼搏,而是求稳定,所以还是选了FLAG
FLAG实习时在湾区体验过一阵子,确定自己不喜欢湾区的氛围与气候
突然上了文章,满足博班毕业条件,指导教授放人的时候题目练的也不是很多
FLAG+M没上就去X了,毕竟在西雅图,不用去湾区
而且有认识的人,之前Manager、组员都相处融洽
待了一年多快两年,却因为斗争因素整个组要被裁(2019/06)
虽然有几个缺可以留,但是还是不如归去
胡乱讲了一堆,希望对任何人有点帮助
谢谢!祝大家好运,offer连连