由于放太久长了蘑菇的美本求职经验谈

avatar 55571
tomtang0514
28489
72
[align="left"]首先我说话比较不留情面,一般人请直接往下读,心理承受能力好或不介意被我有意无意offense到的可以考虑Ctrl+A。另外我的求职过程去年11月初就结束了,我也不会透露任何具体的面试题,想看面经的可以右上角了。[/align]
[align="left"]我今年夏季刚好要本科毕业,UIUC的CS。没错就是那个去年有个逗逼刚落地就被坑了4000+美刀,还有个数学phd把女友割喉了的学校。我大一还上过那个phd的课,讲的还不错……{:7_151:}[/align]
[align="left"]从大二开始使出吃翔的劲才混到一个on campus面试和一个phone interview到上学期基本所有湾区叫得上名字的cs公司我都面过。最忙的时候同时有超过10个面试在进行中。在accept offer前一个月,也就是去年10月,飞了三次加州。最后从了某pre IPO startup。真正到手的offer不多,因为拿到那个startup的offer之后就把别的面试推掉了。[/align]
[align="left"]我先谈一谈前提条件。我认为一个人的优势有几个很重要的方面,这几个方面可能跟你平时听说的不同,算是非典型的个人经验。[/align]
[align="left"]1)Intern。Intern很重要,比GPA重要多了。而且Intern做的事会直接影响找fulltime的方向。就我面试的情况来讲,面试官对我intern工作内容的兴趣远高于对我学校project和personal project的兴趣。另外intern的经验也可能会影响fulltime offer的待遇。我跟recruiter negotiate offer的时候她就表示很难给我提供xxx的薪水因为我当时只有一个intern经验。虽然最后给的offer比xxx还好[/align]
[align="left"]2)Project,包括intern project。对于我这种搞应用型的,project基本是求职中除了coding question以外唯一能聊的技术话题了。在大三拿到intern offer之前我有7个project,不包括那些每个人都基本一样的homework project或MP。(你要是混到要把homework放到简历上的水平,基本也就别想找靠谱工作了……)[/align]
[align="left"]3)专精。就是你擅长的方向,即使是本科,到了大四也差不多该知道自己要搞哪一方面了。database还是distributed system?system还是AI?我个人是搞full stack web development的,从database到UI我都会。[/align]
[align="left"]4)代码经验。这不是能短期积累的。首先一个靠谱的码农至少应该有4W行代码经验(bottom line,我现在大概八九万行)。其次至少要会一门OOP!这是老生常谈了。[/align][align="left"]这里说一个题外话:作为web developer,看到很多人都“厚颜无耻”的在简历上写擅长HTML/CSS真是感觉非常捉鸡啊。连个读商科的都要在skill那一栏放上这俩词……告诉大家一个判断别人HTML,CSS水平的标准。如果一个人的简历或linkedin中 a)没有同时出现HTML,CSS,Javascript外加一门OOP,b)没有至少两个网页相关的project,那这个人基本不可能写出靠谱的HTML,CSS。CSS到了后期的难度和功能是被严重低估的,基本上超过95%的简单图型,层次效果,repsonsive design,动画效果都能完全依靠CSS实现。用CSS实现的话代码可读性和可维护性都比用js好,而且CSS的动画效果完爆js。举个例子,js做动画不仅耗资源,过程中经常会有很奇怪的停顿。[/align]
[align="left"]5)Clean code。说白了就是写出可读性高的代码。我认为可读性高的标准就是一个CS水平跟你相近的人能在没有comment的情况下读懂你的代码。[/align]
[align="left"]6)基础知识。基础知识,就是上课会学,作业会写的那些东西,大部分是概念。What’s two different way to resolve collision in hash table? What’s the advantage and disadvantage of array and linked list? etc.[/align]
[align="left"]以上。为什么我没写GPA?因为我真不认为GPA对求职,甚至对一个人的应用层CS水平有什么显著的意义。(这里不谈研究层。我没搞过research,不好乱说)当然GPA太低也不行,一般3.2是个能让你有机会进入大部分公司的坎。如果你GPA低于3.0我觉得这篇文章你可以不用看了,对你恐怕毫无意义。我本身GPA不到3.5,但是上面6条我都做的不错。而且比较装逼的说,整个UIUC从undergrad到graduate,web development做的比我好的目测不超过3个~[/align]
[align="left"]谈完前提条件我们再来谈一谈两个我个人不推崇但是似乎对求职有影响的因素:MS degree和Location。[/align][align="left"]我要不要读MS?读完会不会更好找工作?这基本是个月经问题。(以下内容只针对美本毕业生)[/align]
[align="left"]纯粹为了找工作去读MS,对于大多数公司和大部分CS领域来说(其实主要就是software engineer)是个很浪费青春的事。MS那额外一年半到两年的学习,如果是non-thesis,不写论文不做RA/TA的项目,基本不能给求职任何优势。好多人说“我想读个MS以后可以找好一点的工作。”你干嘛不直接说你本科玩脱了导致毕业找不到工作只能读MS?关于MS的实际作用,我举个例子:我在amazon实习的时候,MS跟BS的工作内容是完全一样的,时薪只比BS多一块五。你觉得是MS头衔有用还是额外一两年的工作经验有用?[/align]
[align="left"]当然在很多别的领域MS是有用处的,甚至是基本条件,比如data mining和data science。这些领域的相关职位很多都要求MS,Phd only。因为这些东西BS只能学到点皮毛,MS才能学到能用的程度。不过,所有MS的优势都能被Phd甩开几条街。这也是为什么有人说MS是教育投入产出比最低的阶段。(忘了是在哪个report里看到这么一个论点)如果真要说点MS的明显优势,就是对于国内本科而言可以搞一个美国的文凭和zipcode,对这个群体找工作效果拔群。[/align]
[align="left"]关于Location,总有一种说法是如果要去湾区找工作,最好读加州的学校。然后我就看到一帮脑子进水的骚年们纯粹因为这个原因冲向了USC和UCI。对于任何公司,这个local优势仅限于车程两小时以内的学校,最好一小时以内。对于那些tech giant其实没什么意义,它们大多全国统一招聘。对于非大公司的好处就是面试或实习不需要提供住宿。这种local优势能让你的简历在水平差距不大的情况下获得优先考虑,也能让你免掉一轮电面。对于想招intern但没什么钱的小公司更是重要考量因素。可惜这仅限于车程两小时的覆盖范围。换言之,对于湾区的公司,你在南加州和你在缅因是一样的。[/align]
[align="left"]最后说一下个人的整个求职经历[/align][align="left"]
Preview
[/align]
[align="left"]记得第一个CS有关的面试是linkedin。当时大二,在career fair上给别人show了一下刚写的WP7 app(那是还没出WP8),然后当天晚上就接到电话去第二天的on campus interview。然后华丽丽的screwed up了。当年逗逼啊,连hash table都TM不懂,上课学过,还implement过,但是不知道为什么不会用……同一个学期还面过optiver,一个chicago的trading company。那会也没什么方向,想着随便捞一个intern就好。先是笔试,过了以后电面跪了。[/align]
[align="left"]然后到了大三,因为某一门课的原因开始搞web development,结果整个大三基本都在搞web。前后端都搞。大三结束的时候弄了三个拿得出手的project:一个是类似acfun的弹幕网站,不过没有用action script,而是完全基于HTML5和javascript。实际运行效率比早期的acfun播放器还是高不少,一秒500个弹幕插进去完全不卡。第二个是手机导购网站。用crawler从amazon,bestbuy和walmart网站上自动抓产品手机信息放到网站里,再用elo rating对产品评分,同时根据用户的评分数据做personalized recommendation。第三个是基于google app engine的聊天webapp,加入了一些share餐厅的功能。当时为了弥补channel api会丢包的特性,自己搞出了一个sync algorithm。后来大四发现这其实很像distributed system里的broadcast heartbeat protocol。但是那会在完全不懂distributed system的情况下想出了这么个东西还是挺自豪的~[/align]
[align="left"]大三找intern面过bloomberg, microsoft, ebay, salesforce, amazon。好像还有别的但是忘了。bloomberg和microsoft都是on campus,面试挺顺利不过还是被拒了。最后拿了salesforce,amazon和某startup的intern。salesforce和amazon都是两轮电面,毫无难度。尤其是amazon那简直水的不行。某startup的offer是因为我大三上的某们web development的课的professor是那公司的cofounder,看我project写的不错直接让我去上班。可惜那会我已经签了amazon了。[/align][align="left"]其中有一个小插曲,我拿到amazon的offer之后去spring break了,走之前跟recruiter口头说accept offer,同时把salesforce拒了。结果vacation回来recruiter说他们招满了要把我的offer变成SDET,当时我就操了!最后argue的结果是让我选一个seattle以外的development center。于是我就去了Irvine的a2z。[/align]
[align="left"]Irvine这个城市我是非常喜欢的,单论居住环境这是首选。一个小时到LA,半个小时到laguna beach,一个半小时到san diego。城市规划和治安基本是全美最好的几个。不用上高速也普遍限速40-45mph,我还见过限速55mph的。除了高速别的地方24小时不堵车。而且各种生活设施齐全还有很多靠谱的亚洲餐厅和超市(mitsuwa简直赞)。{:7_195:}。[/align]
[align="left"]讲讲实习的事。a2z归AWS管,号称是amazon最忙的division之一,startup style。我去了以后发现完全是放屁。给我的项目没什么难度也学不到多少东西。(总的来说还是能学到东西的,但是这跟我做personal project没差)manager是个很操蛋的阿三,consulting出身。(不是我黑consulting,这个词在码农圈子里我觉得就是骂人的)第一次team lunch有个fulltime就跟我说“He’ll judge you based on what you order.” WTF?! 后来我发现一个现象,大家一般team lunch都是manager买单,然后回公司报销吧?我们这不是!这阿三总能找到理由让team里别的人买单,他一毛不拔。后来有一次跟他聊天,他说“The easiest way to fire an engineer is to stick on his expense report.”合着这货想抓住手下员工expense report的把柄,同时又不想让人抓住他自己的……妈蛋啊![/align]
[align="left"]说回在a2z的工作内容。amazon的sde intern都是花3个月写一个intern project,大多是内部工具或者一些还在实验阶段的小feature。我当时运气比较好,隔壁组要launch的网页缺人,然后整栋楼比较会写网页的加上我又不超过3个,于是我就被借调过去写了这个网页从CMS往上的后端部分和全部前端部分 developer.amazon.com [/align][align="left"]其实劳资当时写的比这个好看啊!还有responsive design啊!都给改没了。{:7_185:}问了当时的teammate说是因为technical writer对responsive design不习惯,外加research显示大部分developer的电脑屏幕尺寸比较固定,所以放弃了移动页面。写这个东西花了7周,其间跟一个Senior UX designer干了一仗。当时这货弄出很多在我看来反人类的设计,比如navbar的高度是现在production版本的两倍……那还能用吗?我问他这么设计的理由他也是爱理不理,最后干脆说“Should I tell you not to worry about the design?”于是我就回“Should I tell you the design is ugly?”最后就呵呵呵呵呵呵……我猜大概是这个原因最后阿三找了个理由说我teamwork不行没给我return offer。[/align][align="left"]另一个intern project就简单了,完全是我一个人弄。从设计到出prototype花了4周。是个监测整个amazon android appstore所有流量(download, rating, purchase, crash etc)的web dashboard。其中database我做了一些很特殊的设计,最后效果是:用户在浏览器里按一个按钮;从超过100W条经过map reduce处理的数据中,根据用户输入的data type,time和interval抓出300+条数据;然后在网页上画成趋势图;整个过程不超过2秒。而且database是用AWS的不在本地,所以基本上这就是production version可以达到的performance。[/align]
[align="left"]回学校以后继续找fulltime,有了intern和project之后简历就更充实也好拿面试了。说一说career fair:我跟几个大神聊天一致认为,当简历足够充实以后,去career fair罚站和网申效果其实差不多。UIUC每学期有两个大型的工程院career fair,加起来5天,外加几个不定时的after hour。我后来就基本只去after hour转,不用穿西服就是轻松。话说我对西服真是深恶痛绝!穿起来浑身难受!必须得喝大力!{:7_216:}[/align]
[align="left"]大部分公司career fair聊过或网申后一周内就有recruiter联系。没要过内推。算下来拿过fulltime面试的公司有microsoft(onsite推了), google(onsite推了), facebook(推了), twitter(拒), linkedin(拒), yahoo(offer), yelp(offer), coursera(拒), box(拒), imo.im(拒), backplane(onsite拒), inkling(没消息), delphix(推了)以及我最后去的公司。投过的公司除了Pinterest,Dropbox和几个after hour上碰到的记不住名字的小公司都有面试。除了网申以外,拿面试的方式基本是上去就跟人讲project,讲自己想做什么方面,然后问一些自己真正关心的有关他们公司的问题。当然也有像delphix这种他在黑板上写道题,我过去答出来,拿个奖品玻璃杯就走的{:7_184:}[/align]
[align="left"]说几个比较有代表性的:[/align][align="left"]inkling是我印象最差的。inkling这个屌公司我劝大家不要理,跟recuiter聊完以后发过来一个code challenge。花4个小时做完以后就再没消息了,浪费时间。后来看glassdoor好多人都是这种情况,还有人说其实他们就是把现在面临的问题发给你让你帮他们免费写代码。{:7_177:}[/align]
[align="left"]linkedin是印象第二差的。电面的时候对面两个engineer,其中一个刚入职4个月的整个过程中一直在show off,我在讲自己project的时候他基本每分钟都要打断我然后说我这里做的怎样怎样顺便秀个优越,搞得我很火大。[/align]
[align="left"]facebook招人比较奇葩,专门负责UIUC的那个recruiter,rebecca特别mean。听好多人说career fair找她聊天,没有hackthon,code jam或acm的成绩她基本不理。我走的是frontend这个招聘途径所以是另一个recruiter负责。当时有4个frontend engineer专门从facebook飞过来跟我们吃饭聊天,吃完就飞回去。外加有基友去facebook,所以对它印象比较好。可惜最后还没来得及面就拿到现在的offer了,于是就把面试推了。[/align]
[align="left"]yahoo招人比facebook还奇葩。after hour聊了两句以后被邀请去一个dinner,跟一个backend developer聊了聊然后就收到了onsite邀请。是的,外州没有电面直接onsite。飞过去以后发现面的职位是非常非常front end的职位,跟我想做的full stack完全不是一回事。面试题也比较奇葩,面试官画了一个网页让我直接写html和css,不能看reference……这玩毛?于是三轮面试有一轮screwed up了。有两件比较蛋疼的小事:一个是yahoo onsite竟然要求穿business casual?!另一个是有个upenn的逗逼妹子,拖着个拉杆箱来面试,缝人便说自己是upenn的……yahoo员工的presentation后面的Question time,她都直接站起来说“I have a question. So first I’m from upenn...”为什么我遇到的为数不多的upenn的都这么装逼呢……[/align]
[align="left"]google的面试过程也不太理想,太拖了。要是5年前,google可能是湾区最好的去处,但是现在google对我而言连前5都排不上。从通知要onsite开始,到给我安排还onsite日期花了一个月,然后onsite安排在了又一个月以后,还正好是thanks giving break中间。劳资要去LA看车展啊!没空鸟你啊!{:7_217:}不过google今年还真是缺人,从我把onsite推掉到上个月一共有4个google recruiter来挖过我,包括google irvine。(我在amazon实习时隔壁team的manager跳槽到google了,然后让recruiter来挖我)不喜欢google的原因有两个:一个是本科给钱太少,听说还有给9W5的。另一个是confidential policy太蛋疼,貌似如果team不一样跟邻座都不能交流project细节。[/align]
[align="left"]最后说一下yelp。这个公司我是大爱啊!给钱多(offer 11W base),办公室装修带感,员工人好cultrue好,能学到东西,饭是所有公司感觉最好吃的。冰箱里有日式绿茶!日式绿茶!这是什么水平!{:7_172:}唯一算不上缺点的缺点就是在SF downtown,个人更倾向南湾。我最后decline它家offer的原因不是因为它家有任何不好,只是另一个offer太好了。[/align]
[align="left"]关于大公司还是小公司?这完全取决于一个人的抱负和水平。如果水平一般只想要个舒服的工作,那大公司是好地方。妹子microsoft bing team SDET简直是首选,活少钱多。但其实湾区可能还不适合,去seattle,irvine,san diego,austin一样环境好生活成本还低。湾区相对其他地方的优势在于湾区是唯一一个靠写代码有可能在40岁以前年薪1M的地方,当然背后的几率和付出你懂的。个人比较喜欢那些已经成熟了的小公司,同时重视engineer。即engineer占employee 1/4以上,总人数低于1000,最好低于500的公司。前几天看到我要去的那公司一个当初面过我的SDE,UCB毕业4年被promote成lead software engineer,吓尿了!{:7_208:}刚起步的startup也不错,但是最好有自己想干的事。我这学期part-time intern的一个startup,就是之前说的我professor是cofounder的公司,加上我这个intern总共4个人。上个月也被twitter低调收购了……{:7_162:}[/align]
[align="left"]收个尾,综合来讲美本要找靠谱的应用层码农工作还是要提高自己的姿势水平,把基础学好,然后找准自己的专精方向再dive in。我个人不提倡靠刷题找工作。大二大三我还会上career cup和geeksforgeeks,后来基本只上glassdoor看看面试过程和公司评价。因为如果你本身水平不达标,刷题拿到offer也迟早会在project里露出马脚的。到时候bonus拿的少,升职没你份,还有可能被末位淘汰。如果你拿了offer之后混的风生水起,那我觉得应该归功为你基础好有天赋,跟刷题关系不大。我认为刷题的主要作用是让人保持一个面试的良好状态,防止关键时刻掉链子。当然对有些人来说刷体可能确实有效果,但是对那些说随便上两门CS课外加刷刷题就能“年薪10W,当上总经理,出任CEO,赢取白富美,走上人生巅峰”的我只能呵呵了……[/align]除此以外,lifelong learning我认为是非常重要的,这是能让vision变成reality的引擎!{:7_196:}
  • 57
72条回复