半年前,我写过一篇微信推送,给想走计算机这条路的学弟学妹们一些自己的建议。
半年后,真正在计算机学院待了一学期之后,我对计算机的认知又有了新的看法。
于是,想重新写一篇博客,想尽我所能地让学弟学妹们少走点歪路吧。
写在前面
正文开始
补坑
致谢
提笔,思绪就回到了一年半前。想起了自己大学进来之后一路摸索,兜兜转转,花了一年的时间终于找到了自己真正喜欢的东西,那就是计算机!
本着一心给学弟学妹贡献干货的初衷,只想学弟学妹能够少走点歪路,变得越来越优秀,肯定要超过我啊。
本博客只是根据自己的个人经验,以及学长学姐们给我的建议,自己写的一些小指导。
记住:计算机不等于编程,计算机 >> 编程。路是自己走的,适合自己的才是最好的。
注意:有些坑,我可以告诉你们,但是有些坑还是要自己亲自去踩一遍的,至于原因嘛,卖个关子。
三条主线,会有交叉。
时间线:大一、大二、大三、大四
方向线:学习、竞赛、科研
规划线:国内读研、工作、出国
学习的重要性就不说了,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 物品的人没见过世面误导自己。所以说啊,有些坑自己去踩吧,总会有收获的,虽然会花点时间。
另外,计算机学院的一些课,因为是从国外引入的,不先进。学校教的不与当前潮流接轨。学校课程安排,跟实践脱离,所以平时要多敲代码,遇到问题搜 Google
、Stack Overflow
。学计算机的,本科四年下来,代码量肯定得达到 1w 行
,只能多不能少!其实,这些很多都是大一、大二完成的,大三一些专业课敲代码比较少,但是你可以做项目来积累代码量。
另外,GitHub
这个东西一定要自己去注册个账号,摸索一下怎么使用。对学计算机的同学是非常有用的!(这可是世界最大同性交友网站程序员的圣地啊!)所以有学长学姐带你真的很省事啊,我大二第一学期结束才知道 GitHub
这个东西,没有人告诉我,我都是自己摸索的,流过很多汗水,但是都值得啊!
再补充一个,博客最好也有一个。我大二下学期才开始写博客,在 CSDN
上写的,后来限制太多,利用暑假时间,自己搭了一个 个人博客
,坚持 输出
,但是贵在精,不能一味追求数量。别小看写博客这个东西,你学会一个知识点是一件事,但是你写出来让别人看懂就是另一件事了。去了解了解 「费曼学习法」
,你就知道原因了。而且,博客也能作为加分点啊。我认识的去了 阿里
的学长,就是因为博客记录了一些 智能算法
的文章,面试官问了他博客上的这些智能算法,学长都答出来了,顺利拿到阿里 Offer。