背景弱、项目渣,转专业:三大劣势集一身的我如何取得硅谷Offer?

根据北美Offer故事系列直播整理而成,回看视频   人物介绍 D同学,BitTiger后端直通车学员;国内EE本科,美国排名100开外大学EE硕士,项目背景比较弱,在BitTiger结课后1个月拿到硅谷科技公司SDE Offer。 本期内容 后端工程师学习之路:刷题,项目,基础知识 后端工程师求职之路:面试经验教训分享 大家好,先跟大家分享下我的求职时间线:我从今年1月开始认真刷题,因为去年忙着Master答辩,所以年初才开始刷题。当刷到3月底觉着差不多想找工作时,发现自己已经错过了春招,投的简历都没有什么消息,当时就比较着急。5月份毕业后,专心做项目准备秋招。从8月底开始投简历,最终用了2个月时间,大概在10月初拿到了硅谷公司的offer。     时间点在找工作过程中是非常重要的,特别是对于new grad。虽然码农的工作一年四季都有,但主要针对有工作经验的人在职跳槽,对于new grad,尤其是转专业的同学,肯定需要抓住春招和秋招两次机会。春招时间在1-3月,秋招时间在8-10月。明确时间后才能在关键时段投出简历,并且以此来制定学习计划,包括刷题和准备项目等。  如何准备刷题 刷题语言用Java或Python都可以, 主要根据自己未来想做的方向进行选择。我选择的是Java,因为之前本科时有一点Java经验,所以学起来比较简单。Java主要做后端使用;Python现在比较火,适合全栈/大数据处理/AI方向; JavaScript主要是前端和全栈,比如Angular,Node.js类;其他语言也可以根据个人具体情况去选择。 我刷题主要用Leetcode,因为转专业所以Data Structure和Algorithms基础比较差,按类型刷先学习对应的基础知识,再刷相关的题目。先做Easy练手,Medium重点做,Hard看情况挑着做。   我在刷题初期情况 当时Easy难度可以做出来,Medium难度几乎都靠看答案,Hard难度不敢碰。有的题带着test case知道怎么解,但就是写不出code,这是一个困扰我很长时间的问题。有的Medium算法看了答案也不是很懂 ,这种情况下我会继续看youtube讲解视频,有些会讲的很详细,我觉着这个帮助还是很大的。 因为经常一大早上起来刷题,很多题做不好,连续几道做不出来时就很急躁,状态特别不好。有一段时间就怀疑自己是不是很笨,觉得自己或许不适合CS这行,那段时间特别受打击。 之后找周围有求职经验的朋友寻求帮助,问他们怎么刷题,我在网上也搜一些刷题的心得,发现非常重要的一点:如果遇到不会的题不要死磕。 可以先想5分钟,如果有方向就继续往下;如果10-15分钟后还没有思路,就直接看答案,不要浪费时间。看看别人的思路,理清解题思路之后再自己写Code。当然也在网上找了很多鸡汤,因为大家在找工作的时候都比较苦,然后不断激励自己,一直坚持下来。   我在刷题中期情况 躲过了最开始大概100道题的难关,之后刷题更顺了。后来每道题都当做自己在面试,先搞清楚Assumption,分析整体情况,理清楚思路,然后写Code,写完以后再去检查Corner Case,进一步分析时间,空间复杂度。一套题先解出来,然后再想有没有办法优化。因为实际面试大概都是这样的思路,如果你在平时解题练习时按照面试过程来,慢慢就会形成一个习惯性的处理,真正面试时不管新题还是老题,都不会慌。 当遇到Corner Case特别多的情况,我会把他们记下来。尤其刷第二遍时,会把相似的题目总结一下,比如DP类,动态规划类等。多总结多思考就会发现一些规律,当拿到新题时就可以朝那个方向去想。 我刷题用了3个月时间,大概300道做了2遍。主要是一些常考的题,比较难的题目因为时间比较紧张就没有刷。   如何判断自己的刷题程度呢? 因为Leetcode上的题目每周都会增加,可以去做一些新题。Easy难度的题可以15-20min做出来没有bug,Medium难度在10-15min有思路,30-40min写出来Code,,即使有一两个错误也可以。另外一亩三分地上经常有人分享面经,可以去做一做面经题,如果做的好可以增加自己的信心,如果做不出来也可以查漏补缺,弥补自己的不足。   补充项目与知识积累 我到投简历的时候,才发现自己的简历项目太简单,行内人一眼就能看出来没有技术含量。我尝试过自己做项目,也用了很多方法。 在Linkedin上看CS学生的简历,看他们简历中都放了什么项目,然后想根据他们的项目找思路,最后发现自己完全看不懂,因为有些要相关背景才能做,项目的描述其实也不是特别清楚。另外可以在网上找开源项目做,但开源项目一般都比较大,短时间比较难以入手,如果之前没有项目经验做起来确实也很困难。还有一种是从网上找Tutorial做项目,我之前简历上的1-2个项目都是在网上找Tutorial做的,比较简单并且技术比较老。我对自己该做什么,哪些技术比较火也不太清楚,就这样浪费了一个月时间,项目也没做出来。     后来5月份决定上BitTiger后端直通车专门做项目,三个月我85%以上的时间在做项目,因为想把项目了解的特别清楚,而不只是简单地写在简历上,同时也可以在Github上新加入很多东西。我最后的简历中一共放了5个项目,其中3个项目都是在BitTiger学习时做的。平时老师会讲到很多技术,对所有提到的技术,我都会把它记下来去查清楚这是什么,怎么用,关键问题是知道为什么用它,因为解决一个问题有很多技术可以用,但清楚每个技术的优缺点,什么时候用,为什么用,是非常重要的。因为之后自己做项目的时候,同样需要去做决策,去选择用什么样的Database,什么样的Architecture等。 另外有时间我就在LinkedIn上找一些Job description,去看这些工作需要哪些技术,然后去了解学习。   总结一下后端知识 Database SQL: MySQL, Oracle, etc. NoSQL: […]

All Rights Reserved ©2017 BitTiger, Inc.