发布于
3360 字 · 17 分钟

CS 自学路线:从计算机基础到后端开发

AI 摘要

作者
  • avatar
    姓名
    Corner430
    社交账号
题图

1 前言

CS 自学最大的困境不是资源太少,而是太多。GitHub 上随便一搜就是几十个 awesome list,每个 list 里又是几百个链接——看着很爽,收藏了等于学了,然后就没有然后了。

本文梳理了一条有先后顺序的自学路线,从计算机基础一路推进到后端开发,共 7 个阶段。每个阶段精选最值得投入时间的资源,附上学习建议和预期产出。

如何使用这条路线

  • 按阶段顺序推进,前一阶段是后一阶段的基础
  • 每个阶段的资源分「核心」和「扩展」,时间有限先啃核心
  • 阶段 5-7(系统设计、Java、Go)可根据职业方向选择性深入

前置条件:会用电脑、掌握任意一门编程语言的基本语法。

2 学习路线全景图

全景路线

从左到右,每个阶段都建立在前一阶段之上:

阶段主题核心资源产出目标
1计算机基础CS-Notes、小林 Coding理解 OS / 网络 / 组成原理
2C++ 语言CPlusPlusThings、Modern C++熟练使用 C++17
3数据结构与算法Hello 算法、代码随想录刷完 200+ LeetCode
4系统设计system-design-primer能设计常见分布式系统
5Java 后端JavaGuide、advanced-java掌握 Spring 生态
6Go 语言The Way to Go、awesome-go能用 Go 写后端服务
7代码规范Google Style Guide从第一行代码就养成好习惯

阶段 1-3 是所有方向的公共基础,建议完整走完。阶段 4-7 可根据职业方向选择性深入。

3 计算机基础

计算机基础

操作系统、计算机网络、组成原理、数据库——这四门课是 CS 的地基。不需要每门都学到专家级,但需要建立基本的心智模型。

3.1 一站式教材

  • cs-self-learning ★72k — 北大学长的计算机自学指南。覆盖所有核心课程,不只是列资源,还给出了选课建议和学习顺序。如果只看一个仓库,就是这个。
  • CS-Notes ★184k — 面试必备基础知识。把 OS、网络、数据库、算法的核心概念浓缩成一份笔记,适合快速建立全局观。

3.2 图解系列

  • CS-Base ★18k — 图解计算机网络、操作系统、组成原理、数据库。1000+ 张图 + 50 万字,把晦涩的八股文变成可视化的知识图谱。在线阅读

3.3 经典课程(网络补充)

课程来源亮点
CSAPP 配套实验CMU《深入理解计算机系统》实验,hands-on
操作系统 (蒋炎岩)南京大学国内最佳 OS 课之一
CS144 计算机网络Stanford手写 TCP 协议栈
MIT 6.824 分布式系统MIT分布式经典课程
计算机体系结构MIT OCW从门电路到处理器

3.4 学习建议

不要试图把所有课都上完。重点学 OS + 网络,这两门对后续所有方向都有直接帮助。组成原理和数据库可以按需学。cs-self-learning 给出了每门课的推荐教材和视频,跟着走就行。

4 C++ 语言

C++ 生态

C++ 是学习计算机底层原理的最佳语言——它让你直面内存管理、对象模型、编译过程,同时又提供了现代高级特性。

4.1 入门到精通

  • CPlusPlusThings ★43k — C++ 那些事。从基础语法、STL、设计模式到并发编程、C++11/14/17 新特性,体系完整,中文讲解。
  • interview ★38k — C/C++ 技术面试基础知识总结。覆盖语言、数据结构、算法、OS、网络,适合学完基础后查漏补缺。

4.2 现代 C++

  • modern-cpp-tutorial ★25k — 《现代 C++ 教程》。C++11/14/17/20 On the Fly,从传统 C++ 到现代特性的快速过渡。在线阅读
  • cppinsights ★4.5k — C++ Insights:用编译器的视角看代码。输入一段 C++ 代码,展示编译器实际生成的内容——理解 auto、lambda、range-for 背后发生了什么。在线使用

4.3 模板与元编程

  • CppTemplateTutorial ★11k — 把 C++ Templates 当作图灵完备语言来讲的中文教程。帮助你对模板元编程融会贯通。

4.4 高性能实战

  • HighPerformanceConcurrentServer ★545 — 基于 C++11 的高性能并发 HTTP 服务器。涵盖日志、线程池、内存池、定时器、网络 IO、HTTP、数据库连接,模块间低耦合高内聚。学完 C++ 基础后的最佳练手项目。

