一亩三分地论坛

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

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

[找工就业] 北美(湾区)CS工作进阶攻略-求职篇

    [复制链接] |试试Instant~ |关注本帖
ilnlh 发表于 2014-9-21 13:47:42 | 显示全部楼层 |阅读模式

2014(7-9月)-[11]CS硕士+1-3年 - 内推| 码农类全职@

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

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

x
本帖最后由 ilnlh 于 2014-9-30 23:04 编辑

先告诉大家个秘密,集齐FLAG onsite各一次,可以换Apple offer一个。 ;-)


0. 写在前面的“废话”.鏈枃鍘熷垱鑷1point3acres璁哄潧

因为当时full time是intern时拿到的return offer,所以也就没有什么找工作的经验可写;直到最近换工作、有机会体验了一下,把经历和经验共享出来,希望能帮助那么几个人少走一些弯路,也便没有白费时间了;同时写总结也是自己一贯的习惯,并留个纪念。

我的背景相对特殊,没有特别参考价值,所以放到最后面去说;不过整个准备和面试过程 是可以参考、复制的。这里写的主要是我做的,并不一定是必要的,对牛人来说更是;不过话说回来,往往有很多需要做的事情 反而可能被省去了,真正在看了别人的经验总结后  能指导自己行动取得正面效果的  总是少数。还有一部分同学,可能经常能被自己看经验帖时的决心和决定感动,但第二天就好像一切都没有发生过。我能给的建议只是 温故而知新,有些经验帖同样需要反复看,这点我在GRE的经验帖里也提到过。

有些同学经常不加区分把做成一些事情的人叫牛人,其实是给了自己一个心里暗示,他们成功是因为他们本身很牛,我不牛 所以不成功也没有关系、是理所应当的,也就这样把那些人付出的努力忽略过去、或者价值贬低了。
. from: 1point3acres.com/bbs

1. 基础准备工作

下面主要是我自己做过的一些前期工作,严格来说不属于找工作阶段,什么时候都可以做,什么时候开始都只可能晚、不会算早。

1)基础知识

算法首当其冲。个人不推荐CLRS,啃下来需要的精力是大多数人来不及投入的,除非目前还是本科或者工作后慢慢来。国内用的严蔚敏、吴伟民的数据结构(C语言版)其实就足够了,基础需要掌握的都cover到了,一些相对advanced topics比如KMP算法、trie tree也都有。面试前至少这上面(http://www.bigocheatsheet.com/)大多基本数据结构的复杂度能够很快反应出来吧。可以了解一下quick selection、reservoir sampling、bloom filter、suffix tree、disjoint set、morris traversal等,面试时真聊起来 会锦上添花。

如果对big data感兴趣,至少弄清楚hadoop的工作机制,了解一下NoSQL、CAP、BASE、dynamo、BigTable等等,可能的话了解一些visulization tools,比如matlab、octave、d3等;如果对scalability/distributed system感兴趣,可以多看看www.highscalability.com的文章(特别是右边 ALL TIME FAVORITES 部分),上各大公司的tech blog读几篇文章;用Java的话,对Collection和Map两组数据结构了解清楚,了解一下多线程,推荐javarevisited.blogspot.com。(这里说的“了解”,是至少达到能够脱稿聊得起来得程度,否则面试时真说到了,只是”哦,我好像听说过“ 那么也没什么太大意义)

推荐读读这两篇posts:

2)简历

网上有各种详细说如何写简历的帖子,我这里不赘述了。我自己的简历最开始是申请学校时用的版本,到这次找工作最后用的是第11版(每次大改升级)。个人推荐把LinkedIn和GitHub链接放在简历上,这两个链接的质量就看你前期准备工作做得如何了,特别是LinkedIn。可能和我有过一些工作经验、并且身在湾区有关,至少每周基本上总会有几个recruiter在LinkedIn上给我发招聘信息的,大多是小公司、但也有facebook、yahoo、apple等。
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
有些同学听说LinkedIn重要,就开始各种发邀请,最好同时看看自己是否有准备好,以己度人 考虑下别人看到一个 长度连半屏幕都不到、滚动条都没有的profile,是否有动力点“Accept Invitation”。这样的profile即使connection再多也没有什么意义。

