参考价值:极高

观前说明:本人曾通过QQ、微信、音频通话、私信等各种方式与十多位在职程序员一对一沟通交流过。他们之中有IT行业的,有通信行业的,有刚毕业的大厂程序员,有工作十几年的老程序员甚至还有两个培训班的程序员。并且查阅IT行业相关资料视频200+。因此本篇文章虽是根据本人经验撰写,但依旧具有很大的参考价值。


本篇文章会回答以下问题:

  1. 大学生应不应该参加社团?
  2. 大学的课程到底应不应该学?
  3. 大学生应不应该去拿奖学金?
  4. 大学生应不应该谈恋爱?
  5. 大学生应不应该打游戏?
  6. 大学生应不应该参加竞赛?
  7. 大学生应不应该考证?
  8. 大学生应不应该实习?
  9. 大学生应不应该做项目?
  10. 大学生应不应该追求热门技术?
  11. 大学生应不应该刷算法?
  12. 大学生应不应该钻研底层?

通论:

计算机科班生大学期间到底应该干什么?这个问题并没有一个通用的解答。在我们明确自己的目标之前,任何人都无法给你准确的建议。因此在回答这个问题之前,我们必须先确定一个目标。

首先我们必须确定我们是要保研、考研、还是选择本科就业。怎么选择呢?

首先要看哪一个能满足我们的需求。如果我们的目标是从事人工智能、大数据等算法岗位,那么没得选,只能选择考研或者保研考进211、985大学。因为算法岗位的门槛要求就是211、985研究生。其次就是看自己的条件,如果家里有关系,或者说自己有关系,那么保研会非常适合。如果认为自己在顶尖分数阶段的考试很厉害,那么考研会是一个比较好的选择,如果我们不太适合考试但对技术有很强烈的追求,那么本科就业会是一个很好的选择。

提醒各位:在顶尖分数层次,能力强并不等同于考试能考高分。举一个例子,我高中的时候到高考前,班里前30都能够做到对所有的知识点倒背如流,并且几乎所有人只要有充足的时间几乎能把所有的题都做对。但是这30人中依旧有一半多无论怎么考都考不上600分(模拟考试),平时讨论能够和稳定600分以上的同学打的有来有回,平分秋色,但是考试分数就是考不上去,永远卡在550到600之间。谁敢说他们的知识能力水平不如600分以上的同学吗?他们只是在做题技巧,做题思维上不够熟练,不够通达。在高分层次大家的能力水平都差不多,拼的是心态、做题手感、做题技巧、考试节奏等外在因素。

所以大家不要以为只要自己知识底蕴足够浑厚就一定能够考上985、211的计算机研究生。以计算机考研如此之卷的现状,能考上985、211计算机专业研究生的学生知识储备必然都是顶尖,而且他们一个个都是考试大神。所以我说有些人天生不适合计算机考研,因为并不是每一个人都适合研究考试技巧的,在考试技巧上大幅度弱于竞争者的情况下,我不认为这些人能竞争过考研211、985的计算机研究生,如果他们做到了,那么他们的知识储备得有多高,大家觉得可能吗?

我们选定了方向,就知道接下来的四年该做什么了。

如果我们选择保研这条路,那么我们就需要尽自己所能让自己绩点排名专业前几,无论是考试尽量考满分,还是参加各种竞赛各种活动,其根本的目的都是提高绩点,提高在本专业的排名。考研的话就是立马去查资料,搞清楚计算机考研要考哪几门课,接下来的日子就是尽自己所能让自己在考研时尽量考一个高分。无论是刷题也好,夯实基础知识也罢亦或是学习做题技巧,根本目的都是在考研的时候考一个高分。

由于我本人走的是本科就业这条路,因此对考验和保研并没有深入研究过,以上建议仅是一个大概的方向,具体规划还是要去询问考研和保研的大佬。

接下来,我来谈谈本科就业该做什么。

本科就业需要做以下几件事:

  1. 确定自己的主语言
  2. 学习计算机四大基础课(数据结构与算法、计算机网络、计算机系统(操作系统)、计算机组成原理)
  3. 前端
  4. 后端
  5. 竞赛
  6. 项目经验
  7. 实习

然后,我们结合职位(没有算法岗位)选择和工作的公司期望来说一下每一个需要达到那种程度。


职位:后端开发 公司:大厂

  1. 主语言:

    至少掌握java或者C语言,且必须达到熟练掌握(需要自学,并进行大量练习)并且至少对主语言原理的理解达到内存层面。以Java为例,至少要通读一遍《Java核心技术 卷一》,不要求完全理解,但是不能囫囵吞枣的读,有能力的话去读一下《java编程思想》

  2. 计算机四大基础课:

    数据结构熟练掌握,算法达到 LeetCode 800+题的程度(或者达到能够稳定做出LeetCode中等题的水平),计算机网络掌握基础即可,主要是辅助理解前端知识,操作系统和计算机组成原理需要熟练掌握(要求没有算法那么高),需要能够把这两门的知识运用到后端的功能优化中。

  3. 前端技能:

    掌握前端基础三大件(html、css、JavaScript),不要求像主语言那么熟练,但至少要结合计算机网络知识自己手写几个web页面(跟着教程走也可以),不用追求页面多么精美,能写出来即可。学会使用vue、react等框架中的一个,不用熟练掌握,能够做到边百度边用的水平就够。(严格来说vue和react不算是框架)

  4. 后端:

    数据库方面掌握MySQL,熟练运用SQL语句,并且逐渐培养设计数据库的能力;

    框架方面需要学习基本使用,不用深入,但要多使用,主要用来优化自己的烂代码;

    掌握Git工具的使用,会用即可;

    熟悉Linux操作;

    学习使用设计模式;

    微服务、网络编程、容器也要学习(头疼)。

  5. 竞赛:

    没有要求,如果在ACM上拿了比较好的名次,是加分项

  6. 项目经验:
    无论是自己找项目做也好还是进实验室找项目做也罢亦或者实习期间参与的项目,至少要有一个运用到以上所有知识的项目,并且自己通过对底层知识(语言基础和计算机四大基础课)的理解对项目进行各种优化。在这之外也要做一些各种各样的小项目,目的是巩固自己学到的知识。

  7. 实习:

    最好还是要在大二暑假去互联网公司进行一次暑假实习。目的主要是开拓眼界,为大三的学习和大三暑假找实习铺路。大三暑假一定要去实习,可能的话尝试一下去大厂实习。

