+好的！计算机面试中最经典、最高频的“八股文”主要围绕以下几个核心领域展开。掌握这些基础知识和原理是通关技术面试的关键：

## 🧠 一、 数据结构与算法

1.  **基础数据结构：**
    *   **数组 vs 链表：** 内存结构、访问/插入/删除时间复杂度、适用场景。
    *   **栈(Stack) & 队列(Queue)：** LIFO/FIFO 原理、实现方式（数组/链表）、应用场景（函数调用栈、BFS/DFS）。
    *   **哈希表(Hash Table)：** 原理（哈希函数、冲突解决-开放寻址/链地址法）、时间复杂度分析、负载因子、扩容机制。
    *   **堆(Heap) / 优先队列(Priority Queue)：** 结构（通常是二叉堆）、操作（插入、删除堆顶、堆化）、应用（Top K、中位数、Dijkstra）。
    *   **树(Tree)：**
        *   二叉树(Binary Tree)：遍历（前序、中序、后序、层序）- 递归与非递归实现。
        *   二叉搜索树(BST)：定义、查找、插入、删除、中序遍历有序性。
        *   平衡二叉搜索树(AVL / 红黑树)：平衡因子/红黑规则、旋转操作、为什么需要（避免BST退化成链表）、应用（Java HashMap的TreeBin/TreeMap）。
    *   **图(Graph)：** 表示方法（邻接矩阵、邻接表）、遍历算法（BFS、DFS）、常见算法（拓扑排序、最短路径-Dijkstra/Bellman-Ford/Floyd、最小生成树-Prim/Kruskal）。

2.  **基础算法思想：**
    *   **排序算法：**
        *   比较排序：**快速排序**（分治、选基准、partition过程、时间复杂度-最好O(nlogn)/最坏O(n²)/平均、空间复杂度、稳定性❌）、**归并排序**（分治、稳定✅、时间复杂度O(nlogn)、空间复杂度O(n)）、**堆排序**（建堆O(n)、排序O(nlogn)、不稳定❌）、插入排序、冒泡排序、选择排序（原理、时间复杂度）。
        *   非比较排序：计数排序、桶排序、基数排序（思想、适用场景）。
    *   **搜索算法：** **二分查找**（前提有序、循环/递归实现、变种问题-找第一个/最后一个/旋转数组）。
    *   **递归 & 分治：** 思想、经典问题（斐波那契、汉诺塔、归并/快排）。
    *   **贪心算法(Greedy)：** 思想（局部最优->全局最优？）、适用场景（活动选择、霍夫曼编码、最小生成树-Prim/Kruskal）、与动态规划区别。
    *   **动态规划(DP)：** **核心思想**（最优子结构、重叠子问题、状态转移方程）、**解题步骤**（定义状态、状态转移、初始化、边界、输出）、**经典问题**（斐波那契、爬楼梯、背包问题01/完全、最长公共子序列LCS、最长递增子序列LIS、编辑距离、股票买卖系列）。
    *   **回溯(Backtracking)：** 思想（试错、DFS+剪枝）、经典问题（N皇后、全排列、组合、子集、数独）。
    *   **双指针(Two Pointers)：** 应用（有序数组两数之和、滑动窗口-最小覆盖子串/最长无重复子串、快慢指针-链表判环/找中点）。
    *   **位运算(Bit Manipulation)：** 常用操作（与、或、异或、非、移位）、常见技巧（判断奇偶、交换两数、找出只出现一次的数字、位1的个数）。

## 🖥 二、 操作系统

1.  **进程与线程：**
    *   进程 vs 线程（定义、资源分配、切换开销、通信方式）。
    *   **进程间通信(IPC)：** 管道、命名管道、信号、消息队列、共享内存、信号量、套接字。
    *   **线程同步机制：** **互斥锁(Mutex)**、**信号量(Semaphore)**、**条件变量(Condition Variable)**、读写锁(Read-Write Lock)、自旋锁(Spin Lock)（原理、适用场景、死锁避免）。
    *   **死锁(Deadlock)：** 必要条件（互斥、请求与保持、不可剥夺、环路等待）、预防策略、避免策略（银行家算法）、检测与恢复。
