△今天你努力了没有△
写这篇文章的目的是为了给喜欢编程的学弟学妹们一个信心,一个答案。
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
你有什么学生时代的故事可以分享?
欢迎投稿
往期推荐
想进阿里吗?送你一份 4000 字《阿里内推指南》
关于阿里内推你有什么想问的?
在阿里做了五年技术主管,我有话想说
我想加入阿里,我该怎么做
进阿里看不看学历?
点个 在看 ,证明你还 爱 我