3)练习

最基本的应该算是Careercup的CtCI。我找实习前 寒假过了一遍,基础的部分写了一下,找实习时断断续续又过了一遍,这次找工作以这个起手 先过了一遍。推荐一下mac上的Skim软件,阅读时可以添加标记、注释等,我把自己不能很容易想到解法的题目圈出来,之后每次面试前都会把这些题目过一遍。

进阶选的LeetCode。目前151道题online judge,我对自己动手能力比较有信心、第一遍只写了50+题目,主要目的是熟悉有什么样的解法,花了更多精力去看别人的讨论,并标注收藏,顺序按照AC rate从高到低,这样方便开始找一些小公司练手;第二遍根据分类把所有题目都写出来 同时复习之前标注的各种解法,以巩固动手能力、提高熟练度 并查漏补缺,一些edge case或者细节 不自己写很难发现,同时在写错的地方添加注释提醒自己注意。整个过程,我觉得最大的收获是了解了一些自己可能想不到的解题思路,比如n-queen的bit manipulation解法、largest rectangle in histogram的不同解法、post-order traversal的不同解法等,发现自己在写代码时 不适合面试的一些习惯,同时提高了对贪婪算法、D&C、DP、DFS等的熟练度。之后面试就反复看以前写过的题目 和 上面注释的自己一开始出错的地方,同时用Java再重写一些题目(之前我用的Python),或者换个思路写。

关键是拿到题目知道怎样庖丁解牛一样把题目剖析开,用不同的解法去解,明白各有什么优劣,面试的时候问到原题也能说出一二三四,让面试官看得出来你下了功夫 而不是死记硬背。

我的基本态度是:只会刷题不行,但是刷题可以有好处。时间考虑上,我觉得大部分人把这些都准备好总需要2、3个月吧。当时看过ctci感觉自己差不多了,也能拿到一些onsite,也碰到一些熟题,但是想提升一下并做到相对的有备无患,还是要上leetcode。

4)项目经验
. 1point3acres.com/bbs
除去正式的internship和工作经验,最好自然是自己有拿的出手的产品,比如在Apple Store里有多少下载量,有自己的网站等等,不过这些牛人估计也不会在读这篇经验贴了。每个人都可能做的是尝试参加open source的project,最基本可以从改issue做起;还可以参加topcoder、Code Jam或者Google Summer of Code等;再退一步,可以把course project做好,放到github上面。实在没有project的话,女生可以考虑把自己照片放在简历上占位,说不定有意外收获哦。 ;-)

5)其他资料:

辅助读物强烈推荐一下 Programming Pearls/编程珠玑,主要是思维训练。GoF的design pattern算是基础吧,不多说了。Java的话推荐一下 Effective Java 和 Java Puzzlers。
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
Online course也可以短时间内提升背景。我花了一个周末完整看了Andrew Ng的machine learning(以前都是断断续续、零零散散),并且做了笔记,速度调为1.5X 还算可以接受;之后面试前都会把笔记快速过一遍,因为和我做过的project、大多面试职位都相关,面试时说话底气更足,感觉这部分时间花销 收效非常明显。面某个公司前发现会scala是plus,就花了些时间去上scala的课。大概意思就这意思,你懂的。

休息或者吃饭的时候,可以读读quora,从 怎样构建像facebook和linkedin那样的可扩展性系统面试时可以问什么问题 等都可以得到很多不同的建议。

