应届生如何找互联网工作

“就你,才面了几家公司还给别人指路啊?”,尽管会有人有这样那样的质疑,但我还是非常想说说这个话题,希望后来者不要再踩我的坑,希望能有更明确的努力方向,找到期望的工作。

距离找工作小记后,已经过去两个多月了,2014 校招季也靠一段落。由于我找的都是互联网方向的公司,所以本篇也主要针对如何找互联网技术类岗位。

清晰的目标

大多数人觉得找工作应该是撒大网捕鱼,不应该在一棵树上吊死,老师们也这样好心地建议我们。但是我不这样认为,我认为人的精力是有限的,把有限的精力分散到多个方向,最后只会迷失自己。就像有些本科毕业生,又是找工作又是考研又是国考的,最后都没啥好结果。

所以,从一开始我就明确自己只找互联网技术类岗位,没有考虑过银行国企公务员等方向(当然如果有人找到了心仪的工作,再去其他方向碰碰机会也无可厚非)。我认为这是很重要的,作为一名应届生,应该有了自己的职业规划知道了自己喜欢的方向,不应该是迷茫或随从的状态。

其次,这个方向应该是越细致越好。大家都知道 IT 行业要细分,一双手都数不过来。如果你能清晰自己想从事的方向(安全?前端?数据挖掘?),并为此付出一定的准备,你会发现你其实没花多大力气就脱颖而出了。

如我,在一年多前就明确自己想进阿里中间件团队。

不知道自己喜欢什么方向?那就挑自己擅长或熟悉的。没有擅长或熟悉的?那就了解技术发展趋势,选一个趋势向上的。

厚积薄发

有了明确的目标后,就可以去招聘网站看对应岗位的需求了,对着自己把一项项缺少的技能点记下来,并未自己制定一个详细的练级计划。在制定计划和练级期间,可能会对前进方向有些迷茫,这时可以请教行业领域的大牛。如我,加了老多阿里中间件牛人的微博,一个个问自己的疑惑,一般大牛都很乐于帮忙的。

一般IT公司的校招在每年的8月到12月,某些公司会在3月后有一次实习生招聘。所以,如果你是年初才开始准备,如果还要参加实习,那么留给你的时间真的不多。

实习与项目经历

国内公司面试喜欢先按着简历上的聊,一般都会聊到实习经历(如果有)和项目经历,如果有论文也会聊论文。比如,我经常会被问到“谈谈你最有成就感的一个项目?”,所以最好有一个能拿得出手,背得滚瓜烂熟的项目。所谓能拿的出手,是指最好能演示,有些技术问题、技术难点的项目。关键是能把项目流程、关键点、难点、解决方案等等流利地说出来。

项目不在多,一两个即可。我在准备面试的时候,才发现我的项目经历非常尴尬,做过的项目不少,却没有能拿的出手的。能勉强拿出手的居然是一个 .Net 项目,结果一路被各大面试官鄙视过来…

如果你发现和我一样,没关系,你还有半年时间准备。你可以挑一个还可以的项目进行一些技术改造;也可以参加个实习,用实习项目来镇住面试官;也可以参与开源项目,或者自己写点有意思的项目(并开源)。个人比较推荐后者,因为这个过程中,你能学到更多诸如版本控制、多人协作的知识,最主要是高逼格。

至于实习,在我看来是一把双刃剑。如果实习公司是自己的意向公司,那还是不错的。最好能去知名企业实习,表现好的都可以获得正式 Offer。就算没拿到,也可以为简历加分。但是,很可能因为实习的原因失去了复习巩固基础的时间,导致在面试中吃亏,失去更好的工作机会。所以,大家一定要考虑清楚。特别是已经有拿的出手的项目经历,实习不是那么必须了,还不如拿这些时间多阅读研究一些技术书籍。

算法与数据结构

算法和白板编程基本是互联网公司面试的家常菜。不管是应聘什么方向岗位,这一块都应该加强训练。国外公司比较看重算法编程,面试基本以算法题为主。国内公司的算法题难度相对不大,基本刷完主流题目就够了。

