普普通通,我的三年大学
来源公众号:苦逼的码农
作者:帅地
前阵子有些读者问我大学期间的学习路线,说他自己现在有点迷茫。说实话,对于学习路线这种文章,一抓一大堆,我也不大喜欢去建议别人究竟该怎么学习,学习顺序之类的。不过对于大学,很多人进入大学的时候,可能都是同一个起点,大学四年过后,却是完全不同的人生轨迹。正好我也想记录下自己从高中进入大学这几年的学习与变化,我的大学经历,可以说是非常普通,没有参加任何竞赛,也没拿过奖学金(当然,国家助学金得拿,哈哈)。也正是因为普普通通,我才要分享,因为我相信你们都看过很多充满各种牛逼的大学经历。
所以这篇文章,就以时间的顺序,记录下这几年的学习、想法、看过的书等,或许,普通的大学经历,更加有参考性也不一定哦,嘻嘻。
一、非计算机专业的大一
在我高考分数下来的时候,看了下分数。我去,比预想中了至少少了几十分,真心想不通我的数学和英语为啥能考这么差,平时数学、物理是我的强项,算是经常全班第一,不过高考数学得比预想中的少了几十分,处于及格边缘,而且,英语也并预想的少了二十多分,当时还是很郁闷的,高考这么重要的场合,居然考这么低。
不过说实话,当时我并不伤心,因为我觉得,学校虽然挺重要,但也没有那么重要,我相信自己要干的事,在哪个学校都能干,而且在我看来,技术与成绩,只是大学的一部分而已,虽然是比较重要的一部分。当然,能上个牛逼一点的学校当然比较好了,至少还能装个逼,哈哈。
当时我是想读计算机类专业的,不过以我的分数,如果选择省内一本学校的话,我会读不上计算机专业,只有被调剂的份(当时没有考虑省外)。不过我是一定要读计算机专业的,并且也想尽量进个一本的学校(不是说看不起其他批次学校哈),当时我就查哪些学校转专业比较容易,所以后来我是报读了一个容易转专业的学校,也就是选择被调剂,之后在转专业到自己相对喜欢的专业。当然,这里存在转专业失败的风险。
后来我是被调剂到木材科学与工程这个专业,也算是意料之中,在开学的前几天,我看过一本对我影响挺大的书,叫做《李开复自传》,书里面有一句话一直影响着我,大致的意思就是『当你把大学所学的知识全部忘光时,剩下的,便是教育的本质』,说实话,我还是很喜欢这句话的,当时我解读为,在大学,提升自己的思维、学习能力才是最核心的。所以在之后的学习中,我都是比较在意自己的学习能力的,对于一件事情,我也会去认真做好,因为我觉得,认真去做一件事情,非常重要,它可以间接着去提高你的学习能力,尽管这件事情可能和你所学的专业没有任何关系。
在木材科学与工程里,有一门科目,就做《工程制图》,我去,我真的是被这门课给折磨了,画各种图。例如根据一张螺丝的图片,画出它是三视图,这种东西对我来说,太难了。后来我就想,我认真去学习下我就不信我会搞不定,后来事实证明,人真的是各有所长,对于制图,我真的不行,虽然认真学能搞懂,但是花是时间多,并且效果也不大好。从那时起我就觉得,虽然学习能力是通用的,但是,有些技能,你还真的不大适合,因为兴趣、以往的技能积累影响着你对这门技能的擅长程度。选择自己比较擅长的技能去学习,还真的挺重要,从而也更加坚定了我要转专业的想法。
大学第一学期的国庆,我开始自学 c 语言,主要是看书。当时自己跟着书本打 demo,感觉挺有意思,好像七天时间,我学到了结构体部分,感觉自己还学的挺快的,当时可以说是不求甚解(就是感觉自己稍微理解了就接着下一章),接着学指针,我去,难度顿时加大,感觉遇到了瓶颈,之后就随便看了下没继续看了。
稍微学了点 C 语言之后,就像写个稍微好玩一点的程序,然后并不知道 C 语言能干什么,书上也没有啥有趣程序的案例。后来我就去水百度贴吧,发现有好多人发了游戏程序,不过好多有些设计到其他知识,我也不懂。最后找到了个贪吃蛇的程序,这应该是我见过最简单的贪吃蛇了,只有黑色的界面以及把一个方块自己当做蛇头,不过我当时还是挺感兴趣的,就跟着源码打程序,之后在自己理解了原来游戏是这样弄的,画面的动态效果是这样搞出来的,把程序运行起来之后,稍微添加了一些自己的东西。
讲这个贪吃蛇的故事我是想说,兴趣和喜欢探索我觉得是非常重要的,当时在没有任何人教的情况下,自己去折腾,去搜索,最后写了个简单的贪吃蛇,我还是非常开心的。这个过程之中,也对我学习能力的提升很重要,在一个自己完全陌生的环境中,如何快速去适应,愿意折腾很重要,但是,懂得利用搜索引擎,也非常非常重要。很多人经常问我一些搜索引擎就能解决的问题,说实话,我是懒的回答的。有些人让我帮他解决下 bug,我笑笑不说话,不是我不帮你,是我帮不了你,也不大愿意帮你,bug 这种东西,你是自己搞出来的,你自己才是解决的最佳人选,解决的过程中,你真的能学习到好多东西,而且这些东西,是潜意识的,看不见的。
二、入坑数据结构与算法
在大一的寒假,了解到转专业考试是在 3 月份,我也在寒假赶紧重新学习指针,并且也学习了链表,说实话,对于当时的我来说,链表太他妈难了,真的被折腾了好久,因为当时并不大懂内存地址之类的,直到参加考试,也是对链表似懂非懂。说实话,如果你学习了好几天都搞不懂链表,别怀疑自己的智商,对于初学者来说,真的挺难,特别是对于我这个 C 语言只自学了大致十几天的非科班。
这里多说一些建议,对于没学过 C 语言的,如果有时间,我还是挺建议大家学习下 C 语言的,特别是指针那部分,也很欢迎大家把 C 语言中作为入门语言,我觉得,学习了 C 语言,以后学习别的语言,可以帮你理解的更深刻,而且也可以很快就入手其他语言,例如 Java 中的引用啥的,这不就是地址吗。反正,我觉得 C 语言如果有时间,是必须语言。当然,只是我个人的看法。
后来转专业通过了,巨开心,终于可以肆无忌惮着学习编程了。当时是真的对学习充满兴趣(这句话意味着后面学习不上心)。大一第二学习,学校开了一门数据结构与算法的课。这门课我觉得算是比较难的一门课了,相信很多人也都是被这门课折磨过。
但是,我想说的是,这门课,也就链表难,如果你学会了链表,后面我觉得一点也不难,由于我自己折腾过链表,所以我很快就上手这门课了。我也没有看学校的教材,学校的教材是清华大学初版的严蔚敏的书,说时候,这本书个人感觉真的不适合初学者,反正我看不下去,可能是我比较菜吧,当时自己另外卖了本《数据结构与算法分析—C语言描述版》。说实话,这本书我很喜欢,感觉看着特别舒服,如何你要学习数据结构与算法,那么可以选这本,有 C 语言版,也有 Java 版,不过如果可以,我建议大家用 C 语言来实现那些数据结构。
在数据结构与算法书里,对链表的讲解比较详细,加上我之前看过一些链表的文章,所以很快就理解了链表,也跟着书上一点点去实现链表的基本操作(增删查改),这里我必须说下,千万别自己理解了就不动手写代码,一定要动手写,因为写的过程,你一定会遇到很多 Bug,通过解决这些 bug,你会对链表理解的更加深刻。
对于数据结构的学习,我基本是没听课的,因为我觉得老师讲的不适合我,当时老师链表还没讲完的时候,我自己已经学到了图那部分了。反正那本书涉及到的算法,我基本都学了,也都实现了,大致有:链表、队列、栈,二叉树、图,图学的比较久点,感觉设计的算法比较多,如深度遍历,广度遍历,最小生成树,拓扑排序,最短路径,我觉得,这几个图算法都很实用,也很重要,不懂的建议大家学。
三、选择不玩 ACM
没进入计算机专业之前,我还是非常想进学校的集训队的,感觉 acm 很牛逼,自己也经常去学校的 OJ 刷题,买了本算法入门的书籍《算法设计与分析基础》,这本书我觉得非常适合入门,用伪代码实现的,很简单,我好像一个星期就看完了。后面也买了本《挑战程序设计大赛》的算法书,我去,当时感觉这本书讲的挺不错,这本书主要是刷题,学的不亦乐乎。虽然学的不亦乐乎,不过我感觉那些竞赛的题太他妈难了,一道题有时搞了一天才懂,少则几个小时,并且还是看着答案来理解的。当时还是刷了挺多题的,不过当时感觉要是自己去打 acm 的话,凭借着我这种程度,感觉拿不了啥大奖,也感觉自己确实对这些竞赛题并不怎么敏感,不能一眼就看出解法,而且一道题几个小时,自己实在搞不来,所以我也就放弃了参加学校 acm 的打算了。
不过那几个月对算法的学习,也为了打下了不错的基础。后面我也自己想做点东西,不过 C 语言写的界面黑乎乎的,不大喜欢。所以后面学了些 HTML,这种即学即可以看出成果的技能,感觉学的比较有趣,学了几天,把大致的知识点学完,后面发现单单 HTML 不行,还得学下 JavaScript。然后花了十几天学了 JS,然后就没有然后,因为我移情别恋了。
不过这让我懂得了一些前端知识,说时候,我觉得就算你以后不学前端,那么也要应该懂点前端的知识,这是必须的,就算是做后端,也是经常需要用到前端的知识的。
四、瞎搞的暑假
1、windwos 编程
大一结束后的暑假,我挺想写个游戏,可是 C 语言又没有界面,怎么办?后面我发现 windows 编程可以画界面,画图之类的,也是用 C 语言实现的,所以当时我就看小甲鱼的视频学习 windows 编程,自己也顺便买了本《windows编程》的书,那本书 900 页,呵呵。我觉得 windows 编程还是挺难的,各种句柄啥的,大概学了差不多一个月,900 也大概看了 600页,各种键盘事件,鼠标事件,反正好多好多。后面靠着这些知识,写了个计算器,我去,当时还是很开心,还告诉我姐,让他试试这个计算器。然后就没有然后了,我又移情别恋了,哈哈。
不过 windows 编程的折腾,也让我学到了很多,例如知道了我们平时鼠标移动是怎么回事,知道了我们文本编辑器的底层是如何实现的,感觉知道了很多相对底层的东西,也让自己的学习能力更强了。
2、安卓的学习
因为 windows 编程写出来的程序,在手机不能运行,根据没人用我的程序,所以我转行学 Android,不过 Android 听说用 Java 实现的,所以我入门了 Java,好像是看了几天的视频入门的,只学了点皮毛就去写 Android了,买了本书,也是学的不亦乐乎,大概折腾了二十几天,跟着书本写了个天气预报,学习的过程中,由于自己太多的不懂了,遇到了很多 Bug,也是好几次把自己搞奔溃。后面还写了个《快乐学数字》的 app 发到应用宝上,当然,这些程序是跟着书本写的,哈哈。而且还几十个人下载了,当时也是挺开心。然后又没有然后了,我又移情别恋了,,,,
五、步入正轨
说实话,大一真的折腾了很多东西,那时候学什么都充满干劲,虽然学的很多知识都是后面用不上的,但我觉得很值,因为我觉得,大一大二这段时间,千万别问别人干学啥学啥,如果你有感兴趣的,就去折腾,全心全力的折腾,真的能学到很多东西,而这些东西,远远不是那些具体的知识点,更多的是,你的学习能力,折腾能力,逻辑思维。
到了大二,关注了『码农翻身』这个公众号,自己通过这个公众号,理解了挺多知识点,这个时候的了解,更多的是一种『广度』的了解。大家感兴趣的话,也可以去买《码农翻身》这本书,可以先看下目录再买,主要是用故事讲解技术。
在大二主要学习了《离散数学》,这本书可以让我们学到听说算法与数据结构的知识的,后面学了《Java编程思想》,不过我觉得这本书对新手不友好,看不懂,期间看了 尚学堂Java300集,感觉讲的很好,哔哩哔哩可以搜索到。看了这个视频之后,我感觉自己的 Java 很牛逼了,懂了很多东西。接着再来看《Java编程思想》,我去,感觉这本书讲的太好了,推荐学习Java的看。反正从这个时候开始,我就决定学习 Java 体系了。
六、开始有目标着学习
对于 Java,我就觉得看了 尚学堂 300 集 + 《Java 编程思想》感觉自己掌握的差不多了,后面听说学习 Java 进阶得看虚拟机,于是就买了本《深入理解Java虚拟机》这本书看。之后感觉自己的Java挺强了,不过上面这些,对多线程的知识讲的不多,关于Java的多线程,这里推荐《Java并发编程艺术》和《Java并发实战》,感觉讲的不错。我也就看了上面这些书而已,当然,零零散散看了挺多其他书的,这里不列举,因为我觉得上面这些,差不多够了。
不过,语言只是一门工具,我觉得我们需要选择一门语言,并且深入学习它,这里我选择了 Java,不过这还不够,了解到大厂面试,非常看重计算机基础,于是自己学习了计算机网络,当时在哔哩哔哩看韩老师的《计算机网络原理》这个视频,感觉讲的很好,之后跟着学校的课程学习了操作系统,看的是《操作系统:精髓与设计原理》,也学了《计算机组成原理》。如果你想学习计算机基础,我觉得这两门课都要学下,这里我推荐看《深入理解计算机操作系统》,这本看感觉把这两门课都差不多综合在一起。
不过这些知识学了后由于很少用,容易忘记,不过我觉得这并不重要,因为学习的过程中,你会学到很多设计、算法思想等。到了大三,学校开了门计算机网络的课程,所以我再次学习了计算机网络,当时看的是《计算机网络:自顶向下》这本书,我觉得讲的很好,并没有看学校的教材。当然,期间也学习了数据库等知识,这些课程的掌握、推荐书籍等,我不说了,可以看我之前的文章【吐血整理】那些让你起飞的计算机基础知识:学什么,怎么学?
由于自己写的有点长,字数有点多了,所以接下来可能就写的简洁点了,好像有点有头没尾?哈哈
七、微信公众号的开通
在大三这一年,我开通了自己的公众号,并且也开始写文章,说实话,我开通公众号的目的有三个:
1、挣钱
2、通过技术博客给面试加分
3、训练自己的软能力
事实证明,公众号给我带来了很多收获,认识了很多人,也挣了些钱。不过说实话,弄公众号,真的花了我很多时间,写一篇文章需要几个小时,还要排版等各种,我觉得我要是不弄公众号,现在学习的东西,肯定多很多,技术肯定牛逼很多。在弄公众号的这一年里,虽然少学了很多东西,不过我并不后悔,因为我说了,技术和成绩只是大学的一部分,玩公众号,我也学了很多其他的东西,例如运营,也接触了这几年兴起的所谓的知识付费,很多人也考这个挣了不少钱。
并且通过公众号,我也实现了经济独立,再也不用向爸妈要钱了,当时真的挺开心,后来依靠自己的努力买了属于自己的一加 6T,Mac 笔记本,还给爸妈寄了几次钱。玩公众号到现在一年3个月,大概挣了七八万吧,虽然这些钱不值一提,不过对于还没毕业的我来说,真的很开心。虽然在公众号花了不少时间,不过秋招还是凭借着自己扎实的基础找到了想去的大厂。并且靠着公众号,在没毕业前,实现了月入过万。对于公众号这方面的折腾,我觉得我可以再写一篇长文了,大家感兴趣的话,之后可以写一篇关于公众号的历程。
大家千万别看到公众号这么好挣钱就去玩公众号哈,很多东西看着容易,弄起来还是很不容易的,有多少人是写着写着就放弃的,我当时也中途放过,只能说,公众号还是给我带来了很多收获的,而不止是期间挣到了钱。
八、烂尾
感觉这篇文章要烂尾了,哈哈。核心写了自己的大一大二的折腾,一不小心就写了六千多字了,关于步入正轨的学习介绍的很少,主要是因为步入正轨之后,感觉没啥好说的,主要就是那些计算机基础知识的学习,如果要详细写的话,感觉要分三篇文章写,所以我选择了烂尾。后面再写吧,估计这篇近 7000 字的文章写了三四个小时,不知道有多少人是看完的,所以还是不写那么长了,不然就没人看了,嘻嘻。大学这三年,总结下来就是 大一的折腾与探索,大二基础知识的积累,大三公众号的运营以及秋招面试的准备。
当然,上面说的只是技术方面的学习与折腾点,还有很多人生的感悟没写,后面再来写了,虽然你们可能并不感兴趣。好吧,不知道有多少人是看到这里的,看到这里的绝对是真爱。
九、最后的最后
虽然自己的大学普普通通,平平凡凡,但自己还算满意,至少有了自己的公众号,没事可以来扯扯淡,找到看自己想去的公司,哦,大学忘了谈个恋爱,大一和初恋分手之后,就佛系没继续找女朋友。现在的目标是,好好学习 sql + Linux + go,好好写技术文章,好好为未来的工作做好准备,好好挣钱!如果你喜欢我写的文章,或者和我的经历似曾相识,欢迎大家关注我的微信公众号勒,也欢迎加我的微信。
推荐阅读
leetcode 刷500道题,笔试/面试稳吗?谈谈算法的学习