.鐣欏璁哄潧-涓浜-涓夊垎鍦
2. 投简历
你还在自己去公司career page投简历吗?那么你已经输在起跑线上了(yes,I said it,“起跑线”),Dincy的帖子里详细写了LinkedIn怎么用,非常实用。能找到校友内推自然最好,不然直接找中国人效果也不会太差,我碰到的大多中国人都还是满热心帮忙的(也或许和我背景还算过得去有关)。另外,我经常收到LinkedIn发的premium account 或者 job seeker account 免费试用广告,如果真的找不到人内推,把这些用起来应该也是不错的选择。我基本完全放弃了自己投简历,但前提是自己做足功课、有一个还算拿得出手的背景让别人愿意内推。. visit 1point3acres.com for more.

在找人内推的时候,我除了附上简历以外,还包括:先找好对应的职位,简要介绍自己的经验、背景 并说明为什么我适合这个/这些职位,附上cover letter,附上 一段不太夸张的第三人称自我介绍,以方便对方更加了解我、从而更容易决定是否要帮忙内推,并且在内推时 更方便地填写表格(与人方便,与己方便)。

几点提醒:不要一次在一个公司找若干人来内推,要不就明确说明,有些人可能在看到系统提示已经有档案时 跟recruiter说明这个人在到处海投;个人觉得说这话也很公平。发邮件语气尽量客气些,毕竟有求于人,中国人特别是年轻人说话容易显得傲气重;因为我也偶尔收到别人要求内推的请求,所以深有体会。再提醒一点关于简历的格式问题,有些系统需要把pdf转成文本,最好自己找个网站尝试一下 看看自己的简历转换成文本后 是否很难阅读;不是每个帮忙内推的同学都会帮你重新格式化的。

除了那些知名公司、众矢之的以外,如何找公司投?
1)在glassdoor、linkedin(或者indeed等)上面建立saved search;特别是LinkedIn点击一个职位信息后,可以看看旁边“People also viewed” 和 下面“Similar jobs”。
2)hired.com 是一个不错的平台,从我拿到的“offer”来看,大多都是有些实力的startup,有利于发现一些hidden gems,比如最近的thumbtack。多说一句,如果用hired.com的话,最好下点功夫把summary部分好好写一下。
3)有兴趣加入startup拼一把的话,还可以关注一下crunchbase的daily update。

上面Dincy的帖子里讲了很多关于如何投简历的内容,我不多赘述了。


3. 面试
1)面试前

第一轮和recruiter聊,最好把下面几个说滥的behavior questions准备好:
-tell me about yourself
-why our company? why leave your current company?
-what specific things you are interested in?
-what are you looking for in the new position?
-tell me a conflict that you met in your project
-tell me a technical difficulty you have met recently
(后两个更多在phone interview或者culture fit时问到)
. from: 1point3acres.com/bbs
除此之外,面试前一天我还会:
-看公司主页,具体了解他们的business model(特别是小公司),主要产品、最新产品,最新的press news,tech blog(如果有的话),team members背景(特别是小公司)
-到crunchbase、angellist、linkedin、wikipedia看公司profile和发展历史
-研究具体的职位信息,上LinkedIn找公司里现有这个职位的人 看他们的背景
-上mitbbs和glassdoor看相关面经
-尽量思考一两个针对公司量身定制的问题 并写下来
-把上面过程中的相关网页分公司加入收藏夹,把想法都写下来,电面的时候随时可以“读”,而且之后若干轮电面、onsite的时候都可以一劳永逸

这些都是do my homework,在聊起来的时候有的放矢,能提出一些有质量的问题。还有,看recruiter和面试官的LinkedIn profile。为什么看?看什么?了解他们的资历,做过什么、对什么感兴趣,做到知己知彼,考虑好问什么问题比较合适。一点小技巧:一般google上直接搜名字 都能搜到;有时这样搜到的简历可见部分较少,可以先搜索公司profile,通过右边“How you're connected”点击“See all”看你能连接到的此公司员工,再通过名字过滤,往往能够看到更多的内容。