4.5 在线工具与参考

资源描述
cppreference.comC++ 标准库参考,最权威
Compiler Explorer在线查看 C++ 编译产物,支持多编译器对比
C++ Core GuidelinesBjarne Stroustrup & Herb Sutter 编写的编码规范
CppConC++ 大会演讲视频(YouTube)
LearnCpp.com从零学 C++ 的免费在线教程

4.7 学习建议

建议用 C++ Primer 作为主教材打基础,配合 CPlusPlusThings 查漏补缺。学完基础后尽快进入现代 C++(changkun 教程),不要在 C++98 上花太多时间——现代 C++ 写起来完全不一样。模板元编程是进阶内容,初学可跳过。遇到不确定的语法,第一时间查 cppreference,不要靠猜。

5 数据结构与算法

数据结构与算法

算法能力是程序员的硬通货。不管做前端、后端、AI 还是系统开发,面试绕不开,工作中也经常用到。

5.1 系统教程

  • hello-algo ★125k — 《Hello 算法》。动画图解、一键运行,支持 C++ / Java / Python / Go 等 12 种语言。从零开始讲数据结构和算法,是目前最好的中文入门教材。在线阅读
  • LeetCode-Book ★8.2k — 《图解算法数据结构》+《剑指 Offer》题解,同一作者的进阶配套。

5.2 刷题方法论

  • fucking-algorithm ★133k — 「labuladong 的算法笔记」。不只教 how,更教 why——用框架思维解题,一通百通。在线阅读
  • leetcode-master ★61k — 《代码随想录》。精选 200 道经典题,按类型排序(数组、链表、树、回溯、动态规划……),配详细图解和视频。在线阅读

5.3 可视化题解

  • LeetCodeAnimation ★77k — 用动画呈现 LeetCode 题解,把抽象的算法过程变成直观的动态演示。

5.4 题解参考

  • leetcode(azl) ★56k — LeetCode 题解记录,按难度和类型分类。
  • leetcode(doocs) ★36k — 多语言 LeetCode 题解(C++ / Java / Python / Go / TS),同一道题多种语言对比。

5.5 在线工具

资源描述
VisuAlgo数据结构与算法可视化
LeetCode 力扣刷题平台
OI Wiki信息学奥赛 Wiki,算法百科全书
Sorting Visualizer排序算法可视化

5.6 学习建议

hello-algo 入门 → 代码随想录按分类刷 → labuladong 理解框架思维。不要追求题量,200 道高质量题胜过 500 道无脑刷。建议用 C++ 刷题,和语言学习同步推进。每道题先自己想 15 分钟,想不出来再看题解——算法能力来自痛苦的思考过程,不是看答案的速度。

6 系统设计

系统设计

系统设计是把前面学到的所有知识(OS、网络、数据库、算法)综合运用的阶段。它考验的不是单点知识,而是全局视野。

6.1 系统设计入门

  • system-design-primer ★342k — GitHub 上最热门的仓库之一。系统性讲解可扩展性、缓存策略、负载均衡、数据库分区、消息队列、微服务等核心概念,附 Anki 记忆卡。

6.2 Linux 内核

  • linux_kernel_wiki ★7.5k — Linux 内核学习资料:200+ 经典文章、100+ 内核论文、50+ 内核项目、500+ 面试题。深水区资源,有兴趣再钻研。

6.3 经典著作与课程

资源描述
Designing Data-Intensive Applications《DDIA》分布式系统经典,必读
ByteByteGoAlex Xu 的系统设计图解
System Design Interview (YouTube)系统设计面试视频讲解

6.4 学习建议

system-design-primer 是核心主线,建议通读一遍建立全局观。然后挑感兴趣的系统(URL 短链、消息队列、新闻 Feed、搜索引擎)深入设计。DDIA 是进阶必读,但比较厚,可以和实际项目穿插阅读。

7 Java 后端

Java 后端

Java 是企业级后端开发的主流选择。这个阶段的目标不只是学语言,更是掌握后端工程体系——Spring 生态、数据库、缓存、消息队列、分布式。

7.1 一站式指南

  • JavaGuide ★155k — Java 面试 & 后端通用面试指南。覆盖 Java 基础、集合、并发、JVM、数据库、分布式、高并发、系统设计与 AI 应用开发。当路线图使用。在线阅读