2.  **内存管理：**
    *   **虚拟内存(Virtual Memory)：** 为什么需要？分页(Paging)机制（页表、TLB快表）、分段(Segmentation)机制。
    *   **页面置换算法：** **最佳置换(OPT)**、**先进先出(FIFO)**、**最近最久未使用(LRU)**、时钟算法(Clock) 的原理和优缺点。
    *   **内存分配：** 伙伴系统(Buddy System)、Slab分配器。
3.  **文件系统：** 文件描述符(File Descriptor)、inode结构、文件存储方式（连续、链式、索引）、目录结构。
4.  **CPU调度：** 调度算法（FCFS、SJF、优先级、RR轮转、多级反馈队列）的目标和特点。
5.  **I/O模型：** 阻塞I/O、非阻塞I/O、I/O多路复用(select/poll/epoll)、信号驱动I/O、异步I/O(AIO) 的区别和比较（特别是epoll的优势）。

## 🌐 三、 计算机网络

1.  **网络模型：** **OSI七层模型** 和 **TCP/IP四层模型** 各层功能、对应协议。
2.  **核心协议：**
    *   **TCP vs UDP：** 根本区别（连接、可靠性、有序性、流量控制、拥塞控制）、头部结构、应用场景。
    *   **TCP可靠传输：** 序号/确认号、超时重传、滑动窗口机制。
    *   **TCP连接管理：** **三次握手**（详细过程、为什么是三次？）、**四次挥手**（详细过程、为什么是四次？TIME_WAIT状态的作用？）。
    *   **TCP流量控制：** 滑动窗口机制。
    *   **TCP拥塞控制：** 慢启动(Slow Start)、拥塞避免(Congestion Avoidance)、快速重传(Fast Retransmit)、快速恢复(Fast Recovery) 算法原理。
    *   **HTTP：**
        *   请求方法（GET/POST/PUT/DELETE等区别）、状态码（1xx/2xx/3xx/4xx/5xx常见状态码含义）。
        *   **HTTP/1.0 vs HTTP/1.1 vs HTTP/2 vs HTTP/3：** 主要改进（连接复用、头部压缩、服务器推送、QUIC协议）。
        *   **HTTPS：** SSL/TLS协议作用、加密过程（非对称加密交换对称密钥、对称加密通信）、数字证书作用。
    *   **DNS：** 作用、查询过程（递归、迭代）、记录类型（A、AAAA、CNAME、MX、NS）。
3.  **网络安全基础：**
    *   **对称加密 vs 非对称加密：** 原理、优缺点、代表算法（AES、RSA）。
    *   **数字签名 & 数字证书：** 作用、原理（私钥签名，公钥验签；CA中心颁发证书）。
    *   常见攻击：XSS、CSRF、SQL注入、DDoS、中间人攻击的原理和基本防御措施。
4.  **网络层：** IP协议、IP地址分类/子网划分/CIDR、ARP协议、路由协议（RIP、OSPF、BGP基本思想）。
5.  **传输层与应用层：** 端口号作用、Socket编程基础。

## 🗃 四、 数据库（以关系型数据库 MySQL 为主）

1.  **SQL基础：** 常用语句（SELECT, INSERT, UPDATE, DELETE, JOIN, GROUP BY, HAVING, ORDER BY, LIMIT）、多表连接（INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN）。
2.  **索引(Index)：**
    *   **为什么需要索引？** 加速查询。
    *   **数据结构：** **B+树**（为什么比B树更适合数据库？）、哈希索引（适用场景）。
    *   **聚簇索引(Clustered Index) vs 非聚簇索引(Non-Clustered Index / Secondary Index)：** 根本区别（叶子节点是否存储完整行数据）、InnoDB实现。
    *   **索引优化：** 覆盖索引、最左前缀原则、索引下推(ICP)。
    *   **索引失效场景：** 函数操作、类型转换、`LIKE '%xx'`、OR条件（部分情况）、不等于(!=, <>）、索引列计算。
3.  **事务(Transaction)：**
    *   **ACID特性：** 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability) 的含义。
    *   **隔离级别(Isolation Level)：** **读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read - MySQL默认)、串行化(Serializable)**。每个级别能解决哪些并发问题（脏读、不可重复读、幻读）？
    *   **并发问题：** 脏读、不可重复读、幻读的定义。
    *   **MVCC(多版本并发控制)：** 原理（Undo Log、Read View）、如何实现RC和RR级别（特别是RR如何解决幻读？）。
