△今天你努力了没有△
写这篇文章的目的是为了给喜欢编程的学弟学妹们一个信心,一个答案。
01
大一
我记得没错的话,计算机软件的学生在大一一开始就学习了C语言,这或许也是你们接触的第一门编程语言(大学前对编程一无所知的你),对,这就是编程的入门语言,一开始你们会觉得这个很难理解,很难学,在加上大一不让带电脑,学校虽然有提供机房,但是可能会应该人生地不熟,对电脑也不是和熟练,慢慢的也就没有习惯去空荡的大机房独自练习编程,也就此错过了上机敲代码的最佳时机。
随着课程的深入,你会讨论i++和++i的区别,今天记住了,明天又忘了,你会因为烦人的*p指针指的你晕头转向,渐渐的,你只知其然,不知其所以然,大一,你学了C语言,但是你却不懂这个东西到底是能干什么,只是写一些算法的语言吗,听说操作系统是C语言写的,那到底是怎么写的呀,咱们也没学到呀,就这样,大一就结束了。
你是计算机软件的学生,大一结束也不能随口说出个位数的二进制是几,那01到底是什么算的,浮点运算正负数到底是怎么表示的,还有原码,反码,补码到底是怎么换算的,一踏糊涂,懵懵懂懂。听说别的学校会在大二结束分方向,不知道咱们有没有,没事,到时候再说。(到时候是啥时候)
02
大二
不知不觉的大二就到来了。
终于开始接触算法了,学完之后,只有一个字,难,听不懂,不会理解,什么n皇后,什么分治,什么并归,什么递归,什么动归,这都是啥,上课听懂了有什么用,依然不动手,代码实现能写出来吗,实际问题能解决吗,不能,这代码怎么写呀,完全不知道如何下手,就不知道上网查查吗,不知道,什么都不知道,只知道今天上课,别迟到,手机充满电就行。
数据结构,上这门课之前都不知道这门课的名字,都不知道作为一个计算机专业的学生,这个课是重中之重,根本不知道。知道了列表,来了线性表,数组,链表,栈,队列,树,二叉树,平衡二叉树,散列表,堆,图。依稀的记得栈是先进后出,队列是先进先出,八大排序算法,就是走马观花,学完一个忘一个,代码一个也写不上来(殊不知这就是大厂校招出的最基础题目),搜索算法也是如出一辙的不会,也不会的毫无危机感,不知道在等待什么。
Linux操作系统,离cmd最近的一次,安装Linux虚拟机,跟着老师敲命令,ls,cd,ps,grep,mv,cp,等等命令,上完课后你还记得几个,就在上课的时候跟着老师过一遍,下来之后ls是啥,完全记不起来,这就是你学的Linux。
Java语言也在这时候开了,别的暂且不问,上完课不知道JDK和JRE的人大有人在,那是干啥的,Java语言和C语言有什么区别,一个面向对象,一个面向过程,具体怎么回事,Java如何体现的面向对象,能具体说一下吗,不知道,哑口无言,浑浑噩噩学完了Java,知道Java代码会先编译成class文件,然后在JVM上面运行,别的可就这真不知道了,这就是对Java的全部掌握。
最重要的莫过于数据库了,数据库是一个比较抽象的,因为全是理论,学完之后,会因为范式概念,事务概念,存储过程,B+树索引概念不知所措,一个像样的查询语句都写不出来,只记得select * from user。
UML这个暂且不提。
前端H5代码学完最后连div和span分不清,两个input输入框的属性记不住,更别提下拉菜单和javascript脚本语言了。
可以了,大二,也就这样结束了,你回头想想,最重要的这几门课,哪一门你完全掌握了,别的暂且不提,就八大算法,这也有点多,就说一个冒泡排序,你能完成的不出错的一口气写下来吗,我不能。
03
大三
如果说大一大二是在打基础,那大三就是实战了。
一个是对计算更深入对学习,包括计算机组成原理,操作系统,计算机网络,一个就是JavaEE框架,JSP,Oracle数据库,Java设计模式。
计算机组成原理,作为计算机专业对基础课程,学完之后现在还能记得啥,是记得浮点运算呢,还是原码,反码,补码之间对转换,是记得十进制转换二进制呢还是二进制转换十六进制,八进制。是记得寄存器对运算原理呢,还是记得cache对命中率怎么计算等等,一概不知。
操作系统,这是对操作系统讲解对最好的课程,你是能区分进程和线程的关系呢,还是知道用户态和系统态之间的转换,或者管态和目态,你是知道内存是如何分配的,还是知道内存是如何回收的,你是知道生产者和消费者,还是你知道PV原语,消息队列,或者是死锁问题等等。
学完计算机网络,你记住了什么,是7层结构,还是ip地址,是TCP和UDP的区别,还是网关,子网掩码的计算方法,是路由原理你掌握了,还是ARP原理你了解了,ping命令是否会用,mac地址和ip地址到底有啥区别,三次握手是怎么建立的,断开的时候为什么是四次握手,路由器,集线器,网桥,这都是什么网络设备,都工作在什么层,既然有了ip地址,为什么还要有域名,域名和ip地址到底是什么关系,如何通过域名访问服务器的,这些,你都懂吗?
JavaEE框架是SSM框架,学习完了,最核心的IOC和AOP你了解了吗,框架的运行原理真的能说上来吗,Eclipse上面真的能部署成功已经完整的项目吗,真的能够通过Java代码访问数据库吗,数据库的SQL语句真的能按照需求写出来几个像样的吗?答案是不能。
这样,大三也就不知道都干了什么,虽然学了好多东西,真正的了解了,还是掌握了,也就不得而知了,大三也就结束了。
04
大四
大四,一个数据仓库,一个Ajax(听说数据仓库要取消了)就一个Ajax,学完Ajax能写一个登陆校验的功能吗,Ajax是如何实现异步的,他是一个新技术吗?这些,答案也是明确的,不能。
种种的不能,导致在秋招中的你,也会面临这种种的不能,大厂的offer又怎么会向你招手呢。
05
总结
上面的你就是我,在大三的时候才醒悟过来,但是还是晚了一步,由于个人原因,错失了实习,又走了弯路,导致现在只能在一家中等互联网公司工作,心里也在暗暗的做着准备,弥补这个过失。
亲爱的学弟学妹们,大学,就应该是早起吃点早餐;跑跑步;专业课认真听;公共课看看自己喜欢的杂志;中午小睡一会儿;下午参加个社团活动或打打篮球;晚上陪着喜欢的人散散步;或去自习室安静地看看书......社会不需要学霸,也不认什么学生会主席,更不希望看到学生放弃学业去创业。你只要能平稳完整地读完大学,寻找到自己所爱的人和兴趣,多去没有目的的看些能丰富自己思想的书,认识几个好的不成样子的朋友,锻炼或是塑造自己的身体,学精自己想要从事事业的专业知识......做到这些,平淡地度过大学这几年你就已经足够优秀了。
但是这个“专业课认真听,学精自己想要从事事业的专业知识”这两个说起来容易,做起来艰难。
上面列举的只是针对想从事计算行业的学弟学妹做的一些学习路线。以前不会的,现在抽时间把他填补上,以前会的,继续加油,学好这些专业课,大学真的不是浑浑噩噩就能行的。
亲爱的学弟学妹们,学长不想让你们走太多的弯路,在校期间,ACM,蓝桥杯等编程竞赛一定要参加,业余时间一定要动手去敲代码,代码写多了,自然就有感觉了,数据结构,算法,计算机组成,计算机网络,操作系统,数据库这都是最重要的课程没有之一,一定要踏踏实实的学习,掌握原理思想,数据结构和算法要求能够全部编码实现,秋招准备的算法刷题和面经牛客网上面的就行,都是大厂的笔试面试真题,提前准备,多掌握原理机制,因为大厂面试就是面的算法,数据结构,计算机网路等这些基础知识,项目的练习也是不能少的,这个会给你的面试加分,业余时间抽空写个小项目,github也得用起来,熟悉一些命令,Linux也是归到基础知识一栏的,对Linux的操作也要能熟悉掌握。
这篇文章是告诫书,也是总结书,是对我对大学的回顾,也是真诚的希望各位学弟学妹们找到自己心仪的工作,少一些弯路,少一些浑噩,阿里,腾讯,百度,头条,美团,滴滴等大厂希望不再是我们计算机学院学生的梦。
我们都是追梦者,我们都在路上。
不要期待着遇到贵人,努力的自己就是贵人。
-END-