漫漫学习路
从大二下学期开始,我的学习之魂貌似开始觉醒,当时兴冲冲地跟着一个宿舍都报了蓝桥杯算法竞赛,结果没想到试题与想象中的并不一样,自己练的都是些c基础语法题,而竞赛层次主要考的是算法思想,结果堪堪捡了个三等奖回去了,然而没想到这才是算法的开始。在那年暑假,我开始抱着一些程序设计入门书籍看,有郭纬老师的《程序设计入门》,无奈当时的理解力不足,被卡死在动态规划里怎么也出不来,开学之后,也找到一本比较全面的ACM算法习题书《算法入门经典》(刘汝佳)。
后来在学校里认识了一个学长,是当年某非计科专业的第一高薪(年薪24k),大四回来在学校为学弟们传授一些技术。在此入坑python,django框架,linux系统。差不多一个月的间断学习,跟着教程自己搭了一个django后台的博客并部署在阿里云服务器上。
第一学期末了,学校的算法老师认得我,问我学习进度怎样,有如何的打算?我说我现在想复习一些基础的东西来应对校招。算法老师急了,说“你都大三了,现在学这些太晚了,想做后台开发最快的成长路线是写爬虫”。老师意味深长的告诉我校招重视的还是基础,要以c/c++,数据结构,操作系统,网络原理为基础啊。我觉得很有道理啊!于是开始复习C,C++,数据结构。又开始着手写爬虫,刚好有python的语法基础,写爬虫也算是得心应手,爬虫比较好的教程有《python网络数据采集》,还有静觅大神的博客和视频教程。
2018年8月1日更新
距离写这篇文章已整7个月,这半年时间几乎改变了我对计算机系统学习的看法。
关于学习方法
计算机专业开的课都是非常重要的!但是这不是说上课教的知识就是够用的。就比如计算机网络这门课,即使考了100分,你也写不出来一个简单如1+1的网络小程序。这门课讲的都是网络原理,是为你编写网络程序打基础的,如果你满足于这丁点知识,那本科是白上了。
其他的课程也是类似,只有真正从自己手中编写出有用,有趣的程序,才能有动力促使自己去学习,去翻书。
看书也要会循序渐进,算法就不能一上来看《算法导论》,网络也不是从《Unix网络编程》开始的,要找入门的书,有了概念了再去掌握细节。
这半年我也读了不少实用的书,另外还要说一下系统的学习知识才是有效的,通过百度,看博客这种方式都是碎片化的,永远转化不到自己的脑子里。看书,总结成自己的话,这是高效学习的唯一途径,当然对于像我一样的普通人而言。
c语言是底层编写网络第基础,可以看《linuxC一站式学习》。
数据结构在熟悉了基本链表,树的操作后,开始刷题,leetcode。算法,其实就是把语言能描述的东西转化成代码,这个能力非常关键,拿到一个题首先想思路而不是上手就是一套#include乱敲。
linux系统知识比较繁杂,第一步学会基本命令,再去学习和内核相关的系统知识,Linux的精髓毕竟就是程序员直接和操作系统打交道。
C++看完学校发的教材,再看《effective c++》《STL 源码剖析》。
计算机网络:先看谢希仁的理论,之后看《Linux高性能服务器编程》。
还有一个月备战秋招!共勉吧。