计算机科学基础
"掌握基础,其余自然水到渠成。"
本章节涵盖每位后端工程师都应掌握的计算机科学基础知识。这些概念构成了所有软件系统的基石,展现了超越简单 API 调用的深层理解。
为什么 CS 基础如此重要
在技术面试和实际工程中,理解事物为什么这样工作,与知道如何使用它们同样重要。
实际影响:
- 算法选择不当:O(n²) 与 O(n log n) 可能意味着秒级与小时级的处理时间差异
- 缺少数据库索引:查询耗时 10 秒而非 10 毫秒
- 不理解 TCP:无法调试连接问题或优化性能
- 系统设计薄弱:系统在可承受的负载下崩溃
内容概览
算法与数据结构
系统化的问题解决模式和高效的数据组织方式。
你将学到:
- 算法模式(双指针、滑动窗口、动态规划)
- 核心数据结构(数组、链表、树、图、哈希表)
- 时间与空间复杂度分析(大 O 表示法)
为什 么重要:
- 编写可扩展的高效代码
- 自信地解决编程面试题
- 为工作选择合适的数据结构
系统设计
构建可扩展、可靠且可维护的系统。
你将学到:
- 高并发与高可用模式
- 分布式系统基础(CAP 定理、BASE 理论)
- 负载均衡、缓存和消息队列
- 实际系统架构(如短链接服务、通知系统)
为什么重要:
- 设计能服务百万用户的系统
- 在一致性、可用性和分区容错之间做出权衡
- 高级工程师需要具备复杂系统设计能力
数据库
深入理解 MySQL 和 Redis 内部原理。
你将学到:
- MySQL:架构、索引(B+ 树)、事务(ACID)、锁、复制
- Redis:数据结构、缓存模式、持久化、集群
为什么重要:
- 数据库通常是 Web 应用的性能瓶颈
- 理解索引可以避免 1000 倍的性能差异
- 事务和隔离级别防止数据损坏
- 合理的缓存可以减少 90% 的数据库负载
网络与操作系统
驱动一切的基础设施。
你将学到:
- TCP/IP 握手、HTTP/HTTPS 协议
- Linux 基础、进程管理、Shell 脚本
- 内存管理、文件系统、并发
为什么重要:
- 调试连接问题和网络故障
- 理解应用程序如何与操作系统交互
- 通过系统调用和 I/O 优化性能
学习路径
面试准备
面试前 1-3 个月:
-
算法(4-6 周)
- 每天练习 2-3 道 LeetCode 题目
- 关注模式,而非单个题目
- 掌握:数组、字符串、链表、树、哈希表、图
-
系统设计(2-3 周)
- 学习设计模式(负载均衡、缓存、分片)
- 练习端到端设计 3-5 个系统
- 理解权衡(一致性 vs 可用性)
-
数据库与网络(1-2 周)
- 复习 MySQL 索引和事务
- 理解 Redis 缓存策略
- 复习 TCP/IP 和 HTTP 基础
职业成长
持续学习:
-
从日常使用的开始
- 后端工程师 → 数据库、系统设计
- 基础设施工程师 → 网络与操作系统、系统设计
- 全栈工程师 → 逐步学习所有主题
-
在实践中学习
- 优化应用中的慢查询
- 设计时考虑可扩展性
- 使用 Wireshark/tcpdump 调试网络问题
-
教导他人
- 向队友解释概念
- 撰写博客文章或做技术分享
- 教学是最好的学习方式
快速参考
| 主题 | 核心概念 | 面试重点 | 时间投入 |
|---|---|---|---|
| 算法 | 排序、搜索、图、动态规划 | LeetCode 中等/困难 | 4-6 周 |
| 系统设计 | 可扩展性、可靠性、CAP | 高级工程师面试 | 2-4 周 |
| 数据库 | 索引、事务、缓存 | 后端岗位 | 2-3 周 |
| 网络/OS | TCP/IP、HTTP、Linux | 基础设施岗位 | 1-2 周 |