电面前半个到一个小时,我会把binary search、reverse linked list、merge two sorted list等非常基础、简短的算法都快速写一遍,把自己总结的、容易错过的小知识点(比如 说到 int 就要考虑是否unsigned、是否overflow)都过一遍,bfs、dfs、permutation等的特点想一遍;onsite 我会开车早到公司半个小时,迅速再把一些知识点过一遍。这些都算是热脑活动了、让自己进入状态。

2)面试中

知识普及(主要针对还没有面试过,想了解一下面试可能遇到的情况的同学):

简历提交上去了,联系你的一般是recruiter(见最后具体介绍),有时也可能是hiring manager。recruiter 如果support很多组,可能会先跟你聊聊、看你的兴趣是什么、看哪个组更合适,然后再去跟有相关opening的hiring manager聊,看哪个组可以给你面试机会;这种情况一般在general hire的公司更常见。有的recruiter可能就support一个具体小组,在系统中看到你的简历、感觉你的背景match,就直接找你聊聊,然后直接确定要不要给你安排面试,或者是帮忙安排hiring manager直接来聊一下决定是否match。这轮一般都是半个小时。如果安排面试,一般都会有专门的coordinator再来联系你具体面试时间。

phone screen常问的问题:talk about yourself / why move / why us。大多数人应该都有想过,觉得自己没有问题,但重要的是试着说一说;我自己是写下来 反复说熟练了,而且这样也能少花些时间在聊天上,有更多的时间完成coding problem。大些的公司,比如facebook、linkedin等,一般都是期望一轮interview完成至少两个coding problem的,所以不要在第一道题上浪费太多时间;小公司可能更随意一些。
. From 1point 3acres bbs
面试时如果碰到完全没见过、没思路的题目,我觉得ctci上面提到的方法很不错:

  • Exemplify
  • Pattern Matching (min value in rotated sorted array)
  • Simplify and Generalize (ransom note)
  • Basic Case and Build (permutation; recursion / DP)
  • Data Structure Brainstorm (median of random numbers)


面试最后问面试官问题,我常问的通用问题:
-how is the team organized (how many teams / team size)
-what’s the stack
-short term (1 - 2 years) plan
-how to distinguish from competitor / similar service provider

3)面试后
. 鍥磋鎴戜滑@1point 3 acres
每次面试后,我会把整个过程再回想一遍,总结一下哪里答得好、哪里需要改进,避免再犯同样的错误,并把每次interview的过程都大致写下来、添加注释,下次电面或者onsite之前可以review一下问过什么问题,答案是什么。这些都能让公司觉得我对他们有所了解、确实对这个机会很感兴趣。
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
如果面试没有发挥好,只要觉得有情可原 都可以找recruiter argue,很多recruiter也希望自己接触的candidate能够work out,也会帮忙争取机会。举几个例子:我google第一面因为是个口音很重的三哥,沟通非常费劲,之后通知我电面没过后,我就直接说accent问题,recruiter又安排了一个美国native来面,后来拿到onsite(当时不懂事,被我裸面浪费了);某startup 第一个recruiter找我面data engineer,结果各种不match,我自己都知道明显是挂的,收到通知后,跟recruiter说明感觉更适合另外的职位,recruiter又帮忙转给负责其他组的recruiter,最后也拿到onsite。


4. 其他
我建立了一个spreadsheet来track自己什么时候发送referral 请求、被refer了、收到recruiter联系等活动,同时添加注释 比如什么时候follow-up、约了什么时候下次面试 等,用颜色区分进度和紧急程度,每天晚上更新、早上复查。
. Waral 鍗氬鏈夋洿澶氭枃绔,
location,location,location。在湾区肯定是不一样的,各种meetup都是networking的机会,比如前些天刚去了Baidu USA的open day。我不很确定,但是感觉recruiter也会更倾向找在湾区的人联系。

