最怕一生碌碌无为,还说平凡难能可贵。

0%

写给计算机学院的同学们

半年前,我写过一篇微信推送,给想走计算机这条路的学弟学妹们一些自己的建议。

半年后,真正在计算机学院待了一学期之后,我对计算机的认知又有了新的看法。

于是,想重新写一篇博客,想尽我所能地让学弟学妹们少走点歪路吧。

To students at School of Computer Science:

目录

  • 写在前面

  • 正文开始

    • 大一、大二
    • 大三
    • 学习
    • 竞赛
    • 科研
    • 出国
    • 考研
    • 考证
  • 补坑

  • 致谢

写在前面

提笔,思绪就回到了一年半前。想起了自己大学进来之后一路摸索,兜兜转转,花了一年的时间终于找到了自己真正喜欢的东西,那就是计算机!

本着一心给学弟学妹贡献干货的初衷,只想学弟学妹能够少走点歪路,变得越来越优秀,肯定要超过我啊。

本博客只是根据自己的个人经验,以及学长学姐们给我的建议,自己写的一些小指导。

记住:计算机不等于编程,计算机 >> 编程。路是自己走的,适合自己的才是最好的。

注意:有些坑,我可以告诉你们,但是有些坑还是要自己亲自去踩一遍的,至于原因嘛,卖个关子。

正文开始

三条主线,会有交叉。

  • 时间线:大一、大二、大三、大四

  • 方向线:学习、竞赛、科研

  • 规划线:国内读研、工作、出国

大一、大二

学习的重要性就不说了,GPA 真的是个好东西,有个保研的学长告诉我,本科阶段,刷 GPA 比竞赛拿奖容易太多了。事实上,我觉得也是这样。

大一大二还是可以参加点比赛的,不过小川同学的建议是,竞赛贵在精,不在多。含金量高的竞赛就那么几个,数模ACM电赛挑战杯 等等,其他一些比赛,站在功利点的角度,其实真的没什么意义,你和外校的同学竞争的时候,提起一些校内甚至院内的比赛,他们可能听都没听过。但是,你一说,数模 啊,ACM 啊,他们就知道了。数模 可以参加,但是我觉得 ACM 其实更偏向于读计算机专业的学生参加。算法数据结构 ,不管是找工作,还是考研复试上机,都是要考的。但是,ACM 是很累的,非常非常累!没有寒暑假,还会占据平时的放松时间,毕竟每周都要训练几十小时,这可不是开玩笑的。但是我可以郑重地告诉你,坚持下来,肯定收获很大,不说能不能拿个奖牌,单说 算法 这方面,就可以碾压很多人了。

另外,如果你接触了 ACM 之后,发现没有很大的兴趣,也没事。你可以选择 做项目 ,有个学长就是在 ACM 校队 呆了之后,发现自己对做项目更有兴趣,于是转了方向,后来在 微软阿里云 都实习过。这里就要提到STITP 了,虽说有些学长说,国家级的才有点含金量,省级的有些都没什么用,更别说校级了。这里,我想说的是,别那么功利性,项目做出来,收获肯定有的。导师方面也要多咨询,有些老师,就算是校级的项目,都能出三四个专利。我的 STITP 只有校级重点的评级,但是我一点都不难过,当时放弃 数模 ,选择 做大创 ,就想好了,不管什么评级,都要好好做。算是为自己增加一个项目经验。毕竟,学计算机的,大学四年,连个项目都没做出来过,说出来真的会被人笑话。我也想 GitHub 上多捞点 Star 啊!

大三

准备就业的话,大三就要开始 找实习 了。暑假期间肯定要申请到一份实习,有实习能大大降低简历被刷的概率。一般计算机秋招在暑假刚结束的 8 月末 9 月初开始。

实习面试内容:

算法 + 数据结构 + 数据库 + 计算机网络 + 操作系统 + 项目经历 + 对应岗位技术需求

实习必备:

牛客网 (用过的都知道好,去了阿里的学长的实习内推就是从这里投的)

LeetCode

实习僧 (不那么大的公司)

实习准备书:

《剑指 Offer》《编程之美》

学习

