作为一个大学从不去上课,只在宿舍看公开课的人自学的人来说,几十门公开课组成了我所有的基础,学长我太多想推荐的了。

这是这些课,才让三本学校出身的我,在面试时镇定自若,底气十足,将融汇贯通的答案告诉给面试官,最后拿到BAT的offer, 去了阿里。

让我从最精华、冷门,却最棒、最基础的介绍起:

一、编程范式(万CS课之母)

带你从C语言开始,讲到函数式语言Scheme,再到python跟java;

下面是我当时对最精华的课程的保留,重复看了好多遍,以至于我都会了这老师的口头禅:“Does it make sense?”

娓娓道来,是我看过最棒的公开课与老师:

看了他之后,再看CSAPP跟SICP就很简单了,因为基础都打好了:

  • 比如,类型转换是怎么样的,隐式跟显式有什么区别,对值跟指针转类型都有什么区别,底层是怎么运行的?
  • 指针,玩的出神入化,我敢说,你看完后还不懂指针,那肯定是你没认真听;
  • C语言的内存布局?不在话下,stack栈、heap堆,ELF文件怎么排列的?
  • 等等。

万丈高楼平地起,依我说,万CS公开课由此起。

相信我,看几十分钟你就会沉迷在这老师的魅力之下。


二、算法思想、数据结构

我看过很多网课跟数据结构的书,现在工作后回头看,真没必要。

算法、数据结构就两个重要点:

  • 面试需要
  • 工作偶尔需要

那么,最重要的是刷算法题(leetcode),还有心里有算法思想,那就是这个算法是用来解决什么问题的,如何应用。

至于像《算法导论》,看都不要看,那数学证明,对于不学理论CS的我们来说,除了装逼一点用都没有。


三、计算机组成原理、操作系统

组成原理对CS学生来说,了解就好,不用太深入;

操作系统,必须得深入,因为你以后工作就是跟linux打交道了。

CSAPP( 深入理解计算机系统), 这神书不多解释了,就是给CS学生用的组成原理+操作系统。

有了 一 编程范式的基础,看这本书,搭配下面公开课,那就没什么底层知识能难到你了。

正因为有了这些基础,我现在工作都解决了很多别人解决不了的底层问题:

  • 动态链接库为什么缺失了,应该怎么查?
  • 这系统的load负载怎么那么高,软interrupt中断那么多?
  • 为啥linux的终端会抱没可用 file descriptor?
  • 等等

以上三个,精华中的精华,值得反复观看。

下面的就是兴趣+课外学习了:

SICP 的公开课:

SICP的习题太多了,一般人几乎不可能全部做完,学了之后性价比也很低,我是不推荐看啦,因为你都有一、编程范式里的函数式语言编程基础了。


计算机网络:

计算机网络,我其实非常不推荐看公开课:

  • 对计算机网络来说,你需要的是自己看书组网学习;
  • 看视频很容易觉得自己理解了,但后来发现,啊, 原来我全部不会;
  • 所以你需要一些实用的实验来做,来验证,从错误中学习;
  • 这个话题太大,有机会再分享

对了,配合这本书看以上公开课!甚至以上公开课跟这本书只能选一个,我让你只看这本书就够了。精通后,BAT offer真随便拿。


以上,大家收藏学习的时候,记得给学长 @山尽 我点个赞啊,这样我会有更多动力分享给大家。


另外,山尽我的精华文章合集,很多都是公开课给我的灵感:

HTTP 深入详解