FB我阴差阳错面到tools team(据recruiter说 内部分为tools和product两大块,都会一起参加boot camp,但是tools team的不像product的可以自己选组、而是prelocate到tools team;不过很多在fb工作的朋友也没听说过这么分的)。onsite过了,但是candidate review因为种种原因拖了一周,被告知因为我对product更感兴趣所以被pass到product team去review,又拖了一周后被告知因为一些原因最后也没有通过,即使有一个onsite面试官champion我。之前拖的原因之一是 疑惑为什么我的onsite coding interview只回答了一个问题;感觉可能还是被备胎了。


5. Q & A
Q:我的背景
A:国内工作若干年,属于consulting company,有一些在美国工作经验;master第一年暑假湾区实习,拿到return offer,第二年年初加入公司工作,到开始找工作 大概full time 一年半。这次一共面了大概10家公司,最后7个onsite,拿到3个offer,withdrew两个onsite。

Q:面试碰到熟题怎么办?
A:如果面试官没有特别要求你告诉他你是否见过,那么没有必要主动说明你见过,但最好是真的彻底研究过,从最基础的方法说起,说明各种方法的复杂度分析 和 利弊;如果面试官特别要求你说明是否见过,最好不要说谎,不过还是可以继续说自己有做过很透彻的分析、如何如何,不要轻易放过给自己加分的机会。

Q:找 full time 和 internship 时间的区别
A:internship越早开始越好,一般公司从夏季送走intern开始就准备招收下一年的summer intern了,个别公司可能开始稍晚,不过一般秋季的career fair也会去参加一下 做做宣传,碰上很出色的也还是会提前给机会。full time就相对随意了,大多公司一年四季都可能招人,但主要因公司而异,大些的公司可能需要有head count余额;一些公司是general hire,典型的比如FB,更多的是specific position。

Q:hr 和 recruiter 的区别
A:招聘期间打交道的应该叫recruiter,他们一般不属于hr部门,很多公司划在engineering部门下面,小公司一般一个recruiter team支持整个engineering team,大公司可能每个大的engineering group会有一个到几个recruiters support单独招人(Facebook,Apple,Yahoo等都是)。recruiter在把人招进公司一般就完成任务了,而hr是从开始准备offer letter到员工离开公司期间负责各种人事的,涨工资、h1b绿卡申请、调整公司福利、安排ESPP等等。

. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
6. 一些资源链接


Andrew Ng的machine learning course(9/22开课):https://www.coursera.org/course/ml
A Few Useful Things to Know about Machine Learning:


LeetCode OJ:
Algorithm:
.1point3acres缃
Quora:

他山之石:


游客,本帖隐藏的内容需要积分高于 1000 才可浏览,您当前积分为 0。 查看如何攒积分




评分

59

查看全部评分

本帖被以下淘专辑推荐:

 楼主| ilnlh 发表于 2014-9-21 13:56:42 | 显示全部楼层
本帖最后由 ilnlh 于 2014-10-19 16:07 编辑

更新一些额外信息(09/30/2014)-google 1point3acres
常见的system design问题. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
- short url:如何注册、管理,统计、展示使用信息,如何scale out. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
- chat system(fb经典题目):mitbbs jobhunting版上有不少详细讨论
- calendar system(类似google calendar):功能设计、底层数据存储等

对于system design的一些tips:
- 提出几种方案来讨论不是坏事,不过要能够分析出优劣、利弊,关键最后确定选择一种方案,而不要模凌两颗. from: 1point3acres.com/bbs

关于onsite,linkedin的属于稍微有些特殊,特别长、特别消耗精力,包括recruiter讲解当天面试细节(我的recruiter废话有点太多),一轮 hiring manager聊天,一轮technical conversation(主要聊简历),一轮design,两轮coding。除了中午吃饭(不要求提供反馈)和 hiring manager,每轮(一小时)都是两个人面,真正的面一天,运气不好 碰到主面是apprentice 可能更累,而且就我自己的经验来说 碰到不友善的面试官也是最多的。
. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
想起来一件事(10/19/2014)

大家如果通过LeetCode练习感觉有用的话,就帮忙donate支持一下吧。
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
回复 支持 反对