书籍方面按优先级推荐分别是《剑指Offer》《程序员面试金典》《编程之美》。剑指中代码是C++写的,程序员面试金典是 Java 的。所以不同语言方向的可以选一本。推荐精读一本,泛读另两本就可以了。电子书的话非常推荐 July 写的程序员编程艺术,可以迅速带你入门。July 的书籍应该马上上市了,可以关注下。

单靠看书的效果是比较差的,推荐书籍看的差不多的时候,可以配合 LeetCode 一起修炼,功力将会大增。LeetCode 目前题目已经出到第 168 题了,刷完的话应付国内公司真是绰绰有余了。在做题过程中尽量不要看题解和别人的答案,而在做完之后推荐多了解别人的做法会拓宽你的思路。另外官方出了本 LeetCode Book,但是好贵…

开放型题目

面试官一般会针对你的岗位方向问一些开放型的题目,没有固定的答案,更多的是考察技术面广度深度。比如大数据处理技术、机器学习算法、网络传输、内存管理、开放型设计题、数据库的索引等等。这些只能通过平时多看多了解了,遇到问题喜欢刨根问底。

作为一名应届程序员,除了掌握一门静态语言外,还应该掌握一门动态语言,熟悉 Linux 的操作,深入的话可以了解 Unix 编程。Java 方向的应该深入学习 JVM 知识,C++ 方向的至少得看看《Effective C++》吧。

简历

简历是你迈向工作的第一步,但大多程序员不知道如何表达自己,而埋没了自己的才华。对于应届生来说,非常头疼的是简历该怎么写,写什么,用什么工具,写成什么格式。

作为一封技术简历,只需要包含三方面:第一是个人信息和联系方式,第二是实习和项目经历,第三是技术能力证明。不要有太多与求职岗位无关的经验过分描述,比如性别、主修课程、自我评价等。看看这些文章,你会了解如何更优雅地写简历:

至于工具和格式,作为程序员都应该用 MarkDown写,用PDF发。发求职邮件时的注意事项可以看看 @Fenng 大大写的 写一封「用户体验」良好的求职邮件 。如果你有一个在线简历,那就更(BI)好(GE)了,你可以直接在邮件里附上你的在线简历地址,相对于下载附件 HR 会更欣喜于打开在线简历。可以参考本人的在线简历,工具已开源在 GitHub 上。也推荐这些比较优秀的在线简历生成工具。比如:

笔试

笔试就是个坑,能逃就逃。

笔试的考察面会更全一些,除了基础知识还会涉及语言细节、概率论、智力题等。

内推

内推一般都能跳过笔试阶段,还能提前拿到校招 Offer,就算失败也不会影响正式校招,多了一次面试经验,何乐而不为。可以直接找师兄,也可以多留意一下 BBS 上的内推信息。

面试

面试过程只要充分展示自己准备的东西就可以了。面试是一个双方的过程,一定要掌握面试的主动性,要多说话,不要让气氛冷下来,慢慢推动面试朝着自己擅长的方向引导。要知道,一场面试是有时间限制的,这场面试在你熟悉的领地打的越久,胜利的机会也就越高。

写在最后

国内大学里的课程很多都照本宣科,很少能在面试和以后的工作中帮到我们。这是坏事,也是好事。坏处不用说,好处是只要比别人稍稍努力些就可以脱颖而出。

  • 可以上 Coursera 看一些国外知名大学的公开课,拿到证书的话也是一个不错的加分项呐。
  • 在学习理论知识的同时能够尽量尝试实践一下,比如学习了Unix网络通信,有没有自己动手写一个聊天工具。
  • 好记性不如烂笔头。学习过程中勤做笔记,复习时效率会更高。推荐 印象笔记
  • 建立个人博客。把笔记整理一下就能发表一篇不错的博文,不仅帮助自己梳理知识,还能帮助别人。建立个人博客不是为了面试,而是更重要的:树立个人品牌。后者是会伴随你一辈子的。为什么你应该(从现在开始就)写博客 以及《程序员跳槽攻略》中的个人品牌章节。

最后,希望本文对即将找工作的朋友能有帮助。欢迎提问,欢迎大牛指正。