非科班渣硕2020秋招总结
2021年的秋招开始了,附腾讯内推链接,祝大家旗开得胜
内推码:https://join.qq.com/poster.html?iDeptId=0&bole=JF_aWc-UrP5na-fo2eitLgBcRP-rIiaNtEHsBOsi15k&adtag=wx
十月份的最后一天,基本上所有的offer都开奖结束了。回顾过往几个月的秋招路,感觉还是可以留下一些微不足道的经验,希望能帮助到希望转互联网但是不知道从何下手的师弟师妹们吧。
先简单地介绍一下我的个人情况:985本硕,传统工科,C++选手。从研一开始自学C++和计算机相关基础,秋招一共面了11家公司,基本上投的都是C++或者后台开发岗位,面试的具体情况如下:
已挂:
华为(一面挂)
猿辅导(二面挂)
虎牙(二面挂)
美团(二面挂)
已offer:
oppo(sp)
欢聚时代(白菜)
深信服(ssp)
阿里(白菜)
百度(sp)
字节(sp)
腾讯(sp)
对于非科班的童鞋而言,在决定转计算机的时候,经常会面临一些困惑的问题:应该如何转计算机?大概需要花多长的时间?学什么语言好?应该走哪个方向?应该如何准备秋招?
针对上述问题,我将依据我个人的一些主观经验,给出一些纯主观性的回答,希望其他同学有兴趣的话也可以一起参与讨论。
1.学什么语言好?
就目前的就业形势而言,主要的面试语言有:java,c++, go。java与go一般在后台开发业务方向用的比较多,C++当然也有一些后台开发的方向,不过一般集中与安全、计算与传输等对效率要求比较高的领域。
就目前国内的互联网大厂情况而言,java岗位占据了大头,阿里、美团、猿辅导等公司都是以java为主的;go的岗位主要集中于比较年轻的公司例如字节跳动等,近几年一些大厂的新业务也是用go开发的,例如腾讯。C++的话互联网大厂主要就是腾讯了,当然由于C++的高效率,目前的音视频大厂基本上都有大量的C++岗位,例如虎牙快手等。如果不是一定要去纯互联网公司的话,那么C++选手也可以考虑一下华为小米ov等通信大厂或者网易互娱等游戏厂商。
考虑到地域因素的话,想去北京或者长三角的同学可以优先考虑java;想去珠三角发展的话可以考虑一下C++。对一线城市不感兴趣,想去银行等事业单位或者考虑去二线城市养老的话当然还是建议java。
考虑到内卷强度的话,就后台开发而言:java>c++>go。
2.走哪个方向?
目前互联网校招大量招聘的岗位有:后端、前端、客户端、测试、算法。按照内卷程度排名的话:算法>后端>前端>客户端>测试。一般内卷程度更高的岗位薪资也越高,职业发展前景相对来说也要好一些。客户端和测试一般不要求有对应的开发经验,缺乏信心的可以投一两个客户端岗或者测试岗位来保底。
3.应该如何准备秋招?
一般在面试过程中,面试官主要考察三个方面:基础、算法、项目经验。基础一般考察语言基础、计算机系统、计算机网络、数据结构、数据库原理。算法的话主要考察一些常见的算法,例如背包问题、动态规划、单调栈等,这部分通过刷题就可以解决了。
在刷题这一方面很多人都推荐剑指offer和leetcode hot100,确实这两个题库基本上涵盖了面试时的大部分代码题。但是对于非科班的同学来说,缺乏一定的算法基础就去刷题库可能刚开始刷题时会有一些挫败感。我个人建议可以先按照类型刷题,掌握好套路后再去将题库刷一遍。现在的分类题库不少,例如cyc2018就有各种分类题库,背包九讲是背包专题,labuladong有动态规划的一些专题,先刷完这些专题再去刷题库可能体验会好不少,对于秋招也会更有信心。由于互联网实习春招4月份就陆陆续续开始了,我个人建议三月份的时候最好把hot100全部刷完。
项目经验这方面可能对非科班同学来说是比较难受的了,尤其是像我这样的传统工科选手,在实验室做的东西跟互联网压根不沾边。所以为了避免尴尬,一般大家都会去做一些开发项目,java选手一般做的是秒杀商城项目,C++选手一般做的是多进程/多线程并发服务器,同质化严重。我实习入职后跟面试官聊过这个问题,面试官表示现在看到这种类型的项目基本上都不会问了。因此对于非科班的同学而言,在项目这一块可能要多花点心思了。我个人建议开源项目可以做一下微服务框架,例如做一个简单的rpc框架,或者做一个基于协程的服务器,有余力的还可以试着做一下视频点播或直播等。总而言之就是要避免同质性。
另一方面,秋招的话一般是比较注重实习的,有一个比较好的实习经验可以解决在项目考察这一方面的问题。不夸张的说,我可能有一半的秋招sp都是靠大厂实习光环拿到的。因此对于非科班选手而言,主赛场可能已经提前至春季的实习招聘了。当然非科班选手也可以选择打比赛来弥补自己在项目这一方面的不足,对于开发选手而言,天池 kaggle这些算法竞赛就不要去凑热闹了,我个人建议华为的软件精英挑战赛、研究生数学建模大赛、快手的k-code服务器大赛,这些比赛门槛都比较低,但是含金量还是有的。
4.如何系统化地学习计算机基础
这种类型的帖子牛客已经很多了,但是大部分都是给书单,哪些书加起来可能有一两米厚,对于非科班的同学来说可能直接就劝退了,因此我下面给出一些比较实际的学习路线,内容不多,但校招的话应该基本够用了。
(1)C++语言基础:《算法笔记》1~3章,《C++ primer plus》10~16、18章
(2)计算机系统:《深入理解计算机系统》1、3、5、7、8、9章
(3)计算机网络:《计算机网络自顶向下方法》1~4章,《深入理解计算机系统》11~12章
(4)数据结构与算法:《算法笔记》7~12章,自行百度红黑树、b树、b+树对应博客介绍
(5)数据库:《Mysql必知必会》全本,自行百度数据库索引等博客介绍
(6)linux基础:《鸟哥的linux私房菜》5、6、7、10、11、12
(7) 编程规范: 《Effective C++》/《代码整洁之道》
(8) 设计模式: 百度单例模式/工厂模式
(9) 后台开发: 《linux高性能服务器编程》
(10) stl: 《stl源码剖析》,重点看vector和map
下面的面经和题库用来查漏补缺:
labuladong:https://labuladong.gitbook.io/algo/
leetcode hot100: https://leetcode-cn.com/problemset/leetcode-hot-100/
最后,祝大家都有光明未来与美好前途。