使用道具 举报

林微熙 发表于 2014-9-21 13:59:57 | 显示全部楼层
mark
群里看到了你的广告
回复 支持 反对

使用道具 举报

ilovemango 发表于 2014-9-21 14:01:17 | 显示全部楼层
很实在很中肯的帖子,收着反复看了!!
回复 支持 反对

使用道具 举报

cicitaotao 发表于 2014-9-21 14:36:39 | 显示全部楼层
受益匪浅!感谢!
回复 支持 反对

使用道具 举报

xiongql 发表于 2014-9-21 15:08:45 来自手机 | 显示全部楼层
很有用,资料总结的很好,谢谢
回复 支持 反对

使用道具 举报

TonyJang 发表于 2014-9-21 15:35:52 | 显示全部楼层
谢谢LZ分享!LZ是个做事很用心的人啊,full prepared,请问一下intern 在Xmas前透resume来得及吗?我CC150才刚开始刷?另外找前端之类的工作是投SDE吗?会考很多算法吗?
回复 支持 反对

使用道具 举报

tim900925 发表于 2014-9-21 23:01:36 | 显示全部楼层
非常感谢楼主分享的资料,我最近在准备面试正头疼看哪些资料。。
回复 支持 反对

使用道具 举报

wesley 发表于 2014-9-22 00:17:40 | 显示全部楼层
好帖子,楼主很强大,linkedin加你了
回复 支持 反对

使用道具 举报

mxc8680 发表于 2014-9-22 00:58:42 | 显示全部楼层
楼主艺高心细致!大牛!膜拜~
回复 支持 反对

使用道具 举报

tbu 发表于 2014-9-22 03:34:36 | 显示全部楼层
其实我很好奇隐藏内容是啥~
回复 支持 反对

使用道具 举报

nebulaliang 发表于 2014-9-22 08:27:50 | 显示全部楼层
集齐FLAG onsite各一次,可以换Apple offer一个是真的么?
回复 支持 反对

使用道具 举报

habina 发表于 2014-9-22 13:07:30 | 显示全部楼层
你好,我现在是大三的学生,CS专业,我前几天随便投了一下Google 的summer 2015 intern,谁知道他们第二天就联系我面试了,我非常以为,我以为我的简历发过去会沉到大海的,我其实基础还很不咋地,算法题也没刷过,还有两个星期就phone screen,请问我该怎么样boost一下?
回复 支持 反对

使用道具 举报

Olivia0624 发表于 2014-9-22 13:41:11 | 显示全部楼层
好多资源~mark谢楼主:)
回复 支持 反对

使用道具 举报

davidlu1001 发表于 2014-9-22 14:11:45 | 显示全部楼层
做为已有多年国内工作经验,但无海外经验的人来说,非常实用。. more info on 1point3acres.com
特别是linkedin的使用技巧。感谢楼主分享!
回复 支持 反对

使用道具 举报

cooniur 发表于 2014-9-22 14:58:46 | 显示全部楼层
收藏楼主的链接们
回复 支持 反对

使用道具 举报

四号病床 发表于 2014-9-22 17:03:35 | 显示全部楼层
居然要1000分才能看某些内容...哭晕在厕所
回复 支持 反对

使用道具 举报

lovehoff 发表于 2014-9-22 22:39:42 | 显示全部楼层
收藏啊, 受教了,要反复反复消化消化啊
回复 支持 反对

使用道具 举报

wesley 发表于 2014-9-22 22:59:15 | 显示全部楼层
收藏了  请问楼主目前DS的硕士项目感觉都是速成的,学一些编程,数据库,统计和数据挖掘算法就可以了. more info on 1point3acres.com
目前我正在读PhD, 有人建议先找工作,phd太理论了,如果想以后走这个职业,是否需要读PhD,在公司会有不一样嘛?. From 1point 3acres bbs
感谢
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-3 02:30

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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