计算机科学

计算机理论与实践基础包括:

  1. 编程语言
  2. 计算机系统基础
  3. 计算机组成原理和体系结构
  4. 操作系统
  5. 计算机网络

数据结构和算法是解决所有问题的通用手段,而在不同的领域里又有不同的解决方案。AI System 覆盖 AI 的全栈知识。

学习资源

https://jyywiki.cn/Reading_List.md

https://csdiy.wiki/

https://hackway.org/

https://www.learncs.site/

NJU 程序的构造:http://www.why.ink:8080/CPL/2023/

https://zhuanlan.zhihu.com/p/654821469

https://www.zhihu.com/people/lawliet111/posts?page=5

NJU OS https://njuics-wiki.github.io/ics-wiki/

mit 6.824 / CMU 15445

Gpu:cuda 编程的优化,算子优化,flash attention,一些复杂算子的实现等

OS: 如果能理解 linux 内核的任意一个子模块,甚至子模块的部分功能就已经很牛逼了。感觉光是各种自旋锁的实现都够你喝一壶

编译:llvm,深度学习编译器等。看个人兴趣,主要是注重后端优化

网络:最新的网络技术,例如 RDMA。它的编程是怎么写的,它的协议都有什么,和 tcp 相比它的优缺点,rdma 引入的新的拥塞控制和流量控制都是什么 / DPDK 技术 / ovs / 怎么用 fpga 写网卡 / 网卡驱动等等

存储:云存储场景下跟 RDMA 更分不开了,针对不同大小,不同类型的对象怎么设计存储方式和通信,怎么做事务,纠删码之类的。以及 spdk 技术和 nvme

分布式: MIT 6.5840 (原 6.824) 学完 +raft 系列 Project 做完

计算机基础: CMU 15213 学完 +lab 做一半

操作系统: MIT 6. S 081 学完 +xv 6 lab 做完

数据结构: CS 61 B 学完 + 绝大部分 lab 做完 (差一个没做)

计算机网络也是我基础四大件之一,且这直接对应于互联网后端这一岗位,非常重要。我学习路线是:

  1. 阅读《计算机网络:自顶向下方法》
  2. 刷 CS 144

这里说明一下, 中科大的计算机网络课程也是使用的《计算机网络:自顶向下方法》这本教材, 且更精炼一些, 如果时间不够或者读教材困难, 可以选择直接刷 https://www.bilibili.com/video/BV1JV411t7ow/?spm_id_from=333.337.search-card.all.click&vd_source=bc07d988d4ccb4ab77470cec6bb87b69

同样, 时间不多的同学可以只看一下《计算机网络:自顶向下方法》就可以了, 不需要再去刷公开课的 Lab, 反正后面你大概率会通过 C++ 网络编程的学习巩固这些知识

网络

操作系统

分布式

并行计算