各位社区的技术大佬们大家好,我是一名普通本科院校计算机科学与技术专业的大四本科生,主要做后端开发。
大学期间,学校比较普通,玩的人也比较多,学习氛围也一般,自己从大一下册开始慢慢自学技术吧,期间从课本的C语言到自己去拓展C++,然后自学Java,然后框架、组价等,大二暑期开始了第一段实习旅程。在学习和实习期间很多时候浮于表面,没有深入某个技术。也走了很多弯路,正好曾现在空闲时间,待在家里想写一篇博客,说一说我这3年多在学校学习技术的一些经历和对于普通计算机专业同学的学习之路的建议吧,希望能帮到社区的一些在校同学。
我会分几个点来说吧,首先我会说一下我大学期间是怎么经历从什么都不懂到慢慢接触到互联网相关技术以及里面踩过的坑。然后我会讲下大学期间的侧重点,最后我想讲一下我对大学期间学习安排上的一点建议。
我们学校大一上册是安排的专业相关课程是 程序设计基础(C语言),我记得我在高考完过后,等录取通知书的那段时间,因为我所有的专业都是报的计算机相关专业(计算机科学与技术、软件工程等),所以这个阶段就在中国大学生慕课上通过浙江大学翁凯学得,一开学看课表,我擦C语言,不用学了oh-yeah!然后就愉快得去了学生组织浪荡。。。
直到大一下学期,发现学院周围的人居然有人已经开始做一些小东西了???我惊了,我压制着内心的失落,企图找到自己的方向,告诉自己,要做咋们就要好好做!于是就开始学习C++,但是过了一遍过后,发现C++这个东西,太特么妖了吧。。。学不来,学不来,期间我试着写了写Qt。内心慌得一批,周围有人学前端的,我就试着去过了一遍HTML、CSS、JS,helloworld水准。我发现我自己是真的怎么喜欢做前端。虽然前端容易让人有成就感。随后我也不知道怎么了看中了某课网上的Android职业途径,觉得挺有意思,然后开始学,恰好,Android的前面部分是Java,对没错它就是Java,由于我过了一遍C++,学Java的时候特别顺畅,学起来似乎有点膨胀啊!感觉某课网上的的步骤一学起来特别快。信心大增,开始飘飘欲仙。。。但是好事不长,后来放暑假过后,开始深入到一些交互层面、一些系统调用、网络调用、数据操作之类的,让我一脸懵逼,我开始怀疑人生了。。。学了一半多,,还有一半的时候我居然放弃了。。。没错,我放弃了。
大一暑假过的很快,毕竟我还是学了一月的样子,大二开学过后,分了新宿舍,我们室友其中有一个是ACM协会的,成绩也是专业前三的那种。我们组团一起学习,于是我和几个室友商量,要不找个实验室待着吧。由于ACM这个室友已经有了,也就是我和另外一个要去找,还有一个室友不愿意去。。寻找了许久,发现不是这个老师拉你干私活,就是另外个老师有点什么不好的消息。。。最后迫于无奈,我找到了班主任。我们班主任真的超级Nice!直接帮我找了一个老师,然后这个老师有间大概可以坐下30个人的学习中心。。。而且还是没什么人的,就只有几个勤工俭学的人。word天。美滋滋。。然后我就去了。随后和老师商量,又招了10来个人来实验室,于是乎我们一个团队就开始了啥也不懂自学之路。说巧也巧那段时间正好中国服务外包大赛开始了,我和一起加实验室的室友然后再到班上着了三个人,组了一个队,就报名了。。。选的题就是一个Web系统,正好我学了Java,我们就说那就用Java做后端。然后就开始了不归路。。。上学期把Java重新过了一遍然后学jsp+servlet然后学SSM框架。上学期寒假开始做项目。。。后来开学了,做起来实在是难。。而且md 没人教啊!!!什么业务都定不下来!就瞎做。。。最后果然不出意外,崩了!虽然崩了,不过还好,至少那时候我还学到点东西。虽然啥都不懂,但是知道框架怎么用。
可能看起来没什么,哎,只有自己经历了才知道,没有人指路是多么难。。。一个bug调两天,最后发现是什么参数拼写错误???或者是什么版本不兼容??我也是服了。转眼大二下就到了,我十分痛心于自己在学习的道路上没有人带,就和小伙伴们商量,我们要不开始做延续把。。。就开始去大一宣传(忽悠),吹牛逼说实验室的人有多牛逼,有多牛逼。大二下册,虽然比赛失败了,但是也还好,由于逛博客(搜bug)逛多了,了解了很多很“高端”的东西,于是乎就学了SpringBoot、Dubbo、Zookeeper和Redis这些东西。但是这个学了是真的不是学了。而是会用了,反正网上各种教程,照着用就是了。。。
不就大二暑假就来了,感觉自己学了点东西还挺牛逼的我,就去了一家小公司实习。然后公司 用的SSM+SpringCloud,没事,反正就写业务,写写SQL和controller还是感觉自己没毛病的。要说小公司实习没收获也不全是,至少还是让我了解到实际一个项目的组成有些什么,开发中哪些地方需要注意下问题。虽然没有并发,没有多线程,没有什么高端的组件,也不可能让我写复杂的功能。但是我还是觉得挺不错的。
不久大三就开学了,开学过后,实验室招新就开始了,招了一群大二的学弟。然后日常就是偶尔学学技术、偶尔教教学弟。我又接触了一下消息队列。RocketMQ、Elasticsearch和一些乱七八糟的东西。当时还没意思到为自己面试做准备。。。直到大三块期末了。。。实验室有个前端去面试TMD的一家公司过后。我才意识到,要去找公司面试实习岗位了。。。然而为时已晚。。。
第一场面试就是一家大公司。招Java岗位实习,我记得是1月份,我记得特别清楚,首先两道算法题,一道树的遍历,一道数组的求值问题,还好我树的遍历还记得,但是后面一体我就没有思路。那就暴力法!还没写出来,面试官就让我不写了,然后就开始自我介绍,介绍完过后,就问我Java,你知道Java有哪些方式加锁吗?我说synchronized。他说还有吗?我????(一脸懵逼)当时我没看过Lock你敢信。然后他问你知道HashMap的put操作过程吗?我???不知道!!,然后他果断放弃了Java,然后开始问我数据库,你知道索引吗?我???加快查找速度的?你知道他的数据结构是什么吗?我????不知道!好成功又换了方向,问我你能讲讲elasticsearch倒排索引吗?这个我知道!!我当时还没意思到,面试官已经不想问了。后来闲聊几句就结束了。我当时还没意识到我凉了,毕竟没面试过。我就回去了。随后左等右等没有后续,我就意识到我凉了。
我好好回想了一下他的问题,然后开始去看大家的面试过程,我意识到,我似乎一直都在看框架的使用、看组件的使用,而忽略了很多内部的原理,而且我也没有去认真看过关于并发的知识。后来投了一家大公司也有面试邀约,我也就没有去了。随后我就开始疯狂补多线程的知识,补JVM的知识、补一些原理的知识、此外还有数据结构、计算机网络、操作系统。
时间过得很快!入职三月过去了,我面临着考评发offer,我找我leader问了下转正的事情,leader给我承诺15-16k吧。我当时和我周围的朋友们拿的offer纵向对比了下,差不多吧,我也没有什么坏心思,我就老实说,我觉得公司不错,我想留下来!leader说,如果不满意你可以去面面其他公司!没事的!老实说我leader对我还是不错的,当时他给我说的薪资,是他对我的估计!我也就信了。后来转正分享过后,研发中心老大他们商量了我的薪资,我leader找我聊了,隐晦说可能没那么高,什么的,我心想,低个1-2k我也能接受吧,毕竟我们实验室和一些朋友14-18k的都有,就算14k我也可以接受把。当时我的心里是想15k吧。但是当我接到offer过后,我心里真的不是滋味吧。offer发下来,12K+后三月考评增长0-25%,也就是说我还需要经过几月考评,我当时在实习生当中把,评定应该是最高的。公司不大嘛,实习生的水平也就都一般,我还算努力,也肯学,所以评分还不错。说实话,我接受不了!上班从9点上到10点半(我们组基本都是这个时间走),周六周末我去学习,偶尔还帮别的人写业务。心里落差太大了。第二天就提离职了。我们组的leader找我聊了,公司后端老大也找我聊了下,但是我比较坚决吧。我也不需要毒鸡汤,很简单,我就想,只要工资ok,大家开心,工作我会努力,加班我也能接受。但是我受不了套路我!最终还是离职了!可能是我太天真了吧。
离职过后回到学校,真的有点迷茫,都11月了,也没有很多公司招聘,再加上我没有任何面试准备。。。血亏啊!我真的就没有骑驴找马把offer当做筹码!我是不是太单纯了!
于是乎我就开始了复习之路,想着既然没什么太多公司了,那我就春招去吧!就开始安排从数据结构开始系统重学!我感觉以前学的太乱了!真的太乱了!回到学校,实验室新一届的学弟们又来了,边在实验室自己复习,边教教学弟把,自己就重学数据结构、JDK的一些源码、计算机网络、多线程、Netty等等,
直到现在,疫情来了,放假过后回到家,现在想回杭州找工作!浙江这段时间还特别严重!我怕了。。。
在家这段慢慢思考着几年的学习之路我发现我是真的垃圾!太浮躁,浮于表面!一手好牌打得稀烂!幸好自己发现早!不然等毕业了就真的是一个废物!就想着分享一下我的对普通院校计算机相关专业自学后端路线的看法!
ps:大佬勿喷!谢谢!仅供参考!
项目 | 建议用时 | 理由或建议 | 推荐书籍 |
---|---|---|---|
C语言 | 大一上-2月 | 里面的一些概念挺通用的,较有代表性。 | 《C Primer Plus》 |
数据结构 | 大一上-3月 | 它是后续所有的基石,每个结构都非常清楚 | 《数据结构(C语言版)》 |
算法 | 大一下开始 | 利用算法更好得去理解数据结构和解决问题 | 建议刷题leetcode每天一题 |
Java基础 | 大一下-2月 | 现在大部分互联网公司都是Java,其次Go | 《Java核心卷1》 |
前端基础 | 大一下-半月 | 后端需要了解前端的基础知识 | 知道前端有什么东西就好 |
servlet | 大一暑假-1月 | 相对来说简单且用于了解基本的工程开发 | 无 |
MySQL基础 | 大一暑假-1月 | 免费、使用广泛 | 《深入浅出MySQL》 |
选项 | 建议用时 | 理由或建议 | 推荐书籍 |
---|---|---|---|
SSM使用 | 上-2月 | 企业开发用得最多,最受欢迎 | 《Spring实战》 |
Linux使用 | 上-半月 | 企业服务器基本都是Linux | 《鸟哥的Linux私房菜》 |
Redis | 上-1月 | 缓存的代表作 | 《Redis设计与实现》 |
SpringBoot | 上-1月 | 简化开发,提升效率,组件丰富 | 《SpringBoot编程思想》 |
操作系统 | 上-1月 | 这个是必须的! | 教材即可 |
计算机网络 | 下-1~2月 | 这个也是必须的! | 《计算机网络:自顶向下方法》 |
Java并发与IO | 下-1月 | 基础部分只了解这里要深入学习 | 《Java并发编程艺术》 |
JVM | 下开始 | 建议长期阅读 | 《深入理解JVM》 |
Netty | 下-1~2月 | 简化网络应用开发,深入对网络的理解 | 《Netty实战》 |
设计模式 | 下-半月 | 深入学习原理必须要知道 | 《设计模式之禅》 |
SSM原理 | 暑-1月 | 学习设计思想是必备的 | 看专题博客 |
选项 | 建议用时 | 理由或建议 | 推荐书籍 |
---|---|---|---|
微服务框架 | 上-1-2月 | 微服务是趋势可考虑学dubbo或者cloud | 无 |
分布式相关知识 | 上-1月 | 事务管理、设计原则等都是需要了解的 | |
了解消息队列 | 上-1月 | 了解一下各类消息队列的区别和使用场景 |
最后的最后!!!如果大佬们有工作的机会,希望救救孩子吧,最好是杭州,也可以接受上海!!
Email:ilo114@163.com