其中最重要的是主语言基础和计算机四大基础课,这五个必须在学会的基础上通读一遍经典书籍并且应用到实际项目当中。其他的一些技术向数据库、html、JS、css、框架等,跟着视频教程做几个案例和小项目运用熟练即可。

小厂对语言基础和计算机四大基础课的要求会低一些,对项目的要求也会低一些,但是其他技能该学还是得学。

前端的的话,本身不太了解,不敢乱说。

常见问题:

  1. 大学生应不应该参加社团?

    感兴趣的话,可以参加,但是不要跟风参加社团,而且不要在社团上花费过多的时间而没有得到什么收益,或者说得到了一些没什么用的收益。

  2. 大学的课程到底应不应该学?

    保研的话,由于需要保证拿到高绩点,没有办法,必须要学,而且还要学好。

    考研的话,考研不考的科目没必要学,划划水把精力放在考研的科目上,考研不考的科目最后混一个及格即可(千万别挂科)

    本科就业的话,理论上来讲学校的课都可以不听,但是重要的课必须自学,自学一般学的会更加牢固,但是注意自学速度会比较慢,而自学的进程必须要比学校的课程进度快,这就意味着我们在课下必须花费大量的时间在自学上(比如我每天课下自学时间在5~10个小时左右,人称两点战神),所有课必须保证千万别挂科(一旦挂科会耽误大量的时间)更不要重修。

  3. 大学生应不应该去拿奖学金?

    如果家庭不特别贫困的话,可以顺手拿,比如保研的同学一般专业排名很高,奖学金不拿白不拿。

    本科就业的学生不要为了拿奖学金而参加各种无意义的活动和竞赛,有那时间多学点技术,多巩固自己的基础来提升自己会是一个更好的选择。

  4. 大学生应不应该谈恋爱?

    看有没有时间,如果我们完成了一天的目标还有充裕的时间,那么能谈就谈,大学不是寺庙,不要主动的活成禁欲系学生,进入社会谈恋爱就不容易了。

    但是,如果我们为了自己的目标而奋斗,导致每天没有空余的时间,自然也就谈不了恋爱。这个时候只能放弃一个,要么放弃谈恋爱,要么降低自己的目标,空出一点时间来谈恋爱。都是成年人了,别总想着全都要,不要太天真,有些时候必须舍弃一个。

    像我,每天学到半夜两点,哪有时间谈恋爱?(无奈、被迫出家-_-)

  5. 大学生应不应该打游戏?

    和谈恋爱一样有时间就打,没时间自然也就没办法打。

  6. 大学生应不应该参加竞赛?

    保研的话,只要能加绩点能参加就参加。

    考研的话不清楚

    本科就业的话,如果目标是大厂,只推荐参加ACM,蓝桥杯不推荐参加。蓝桥杯地位比较尴尬,蓝桥杯国赛的水平差不多就是LeetCode中等题的水平,而大厂的算法测试题差不多也就是LeetCode中等题的水平,因此,即便我们拿了蓝桥杯国一,也并不能体现出我们比其他通过大厂算法测试的人更强。大厂招聘也一般不将蓝桥杯国一当作加分项。

  7. 大学生应不应该考证?

    四六级必考。

    其他证如果感兴趣且有时间可以考,但一般没什么用,比如普通话证不会对你找一个程序员的工作有什么帮助。

  8. 大学生应不应该实习?

    保研考研不需要实习,除非想体验生活。

    本科就业必须实习,有能力的话,大二暑假就可以去实习了。

    实习要尽量去互联网公司实习,不要去传统行业实习

  9. 大学生应不应该做项目?

    保研考研不清楚,但本科就业的学生必须实习,想躺平的话当我没说。

  10. 大学生应不应该追求热门技术?

    首先我们要知道什么是热门技术,什么是基础知识。

    不严谨的说框架就是热门技术,语言、计算机四大基础课、前端三大件是基础知识。

    保研和考研的同学不需要追求技术也不需要把基础知识学那么深

    但本科就业的同学,热门技术是要学的,但只用学个皮毛,会使用即可,不要深入去学。要时刻记得自己是Java后端开发工程师,而不是spring后端开发工程师。如果语言基础雄厚的话学习框架之学个皮毛的话还是很快的。

  11. 大学生应不应该刷算法?

    保研、考研的同学没必要刷算法。

    本科就业的同学需要刷算法题,量根据自己的目标决定,大厂对算法要求比较高,小厂会比较低一些。

  12. 大学生应不应该钻研底层?

    保研考研的同学没必要钻研底层。

    本科就业的同学需要研究一下计算机底层知识(实际上就是深度学习计算机四大基础课,并尽可能应用到实际项目开发当中)