说在前面
韶华易逝,劝君惜取少年时。我并不是说每个人都需要去卷考研、卷工作,只要你有热爱的事情,并为之努力奋斗,没有在浪费自己的生命,那么你就可以很骄傲的挺起胸膛了。
很多大学生的大学四年可能是这么过的
大一:好不容易上大学了,好好休息休息吧,开摆开摆
大二:开始有点迷茫焦虑,不知道自己是该参加比赛还是卷绩点还是准备找工作,一边迷茫一边摆,通常情况是晚上下定决心明天一定要发奋图强,第二天醒来一切照旧
大三:周围的人怎么都开始忙起来了,要不我现在开始准备找工作/读研吧,但是还没意识到危机感
大四:棒子打在身上觉得痛了,开始考研/找工作
显而易见,上述并不是一份很好的大学规划,如果想在大学校园成为一个竞争力很强的计算机专业学生,大学四年应该如何规划以及具体怎么去做呢? 且听我娓娓道来。
大一
大一的同学们初入大学校园,会发现在大学有很多事情都和高中不一样,例如:可以自由安排的时间,甚至不去上课也可以,还有学校的各种社团和组织,以及松散的班级制度等等。
但是我认为其中最重要的一个区别就是:高中有人抓着你学习,但是大学学不学、学什么全靠你自己。
还有一个基本认知就是:学校90%课都对你没什么帮助,剩下10%有帮助的课,有不错自学能力的同学也能战胜老师的陈年PPT。
这个就要涉及到中国大学制度的一些讨论了,总而言之,教学生其实是大学老师的一个副业,他们的主业是做科研和发论文,那么就会导致很多老师对授课不上心,经常是拿着陈年PPT在课堂上吟诵。同时学生们发现了很多水课并没有什么作用,也习惯了老师的陈年PPT和毫无互动的吟诵,开始上课抢着坐后排,不参与课堂互动,这又会寒了某些认真上课、对学生负责的老师的心,从而导致一个恶性循环。而大学的辅导员,主要是参与管理你学业之外的一些事项,部分负责的辅导员可能会帮助你的学业和就业,但也是非常有限的。
在这种教育制度下,大一这个阶段对于整个大学来说就非常的重要,最重要的是要做到下面两件事情。
1.选方向 2.选同伴
大一最重要的一个任务就是:尽早确定你之后的方向 。不要想着刚上大学,好好休息休息再进行出发,因为只有确定了方向,才能够出发,在笔者的其他文章中有提到过,考研和工作是两个天差地别的方向。越早确定方向,就能越早积累,降低中途换方向的概率,之后在毕业的时候积累也更雄厚。
其中考研和工作也有很多细分的小方向,比如考研的话你要考什么学校呢?考什么专业?该学校水平、考试难度、录取率怎么样?工作的话你是走前端、后端、算法、测试、运维还是产品、运营?
关于考研的信息在网上能找到很多,这里不再赘述。
关于工作的方向选择,如果是想本科就业可以把算法pass掉,因为现在本科不可能找到像样的算法工作,在本科可以触碰到的技术方向中,求职难度为后端>前端>测试≈运维,如果对技术不感兴趣可以考虑产品和运营。当然,具体选择什么方向主要还是看自己的兴趣,一定不能够讨厌自己做的事情,不然接下来的十数年甚至数十年都要面对自己讨厌的东西,肯定无法走的长远。 另一个很重要的事情就是选同伴,我们常说"十步之内,必有芳草;十室之邑,必有忠士。"如何享受到一所大学里最优质的教育资源呢?答案就是选对合适的同伴。
在大多数学校内不管是读研还是找工作都能找到合适的同伴,以我的学校为例,学校有一个大数据协会,里面的成员保研率超过了85%,在这里可以互换保研资源,一起打比赛,提高保研率。学校里面还有很多工作室,里面的成员会通过学长学姐的考核和授课,学校里面基本80%以上拿到的大厂offer的选手都是从这里走出来的。
选对伙伴和他们在一起既能形成小团体一起朝同一个方向前进,也能相互之间形成竞争关系,互相促进,摆脱迷茫,在同龄人都很迷茫的时候,你已经和志同道合的朋友找到了自己前进的方向,那么你就已经抓住了一个弯道超车的机会。
大二
在大一已经选好方向的前提下,不断做该方向的积累,为日后的厚积薄发做准备。准备读研的同学可以想办法搞高自己的绩点,在前几年改革之后综测和绩点是强关联的,能不能保研很大程度上看你的绩点。除此之外还能打一些对保研有帮助的比赛,比如数模和互联网+,这些比赛对于综测的提升是最多的。但是从长远的职业发展的角度来说收益可能没有ACM这么高,究竟选择什么比赛作为绩点之外的综测成绩拓展还是看各位读者的兴趣和自身情况。
至于准备工作的同学,就可以好好准备相关的事宜了,最好是以找实习为目标来进行学习,具体要学习的内容,可以去看看各大公司的实习生JD。以后端开发实习生为例,你需要学会的是,熟悉一门编程语言,这里指的是语言的使用+语言内置数据类型的实现+语言的一些框架、工具+语言的一些底层原理,以Go对应的话,你需要了解最基本的Go语法、多态、函数一等公民,方法,闭包、反射等等内容 , slice map channel等内置数据容器的底层实现,并且掌握一些常用库比如net/http net/rpc log error,还需要掌握一些基于这些库衍生出来的较为常用的框架,比如web框架gin和ORM框架GORM等等,然后还需要学会Go一些工具的使用,比如单测、基准测试、pprof,以及一些Go的底层实现,这里最有代表性的就是GC和GMP。
然后就是计算机基础的准备,首先最重要的就是数据结构,这门课是程序员最最重要的基础课之一,建议里面提到的数据结构都自己去动手实现一遍,线性表、链表、字符串、栈、队列、排序、树、图等等。然后就是计算机网络、操作系统、计算机组成这几本大部头的基础课,在除了学习学校教授的内容之外,推荐大家再去阅读一下比较经典的作品,比如计网的《图解HTTP》《自顶向下了解计算机网络》以及操作系统的黑皮书等等。这些内容都是成为一名优秀程序员的基本功。
还有项目的准备,还是以后端为例,项目做得好才在面试的时候和面试官有东西说,如果项目全是自己随便写的demo,或者经不起推敲的玩具项目,先不说会给面试官很差的观感,而且也会使得正常面试那面试官只能和你聊基础和算法题了、这里的项目可以是老师实验室的项目,最好是真的和企业合作的项目,能够落地使用。没有的话也可以在网上找一些项目做,推荐一个web项目+一个分布式,分布式项目的话可以参考MIT 6.824来做。之后我也打算在Bilibili录制相关项目,应该这两周就会开始。
最后就是算法题的准备,现在因为经济下行,行情越来越差,互联网正式步入寒冬时代,看看这两年的校招情况就能可见一斑。现在算法题做不出来过面试的概率越来越小 ,所以乘着大二时间多,多刷一些经典题,这里推荐反复刷HOT100和剑指OFFER,最好是能全做出来,easy和mid可以秒掉的程度,因为大部分面试的算法题是出自这里,如果面试官出的别的地方的题目,那也是实在没办法。
大三
从大三开始就可以准备实习了,不管学校好与坏,一段或者几段不错的实习都是能大大增强自身的竞争力的。在大二暑假到大三上学期可以尝试投递日常实习,日常实习的要求比暑期实习会稍微低一点,同时也是部门散招,所以消息会比较少,可以多在几个平台+学长学姐的渠道进行投递。如果发现自己的能力和应聘要求相差比较大,可以按照上述大二规划进行加强,哪里差就对哪里进行查漏补缺,比如算法能力较弱,那就多刷点题,项目比较差就考虑换个项目或者增强一下现在项目的亮点,或是对项目进行一定程度的包装,反正只要你面试上能回答上来,那这就是你"真实"的项目。除此之外还可以去学一些该方向比较新或者比较实用的技术,如容器技术、分布式相关内容等等。
大三下就正式开始了暑期实习的招牌,暑期实习的流程和秋招是差不多的,所以最好是去体验体验,暑期实习一般是统招,就是整个公司都进行招聘,各个部门共享简历池,暑期实习一般也有转正机会,所以难度会比日常实习高不少。
大四
大四最重要的是秋招和春招两个招聘,其中秋招的机会会比春招多很多,所以推荐大家尽量都在秋招上岸。有能力的小伙伴们可以多拿几个of,然后用B家的去A一下A家的of,以拿到更满意的待遇。
大概十月到十二月各个学校会慢慢发三方协议,三方一签基本就稳了,开始享受大学生活吧。当然这两年也有公司要求去提前实习,这个得和部门商量。
最后
谢谢你看到这里,希望大家都能有美好的大学生活以及光明的前途~