两年,从纯小白到腾讯阿里,应届非计算机毕业生的2014互联网求职之路
0. 写在前面
以此文,献给自己这两年的青葱岁月,感谢淘宝的朗英师兄和微博的旭爷、全栈pm莹姐姐、酷炫石女王。以及我逝去的头发。
参照Lucida的《9个offer,12家公司,35场面试...》一文,向前辈致敬。
1. 简介
校招还在继续,将自己的求职经历及感悟写出来,多送几个助攻,多攒一些人品。
首先说说offer情况:
正式校招只参加了腾讯、阿里、美团、搜狗四家公司的面试,命中率百分之百。拿下腾讯ieg/wxg、阿里淘宝/支付宝、美团special,搜狗内推要去实习,没有正式offer。微博有实习转正算法offer。
求职经历分为定位、内功准备、简历、面试、感悟五个环节,不打算讲实际的题目,只想讲讲宏观的东西。
此文的求职经历适用面向国内互联网企业的童鞋,外企(MS,google,HULU)没有尝试,同时也不具备相应能力。中间会掺杂比较多个人感受,大家且看且吐槽。
2.定位
教育经历:本科和研究生都在西北边陲某一电器维修学院就读,电子/通信专业,纯非计算机。大一上过C语言,61分飘过;大三上过一门课叫《软件技术基础》,到研一才发现居然是数据结构;大四毕业暑期,下决心做码农,不会用VS写“Hello,World”,回去和室友说VS这个IDE好高大上,不会用。因此,本人经历适合纯小白阅读,有一定基础者笑笑即可。
技术能力:在实验室的项目只用matlab,自学C/C++,代码不超过2k行。没有能拿出的作品,没有完整的工程项目。
专业能力:到研一才知道ACM是什么,由于女朋友去北大就读不在身边,多出来的时间看了N多书(CS+金融+哲学+历史)。从小爱扯淡,本科混过辩论队,吹牛能力极强,不管专业非及专业都能侃一会。补充一下研究生的研究方向:机器学习/计算机视觉,发过一篇国内论文(best student paper),申请两项专利。研究生的研究也是从零开始,不过论文和专利都极水。
实习经历:在西北边陲某一创业公司(研发人员10+)呆过不到一月,了解了一些开发上的事情,对创业公司运作有了一定了解,技术上纯打酱油;14年暑期去帝都新浪微博做算法工程师,幸运地没有打酱油,从头到尾实际地做了一个东西,对面试吹牛有极大的帮助。
目标公司:首选bat。外企(MS,google,HULU等)没有考虑,首先因为觉得自己能力不足,其次暂时不考虑在帝都或出国coding;企事业单位不考虑,不喜欢那种文化,互联网自由些。bat中t>a>b,因为家和女友都在深圳,t是首选;b最后,因为西二旗的地铁站实在可怕,同时帝都的生存环境过于恶劣。
3.内功准备
找工作的过程,其实可以说是一个漫长的过程,从你决定要进入某一行那刻起,你就在准备了。我很讨厌那种用酸溜溜语气说话的人,就我目前所看,付出了努力的人,基本都有了好的offer,可以说,在校招,付出和回报绝对是成正比的。你没有好offer,要么是你不努力,要么是你不会努力假装在努力。有些童鞋,貌似天天在学习,可惜大部分时间在看电影和聊天,毫无效率可言。
本人背景偏算法,专业研究方向计算机视觉,使用技术C/C++,linux。web系、java/OC 系同学且参考。
技术语言书籍推荐:
一,《C程序设计语言》。C语言圣经,废话不说,适合多看几遍。谭书入门看一遍即可丢。
二,《C++Primer》。过两遍,记住C++语法。中文翻译还不错,但有些地方仍有小瑕疵。建议看英文版,此书英文版非常容易看懂,且你从头到尾看完一本英文原著,对英文能力提高巨大。英文能力对程序员来说是重要的,先进技术、最新书籍都是英文版,且牛逼网站stackoverflow和github也是英文,作为程序员巨头大的问题——变量命名,英文水平的提高也是非常有帮助。API什么的我就不多说了。当然,看英文书籍速度是没有中文书快的。建议在看中文书籍对句子不理解的时候,翻看英文原版。
三,《Effective C++》。适合有一定实际经验者观看。
四,《Inside the C++ Object Model》。看完这个妈妈再也不担心面试官问我多态虚函数什么的啦。
五,《C和指针》。一般,不过其中一道课后题错了,自己敲出来后发现不对,去stackoverflow上提问,还增加了reputation,开心。
《More Effective C++》《STL源码剖析》《C++标准库》《C++程序设计语言》买了,翻过一些,没有时间细看。
操作系统(底层)书籍:
一,《现代操作系统》。Modern Operating System。重点关注进程和线程、死锁等概念。
二,《程序员的自我修养——链接、装载与库》。见过一个本科学弟看完这本书后在自己简历中写精通语言底层的链接、装载等,窃以为还没到那个地步。
三,《深入理解计算机系统》。CSAPP。中文书名很奇怪。
四,《鸟哥的Linux私房菜》。至少知道如何装linux,如何打开shell写个echo hello world。
五,《Unix环境高级编程》。APUE。看完MOS后看看,要实际敲代码。
六,《Linux命令行与shell脚本编程大全》。用了脚本语言你才能知道妈蛋C/C++真是烦。
数据结构与算法书籍:
一,《数据结构与算法分析——C语言描述》。小白刚开始看,真心累死。课后题很不错,适合都做做。
二,《算法导论》。后悔听信旁人言,说这么厚的书没必要看,到要用的时候再看。其实若能安心从头到尾看完算导,帮助极大。限于时间问题,我只看了此书的某些章节。
逼格提升书籍:
一,《黑客与画家》。当散文随笔看。
二,《Unix编程艺术》。在不同阶段看有不同感悟。
三,《代码大全》。翻翻看,学生阶段不看完全可以,不过有助于提高逼格。期待在工作后有更多感悟。
四,《浪潮之巅》、《数学之美》。当小说看,开阔视野。
五,《人月神话》。10个女人花1个月的时间是不可能生出一个孩子滴。
从纯小白出发,个人建议看书路线:
一,谭书。看一遍就丢,知道如何用IDE。
二,《C程序设计语言》。代码都敲一遍,肯定很多不懂,多百度多谷歌多问。
三,《数据结构与算法分析——C语言描述》或+《算法导论》。了解常用数据结构(链表、栈、队列、树等),课后题多思考多敲。
四,《C++Primer》。语法问题,只能死记硬背。
五,《现代操作系统》。知道操作系统还有Linux、Mac,不仅Windows。知道什么是进程线程。
六,《鸟哥的Linux私房菜》。是时候玩会别的OS了。
六本书看完,多敲多思考,多问多理解。自己多搜搜其他书籍,结合自身情况,继续学习。
实战:
感谢FlyElephant提的建议。修炼内功的过程中,书要看,更要敲,还要想。
纸上谈兵要不得,一定要实际做过东西。东西不需要非常高大上,不需要追潮流做些什么云计算、机器学习(虽然我做的就是这个)的东西。研究生可以跟随实验室做一些实际项目,专业不对口的话,要自己去找事情做,比如竞赛、开源项目。本科生时间多,没有导师压榨,更有充分的时间去尝试、去学习。
可以尝试做个小网站、一个轻量级的app,能上线就更好了;可以尝试做个小游戏,哪怕是打飞机、俄罗斯方块。只要你有心,你一定可以找到可以做的事情。求职互联网,要充分利用互联网资源。
只有一点,要特别注意:一定要用心,要思考。很多时候网上有清楚的教程,有些实战书也会很详细地一步一步教你如何做,但是自己做完一定要思考,为什么这么做,那么做可以吗?尝试一下,会有新的发现。
4.简历
简历真的非常非常重要!
公司招聘,简历筛选是第一环节。当然,一般而言,简历不会被刷掉,笔试机会会给你。但简历实在太重要了,重要到许多人忽视了简历的重要性。
简历是你对自己的一个书面情况说明,简历做的粗糙,我可以认为你对自己不了解、不负责,或说对公司不负责、不尊重。如果我是面试官,简历不好,我连面试你的兴趣都没有。
和Lucida类似,我也曾经做过阿里的内推,收到过许多同学的简历。因为自己也是校招求职者,也投递过许多内推/正式校招简历,因此我对每个同学的邮件都进行了回复,也耐着性子看完了所有同学的简历。但是!做完这次校招内推,我再也不想做类似的这么有广度的内推了。说一下心得:
1,如何写邮件:
邮件最好有标题,不要空白,不要单纯只写内推俩字,更不要写成内!退! 童鞋丢过来的格式有这样的:1,阿里内退;2,XX的简历;3,个人简历。建议格式:姓名-学校学历-求职意向。
邮件的发件人,最好改成自己名字,不要43543534(qq号)、我只爱你一个(我看到这个手都颤了)、火星文(你也是蛮拼的)。
邮件正文,礼貌用语,不卑不亢。写清楚你的个人信息,姓名,联系方式,简单介绍一下自己,3-5句话。不需要写什么求求您给一次机会什么的,你这样写了,我第一映像就是你没自信。即使你过了这关,也过不了下关。
邮件附件,千!万!不!要!写:我的简历 or XX的中文简历 or 我的简历v2.3 。我看到这样的附件,每每有种直接删除邮件的冲动。附件简历命名最好也是按照 姓名-学校学历-求职意向 格式来办。至少这样我把你简历下下来不用再重命名。
真的是一句话:细节决定成败。
2,简历本身:
关于是否贴照片:程序员没有必要。完全没有必要。
页数:一页满或两页满,大忌一页半两页半。建议一页满。
排版:排版务必整齐一致,字迹清晰明了,有层次,有重点,有突出。将你最优秀的点放在最显眼的地方。
专业技能:程序员们请不要在自己的专业技能中写你会word、PPT、excel、ps等,拜托了。
错别字:对你的好感直接为0。
文件格式:PDF,不要word。现在很多邮箱都可以预览邮件附件,PDF格式都可以正确无误预览,而word各种错误。我了解一些公司的确会要求要word版本,不知出于何种目的。建议PDF。
文字用语:语句通顺,条理清晰,项目介绍遵循STAR,一句话背景、自己完成的任务、做了哪些工作、有哪些结果(最好用数字量化,如找了100个bug,效率提高了20%)。
自我评价:一句话即可。你写再多自己积极向上、勤奋努力,我只觉得你简历没啥好写的为了凑字数。
程序员如何看你的简历:参考 coolshell http://coolshell.cn/articles/1695.html
5.面试
面试是重头戏,成败在此一举。
就程序员面试来说,流程一般是:1.自我介绍2.技术提问3.你有什么想问我的吗?
自我介绍:
自我介绍,就是将简历中的人给形象化,有血有肉展示自己。有些童鞋,自我介绍是:面试官你好,我叫XX,来自XX学校。三!句!话! 这样真的好吗? 简历能看到的,还要你这样介绍干什么。 我初期在实习招聘的时候自我介绍更傻:我专业是XX,非计算机,没有实际经验,balala....。详细介绍自己的缺点。
自我介绍,要充分展示自己的长处,比如做过某个竞赛、得过哪个大奖、发了几篇论文、写过几个专利。你说你上面的都没有,那也行,成绩如何?介绍一下自己的GPA和专业成绩也行。成绩不好?挂科? OK,那讲讲你看了哪些牛逼书籍,做过哪些实际项目、follow过哪个开源项目。都没有,怎么办? 没办法了,这只能靠平常的积累。
技术提问:
技术提问分两种,写代码和不写代码。不写代码无非是聊聊你的项目,问一些语言细节、操作系统概念。当然项目讲的好,加分非常多。关于讲自己的项目,建议事前一定好好练习一下,要能有主次、顺畅地介绍自己项目,遵循上面的STAR原则。
写代码,是重头戏。Talk is cheap,show me the code。写代码一般是给出算法题,在纸上写。纸上写代码和在IDE上写是完全不一样的,没有语法高亮,没有代码补全,你可能非常不习惯。这都需要事先的练习。面试官出题后,不要着急就在纸上写,如果没有特别高效的方法,可以先想一个简单粗暴的,给面试官讲讲你的思路,说:我先出一个最简单粗暴的方法,是这样的...但是我知道您肯定希望得到更高效的方法,我再想想...想不出来,可以让面试官给一些提示。有了清晰思路后,再和面试官交流,得到肯定后开始在纸上写。多注意边界条件、非法输入、代码风格。
纸上写代码,最重要就是一个字:练。
推荐书籍:《剑指offer》《编程之美》《编程珠玑》《Crack over the code interview》
推荐网站:TopCoder
你有什么想问我的吗?
很多人不知道这里该问什么,其实如果你之前对这个公司这个岗位比较感兴趣,你自己就会去查相关的东西,就会有相应的问题。我问过一些这样的问题:1,自己的职业规划:继续做算法还是转研发?求建议。2,上班作息(上下班时间)。3,你们具体在干什么,能简单介绍一下在做的业务及相应需要的技术么?
其他
程序员面试其实很单纯,技术过了,性格还ok,基本没问题。不需要考虑什么捡垃圾之类的搞笑问题。保持基本的礼貌,敲个门、问个好、谢谢你,就行了。
6.感悟
一,求职是一个漫长的过程。平常的内功准备,自不必说。我的校招面试虽然只有短短10天,但从14年3月开始找实习,就一直在为校招做准备。越早准备,越好。
二,关于内推。很多人对内推不了解,认为是走后门。其实所谓内推,就是公司内部的人推荐你,是公司希望提前抢人才。今年阿里很早就开始了内推,百度大搜也有内推,腾讯有TST、产培。你努力、你认真、你刻苦、你向上,你要进互联网,你自然会认识到互联网圈内的人,自然会有人帮助你、提携你。如果你达到门槛,能有BAT的朋友内推你,那么你有可能在校招前就获得offer,别人还在写简历的时候,你就有offer了。
三,关于如何学习。很多人看似努力,实则极其懒惰。碰到过一些人,对自己实在太不负责了,大概连到投简历、去笔试、去面试的都懒的地步,你能有什么offer大概就只能看缘分了。从3月份找实习开始,加入了好多群。群里经常有些人问些什么求网申地址之类的话语,有些时候我真心想把这种人踢了。互联网求职,连百度都不会或说懒得百度,无话可说。有些人看似天天在学习,实则效率极低。 有个概念叫走出你的舒适区,如果你一直过的很舒服,大概你至少没有成长。学习新东西,接受新概念,痛并快乐着。
四,关于实习。每年春季都有各大公司的实习生招聘,大家千万不要错过。实习生招聘可以说是校招的预演,在准备实习面试的过程中,对你的帮助巨大。得到实习offer,要主动找活干,不要被边缘化。基本上去实习的小伙伴都有好的offer,当然也有少数去BAT实习最后没有得到BAT offer的。找实习的过程及实习期间,对校招帮助非常之大。
洋洋洒洒写了这么多废话,回想一下自己的研究生生活,真是痛苦万分。本以为自己拿到BAToffer的时候会痛哭一场,但是真拿到的时候却并没有想象中那么激动。
我很努力,也很幸运。
优秀是一种习惯。