首页 > 代码库 > 走过多少路,才看得到那一丝微光
走过多少路,才看得到那一丝微光
行色匆匆的2016已经过去了大半,这大半年经历了很多事,认识了许多人,有伤心绝望的时刻,也有欣喜若狂的瞬间,还有骄傲自负的刹那……所有的这些体验就像是一滴滴水珠,汇聚成了一汪清水,我抬头看去,水面上倒映着的,是一个微笑着的少年,他的目光更加坚毅,他的胸膛也更加厚实。
简单介绍下我的情况吧,暑假实习去了阿里并顺利转正,9月份校招的时候又拿下了百度、美团、华为,最终选择去阿里开始编程之旅和新的生活。
Then,这篇文章不会讲很多的编程技术,更多的内容会花在找工作相关的一些方面,下面我结合自身经历,从心态、简历、内推、实习、笔试&面试、offer选择这几个方面来给大家讲讲自己的心得。
心态
从1月到9月,整个找工作的征途长达8个月,这期间我经历了简历被刷、笔试不过、惨跪一面、错过校招时间、笔试时间冲突等等一系列悲剧事件,也经历了BAT三家offer三选一的甜蜜的纠结和阿里顺利转正的庆幸,回望过去,所有的这些经历和体验,让我一遍遍地审视自己的内心和灵魂,让我更加明白我想要什么,也让我更加笃信自己的选择。
What doesn’t kill you makes you stronger.那些不能杀死你的,都会让你更加强大 —– by 尼采
下面讲讲我认为的在找工作过程中比较重要的几个心态。
想好你自己为什么要做一行?
世上工作那么多,为什么你要选择互联网?互联网里有那么多岗位,为什么你就想做开发?大家一定要想明白这一点(HR面的时候常常问到),这个问题的重要性决定了你能不能在互联网这个行业坚持下来,甚至对你的职业生涯也有很大的影响。
对于我来说,互联网的自由、平等和分享深深地吸引着我,这个行业实实在在地改变着我们的生活(智能手机、云计算、大数据、人工智能、VR/AR……),让这个世界变得更加美好。这个行业发展得越好,全世界越多的人就越能享受到由此带来的便利和福利,而且软件的复制成本几乎为0,这个特性使得互联网影响的范围是远超一般的行业的!
用一句话总结就是:让自己的代码奔跑在亿万人的机器上,并给予对方美好的体验和服务。这件事想想都让人热血沸腾~~
对当下的自己要自信,对未来的自己要更自信。
相信自己就是BAT和Google级别的人,并以此作为要求去学习新技术、面对遇到的挑战,这样的心态对于笔试、面试都会有很大的好处。还有一点要说的是,有的时候面试会碰到压力面,面试官上来后会直接质疑你的项目和你的工作。但其实他是在唬你,试探你的反应能力,所以心态一定要好,即便遭到怀疑也不要放弃,因为这是你的项目,主场优势,面试官不可能比你还了解你的项目,所以问题就出在沟通理解不畅上,可以让面试官说出自己的理解,然后自己再结合情况有针对地解释例证,说服面试官,一定要自信,泰山崩于前而面不改色。
面试挂了?笔试没过?简历被拒?这都不算事儿,静下心来找找原因,面下一家的时候争取不在同样的地方跌倒。即使现在的我做不好、搞不定这个问题,但给我时间,未来的我一定会搞定。
耐心是一种能力而不是一种品质
8个月是很漫长的,举例来说,阿里巴巴的招聘有实习内推、实习校招、校招内推、正式校招四关之多,其中任意一关你过了,你就可以来阿里了,其他的互联网公司也大致如此。所以,保持耐心,相信自己终有如愿以偿的一天。道理就是这么简单,但关键你要真的相信并践行,不然它永远就只是一句话罢了。
简历
简历的重要性无须多说,这里重点讲讲简历该怎么写。我认为简历最重要的是向面试官展现出你的能力,以及你是一个什么样的人。对于程序员来说,我比较推崇的是极简风格的简历(直接用markdown写简历,附带上一张证件照即可),不用什么模板,把所有内容压缩成一页,突出自己的学习能力、解决问题的能力、对技术的热情。
举个例子来说,如果你这样描述项目:
项目独立XX项目,前端是jQuery和Bootstap,后端是Node.js,编写了整个系统的受理收费、商品零售、小灵通短信群发、有线电视代收费、营业员/营业点结账等模块。
上面这样的描述方式就太普通了,只传达出一个信息,就是你用过 这些技术,至于当初面临多少种技术选型?如何做取舍选择了 Node.js?这些系统模块之间如何解耦合?有没有涉及前端架构?项目成员分工怎样,如何并行研发?遇到过哪些你认为有价值的问题?最终的效果怎么样?这些才是面试官真正关心的问题,也是最能体现你价值的地方。所以,描述项目时,不仅要有背景、过程,还要有你为这个项目带来的结果:
我做了 XX 项目重构,用了 XX 技术方案,克服了 XX 的困难,最终让 XX 这类需求变更可以短平快的被消化,极速研发、快速上线、且数据采集也做到了标准化,使得研发成本降低了30%,数据积累增长率提升了50% ,最后在 XX 产品线中开始推广。
作为一只程序猿,当然要用数字来体现最终的效果啦~~然后,github和博客地址也是必不可少的(此处忍不住高呼一句:我爱开源,开源运动改变世界!)。
对于一部分没有项目经历的孩子来说,如果实在没有相关的项目可以写,那么你的简历就要突出你的学习能力,类似于学习成绩、奖学金、绩点,然后好好准备编程的基础知识,具体准备哪些详见笔试&面试部分。
附带某位大神的简历,大家可以参考下
内推
进互联网公司实习,主要途径分为内推和校招两种。内推就是公司员工把你的信息录入到内部系统进行推荐,校招则是公司来学校开宣讲会或者通过其他方式宣传这次招聘,然后你再去公司举办的招聘会(一般开在酒店)面试。
一般来说,内推的好处多多:不用笔试、先于校招、内推不过还能走校招……所以建议大家一定要找内推!只要你有认识的人在你感兴趣的公司工作,都可以去问问。就算没有认识的人,知乎、微博、V2EX、高校bbs等地都可以比较容易地找到各大互联网公司的员工来收内推的信息(如果被推荐的人通过面试,推荐他的人会得到公司的奖励,所以员工大多数也比较乐意发内推)。
各大互联网公司的实习内推一般在2月底~4月,实习校招在4月~6月,校招内推在7月底~9月初,这里建议大家搜集下自己感兴趣的公司(比如BAT、微软等)公司的实习行程安排,记录起始日期、校招笔试时间、面试时间等,既能提醒自己这几天的时间安排,又能让自己反思自己面试中还存在的问题,一劳多益。效果图如下:
还有一点值得注意的是,一般来说各大互联网公司(例如BAT)下面有很多事业群/部门,你只能选择一个内推(举个例子,阿里有淘宝、阿里云、蚂蚁金服等多个 BU,你内推了淘宝就不能推阿里云了。腾讯和百度也有类似的情况)。建议内推前了解下内推的部门所负责的业务/项目,如果自身做的项目与他们团队做的类似并认真总结复习过,那么面试中是会加分的。
内推的起始截至日期大概是一个月(比如今年的阿里内推时间就是3.4-4.10),所以大家可以选在3.17左右的样子内推,既有一些时间准备,同时也可以从同学那了解一些面试的情况。
实习
实习是找工作的第一步,一个好的实习经历不仅能为你的简历加分,同时也能让你切身体验到一门技术在工业界中的具体应用、当前业界流行、主推的趋势热点,还能让你感受到一家公司的行事风格、价值观、理念、愿景。
我自己是拿到了唯品会、百度、腾讯、阿里四家公司的实习offer,考虑了地域(我是浙江人)、技术(阿里的前端水平业界领先)、平台(阿里云代表的云计算毫无疑问是未来的趋势)后选择去了阿里,最后顺利留下。
PS:阿里是BAT中最不care你来不来实习的公司,而对于腾讯和百度,如果你不来实习,那么就要重新走一遍面试/笔试流程,而阿里存在一个叫转正终面的东东=。=意思就是,如果你不来实习,可以在8月底直接和实习生一起参加转正终面,不用再重新面试/笔试。
真正去了实习就好好学技术,多和你的师兄师姐聊聊,多去参加一些技术分享会,多写博客多总结。
还有一个问题也是很多人会碰到的,就是发现刚进去的1个月时候感觉很新鲜,学到了很多东西,但后面发现自己都在“搬砖”(写业务逻辑),感觉学不到什么。其实这个时候你就要有所警惕,你要想到的是“如果明天就是转正终面,我该如何总结我的实习经历呢?我的简历上应该如何这段实习经历呢?”,要去思考团队现在的技术架构的优缺点是什么?现在的开发流程是否存在可以优化的地方?项目中的代码是否有可以重构的地方?你写的业务逻辑代码实现了一个怎么样的效果?是否有更好的方案去替代它呢?这些都是能体现你价值的地方,同样是在“搬砖”,但你就是比别人搬得快、搬得轻松、搬得多!
笔试&面试
笔试准备
前端、后端、机器学习、运维、测试,不同岗位有不同的侧重点,但对于一个真正的程序员来说,算法 + 数据结构 + 良好的语言基础 + 计算机基础知识,这四样基础知识肯定是必不可少的。
这里推荐几本书给大家:《程序员面试金典》、《剑指offer》、《编程之美》,这三本书用来应付BAT这一级别公司的算法题/编程题来说已经够了,学有余力的同学可以尽情去刷Leetcode,向网易游戏、微软和Google进发。而《Unix高级环境编程》、《大话数据结构》、《TCP/IP详解》、《计算机网络》、《操作系统》这些书可以用来巩固计算机基础。
这里安利牛客网给大家,上面有很多同学写的面经,同时还有在线编程平台和基础知识训练。
面试准备
关于面试,不同的公司、不同的面试官有不同的喜好,有的侧重问算法(微软、网易游戏),有的侧重问项目(华为),有的侧重问基础知识(百度),所以我们在准备的时候是要面面俱到同时又能突出自己的特点。一般来说,编程语言基础(C++、Java) + 算法题(中等难度) + 数据结构 (树、链表为主)+ 计算机网络(TCP/IP相关) + 操作系统(进程和线程、内存调度)+ 项目经历 构成了一次面试。前面5项的内容网上一搜一大堆,这里就不多说,下面重点讲下面试时如何回答有关项目经历的问题。
其实,一个项目不在与好与不好,在于你如何描述、如何审视、如何理解你的项目,多用一些专业名词,突出关键字,能使面试官能比较容易抓住重点。这个时候前期准备的简历就派上用场了,可以引导面试官去问你简历上的东西,这样会有助于你的发挥。然后,面试官喜欢问的问题无非就这几个:
XXX(某个比较重要的点)是怎么实现的?
你在项目中遇到的最大的困难是什么,怎么解决的?
项目某个部分考虑的不够全面,如果XXXX,你怎么优化?
XXX(一个新功能)需要实现,你有什么思路?
项目达到了什么效果,现在回想起来有什么更好的方案
你要设想好面试官要问的地方,并提前准备好,如果被问到没有准备到的地方,也不要紧张,一定要说出自己的想法,对不对都不是关键,主要是有自己的想法,另外,你应该对你的项目整体框架和你做的部分足够熟悉。
最后一个问题之你还有什么想问我的?
- 我进去之后会做什么?
- 团队是做什么东西的(业务是什么)?
- 内部项目还是外部项目?
- 就我之前的表现来看,你觉得我的优缺点在哪里?(这个问题可以侧面打探出他对你的评价,而且可以帮助你给自己查漏补缺)
- 偏基础还是偏业务(简单粗暴地说,做基础就是写给程序员用的东西,做业务就是写给用户用的东西)?
- 技术氛围怎么样?主要用到什么技术?有什么开源产出吗?你们做 code review 吗?
这些问题是帮助你拿到 offer 之后决定要不要接的,如果你投的不止一家公司,而且到时候拿到的 offer 势均力敌,这个信息就十分有用了。
校招
对于暑假在实习的同学来说,8月底9月初的校招是绝对不能错过的,建议8月底就可以从原公司离职(一般各大互联网公司在8月底的时候都已经有了实习转正的结果,只是没有正式发布),然后回学校好好总结下实习经历,回顾下基础知识,9月份拿下自己心仪的offer。千万不要9月份了还留在原来的公司实习,这样你准备面试、笔试的时间就少,而且来回的请假奔波会消耗掉你很多的精力。
Offer选择
关于实习offer选择,在综合考虑公司平台、团队、地域后,做选择就好了。有一个很简单有效的选择方法:去你最后想留下来的那家公司。就这么简单~~。对于校招offer来说,这里要综合考虑的是平台、待遇、团队技术栈、地域、男/女朋友,去一个两个人想要在一起定居的地方开始生活和工作吧,或者去一个自己想要稳定下来开始事业的地方,就是这样。
最后,衷心祝愿大家能拿到自己心仪的offer~~~
走过多少路,才看得到那一丝微光