4.  **锁(Locking)：** 共享锁(S锁/读锁)、排他锁(X锁/写锁)、意向锁、行锁、表锁、间隙锁(Gap Lock)、临键锁(Next-Key Lock)的作用和应用场景（特别是InnoDB如何解决幻读）。
5.  **日志(Logging)：**
    *   **Redo Log(重做日志)：** 作用（保证持久性、Crash-Safe）、Write-Ahead Logging(WAL)机制。
    *   **Undo Log(回滚日志)：** 作用（保证原子性、实现MVCC）。
    *   **Binlog(归档日志)：** 作用（主从复制、数据恢复）、格式（Statement/Row/Mixed）。
6.  **数据库设计：** 三大范式（1NF, 2NF, 3NF）基本概念、反范式化设计场景。
7.  **性能优化：** Explain分析SQL执行计划、慢查询优化思路。

## 📐 五、 系统设计（面向中高级岗位）

1.  **设计原则：** KISS, YAGNI, DRY, SOLID (尤其是单一职责、开闭原则)。
2.  **方法论：**
    *   需求澄清（功能需求、非功能需求-性能/可用性/扩展性/一致性/容错性/安全性）。
    *   估算（QPS、TPS、存储量、带宽）。
    *   抽象与模块化。
    *   核心组件设计（API、数据模型、存储方案、算法）。
    *   深入细节（扩展性、可靠性、性能优化）。
3.  **常见组件与模式：**
    *   负载均衡（LB: Nginx, HAProxy, LVS）。
    *   缓存（Cache: Redis, Memcached）- 缓存策略（Cache Aside, Read/Write Through, Write Behind）、缓存穿透/击穿/雪崩及解决方案。
    *   消息队列（MQ: Kafka, RabbitMQ, RocketMQ）- 解耦、异步、削峰填谷、保证最终一致性。
    *   数据库扩展：读写分离、分库分表（水平/垂直拆分）、分区。
    *   分布式ID生成（Snowflake算法）。
    *   分布式一致性协议：**CAP理论**、**BASE理论**、**Raft/Paxos**（选主、日志复制）基本原理（理解核心思想即可，不要求推导）。
    *   微服务架构：服务注册与发现（Eureka, Nacos, Consul）、API网关（Gateway）、配置中心、服务调用（RPC/REST）、熔断限流（Hystrix, Sentinel）。
4.  **经典系统设计题：** 设计Twitter/微博、设计短链系统、设计秒杀系统、设计分布式缓存、设计搜索引擎、设计聊天系统等。

## 🐍 六、 编程语言特性（根据应聘语言选择）

1.  **面向对象(OOP)：** 封装、继承、多态、抽象类 vs 接口、重载 vs 重写。
2.  **内存管理：** 垃圾回收(GC)原理（标记清除、复制、标记整理、分代收集-G1/ZGC）、引用类型（强引用、软引用、弱引用、虚引用）。
3.  **并发编程：** 线程生命周期、创建方式、线程池（核心参数、工作流程、拒绝策略）、锁（Synchronized底层原理、Lock/Condition）、并发容器（ConcurrentHashMap原理-CAS+synchronized+分段锁思想）、原子类（CAS操作、ABA问题）、线程间通信。
4.  **语言特性：** 如Java的JVM内存区域、类加载机制、反射、异常体系、集合框架（HashMap源码：put/get流程、扩容、JDK1.7 vs 1.8+）；Python的GIL、装饰器、生成器、鸭子类型；Go的Goroutine、Channel、defer等。

## 📌 关键点提醒

1.  **理解原理，而非死记硬背：** 面试官更关注你是否真正理解了背后的思想（为什么用这个？解决了什么问题？优缺点是什么？）。
2.  **联系实际：** 思考这些知识在实际系统/项目中是如何应用的。
3.  **清晰表达：** 能条理清晰、简洁准确地阐述概念和过程。
4.  **动手实践：** 算法题要动手写，数据库要会写SQL，系统设计要多思考多画图。
5.  **关注细节：** 很多问题会深入到具体实现细节（如HashMap冲突解决、ConcurrentHashMap分段锁演变、MySQL RR级别如何避免幻读、TCP TIME_WAIT）。
6.  **追踪发展：** 了解一些新技术趋势（如HTTP/3, QUIC, eBPF, 云原生, Serverless）的基本概念。

这份清单涵盖了计算机面试中最核心、最高频的基础知识点。针对具体岗位（前端、后端、算法、运维、测试等）