7.2 进阶专题

  • advanced-java ★79k — 互联网 Java 工程师进阶。涵盖高并发(消息队列、搜索引擎、缓存)、分布式(分布式锁、分布式事务、分布式 ID)、高可用(限流、熔断、降级)。

7.3 Spring 源码

  • spring-reading ★10k — Spring 框架源码深度解读。涵盖 IOC 容器、AOP、事务管理、MVC、Boot 自动配置、事件机制、缓存抽象、响应式编程。

7.4 在线资源

资源描述
Java 官方教程Oracle 官方入门
BaeldungJava / Spring 实战教程,质量极高
Spring 官方文档Spring Boot 官方

7.5 学习建议

JavaGuide 当路线图和查漏补缺工具。学 Java 不要只学语法——Java 的价值在于它的生态。先用 Spring Boot 写一个 CRUD 项目(用户管理、博客系统),然后逐步引入 Redis 缓存、Kafka 消息队列。Spring 源码不是入门阶段该看的,遇到问题再读源码。

8 Go 语言

Go 生态

Go 语言简洁高效,是云原生时代的宠儿。Docker、Kubernetes、etcd 都是用 Go 写的。有 C/C++ 基础的话上手极快。

8.1 入门教程

  • the-way-to-go_ZH_CN ★35k — 《Go 入门指南》中文译本。系统介绍 Go 语言的方方面面,从基础语法到并发编程。
  • GoGuide ★3.2k — Go 语言学习指南。涵盖 Go 教程、开源书籍、入门教程、学习路线,零基础友好。

8.2 在线资源

资源描述
Tour of Go官方交互式入门教程
Go by Example通过示例学 Go
topgoer.comGo 中文学习网,覆盖基础到微服务
Effective Go官方最佳实践指南
Go 语言设计与实现深度剖析 Go 运行时(进阶)

8.3 学习建议

Go 语法简洁到几乎不需要教程——先跑 Tour of Go(30 分钟),再通过 Go by Example 熟悉常用模式,然后直接写项目。Go 的学习曲线在并发模型(goroutine + channel),而不是语法。有 C/C++ 基础的话,重点关注 Go 与 C++ 的差异:GC、接口鸭子类型、error 处理、没有继承。

9 代码规范与工程素养

好代码不只是「能跑」,更要「能读」。代码规范是团队协作的基础。

9.1 代码规范

  • zh-google-styleguide ★11k — Google 开源项目风格指南中文版。涵盖 C++、Python、Shell、JSON 等语言的编码规范。

9.2 经典著作

书名描述
Google C++ Style GuideGoogle C++ 编码规范(英文原版)
The Pragmatic Programmer《程序员修炼之道》— 软件工程思维
Clean Code《代码整洁之道》— 写出可读代码

9.3 学习建议

从第一行代码就养成好习惯。选一份风格指南(推荐 Google Style)严格遵守,比之后再改习惯容易得多。代码规范不是束缚,而是让你把注意力从「这里要不要加空格」转移到「这个设计对不对」。

10 快速参考

全部资源汇总

阶段仓库描述Stars
CS 基础cs-self-learning计算机自学指南72k
CS 基础CS-Notes面试必备基础184k
CS 基础CS-Base图解 CS 四大件18k
C++CPlusPlusThingsC++ 那些事43k
C++interviewC/C++ 面试知识38k
C++modern-cpp-tutorial现代 C++ 教程25k
C++cppinsights编译器视角看 C++4.5k
C++CppTemplateTutorial模板元编程教程11k
C++HighPerformanceConcurrentServer高性能并发服务器545
算法hello-algoHello 算法125k
算法LeetCode-Book图解算法题解8.2k
算法fucking-algorithm算法刷题框架133k
算法leetcode-master代码随想录61k
算法LeetCodeAnimation动画题解77k
算法leetcode(azl)LeetCode 题解56k
算法leetcode(doocs)多语言题解36k
系统设计system-design-primer系统设计入门342k
系统设计linux_kernel_wikiLinux 内核资料7.5k
JavaJavaGuideJava 面试指南155k
Javaadvanced-javaJava 进阶79k
Javaspring-readingSpring 源码解读10k
Gothe-way-to-go_ZH_CNGo 入门指南35k
GoGoGuideGo 学习指南3.2k
规范zh-google-styleguideGoogle 风格指南11k

11 参考链接

在线课程与教材

站内相关文章

版权声明

除非另有说明,本文内容采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处。