由于具有高度的可拓展性(scaling),互联网行业天生是一个暴利行业。如果你的产品被人们接受,那你的代码将服务无数人。计算机行业在国内20多年发展了二三十年,诞生了若干明星企业。有被称为"BAT"的百度,阿里巴巴,腾讯,同样有后起之秀"TMD"的头条,美团和滴滴。无数年轻人羡慕这个行业的高薪(据笔者调查:2019年一二线城市的互联网大厂给应届生工资普遍是14k往上,数据来源:OfferShow),前赴后继的想要进入这个行业分一杯羹。笔者作为一个19届的应届生,想写一下自己认为想进入互联网大厂所需的技能。
现在互联网大厂招聘应届生的现状是什么?
我是非985,211的普通本科学历,我有机会进入大厂吗?
我是一个小白,除了学校教的课程,还应该学些什么技能?
如何阅读源码?
报培训班有用吗?
参加比赛拿奖有用吗?
参加学校的编程社团有用吗?
简历应该怎么写?
根据笔者对几个大厂放出的应届生画像的观察,现在大公司招聘应届生学历中硕士和本科的比例是7:3。行业门槛在提高,以后估计这个比例中硕士的比例会进一步扩大。且有的岗位早已供过于求(最明显的是算法岗位,一个岗位能收到600份简历,可想而知竞争有多残酷)。
有机会。学历是门槛,现在有的企业为了减少招聘成本,很多双非学历的简历会被直接丢弃。但好在只是有的企业。笔者认为可以换位思考。如果我是招聘者,我想招的同学是学历能力强,给ta一个即使是之前没接触过的任务,ta也可以在很短的时间内通过有效的途径去解决这个问题。也就是说,我需要的招来的是可以解决问题的人,这样的人在985,211的学校里有。在双非学校里也有,不必一棒子打死所有双非本科。
反过来说,若是在学历上不加分,你就需要在其他方面比同样的竞争者做的更好。不过,若是本科期间没有积累足够的知识,不妨再通过考研再给自己一段时间去沉淀一下。
首先,学校教的基础课是有用的(基础课包括:数据结构与算法,操作系统,网络,编译原理等等),但是实践课往往比较落后于时代。以一个应届生的角度,我觉得可以去学:
在上学校教的基础课时,你应该已经会了一门编程语言,建议要一边学习,一遍用代码实现这些课涉及到的算法和数据结构 毕竟敲而不思则罔,思而不敲则殆。若觉得老师教的知识不足以解决你的问题,可以去豆瓣读书上去寻找经典书籍,或者去网易公开课上寻找国内外经典教学视频。
如果能带着问题去学习是最好的,如果你连问题都不知道,可以去类似于牛客网这样的校招网站去查校招对于这些基础课的考察点是哪些,看看面试官会问面试者什么问题,然后带着问题去学习。
这是重头戏,毕竟你到了工作岗位,需要分析问题进行编码。
首先你需要上手一门语言,不管是编译型还是解释型语言,要有一定的代码量,建议去LeetCode网站刷一定的题。刷的时候不要漫无目的的刷,去找别人总结的代表题,按类型去刷。
工作中,很多时候是在处理字符串,建议把这门语言字符串库好好看看(看的时候可以参考源码中的测试代码看看这些库中的函数如何使用)。这时,如果还记得之前学过的数据结构,建议编码时多想想时间复杂度和这里用hashmap是不是会简化问题。
除了刷题,可以自己去开发一个系统去总结自己所学。不过严重不推荐写类似于TODO、商城、博客这样的系统,原因后面会说。
存储方面,rdbs需要首先重点掌握,比如MySQL。从开发的角度来看,需要会写SQL,会优化SQL以及掌握MySQL的体系架构和优化方法。除了rdbs建议再深入了解一种缓存存储,比如Redis。
储存其实有很多类型,用于不同场景,说到底,后端程序员整天就是在和各种存储打交道,需要好好去钻研。
当你在GitHub上发现了一个不错的开源项目,想要系统学习,那途径有阅读文档,查看测试等。倘若这些满足不了你,可以阅读源码。独源码不是说把最新版本的代码clone下来,然后一通瞎找,根据我的经验,你可以去GitHub上找它的最早release版本去阅读,若第一个release版本代码还是太长,直接根据commit记录找易于你理解的版本去阅读。
看是什么样的培训班。现在网上流传着各种公开课视频,你完全可以先找一个视频去入门,后面通过看书,看文档等其他方式去深入学习。
不过,若是你报着拓展人脉,结交朋友的目的,不妨报一个培训班看看。现在很多培训班在培训编码时通常会使用上面提到的TODO、商城、博客这样的系统,有的面试官很反感培训班出来的应聘者。所以,为避免不必要的麻烦,不用在简历上写这样的系统。
大多数没用。现在一些算法类的比赛写在简历上会加分(比如ACM),其他类型的比赛没用。
有点类似于问题5,看你的目的是什么了,如果你想拓展人脉,交到一群志同道合的小伙伴,可以去参加一下,但是学习的路是孤独且艰苦的,加了一个培训班不代表你编码能力会很强。同样,加入了一个社团更不能代表什么。
如果你要应聘开发,建议简历上不要写类似于:学校学生会经历,做过志愿者等字眼。换位思考下,我作为招聘方,更希望招来的是一个本科期间在不懈提高编码能力的coder,而不是一个整体忙于社交的同学。
简历上的英文要写正确,比如MySQL,不要写成Mysql.
多描述个人技能,多写项目经历。