前面也说了 GPA 很重要。但是我这里想说的是,大学只学习真的是不够的。可能,你能刷到 4.5+ 的恐怖 GPA,但是是否真的掌握了呢。不过一般 GPA 到了这种地步的,估计老师没讲过的他自己也课后理解会了。但是你要是大学四年只学习,真的是万万不可取的。稍微了解了点就知道了,只学习的,在考研复试,或者保研面试,其实很容易暴露出问题。毕竟大学考试什么样子,大家心里也都清楚 (除了几所顶尖的)。分数考得高,并不代表你真的掌握了。

高中刷了三年的题目,最后发现还是不会考试。进入大学之后,我就下定决心,不想再做只学习的人。如果只学习,那和再读四年高中有什么区别。我想要的是真正学到实质性的知识。

竞赛

除了上文提到的那几个含金量比较高的比赛,再推荐几个校外的企业比赛,感兴趣就去参加吧,不要怕。阿里天池腾讯广告算法大赛 等等,不过这些一般都要 机器学习深度学习 的基础,这些是研究生学的了,感兴趣就提前自学好了(我就是因为兴趣,所以自学了 吴恩达老师 的深度学习课程,但是并没有学完。我认识的一个很厉害的学弟,大一就把 吴恩达老师 的 ML 和 DL 课程学完了,现在去 南大匡亚明学院 交换了,所以说啊,优秀的人,学校根本不是限制)。虽然本科生参加难度很大,但是说不定就能认识一些大佬呢。我混在 腾讯广告算法大赛群 ,就发现了一个比研究生还厉害的 中山大学 本科生,ML、DL、NLP 都有涉猎而且都学得很好,真的强!

竞赛获奖固然辉煌,但是你也要想到那些获奖的人背后付出的努力。我邮 ACM 校队 的那几个大佬,哪个不是投入了大量的精力和时间呢?2016 年校队队长 CZY学长 、2017 年校队队长 ZZX学长 、2018 年校队队长 LYY同学 、还有最佳女队 LYT学姐······稍微了解就知道他们付出的真的不是常人能想象的。但是坚持下来的真的都很厉害,有去 Google 的,有保研去 清华 的等等。

科研

如果你对竞赛不是那么有兴趣,你可以试着接触点科研,联系个导师,跟着做个项目,说不定就有感觉了。本科阶段有老师带真的是好事!毕竟,读研期间就是做科研啊,大多数学校不发论文研究生不能毕业。

出国

这方面我了解的不多。

但是有老师、学长都说,出国读研比国内读研好。

考研

计算机专业那几门课大概考研都会考:计网计组操作系统数据结构算法 一定要好好学。离散数学 有些学校复试会考。反正如果你不清楚的话,只要是培养方案里标注的专业课,你要花比其他课都多的时间去学,准没错!至少要花和高数一样多的时间吧。考研有人说太早准备不好,有人说半年不够,我其实也不知道准确的时间。但是我知道,复习后期 (也就是大四 9 月以后) 考验的不是智商,是坚持。那时候,看到同学拿到 offer 了,你可能会开始焦虑,顶住压力。

考证

全国 / 计算机等级考试 这个怎么说呢,含金量不高,但是大家都考你不考又感觉不舒服,就很难受。再推荐个计算机专业的考证。浙大 PAT ,可以去了解一下,类似于 ACM,但是难度比 ACM 低,乙级 3 小时编程 5 道题,中文题目,甲级 3 小时编程 4 道题,全英文。顶级,不敢想,ACM 竞赛生玩的东西。这个含金量挺高的,也是一个学长告诉我的,有些学校考研复试上机成绩,可以直接拿 PAT 成绩替掉,有些实习面试的算法题,也可以直接拿 PAT 成绩替掉。

另外,信息安全专业有一个 CISSP 的认证,很火爆。可以自己去了解一下,我知道的不多。

补坑

前面说到,有些坑还是要自己亲自去踩一遍的。这话其实,也是我大二第二学期的时候感受到的。发现真的很有道理。

