(一)我的这几年
首先说一下我的背景,我在美国加州top30某校读计算机科学本科,今年大三。写下这篇博客是因为几天前我翻到自己17年初刚到美国的时候曾写下的一张打鸡血便利贴:
所以我突然就想,为什么不分享一下这段经历呢?也许就能给跟自己经历相似的人一点勇气去坚定做自己喜欢做的事情了呢?认识我的人可能知道,我一路非常曲折。我参加过高考,但我本科的第一个专业并不是计算机也不是数学——因为我的家人一开始并不理解我,他们觉得我作为一个女生,就不该去学理工科的专业。因为这些专业,不适合女生。在我的第一个本科学校,因为这个原因我经历过中度抑郁,休学,跟家人发生的激烈矛盾,也无数次想过自杀。我曾经一度觉得未来是黑暗的,而计算机和数学是照进我世界的那一道光。在一开始没有机会进入科班学习的时候,我大部分关于计算机知识的获得、困难的解决都来源于其他人的分享(免费博客、教程、公开课)。我所用到的大部分学习资源,都是免费的,开源的。这也是我现在只要有空依然喜欢写博客的原因之一。说这些,其实只是想鼓励跟自己有过相似经历,因为各种原因没有坚持自己喜欢的事情的人,去做自己喜欢的事情;也想感谢所有愿意分享技术的人。
这两年来,我觉得自己的一些想法其实潜移默化地对自己产生了很大影响:
不止步于课内,去积极主动做更多:实习、科研、读相关的技术书籍、写算法题、自己感兴趣的项目、去上比较有难度但有价值的课。我来到美国后一直在努力让自己的每一个暑假不被浪费。有的东西当时做的时候看起来没有什么特别大用处,但是都在之后某个关键节点给了我很大的帮助。
对自己的专业抱有热爱、激情与执着: 坚定去做自己喜欢的事情,没有被家里所谓的“女生不适合理科”的观念束缚住。
不怕失败,敢想,敢做:99个公司拒绝了你都没有关系,只要有一个要你了,你就成功了。永远要敢于为自己争取机会。
多向他人学习:我会留心观察很多人的身上的优点,然后学习,这些都让我不断成长,不断进步。
(二)面试
回归正题,今年北美谷歌Software Engineer Intern的招聘流程主要是:
投简历 - 做OA - 背靠背电面,共两轮面试 - Hiring Committee(HC) - Project Search(这里可能会有几轮intern placement interview) - Offer approved
【投简历】
这一轮最好在前一年的7月进行,比如我要找2019年summer的实习,那么最好能在前一年的7月就找到学长或者学姐内推。如果投得晚了,很容易出现的一个情况就是project都被match得差不多了,那么即使你能过得了HC也没有太多project剩余了,这时候如果你match不到project,那么也没有办法拿到offer。投简历这关能找内推就尽量找内推。
这里推荐一个会议叫grace hopper celebration,很建议女生去参加,每年在这个会议上会有三天的career fair,会有很多公司去招人,基本上google facebook linkedin 微软这些公司都会去,拿到面试的概率很高。除此之外,你还可以听到很多人分享她们的故事。
简历上写什么?在北美一定不要放的是:照片、生日、婚姻状况、性别这种乱七八糟的东西。HR过你的简历用的时间一般不会超过45秒,所以对于找技术实习的人来说,最重要的是:学校、专业、学位、预计毕业时间、过去的实习科研经历(所以不要浪费任何一个暑假)。除此之外还可能看的部分是:GPA(一般来说3.0+就行),做过的项目,打过的比赛(ACM, 信息竞赛, Kaggle),开源项目贡献,拿过的课程,github,skills(编程语言、框架)。
【OA和电面】
今年谷歌实习生招聘有OA一轮,电面两轮,主要考察的内容还是数据结构与算法,包括算法的设计与算法的分析(主要是时间复杂度和空间复杂度),基本不会出现系统设计。谷歌电面的代码在Google docs上写,建议提前适应不用IDE写题的感觉。
写题可以参考leetcode,把leetcode题做到500+就会相对来说比较稳。但是写leetcode题要注意的一点就是,不能死写,要自己能分析出自己设计的算法的时间和空间复杂度,以及思考有没有提升的空间。刷算法题的时候注意总结规律,举个例子,比如说linked list里面,最容易出现的问题之一就是对头节点的处理,这个时候一般要怎么处理?
电面的代码是要提交HC的,所以代码规范非常重要。如果平常写代码命名不meaningful,写代码不够有整洁,不遵守代码规范的,这一部分可能要吃很大亏。建议平常刷题就先习惯自己写的编程语言的代码规范,比如Python,就可以搜到类似“Python风格规范— Google 开源项目风格指南”的文章去阅读。尽量少出现一个function中有很长很冗杂的代码。
面试的时候要注意跟面试官的沟通,尤其是思路卡住或者是想优化解法的时候,面试官的每一句话可能都是一个潜在的hint,面试官给hint我们就要接住hint。有一个常见的误区就是以为解出题就能过面试,但是其实并不是这样的,面试是一个综合考察,包括你的表达能力、别人是否想与你一起工作。
面试如果实在想不出优化解法,那么最差最差也要把暴力解法写出来。如果想写优化解法但是时间又不够写完写好优化接发,一定不要把之前写的暴力解法删掉。
最后感恩秋招一路上帮忙的学长和朋友,祝大家2019年找工顺利~