就比如,现在大学计算机专业学的第一门编程语言几乎都是 C 语言 ,然后会接触 C++Java ,但是稍微了解就知道了,Python 已经把他们三个都超了。据我所知,苏州大学已经把 Python 作为大一计算机专业学的第一门编程语言了。我也是经一个哥哥指点,自学 Python ,然后发现,真的好用!当时就想,为什么要学这么麻烦的 C 语言 呢。前阵子我知道了,当然要学,你可以以后不用它,但是面向过程和面向对象的思想你还是要了解的。现在 Python 很火,但是谁能说,它不会没落?最近不是 Julia 语言也开始兴起了吗。

当时大二上学期想转专业的时候,还只停在单纯地喜欢 Python 的层面,但是有个转专业的学长告诉我,光学 Python 是不够的,当时我不懂什么意思。大二下学期,我知道了!因为当时开了 《微型计算机原理与接口技术》 这门课,要写 汇编语言 程序。这个简直是比 C 语言 还繁琐的语言,很低级。但是我接触了之后,发现并没有想象中那么枯燥,能够深入了解一下计算机底层的东西,其实也很好。所以我就从当时上课连 寻址方式 都听不懂,到清明在家恶补狂刷了几遍 西安交大 的慕课,慢慢地有了感觉。后面老师布置的几个编程作业,我也都是自己编出来了。很感谢那时候的自己,枯燥的汇编语言也坚持下来了。我觉得,对计算机的执念大概就是那时候培养起来的吧。

所以说啊,这些坑都要你自己亲自踩的。

有个学姐在我大二升大三暑假的时候还和我聊到,她好心给学弟学妹一些指点,有些人听了很感激,有些人并不知道其中的辛酸。这些都是一点点摸索过来的经验啊。打个比方:我自己体验了物品 A 很不好用,找了很久问了很多人才知道 B 物品更好用,如果自己直接告诉别人 B 很好用,那个人没体验过 A 的难用和艰辛,根本谈不上感激吧?而且很有可能将来他用了 C 觉得推荐 B 物品的人没见过世面误导自己。所以说啊,有些坑自己去踩吧,总会有收获的,虽然会花点时间。

另外,计算机学院的一些课,因为是从国外引入的,不先进。学校教的不与当前潮流接轨。学校课程安排,跟实践脱离,所以平时要多敲代码,遇到问题搜 GoogleStack Overflow 。学计算机的,本科四年下来,代码量肯定得达到 1w 行 ,只能多不能少!其实,这些很多都是大一、大二完成的,大三一些专业课敲代码比较少,但是你可以做项目来积累代码量。

另外,GitHub 这个东西一定要自己去注册个账号,摸索一下怎么使用。对学计算机的同学是非常有用的!(这可是世界最大同性交友网站程序员的圣地啊!)所以有学长学姐带你真的很省事啊,我大二第一学期结束才知道 GitHub 这个东西,没有人告诉我,我都是自己摸索的,流过很多汗水,但是都值得啊!

再补充一个,博客最好也有一个。我大二下学期才开始写博客,在 CSDN 上写的,后来限制太多,利用暑假时间,自己搭了一个 个人博客 ,坚持 输出 ,但是贵在精,不能一味追求数量。别小看写博客这个东西,你学会一个知识点是一件事,但是你写出来让别人看懂就是另一件事了。去了解了解 「费曼学习法」 ,你就知道原因了。而且,博客也能作为加分点啊。我认识的去了 阿里 的学长,就是因为博客记录了一些 智能算法 的文章,面试官问了他博客上的这些智能算法,学长都答出来了,顺利拿到阿里 Offer。

致谢

  • 去了阿里的「宋学长」
  • 同大二转专业的「郭学长」
  • 告诉我 PAT 的「尤鱼哥学长」
  • 给我很多帮助的「顾学长」
  • 不愿透露姓名的「某学姐」
  • 给我打开网络新世界大门的「陈学长」
  • 给我 ACM 希望的「刘学姐」
  • 告诉我 Python 是个好东西的「大哥哥」
  • 给我走 CS 路信心的「徐学长」
  • 管院爱好编程的「杨学长」
  • 从事 C# 开发的「于学姐、崔学长」
  • 给我考研一些指导的「张学长」