文章目录
按主题查找技术原理、面试自测和求职准备资料。先从岗位路线确定复习重点,再阅读需要补充的文章。
数据结构与算法
- 通用基础复习
面向已有一门编程语言基础的技术求职者,按现场编码、程序运行、网络通信和数据访问安排通用基础复习。提供数据结构、算法、操作系统、网络与数据库的核心和深入阅读入口,帮助读者根据岗位要求选择阶段,通过独立作答、编码与原理解释检查掌握程度。
- 算法复杂度
介绍算法复杂度如何描述时间和空间随输入规模的增长,从题目约束估算操作量,再分析循环、递归和峰值空间。比较最坏、平均与摊销成本,结合 Java 装箱、容器、临时对象及数值范围,帮助准备现场编码的读者选择可行方案,并解释实现的实际开销。
- 算法正确性
介绍算法正确性验证中的输入输出约定、循环不变量和终止条件,讲解边界用例、最小反例与手动执行。结合数值类型、随机测试、性质测试和暴力基线,帮助准备现场编码面试的读者发现状态与实现的差异,并在修改后复查结果、复杂度和测试的判别能力。
- 递归
介绍递归把当前问题分解为同类子问题的过程,讲解终止条件、调用次数与最大递归深度。结合重复计算、记忆化缓存键和状态依赖,帮助准备算法面试的读者推导时间与栈空间成本,检查每次调用是否缩小问题,并判断缓存能否复用子问题结果。
- 数组
介绍数组的连续槽位、下标访问和有效长度,讲解插入删除时的元素搬移及容量调整。比较单次操作与扩容后的摊销成本,说明扩缩容阈值的作用,帮助准备数据结构面试的读者按随机读取和顺序扫描需求选择结构,判断空间预留与频繁搬移的代价。
- 链表
介绍链表通过节点链接组织元素的方式,区分定位节点与修改链接的成本。讲解单链表反转、快慢指针判环和环入口推导,帮助准备算法面试的读者处理头尾边界、保存后继节点,区分节点身份与节点值,并通过指针变化检查链表结构是否完整。
- 栈
介绍栈后进先出的规则及其保存待完成状态的作用,结合括号匹配说明入栈和出栈的条件。比较显式栈与调用栈,讲解辅助最小栈和单调栈,帮助准备算法面试的读者维护栈内不变量,处理重复值,并根据回退、极值查询和邻近元素问题选择实现。
- 队列
介绍队列先进先出的规则,围绕循环数组讲解首尾位置、入队、出队和容量维护。比较用两个栈实现队列时的元素转移过程,帮助准备数据结构面试的读者推导队空与队满的条件,区分单次操作和摊销成本,并检查数组回绕与端点更新的边界。
- 哈希表
介绍哈希表先按哈希值定位再比较键的查找过程,比较链地址法和开放寻址的冲突处理。讲解负载因子、扩容迁移与键相等约定,帮助准备数据结构面试的读者分析平均和最坏访问成本,解释可变键造成的查找问题,并判断有序或范围查询的限制。
- 二叉树
介绍二叉树的左右孩子、递归结构和常见形状,讲解前序、中序、后序与层序遍历的访问顺序。结合树高、递归深度和每层宽度分析空间成本,帮助准备算法面试的读者推演节点处理过程,并判断不同遍历序列能否唯一重建原树及所需的前提。
- 二叉搜索树
在键互异的前提下介绍二叉搜索树的查找、验证、插入和删除,讲解祖先传递的键范围与左右子树顺序。结合双孩子节点后继、前驱查询和范围访问,帮助准备数据结构面试的读者维护有序关系,分析树高对操作成本的影响,并判断退化树的使用限制。
- 堆
介绍二叉堆的完全二叉树布局和局部顺序,讲解数组下标、上浮、下沉与自底向上建堆。结合前若干个极值的候选集合维护,帮助准备算法面试的读者选择大顶堆或小顶堆,比较逐项插入和整体建堆的成本,并解释优先队列支持哪些查询。
- 图
介绍图如何用顶点和边表达连接、依赖与状态转换,比较方向、权重和邻接表示对存储及遍历成本的影响。讲解搜索访问状态、连通分量与可达性,帮助准备数据结构面试的读者根据图的性质选择表示方式,识别重复访问,并判断不同搜索方法的使用条件。
- 二分查找
介绍二分查找如何利用单调判断缩小候选范围,围绕半开区间讲解不变量、边界移动与循环终止。覆盖重复元素的左右边界、频次统计和答案二分,帮助准备现场编码面试的读者验证可行性函数,处理空区间及目标缺失,并解释每次排除候选的依据。
- 双指针
介绍双指针通过协调两个位置减少重复扫描的思路,讲解有序相向查找、同向压缩和固定间距。结合数组去重与快慢指针,帮助准备算法面试的读者推导移动依据,维护已处理区域和指针距离,分析原地修改的结果,并判断排序或结构前提是否成立。
- 滑动窗口
介绍滑动窗口如何复用连续区间的计算结果,讲解固定窗口、无重复子串、最小覆盖与单调队列。结合 Java 字符串索引、重复计数和过期元素,帮助准备算法面试的读者推导左右边界移动条件及答案更新时间,维护区间不变量并解释线性复杂度。
- 前缀和
介绍前缀和利用累计值之差计算静态区间结果的原理,讲解一维求和、子数组计数和二维容斥。结合哈希频次与差分数组,帮助准备算法面试的读者推导矩阵求和及区间增加的实现,检查查询边界和初始状态,并根据更新需求判断预处理的适用条件。
- 排序
介绍排序算法按比较规则重排元素的过程,围绕快速排序的分区和归并排序的合并解释实现。比较稳定性、时间与空间成本,讲解多字段排序和重复值的三路分区,帮助准备算法面试的读者根据输入特征选择方法,分析边界条件及排序结果的正确性。
- 树与图搜索
使用 Java 讲解树与图搜索的状态建模、深度优先和广度优先遍历,覆盖访问标记、路径恢复、多源搜索与拓扑排序。结合有向图判环、后序合并和最近公共祖先,帮助准备算法面试的读者解释最短距离的成立条件,分析重复扩展、递归深度和搜索空间。
- 回溯
介绍回溯通过选择、递归和撤销枚举候选解的过程,讲解决策树、路径状态恢复和剪枝条件。结合排列与组合中的重复值处理,帮助准备算法面试的读者区分同层去重与路径访问,推演递归返回后的状态,并分析搜索规模和候选解保存的边界。
- 贪心
介绍贪心算法通过局部选择缩小问题的思路,以区间调度讲解选择规则、实现和交换论证。比较目标与权重变化后的适用条件,帮助准备算法面试的读者证明局部选择能够保留最优解,构造错误策略的反例,并判断何时需要保存多个候选状态。
- 动态规划
介绍动态规划中状态定义、转移、初始化和计算顺序的设计方法,通过股票、字符串与背包问题解释子问题依赖。比较记忆化搜索和表格递推,帮助准备算法面试的读者检查转移完整性、不可达状态和数值范围,并判断空间压缩后的更新顺序与方案恢复。
操作系统
- 操作系统
围绕线程运行、内存访问和输入输出等待整理操作系统面试复习,提供进程线程、同步、死锁、虚拟内存和多路复用的阅读入口。帮助求职者先解释共享资源、等待关系与地址转换,再按网络服务岗位需求补充文件描述符和事件循环,明确核心与深入学习范围。
- 进程与线程
以 Linux 介绍进程的地址空间与资源,以及线程承担的执行状态,比较共享范围、调度和上下文切换。沿创建、执行替换到退出回收讲解进程生命周期,帮助准备操作系统面试的读者推演资源继承,选择进程间通信方式,并分析隔离程度与协作成本。
- 线程同步
介绍线程同步如何协调共享状态与执行顺序,围绕临界区不变量讲解互斥锁、条件变量和信号量。比较自旋与阻塞等待的成本,帮助准备操作系统面试的读者设计检查条件、等待和通知的协议,判断资源许可的获取释放责任,并按竞争和等待时间选择机制。
- 死锁
介绍死锁中执行主体相互等待资源的状态,讲解形成死锁的必要条件与资源等待环。比较预防、避免、检测和恢复,说明安全状态及资源分配判断,帮助准备操作系统面试的读者分析依赖关系,选择改变获取顺序或释放资源的方法,并区分等待与已经发生的死锁。
- 虚拟内存
介绍虚拟内存从虚拟页到物理页框的地址转换,讲解页表、地址转换缓存、多级页表与大页。结合缺页、按需分配、写时复制和文件映射,帮助准备操作系统面试的读者推演内存访问过程,区分地址空间与驻留内存,并根据回收和分配指标分析资源使用。
- 文件描述符
以 Linux 介绍文件描述符对文件、套接字和管道的引用方式,区分进程中的编号与已打开对象状态。讲解生命周期、共享偏移、关闭责任、配额及继承,帮助准备系统面试的读者分析资源泄漏和容量耗尽,解释描述符复制后为何仍可能共享同一读写位置。
- I/O 模型
以 Linux 套接字讲解 I/O 模型中的等待数据、执行读取和接收结果,区分阻塞、非阻塞、同步与异步。分析就绪通知、读取返回值和部分写入,帮助准备系统面试的读者推演调用者何时等待,判断返回后仍需完成的读写工作,并处理数据尚未就绪和连接结束的情况。
- I/O 多路复用
介绍 I/O 多路复用如何让线程同时等待多个对象就绪,比较 Linux 的选择、轮询和事件通知接口。讲解水平触发、边缘触发与单次通知,帮助准备网络服务面试的读者组织事件循环,协调工作线程和非阻塞读写,并分析重复通知与未读完数据的处理条件。
- 零拷贝
介绍零拷贝如何减少文件传输中的数据副本,比较通道传输、内存映射和直接缓冲区的复制路径。讲解部分传输、平台差异、映射大小与释放时机,帮助准备 Java 性能面试的读者分析内存和吞吐代价,依据测量结果选择机制,并判断强制写回与事务提交的差异。
计算机网络
- 计算机网络
按一次安全网页请求的过程整理计算机网络复习,从域名解析、地址转发和连接建立,到加密协商与请求响应。面向后端面试区分必会和常考主题,帮助求职者解释端到端调用,定位解析、连接、超时和应用错误,再补充缓存及远程调用的机制。
- 网络模型
介绍网络模型按职责划分通信过程的作用,比较七层参考模型与四层协议模型的层级对应。讲解数据封装、层间交互、逐跳处理和设备分工,帮助准备网络面试的读者把协议与实际请求联系起来,区分不同层能够读取的信息,并分析传输层和应用层负载均衡。
- IP
介绍 IP 通过目标地址逐跳转发数据报的过程,讲解地址、子网和路由选择。结合路径最大传输单元、分片及控制报文,帮助准备网络面试的读者推演数据经过的下一跳,区分寻址、可达性和报文大小问题,并理解路径诊断结果能说明哪些网络故障。
- TCP 与 UDP
比较 TCP 的可靠有序字节流与 UDP 保留消息边界的数据报,讲解累计确认、重传、流量控制和拥塞控制。结合协议头部、小包合并与延迟确认,帮助准备网络面试的读者分析传输故障、可靠性和延迟成本,并按应用交付要求及消息边界选择协议。
- TCP 连接
讲解 TCP 三次握手、初始序列号和双向关闭的状态变化,分析握手丢包、半关闭与连接复位。结合 Linux 监听队列和连接复用,帮助准备网络面试的读者推演半连接、等待关闭及超时等待的成因,定位连接堆积,并区分传输结束与业务处理完成。
- HTTP
比较 HTTP 各版本的持久连接、多路复用与队头阻塞,说明连接池如何影响请求并发和资源占用。讲解分阶段超时、调用截止时间、重试与耗时指标,帮助准备后端面试的读者分析连接和请求失败的边界,并根据业务副作用选择重试及连接复用方式。
- HTTP 缓存
介绍 HTTP 缓存如何复用响应以减少传输和源站计算,讲解存储许可、新鲜度与条件请求。比较直接复用和向服务器验证,说明共享缓存及响应变化字段的作用,帮助准备网络面试的读者推演缓存命中和失效过程,判断不同请求能否安全使用同一份响应。
- TLS
以 TLS 1.3 证书握手讲解安全通道中的身份验证、密钥协商和记录加密,说明机密性与完整性的来源。覆盖服务器名称、应用协议协商、会话恢复和早期数据,帮助准备网络面试的读者解释安全网页连接的建立过程,判断前向保密与重放风险的边界。
- DNS
介绍 DNS 的分层名称查询和资源记录,沿一次域名解析比较递归与迭代流程。讲解缓存期限、负缓存、传输方式和服务切换,帮助准备网络面试的读者追踪查询经过的服务器,分析地址更新何时生效,并区分解析故障与后续连接失败的排查方向。
- RPC
介绍 RPC 从方法调用接口到远程请求和结果返回的链路,讲解序列化、消息边界与事件循环。结合 Netty 的处理器链、缓冲区引用计数、截止时间和背压,帮助准备后端面试的读者分析连接与线程的关系,定位半包和粘包问题,并判断重试对业务副作用的影响。
数据库
- 关系型数据库
面向后端面试整理关系型数据库的复习顺序,以 MySQL InnoDB 为主要参照,覆盖查询、数据约束、索引、事务与并发故障。提供分阶段阅读入口,帮助求职者实际核对查询结果、解释访问成本和隔离保证,再通过自测与故障推演检查机制和使用边界。
- SQL 查询
以 MySQL 8.0 介绍 SQL 查询中的过滤、空值、去重、排序和分页,讲解集合合并与窗口排名的结果规则。通过游标分页和分组前几名等问题,帮助准备数据库笔试的读者实际编写查询,分析排除条件遇到空值时的变化,并核对排序与边界输入的结果。
- SQL 连接
以 MySQL 8.0 介绍 SQL 连接如何按条件匹配和组合行,讲解外连接补空、连接条件与结果过滤的位置差异。结合存在性查询、反连接、多明细统计和连接算法,帮助准备数据库面试的读者推导结果行数,识别重复累计,并选择符合查询目标的连接方式。
- SQL 聚合
以 MySQL 8.0 讲解 SQL 聚合的分组、计数、求和与平均值,比较分组前后过滤以及空值和空输入的结果。结合条件聚合、去重统计和函数依赖,帮助准备数据库面试的读者推导输出行,检查连接后的统计粒度,避免重复累计或错误处理没有匹配的数据。
- 数据约束
以 MySQL 8.0 InnoDB 介绍唯一、非空、检查约束与外键如何限制数据状态,讲解空值、并发写入和引用完整性。结合外键动作与检查时机,帮助准备数据库面试的读者把业务规则表达为表级约束,推演非法写入的结果,并判断数据库规则的适用边界。
- 数据库索引
介绍数据库索引减少读取范围、支持排序和取列的作用,以 MySQL 8.0 InnoDB 讲解索引分类、回表与覆盖查询。结合聚簇键、联合索引列顺序和优化器成本估算,帮助准备后端面试的读者理解访问路径选择,比较查询收益与维护开销,并衔接执行计划分析。
- B+ 树
以 MySQL 8.0 InnoDB 介绍 B+ 树的多路导航和有序叶子,讲解等值查找、范围扫描及分支数与树高的关系。分析页分裂、页面合并和主键写入顺序,帮助准备数据库面试的读者解释索引查询成本,区分逻辑树高、缓存命中与实际磁盘读取次数。
- 聚簇索引
以 MySQL 8.0 InnoDB 介绍聚簇索引如何组织行数据,说明没有显式主键时的选择规则。讲解二级索引、回表、覆盖查询和主键维护,帮助准备数据库面试的读者比较主键宽度、更新与范围访问的成本,并判断覆盖查询仍需访问聚簇记录的条件。
- 联合索引与覆盖索引
以 MySQL 8.0 InnoDB 讲解联合索引的列顺序与覆盖索引的查询范围,区分范围定位、下推过滤和回表。结合等值、范围、排序与分页条件推演访问路径,帮助准备数据库面试的读者理解最左前缀的作用,比较扫描与取列成本,并通过执行证据验证判断。
- 索引设计
以 MySQL 8.0 InnoDB 介绍索引设计的查询负载分析、列选择、顺序和覆盖范围,讲解函数条件改写及字符串前缀。结合执行计划、慢查询与不可见索引验证,帮助准备后端面试的读者比较读取收益和写入成本,判断冗余索引、唯一约束与维护代价。
- 执行计划
介绍 MySQL 8.0 执行计划中的访问路径、操作顺序和关键字段,比较估计行数与实际执行统计。结合连接循环、过滤条件及索引使用情况,帮助准备数据库面试的读者定位使用索引仍然缓慢的原因,分析估算偏差,并判断扫描范围与查询成本。
- 数据库事务
以 MySQL 8.0 InnoDB 介绍数据库事务的原子性、一致性、隔离性和持久性,比较四种隔离级别与并发异常。讲解条件更新、自动提交、失败回滚和提交确认,帮助准备后端面试的读者推演丢失更新与事务边界,解释日志配置、组提交及断线后的结果判断。
- MVCC
以 MySQL 8.0 InnoDB 介绍 MVCC 的历史版本链和可见性判断,比较读已提交与可重复读中的快照创建时机。通过双会话推演快照读、当前读和混合读写,帮助准备数据库面试的读者解释同一事务的查询差异,分析长快照的版本保留成本与范围锁的分工。
- InnoDB 锁
以 MySQL 8.0 介绍 InnoDB 的记录锁、间隙锁、临键锁和插入意向锁,按索引路径与隔离级别推演加锁范围。通过唯一键和非唯一范围查询的双会话实验,帮助准备数据库面试的读者核对阻塞证据,区分死锁与超时,并选择立即失败或跳过锁定行的方式。
- 数据库死锁
以 MySQL 8.0 InnoDB 讲解数据库死锁的循环等待、检测机制和锁等待超时,通过双会话实验复现故障。比较错误码对应的回滚范围,帮助准备后端面试的读者读取死锁日志,分析锁顺序与完整事务重试,并处理事务外副作用和重复执行风险。
- 长事务
以 MySQL 8.0 InnoDB 讲解长事务对锁、连接、历史版本和元数据锁的占用,分析远程调用与热点行更新的影响。结合批量任务拆分、进度恢复和监控证据,帮助准备后端面试的读者定位资源保留,解释只读事务的成本,并判断减少竞争与缩短事务的方案。
缓存与 Redis
- NoSQL 数据库
介绍 NoSQL 数据库的存储分类,围绕关系型数据库的性能约束说明不同数据组织与访问需求。作为数据库基础面试的入门目录,帮助求职者认识非关系型存储的主要方向,再进入具体产品专题理解使用场景、数据结构和运行机制,确定后续复习范围。
- Redis
以 Redis 6 和 7 介绍内存键值数据库的适用场景、执行模型和低延迟原因,梳理数据类型、过期及内存淘汰。讲解原子命令、事务、乐观并发控制和客户端配置,帮助准备后端面试的读者区分单条命令与多步业务操作的保证,判断批量发送和脚本的使用范围。
- Redis 数据结构
以 Redis 6 和 7 讲解字符串、列表、哈希、集合与有序集合的命令语义和内部编码,说明紧凑结构的版本差异。介绍字典渐进扩容、游标遍历与专用操作,帮助准备缓存面试的读者按访问需求选择类型,分析编码转换、元素规模和查询复杂度的关系。
- Redis 过期
以 Redis 6 和 7 讲解键的有效期设置、覆盖更新和过期清理,说明惰性删除、主动过期及系统时钟的影响。结合写入值与期限的操作顺序,帮助准备缓存面试的读者推演键何时失效,区分逻辑过期和实际清理,并判断过期通知用于任务调度的限制。
- Redis 内存淘汰
以 Redis 6 和 7 介绍内存淘汰的触发条件、策略和候选范围,比较按访问时间、使用频率及过期键选择对象的方式。结合内存用量与观测指标,帮助准备缓存面试的读者根据数据用途选择策略,区分内存压力下的淘汰与到期清理,并分析容量限制的影响。
- Redis 持久化、复制与集群
以 Redis 6 和 7 讲解快照、追加日志、主从复制与集群分片,说明日志重写、恢复顺序及哈希槽。结合哨兵切换、复制确认、客户端重定向和网络分区,帮助准备后端面试的读者分析数据恢复点,区分副本确认与落盘,并判断多键操作和故障转移的边界。
- 缓存一致性
讲解缓存一致性中的旁路缓存、数据库更新与失效顺序,推演并发读取造成的旧值回填。介绍版本水位、可靠失效事件和多级缓存,帮助准备后端面试的读者比较直接更新、延迟删除与强一致读取的条件,结合监控和故障恢复分析缓存副本的有效范围。
- 缓存穿透、击穿、雪崩与热点 Key
区分缓存穿透、击穿、雪崩、热点键和大键的形成原因,说明它们如何放大数据库流量或耗尽单节点资源。讲解空值缓存、布隆过滤器、回源保护与重建,帮助准备后端面试的读者按故障组合限流和恢复措施,并通过演练检查过滤器维护及保护效果。
- 分布式锁
以 Redis 6 和 7 讲解分布式锁的原子加锁、所有者校验、租约和续租,分析锁过期后的旧请求及主从切换。结合资源端版本校验、多资源加锁和业务幂等,帮助准备后端面试的读者推演并发故障,明确互斥的成立条件,并判断重复操作需要哪些额外保护。
消息队列与中间件
- 消息与中间件
面向后端面试整理消息队列、可靠投递、幂等消费、全文检索和分布式任务调度的专题入口。围绕跨进程状态与故障边界,帮助求职者比较日志和路由模型,理解确认、重试、顺序及恢复机制,再按项目使用情况选择索引同步与调度实现的复习范围。
- 消息队列
比较 Kafka 分区日志与 RabbitMQ 队列路由的消息模型,讲解生产消费、进度记录、保留和日志压缩。结合顺序、投递语义与削峰容量,帮助准备后端面试的读者按业务访问和恢复需求选择队列,解释不同模型的处理边界,并分析积压与资源成本。
- 消息可靠性
介绍消息可靠性从发布、保存到消费和进度确认的完整链路,比较生产者确认与消费者确认的时机。讲解即时重试、延迟重试、死信转发及重放,帮助准备后端面试的读者定位消息丢失和重复的故障窗口,并用端到端指标验证积压处理与失败恢复。
- 消息幂等性
介绍消息幂等性如何让重复业务动作得到一致结果,从处理与确认之间的故障窗口分析重复消费。讲解幂等键、状态转换、按键排序和版本校验,帮助准备后端面试的读者处理乱序、超时及重新均衡,区分消息系统的交付保证与业务结果的去重边界。
- Elasticsearch
介绍 Elasticsearch 的倒排索引、分词与分片,区分写入确认、搜索可见性、落盘和段合并。讲解深分页、数据库同步、结果核对与索引重建,帮助准备后端面试的读者定位写入后搜索不到数据的原因,分析查询成本,并明确搜索副本与权威业务状态的职责。
- 分布式任务调度
介绍分布式任务调度如何按计划创建任务实例,讲解重叠策略、分片、租约、检查点与补跑。区分计划时间和实际执行时间,帮助准备后端面试的读者分析节点故障后的任务归属,隔离过期执行器,并结合时区、进度记录和监控设计可恢复的执行流程。
系统设计
- 系统设计简介
介绍系统设计如何根据需求组织组件与模块关系,说明性能、成本、可维护性和用户目标在方案中的作用。面向技术求职者梳理系统设计及面向对象设计的考察方向,帮助读者先理解设计范围,再通过具体主题和案例练习解释架构选择、关键约束与方案取舍。
- 系统设计面试
介绍系统设计面试从需求澄清、质量目标和容量估算到接口、数据模型与高层架构的讨论顺序。围绕操作级一致性、核心难点、故障恢复和写入结果未知,帮助候选人明确规模假设,解释组件选择的条件与代价,并通过故障推演检查方案能否满足目标。
- 系统设计题
介绍系统设计题的选题与复盘方法,按需求规模、主链路、数据模型和故障场景组织练习。以短链接说明重定向、缓存和标识空间估算,帮助准备设计轮面试的读者根据约束展开方案,明确讨论范围,并用访问路径、组件取舍和恢复策略评价答案。
- 容量规划
介绍容量规划如何把业务负载转为计算、存储和网络需求,讲解并发吞吐估算、服务指标、错误预算及故障模型。结合恢复目标和容量余量,帮助准备系统设计面试的读者识别敏感参数,解释规模假设,并通过压测与演练验证故障发生后的服务能力。
- 系统架构
以内容服务介绍系统架构中的组件、数据流和故障边界,沿单体、无状态多实例、数据库扩展与缓存说明演进。覆盖健康探针、回源预算、异步处理和入口层,帮助准备系统设计面试的读者按容量选择方案,分析负载均衡与故障隔离,并验证扩展后的服务目标。
- 数据拆分
介绍数据拆分如何扩展容量和隔离负载,沿读写路径讲解分片键、分配方式、热点及跨分片查询。覆盖全局排序分页、扩容迁移、路由版本和写入隔离,帮助准备系统设计面试的读者判断拆分前的优化空间,分析数据移动与访问成本,并解释单键热点的限制。
- CAP 理论
介绍 CAP 理论中一致性、可用性和网络分区的定义,推导分区期间无法同时满足的保证。结合具体读写操作、多数派服务和延迟约束,帮助准备分布式面试的读者分析请求能得到怎样的结果,区分理论可用性与业务可用率,并说明不同操作的取舍条件。
- 一致性模型
比较线性、顺序、因果、会话和最终一致性对读写结果的约束,讲解多数派交集、版本选择与领导权确认。结合部分写入和读回退,帮助准备分布式面试的读者根据操作历史判断保证范围,区分原子操作与事务串行化,并解释多数派确认成立的条件。
- 主备复制
介绍主备复制由主节点确定写入顺序并传播到备节点的过程,讲解确认时机、日志接收回放和快照恢复。结合复制延迟、故障切换与读取新鲜度,帮助准备分布式面试的读者区分数据写入、复制和应用状态,分析副本接管条件,并验证恢复后的业务结果。
- Raft
介绍 Raft 的角色、任期与领导者选举,沿日志复制和多数派提交说明状态机如何保持确定顺序。覆盖旧任期条目、客户端重试、线性读取、快照和成员变更,帮助准备分布式面试的读者推演领导者失效,分析读取屏障和副本数量对安全及故障余量的影响。
- 跨地域复制
介绍跨地域复制中的单主、同步复制和多主写入,比较物理距离、确认延迟与故障域分布的影响。讲解版本向量、并发冲突、故障转移和数据驻留,帮助准备系统设计面试的读者权衡数据损失与服务可用性,判断投票副本分布,并通过演练验证恢复能力。
- 分布式一致性
介绍分布式一致性方案如何维护跨服务业务规则,从原子提交范围、库存预留和同步条件分析需求。比较异步完成、不一致窗口、协调与补偿,帮助准备系统设计面试的读者根据约束选择协议,记录可追踪的状态,并通过故障矩阵验证失败后的恢复方向。
- 2PC 与 TCC
比较两阶段提交与业务预留式事务的协调方式,讲解准备、提交、确认和取消的状态转换。结合资源管理器支持、幂等、空回滚和悬挂,帮助准备分布式面试的读者推演阻塞与乱序故障,分析分支并发处理,并根据资源能力和业务实现成本选择事务方案。
- Saga
介绍 Saga 通过多个本地事务推进跨服务流程,比较编排式和协同式组织方式。讲解补偿幂等、重试、中间状态和并发隔离,帮助准备分布式面试的读者处理超时与未知结果,分析旧快照补偿及不可逆步骤,并根据业务状态选择继续推进、补偿或人工恢复。
- Transactional Outbox 与 CDC
介绍事务发件箱如何把业务变化与事件共同提交,说明变更数据捕获从提交日志中提取事件的方式。讲解双写窗口、发布恢复、按键顺序和版本缺口,帮助准备后端面试的读者推演消息重复与消费者幂等,区分发布成功和业务完成,并设计监控及结果核对。
- 分布式流程恢复
介绍分布式流程失败后的重试、对账与受控修复,讲解稳定业务标识、幂等键生命周期和状态机。通过错误分类、增量差异扫描及自动或人工恢复,帮助准备后端面试的读者设计可追踪的修复过程,检查重复执行风险,并用演练核对最终业务结果。
- 超时
介绍超时与截止时间对等待过程和请求总预算的约束,讲解连接、读取、服务端上限及跨层传播。比较串行和并行调用的预算分配,帮助准备系统设计面试的读者分析取消如何传递到实际工作,判断超时后的资源占用,并用故障指标验证退出行为。
- 重试
介绍重试恢复短暂故障时增加下游负载的机制,讲解错误分类、指数退避、随机抖动和重试预算。结合写入结果未知、剩余时限与服务端等待提示,帮助准备系统设计面试的读者选择尝试次数,分析多层重试和并行备份请求,并用故障注入检查流量放大。
- 幂等键
介绍幂等键如何标识同一次业务意图,讲解键作用域、原子占用、处理中状态和结果保留。结合事务边界、条件状态转换与外部调用崩溃窗口,帮助准备系统设计面试的读者推演重复请求应等待还是返回已有结果,分析客户端重试与业务结果恢复的条件。
- 限流
介绍限流通过速率或并发上限保护系统容量,比较固定窗口、滑动窗口、漏桶和令牌桶的行为。讲解限流键、配额、分布式执行与原子扣减,帮助准备系统设计面试的读者按资源瓶颈选择算法,分析限制失效和拒绝响应,并区分请求速率与实际并发占用。
- 服务容错
介绍服务容错中的熔断、降级和舱壁隔离,讲解健康状态机、半开探测、业务回退与资源额度。结合超时、统计窗口和机制组合顺序,帮助准备系统设计面试的读者限制故障传播,分析备用依赖与并发容量,并用指标验证保护是否达到预期效果。
- 服务等级目标(SLO)
介绍服务等级目标如何表达用户可感知的质量,讲解指标选择、统计范围、错误预算和燃烧率告警。结合多窗口计算、依赖可用性与可用区故障余量,帮助准备可靠性面试的读者设计目标和容量,分析预算消耗,并区分内部服务目标与对外服务承诺。
- 灾难恢复
介绍灾难恢复中的故障域、高可用接管和历史备份,讲解恢复时间目标、恢复点目标与恢复顺序。结合时间点恢复和演练,帮助准备系统设计面试的读者区分运行副本与备份的用途,根据可接受停机及数据损失选择方案,并验证恢复过程能否满足业务要求。
- 故障转移
介绍故障转移把服务责任交给健康节点的过程,讲解触发条件、旧写入隔离、接管前检查和流量切换。覆盖控制面依赖、预置资源、运行手册与回切,帮助准备可靠性面试的读者制定恢复步骤,通过真实业务验证和演练检查数据状态及请求处理能力。
- 多租户
介绍多租户系统共享设施时的数据与资源隔离,讲解租户身份传播、隔离模型、授权和数据访问。结合连接复用、配额、噪声邻居及运维测试,帮助准备系统设计面试的读者检查跨租户边界,分析共享成本与竞争,并明确资源归属和操作影响范围。
- 成本归因
介绍成本归因如何把资源费用分配到业务单位和责任方,讲解资源所有权、共享分摊与性能测量。比较可靠性投入、固定成本和边际成本,帮助准备架构面试的读者解释优化优先级,分析费用变化的来源,并用服务质量与性能指标验证节省成本后的效果。
- 微服务架构
介绍微服务按业务能力划分独立部署单元的方式,围绕拆分目标、服务边界和数据所有权分析设计。讲解网络失败、同步依赖、一致性与运维成本,帮助准备后端架构面试的读者解释拆分粒度和渐进迁移的依据,将独立部署收益与真实业务约束联系起来。
- 服务发现
介绍服务发现把稳定服务名映射到实例地址的过程,比较客户端与服务端发现、主动和被动健康检查。讲解实例上下线、连接排空、版本快照与监听恢复,帮助准备微服务面试的读者区分存活和就绪,分析注册中心不可用、长连接及监听中断后的恢复边界。
- API 网关
介绍 API 网关作为外部请求入口的职责,讲解路由匹配、过滤器链和身份传递的顺序。覆盖认证授权、超时重试、限流和网关指标,帮助准备微服务面试的读者推演请求转发,分析入口校验与服务资源授权的分工,并明确网关和内部业务服务的边界。
- 配置中心
介绍配置中心如何分发参数和保存变更历史,区分启动配置与运行时配置。讲解完整快照、格式校验、版本审计、灰度刷新和回退,帮助准备微服务面试的读者分析配置变化的生效范围,处理密钥与启动依赖,并用刷新监控检查实例是否采用预期版本。
- 灰度发布
介绍灰度发布从小范围请求到逐步放量的过程,讲解稳定分组、流量染色、指标比较和停止条件。结合实例容量、数据库兼容、影子流量及发布清理,帮助准备微服务面试的读者判断观测覆盖范围,分析回滚能撤回哪些变化,并根据结果选择继续或暂停。
- 控制平面与数据平面
介绍控制平面分发状态、数据平面使用本地状态处理请求的分工,讲解配置收敛、确认与资源下发顺序。结合断连、陈旧配置、启动依赖和故障演练,帮助准备微服务面试的读者区分两类平面的故障影响,判断最后有效配置的使用条件及恢复后的处理方式。
- 模块化单体
介绍模块化单体在同一部署单元内划分业务模块的方式,讲解模块接口、单向依赖与数据所有权。比较同步调用、事务内外事件及持久登记,帮助准备架构面试的读者限制跨模块访问,通过自动化结构检查和测试验证边界,并判断何时适合保持单体部署。
- 限界上下文
介绍限界上下文如何规定业务模型与术语的适用范围,讲解领域、子域、统一语言和边界识别。通过订单协作分析上下文接口、防腐层和语义转换,帮助准备架构面试的读者区分同名业务概念,解释领域服务与应用服务,并明确数据所有权和共享模型的边界。
- 聚合
介绍领域聚合如何通过聚合根维护一组对象的业务不变量,讲解实体、值对象、事务边界和跨聚合引用。结合聚合规模、写入竞争与版本冲突,帮助准备后端架构面试的读者确定共同提交的状态,分析命令重放与领域事件时机,并判断规则分散带来的风险。
- 绞杀者模式
介绍绞杀者模式逐步替换遗留业务能力的迁移过程,讲解切口选择、路由入口、契约兼容和数据切换。围绕写入权交接、增量位置、影子流量及灰度验证,帮助准备架构面试的读者设计新旧系统并存方案,判断回退条件,并明确迁移完成后的退出标准。
- 架构迁移
面向资深后端岗位的项目追问,讲解架构迁移中的兼容清单、扩展收缩、回填与增量写入。结合灰度、影子流量、双读和数据切换,帮助候选人说明新旧系统的迁移状态,分析回滚与向前修复的条件,并用真实项目证据解释退出标准和迁移完成后的验证。
- 架构决策记录(ADR)
面向资深岗位的架构决策追问,介绍架构决策记录如何保存技术选择的约束、备选方案、决定与后果。讲解记录内容、决策状态、评审和验证条件,帮助候选人结合真实项目解释选型依据,分析可接受的代价,并说明哪些证据会促使原有决定调整。
- 设计评审
面向资深岗位的跨团队项目面试,介绍设计评审如何用共同约束和证据处理架构分歧。讲解方案说明、参与者、异步评论、决策权与异议记录,帮助候选人解释技术选择的讨论依据,明确迁移和运行责任,并用验证结果说明评审结论是否有效。
- 事故复盘
面向资深后端岗位的故障与失败方案追问,介绍事故复盘如何还原影响、时间线和促成条件。讲解防线分析、行动项、跨事故归纳与完成标准,帮助候选人用真实事件解释诊断依据和改进选择,明确措施的负责人及验证方式,并检查相同风险是否得到处理。
- 技术债
面向资深岗位的技术改造追问,介绍技术债如何增加交付成本和运行风险,讲解债务描述、投入收益与偿还方式。结合业务需求、主动借债和剩余投入,帮助候选人解释改造优先级及取舍,明确完成标准,并用性能、风险或交付结果验证改善是否达到预期。
- 设计网页爬虫
通过简化搜索系统介绍网页爬虫设计,围绕发现、抓取和索引公开网页分析需求、规模与高层结构。讲解地址规范化、去重、礼貌抓取、任务租约和输出提交,帮助准备系统设计面试的读者组织调度队列,分析增量抓取与失败恢复,并判断系统扩展的条件。
安全
- 应用安全
整理后端面试中的应用安全知识,覆盖身份认证、资源授权、登录协议、框架过滤链和常见攻击面。提供密钥、证书、审计与供应链专题入口,帮助求职者沿请求入口、数据访问和运行维护选择重点,解释安全机制的职责,并通过故障或攻击场景检查防护边界。
- 认证与授权
区分认证确认请求主体与授权判断资源访问的职责,讲解信任边界、角色、属性和关系型权限模型。结合租户隔离、网关服务分工及权限撤销,帮助准备应用安全面试的读者核对身份、资源和操作,分析服务凭据范围,并用审计记录追踪授权决定。
- Session、JWT、OAuth 2.0 与 OIDC
区分会话状态、令牌格式、委托授权与身份协议,比较 Session、JWT、OAuth 2.0 和 OIDC 的职责。讲解会话固定、令牌撤销、刷新和授权请求绑定,帮助准备后端面试的读者根据客户端与服务需求选择方案,分析浏览器存储和登录流程中的安全边界。
- Web 应用安全
介绍 Web 应用安全中输入解释与跨边界访问的风险,讲解注入、越权、跨站脚本、跨站请求伪造和服务端请求伪造。结合域名解析、重定向及反序列化,帮助准备后端安全面试的读者分析攻击链,选择参数、权限和出站控制,并用测试与日志验证防护范围。
- 密钥、证书、审计与供应链安全
介绍密钥和证书的生命周期管理,讲解凭据轮换、证书链验证、自动续期与泄漏响应。结合审计日志、依赖清单和构建产物来源,帮助准备后端安全面试的读者检查运行身份与构建输入,分析撤销和追溯需要的证据,并区分编码存储、加密传输与访问授权。
软件工程
- 测试金字塔
介绍测试金字塔如何按验证范围和成本组织单元、集成、契约及回归测试,说明真实依赖和测试替身的选择。结合覆盖率、不稳定测试、消费方契约与变异结果,帮助准备软件测试面试的读者按业务风险安排检查,判断测试能否发现错误并保护接口协作。
- 测试替身
介绍测试替身如何替换依赖并稳定复现条件,比较桩、模拟对象、伪实现和间谍对象的作用。讲解状态断言、交互验证、参数匹配与捕获,帮助准备 Java 测试面试的读者选择替换边界,分析过度验证和配置阶段真实调用的影响,区分替身测试与真实依赖验证。
- SOLID 面向对象设计原则
介绍 SOLID 的单一职责、开闭、里氏替换、接口隔离与依赖倒置原则,围绕代码变化解释职责、扩展和依赖关系。结合行为契约与使用边界,帮助准备面向对象设计面试的读者判断抽象是否合理,分析替换和接口拆分的条件,并说明设计原则的实际用途。
Java
- Java
面向 Java 后端求职整理语言、集合、虚拟机、并发、框架与数据访问的面试知识,提供各专题文章和岗位路线入口。帮助读者先根据招聘要求确定必会范围,完成核心阅读与独立自测,再按项目经历补充实现细节,明确各阶段的复习重点和完成标准。
- Java 值传递
讲解 Java 值传递中实参到形参的复制过程,区分基本值、引用值和引用指向的对象。通过数组、字符串与交换参数的示例,说明共享修改和重新赋值的结果,帮助准备基础面试的读者推演调用后的变量状态,解释不可重新赋值的引用与浅拷贝的边界。
- 面向对象编程(Object-Oriented Programming)
介绍面向对象编程中的封装、继承与多态,讲解对象状态保护、成员隐藏和方法调用规则。通过重载选择与动态分派的对照,比较接口、抽象类和组合,帮助准备 Java 基础面试的读者推演调用结果,并根据类型关系判断抽象边界与代码复用方式。
- 对象相等性
讲解 Java 对象相等性中的引用身份与逻辑相等,说明 equals 和 hashCode 必须共同遵守的约定。结合可变哈希键、数组内容比较与身份哈希,帮助准备语言和集合面试的读者设计相等规则,推演字段修改后的查找结果,并判断哈希冲突的含义。
- String
介绍 String 的不可变性与常量池复用,讲解常量折叠、字符串驻留及不同拼接方式的成本。比较可变字符串容器,区分内部存储、编码与字符计数,帮助准备 Java 基础面试的读者解释引用和文本内容的关系,判断字符串长度,并选择合适的构造方式。
- 包装类型
介绍 Java 包装类型与基本类型的差异,讲解自动装箱、拆箱和对象缓存如何影响数值比较。结合三元表达式、方法重载与空值示例,帮助准备基础面试的读者推演隐式转换和空指针异常,区分引用相等与数值相等,并按泛型、缺失值和运算需求选择类型。
- BigDecimal
介绍 BigDecimal 的十进制表示、构造与运算,解释浮点误差、小数位数和舍入规则如何影响金额结果。比较相等判断、数值比较及最小货币单位模型,帮助准备 Java 面试的读者分析除法、舍入方向与精确转换,并设计清楚的金额计算边界。
- Java 异常
介绍 Java 异常的分类、抛出、声明和捕获规则,说明调用链中处理失败与记录日志的位置。围绕资源所有权、自动关闭、finally 返回值和抑制异常,帮助准备基础面试的读者推演关闭顺序及多个失败的传播结果,保留诊断需要的异常信息。
- Optional
介绍 Optional 如何通过返回类型表达结果缺失,讲解默认值、异常、有值回调及映射和过滤操作。比较立即求值与延迟求值,说明参数、实体字段和集合中的使用边界,帮助准备 Java 面试的读者推演转换函数遇到空值时的结果,并选择合适的缺失处理方式。
- 不可变对象
介绍不可变对象如何在构造后保持可观察状态稳定,讲解最终字段与输入、输出边界的防御性复制。分析记录类的可变组件、线程共享、更新方式和复制校验顺序,帮助准备 Java 面试的读者识别外部修改入口,比较只读视图与快照,并权衡隔离效果和复制成本。
- Java API 设计
介绍 Java API 如何通过类型和方法约定合法状态,围绕业务不变量讲解领域类型、状态转换与参数所有权。区分查询缺失和命令失败,说明并发、幂等、阻塞及兼容性约定,帮助准备后端面试的读者设计明确的调用边界,分析接口演进与默认值求值的影响。
- Java 泛型
介绍 Java 泛型如何用类型参数关联输入与输出,讲解不变性、上下界通配符和类型擦除。通过桥接方法、泛型变长参数与堆污染,说明编译期检查和运行时转换的关系,帮助准备语言基础面试的读者判断容器的读写限制、编译结果与异常触发位置。
- Java 注解
介绍 Java 注解的定义、使用位置和保留策略,说明编译器、字节码工具与框架如何读取元数据并执行行为。覆盖元注解、自定义注解设计、默认值和重复注解的读取规则,帮助准备语言基础面试的读者判断注解何时可见,以及反射无法获取注解的原因。
- Java 反射
介绍 Java 反射从获取类型信息到创建对象、访问成员和调用方法的过程,说明非公开成员与模块访问边界。比较反射方法和方法句柄的类型要求及调用成本,帮助准备基础面试的读者判断返回类型、初始化时机和权限限制,并解释运行时调用的适用场景。
- Java 注解处理器
介绍 Java 注解处理器在编译阶段读取类型、校验结构和生成文件的过程,讲解多轮处理、发现规则与构建配置。比较运行时扫描、编译期索引和混合装配,帮助准备框架基础面试的读者解释代码生成的收益与限制,并判断提前编译和运行时扩展的取舍。
- Lambda 表达式
介绍 Lambda 表达式与函数式接口的类型关系,讲解目标类型、变量捕获、方法引用和异常处理。比较函数对象创建与调用时的求值过程,帮助准备 Java 基础面试的读者判断闭包捕获了什么、当前对象指向哪里,并解释可变对象和局部变量的使用限制。
- Stream
介绍 Java Stream 的流水线结构、惰性求值与短路,讲解无状态和有状态操作、一次性消费及数据源关闭。比较映射、扁平映射与归约,结合空流和无限流判断终止条件,帮助准备面试的读者推演实际执行的操作,并分析副作用、结果顺序和列表可变性。
- Collector
介绍 Collector 的容器创建、元素累积、结果合并与转换规则,讲解列表收集、映射键冲突和分组统计。结合下游收集器、单位元、结合律与并发收集,帮助准备 Java 面试的读者判断归约能否正确并行,解释结果顺序、空值和多个统计值的组合方式。
- 并行流
介绍 Java 并行流从数据拆分、任务调度到结果合并的执行过程,说明拆分器和工作窃取线程池的作用。分析顺序要求、共享副作用、阻塞调用与公共线程池竞争,帮助准备面试的读者根据计算量评估并行收益,判断异常、取消和嵌套执行的边界。
- java.time
介绍 java.time 中瞬间、本地日期时间、固定偏移量和地区时区的类型差异,讲解夏令时转换、日历运算与格式解析。结合时间存储、跨时区接口和固定时钟测试,帮助准备 Java 面试的读者明确时间语义,判断缺失或重复时刻及精度转换的边界。
- Java 集合框架
介绍 Java 集合框架的接口关系,比较列表、集合、映射、队列和双端队列的元素组织规则。结合访问方式、顺序、去重和线程共享需求,分析实现的操作与内存成本,帮助准备基础面试的读者选择容器,并判断优先队列遍历、空值和集合可变性的边界。
- ArrayList
以 OpenJDK 21 讲解 ArrayList 的元素数量、容量与引用数组,分析随机访问、尾部追加、扩容和中间搬移的成本。覆盖预分配、子列表共享与内存保留,帮助准备 Java 集合面试的读者比较不同增删方式,解释摊销复杂度及视图修改的使用边界。
- LinkedList
以 OpenJDK 21 讲解 LinkedList 的双向节点结构,比较按索引定位、局部增删和双端操作的成本。说明列表迭代器的游标位置及编辑规则,帮助准备 Java 集合面试的读者把查找成本与修改成本分开分析,并根据访问模式、内存开销和并发约束选择容器。
- HashMap
以 OpenJDK 21 讲解 HashMap 的桶数组、链表和红黑树,沿查找路径说明哈希定位与键相等判断。分析冲突、树化触发、容量选择和扩容拆分,帮助准备 Java 集合面试的读者推演插入与查询过程,区分不同操作的树化条件,并解释预分配的取舍。
- LinkedHashMap
讲解 LinkedHashMap 如何在哈希查找之外维护条目顺序,比较插入顺序和访问顺序。通过简单 LRU 缓存说明淘汰钩子、访问重排与容量限制,帮助准备 Java 集合面试的读者推演读取后的顺序变化,分析遍历冲突、内存成本和并发使用时的约束。
- TreeMap 与 TreeSet
介绍 TreeMap 与 TreeSet 如何根据比较规则维护有序元素,讲解红黑树、邻近键查询和范围视图。分析比较结果与对象相等约定的关系,帮助准备 Java 集合面试的读者判断去重、边界查找及范围删除的结果,并解释比较器稳定性和查询成本的影响。
- 集合迭代器
介绍 Java 集合迭代器的遍历位置、结构修改检测与元素删除规则,说明快速失败检测的作用范围。比较不可修改视图、不可变副本和固定大小列表,覆盖同步包装与基本类型数组转换,帮助准备集合面试的读者推演修改结果,判断浅层不可变和并发遍历的边界。
- ConcurrentHashMap
以 OpenJDK 21 讲解 ConcurrentHashMap 的桶结构、读取路径、单键原子更新和协作扩容,补充旧版本实现差异。结合计算回调、热点键与可变值对象,帮助准备 Java 并发面试的读者识别复合操作竞态,解释空值约束及容器线程安全的作用范围。
- CopyOnWrite 容器
介绍 CopyOnWrite 容器通过复制数组完成结构更新的过程,讲解数组发布、快照迭代、批量更新和原子去重插入。结合读写比例、数据规模和旧数组保留时间,帮助准备 Java 集合面试的读者评估写入与内存成本,区分结构快照和元素对象的可变性。
- BlockingQueue
介绍 BlockingQueue 的入队与出队方法,讲解有界队列如何限制积压并协调生产者和消费者。比较常见实现,覆盖中断、关闭信号、任务发布和重试,帮助准备 Java 并发面试的读者选择等待方式,分析背压与停机流程,并区分内存队列和消息中间件。
- ConcurrentLinkedQueue
以 OpenJDK 21 讲解 ConcurrentLinkedQueue 的链式节点、头尾指针与入队出队路径,说明比较并交换如何协调并发更新。分析竞争重试、元素计数和弱一致遍历,帮助准备 Java 面试的读者理解无锁进展保证,判断空队列等待及对象发布的边界。
- 迭代一致性
讲解并发集合的迭代一致性,比较弱一致遍历、固定数组快照与聚合结果能够观察的状态。介绍外部锁、不可变状态和版本重试等快照方案,帮助准备 Java 面试的读者分析条件删除、并发复制及可变元素的限制,判断业务是否需要额外同步。
- Java 流式 I/O
介绍 Java 流式 I/O 中字节流和字符流的分工,讲解部分读取、编码转换、缓冲和装饰器组合。结合跨块解码、字符计数与错误处理,帮助准备基础面试的读者根据数据类型选择读写方式,解释刷新与持久化的差别,并判断默认字符集和逐行读取的使用边界。
- Java NIO
介绍 Java NIO 的缓冲区、通道和就绪事件,沿位置状态、部分读写与选择器通知讲解事件循环。说明连接状态保存、业务线程协作和写事件注册时机,帮助准备网络编程面试的读者推演数据处理过程,区分阻塞、非阻塞与异步读写,并分析资源取消的边界。
- Java 序列化
介绍 Java 原生序列化如何保存和恢复对象图,讲解字段范围、构造规则、版本标识与自定义读写。覆盖对象句柄、特殊类型恢复和反序列化过滤,帮助准备基础面试的读者判断类版本与语义兼容的差异,分析不可信输入风险,并选择受控状态保存的适用场景。
- Java 线程
介绍 Java 线程从创建到终止的六种状态,比较直接调用运行方法和启动新线程的区别。讲解协作式中断、阻塞响应、异常传播及中断标志的读取与清除,帮助准备并发面试的读者推演状态变化,区分休眠和条件等待,并判断任务安全退出所需的配合。
- 线程安全
介绍线程安全需要保持的对象约定,从丢失更新示例说明竞态条件怎样发生。讲解原子性、可见性、有序性与临界区,比较同步策略和状态转换,帮助准备 Java 并发面试的读者根据业务不变量确定保护范围,分析多个线程安全操作组合后的正确性。
- Java 内存模型
介绍 Java 内存模型对跨线程读写结果的约束,讲解先行发生规则、共享变量发布和并发组件的数据交接。通过同步关系推导可见性,帮助准备并发面试的读者区分数据竞争与顺序一致性,分析线程休眠和等待结束的边界,并判断读操作能够观察到哪些写入。
- volatile
介绍 volatile 的可见性和顺序保证,通过标志发布与复合更新说明它能保护的操作范围。讲解内存屏障、引用与数组元素,以及不同变量访问模式,帮助准备 Java 并发面试的读者推导发布关系,判断递增和多字段状态何时仍需要原子操作或加锁。
- synchronized
介绍 synchronized 如何通过对象监视器提供互斥与可见性,区分实例锁、类锁和同步代码块。讲解可重入、同步字节码、条件等待及运行时锁优化,帮助准备 Java 并发面试的读者确定锁对象,分析锁消除、锁粗化和等待通知的成立条件。
- ReentrantLock
介绍 ReentrantLock 的可重入互斥、显式释放和可中断获取,比较超时获取与公平策略。围绕条件变量的等待、通知、条件重查和剩余预算,帮助准备 Java 并发面试的读者设计正确的等待协议,解释唤醒与重新持锁的关系,并分析异常退出时的释放责任。
- CAS
介绍 CAS 的条件更新与失败重试过程,解释更新函数重复执行时的副作用和 ABA 问题。讲解版本标记、强弱操作、内存语义与进展保证,帮助准备 Java 并发面试的读者判断引用比较和内容比较的差异,区分原子变量更新与外部业务动作的保护范围。
- AQS
以 Java 17 和 21 介绍 AQS 的同步状态、等待队列及子类职责,比较独占获取和共享获取。讲解中断、超时、取消、条件队列与线程唤醒的关系,帮助准备并发面试的读者推演获取和释放流程,区分等待许可、条件通知与实际获得锁的时机。
- Java 原子类
介绍 Java 原子类如何完成独立状态的原子读改写,比较 AtomicLong 的精确更新与 LongAdder 的分散累加。讲解竞争重试、求和、清零和不可变多字段状态,帮助准备并发面试的读者按读取一致性与负载选择计数方案,分析统计窗口的边界。
- 读写锁
介绍读写锁如何协调共享读取与独占更新,讲解读锁、写锁、锁降级和模式转换。比较 StampedLock 的乐观读取与验证、不可变快照和并发容器,帮助准备 Java 并发面试的读者分析读多写少场景的成本,判断读到的数据何时有效及锁转换失败后的处理。
- 安全发布
介绍安全发布如何让其他线程看到对象已经完成的初始化,分析未同步共享引用和构造期间对象逸出的风险。讲解最终字段的初始化保证、双重检查锁定与静态持有者,帮助准备 Java 并发面试的读者推导对象可见性,判断单例与不可变状态的正确发布条件。
- 并发活跃性
介绍并发活跃性中的死锁、活锁和饥饿,结合进度指标与线程栈区分任务无法前进的原因。讲解超时获取锁、线程池资源等待环和虚拟机死锁检测范围,帮助准备 Java 面试的读者分析线程与资源之间的依赖,并判断退避、锁顺序和容量调整的作用。
- 锁竞争
讲解锁竞争造成的排队、等待和调度成本,沿故障时间线结合线程转储与 JFR 定位争用位置和耗时。说明上下文切换、事件阈值与采样的边界,帮助准备 Java 性能面试的读者使用并发基准和服务压测验证优化,避免仅凭线程状态判断性能原因。
- 锁与无锁
比较锁与无锁算法协调共享状态的方式,分析阻塞等待、比较并交换重试和缓存竞争带来的成本。讲解降低竞争、伪共享与不同进展保证,帮助准备 Java 并发面试的读者结合负载曲线衡量吞吐和延迟,并解释自旋、锁粒度及公平策略的适用条件。
- Java 线程池
沿任务接收流程讲解 Java 线程池的构造参数、排队、扩容与拒绝策略,比较执行和提交任务时的异常传播。覆盖容量估算、积压诊断、关闭终止及静默拒绝,帮助准备并发面试的读者判断过载原因,解释队列选择对扩容和任务结果等待的影响。
- ThreadLocal
介绍 ThreadLocal 在线程中保存独立值的结构,讲解弱引用键、值保留和线程池复用造成的内存与上下文问题。覆盖清理、跨线程传递、子线程继承和嵌套恢复,帮助准备 Java 并发面试的读者分析泄漏条件,判断上下文生命周期及虚拟线程中的使用成本。
- CompletableFuture
介绍 CompletableFuture 如何用完成阶段组织异步结果,讲解依赖组合、回调线程、异常恢复与观察。比较超时、取消和聚合完成的条件,帮助准备 Java 并发面试的读者推演结果与异常的传播路径,判断回调失败及等待结束后底层任务是否继续运行。
- Java 并发同步器
比较 Java 并发同步器在事件完成、阶段会合和资源许可上的分工,讲解倒计数器、循环屏障与信号量的使用方式。覆盖超时、业务失败、许可释放和屏障恢复,帮助准备并发面试的读者按协调目标选择工具,区分参与线程结束与业务执行成功的条件。
- 任务取消
讲解 Java 任务取消中截止时间、中断请求和结果状态的不同职责,说明调用链如何传递剩余时间预算。结合可中断等待、后台任务清理与完成取消竞争,帮助准备并发面试的读者分析等待超时后的执行状态,设计协作退出和资源释放的处理方式。
- 虚拟线程
以 Java 21 讲解虚拟线程与载体线程的调度关系,说明大量阻塞任务中的适用条件和资源限制。覆盖阻塞绑定、线程上下文、迁移验证、观测与退出,帮助准备并发面试的读者分析使用成本,判断线程数量增加后数据库连接和外部服务仍需怎样限制并发。
- 消息传递
介绍消息传递如何通过命令交接协调状态更新,比较共享对象同步与单一所有者模型。讲解结果通道、有界队列、过载处理和消费者关闭,帮助准备 Java 并发面试的读者划分状态归属,分析消费者异常、消息顺序和对象共享可能带来的竞态。
- JVM 运行时数据区域
介绍 JVM 运行时数据区域中程序计数器、虚拟机栈、堆、方法区和常量池的职责,区分线程私有与共享范围。通过栈帧说明局部变量、操作数和对象的关系,帮助准备 Java 面试的读者联系实际进程内存理解逻辑区域,并判断本地方法及直接内存的归属。
- Java 字节码
介绍 Java 源码编译为字节码和类文件的过程,通过方法示例讲解文件结构、局部变量表、操作数栈及调用指令。覆盖方法描述符、字节码验证和目标平台兼容,帮助准备虚拟机面试的读者区分源码编译与运行时执行,并理解反编译结果和实际性能的关系。
- Java 对象布局
以 Java 17 和 21 的 HotSpot 介绍对象创建与布局,沿类型检查、内存分配、零值初始化和构造调用解释执行顺序。讲解对象头、字段、对齐与布局观察,帮助准备虚拟机面试的读者推演构造期间的方法调用,区分对象完成初始化与跨线程安全发布。
- 压缩指针与对象对齐
以 Java 17 和 21 的 HotSpot 介绍压缩指针、对象头与对齐填充,说明引用宽度如何影响对象内存占用。区分浅大小和保留大小,分析数组、集合节点及对象图成本,帮助准备虚拟机面试的读者估算容量,解释压缩指针变化对内存密度和回收工作的影响。
- Java 直接内存
介绍 Java 直接内存的用途、容量上限和缓冲区生命周期,区分堆内引用、文件映射与其他本地分配。结合本地内存跟踪和系统指标定位进程增长,帮助准备虚拟机排障面试的读者分析直接缓冲区耗尽、释放时机及容器预算,判断堆转储能够提供哪些证据。
- 类加载
介绍类加载如何把字节流转为运行时类型,按加载、验证、准备、解析和初始化说明各阶段职责。区分静态字段零值、常量内联与源码赋值,帮助准备 Java 虚拟机面试的读者推演主动使用和被动引用的结果,判断父类、接口初始化及失败后的行为。
- 类加载器
介绍类加载器在服务发现与插件依赖隔离中的作用,讲解服务提供者查找、线程上下文加载器和模块层。覆盖懒加载、资源可见范围与类卸载条件,帮助准备 Java 虚拟机面试的读者解释插件如何共享宿主接口,分析跨加载器类型冲突和停止后的资源保留。
- 双亲委派模型
介绍双亲委派模型从已加载类、父加载器到当前加载器的查找流程,说明内置加载器和运行时类型身份。结合插件共享接口、依赖隔离与热部署,帮助准备 Java 虚拟机面试的读者区分父子加载器关系和类继承,分析改变委派顺序的理由及同名类冲突。
- 类加载故障
介绍类加载故障中的类查找失败、二进制不兼容和初始化等待,讲解初始化锁、死锁及失败后的类状态。结合异常消息、线程栈和实际类来源,帮助准备 Java 排障面试的读者区分依赖版本冲突与加载器类型冲突,并按启动或热部署现场组织排查证据。
- GC Roots
介绍 GC Roots 与对象可达性分析,说明根的来源以及强、软、弱、虚引用的不同作用。结合循环引用、弱键反向持有、引用队列和资源清理,帮助准备 Java 虚拟机面试的读者沿引用链判断对象为何保留,区分可达对象泄漏与可回收对象,并理解类卸载条件。
- 分代回收
介绍分代回收的对象寿命假设,讲解跨代引用、写屏障、并发标记和安全点如何配合。比较快照与增量更新,结合晋升和分配失败分析堆余量,帮助准备 Java 虚拟机面试的读者解释对象图变化时的引用维护,并从日志区分暂停阶段与并发工作。
- Serial、Parallel 与 CMS
比较 Serial、Parallel 与 CMS 的回收策略,区分串行、并行和并发阶段对吞吐与停顿的影响。以旧版本历史实现说明碎片、浮动垃圾和并发模式失败,帮助准备 Java 虚拟机面试的读者解释空间余量与长停顿的关系,并根据资源和版本背景分析选型。
- G1
介绍 G1 如何按区域组织堆并复制存活对象,讲解跨区域引用、记忆集、年轻代回收与混合回收。覆盖并发标记、大对象、暂停目标和整堆回收,帮助准备 Java 虚拟机面试的读者从日志识别阶段变化,分析空间余量及回收集合选择对停顿的影响。
- 低延迟垃圾收集器
比较 ZGC 与 Shenandoah 通过并发标记和移动对象缩短停顿的方式,介绍 Java 17 和 21 的相关配置。讲解引用屏障、分配余量和堆上限,帮助准备虚拟机面试的读者权衡处理器、吞吐与内存成本,并分别验证垃圾回收暂停和业务请求延迟的变化。
- 分层编译
介绍 HotSpot 分层编译如何兼顾启动速度和热点代码性能,沿解释执行、热点探测与编译层级讲解运行过程。说明运行时画像、编译线程、代码缓存和预热的作用,帮助准备 Java 虚拟机面试的读者解释同一方法多次编译及启动后的性能变化。
- 方法内联与去优化
介绍方法内联如何把被调用代码纳入调用点,说明即时编译器跨方法优化的收益与限制。讲解投机内联、类型假设检查、栈帧和对象恢复,帮助准备 Java 虚拟机面试的读者分析去优化触发条件,结合编译日志解释运行时类型变化和性能波动。
- 逃逸分析与标量替换
以 HotSpot C2 讲解逃逸分析如何判断对象被哪些方法或线程访问,说明标量替换、分配消除与锁消除的条件。结合条件逃逸和分配数据验证优化,帮助准备 Java 虚拟机面试的读者区分对象可见范围、栈上分配和实际内存开销,并解释优化未发生的原因。
- JMH
介绍 JMH 微基准的测量模式、输入设计、状态范围和结果消费,讲解预热与独立进程测试的作用。分析死代码消除、常量折叠和循环带来的测量失真,帮助准备 Java 性能面试的读者解释吞吐与延迟数据,并用分配证据和业务负载验证优化收益。
- Java 启动优化
以 Java 17 和 21 介绍启动优化中的类数据共享、即时编译与原生镜像,比较启动时间、运行性能和构建成本。讲解归档兼容性、闭世界假设、动态特性适配和构建期初始化,帮助准备虚拟机面试的读者根据部署需求选择方案,并解释提前编译的使用限制。
- OutOfMemoryError 与 StackOverflowError
按错误消息区分 Java 堆、元空间、直接内存、线程创建和调用栈耗尽,解释内存溢出与栈溢出的不同原因。结合日志、线程栈和内存数据选择排查证据,帮助准备虚拟机面试的读者判断泄漏、容量限制与系统终止进程的差异,并分析故障后的恢复边界。
- JVM 诊断
介绍 JVM 诊断如何根据故障症状选择快照、事件记录和采样工具,讲解诊断命令、飞行记录器及性能分析的证据范围。覆盖采集开销、显式回收和环境信息记录,帮助准备 Java 排障面试的读者建立时间线,把线程、内存与性能变化放在同一现场分析。
- CPU 使用率
介绍 Java 进程高 CPU 问题的排查顺序,从实例配额和节流定位到热点线程与调用路径。结合连续线程栈、性能剖析、垃圾回收及分配数据,帮助准备生产排障面试的读者区分业务计算、即时编译和本地代码开销,并通过相同负载验证修复效果。
- 线程转储
介绍线程转储的采集方式、线程状态和锁关系,讲解如何区分死锁、锁竞争、活锁及线程池饥饿。结合多份快照与事件记录判断持续等待,覆盖 Java 21 虚拟线程的观测范围,帮助准备生产排障面试的读者分析任务进度,并明确单份线程栈的证据限制。
- 堆转储
介绍堆转储如何记录 Java 对象与引用关系,比较类直方图、支配树和多时点快照的分析用途。区分内存泄漏、正常容量需求与分配峰值,帮助准备生产排障面试的读者沿持有链定位缓存、队列和任务的保留原因,并评估采集成本及修复后的增长变化。
- GC 停顿分析
讲解 GC 停顿分析中的统一日志配置、回收事件字段和暂停范围,区分垃圾回收、安全点与系统停顿。结合飞行记录器关联业务延迟,帮助准备 Java 排障面试的读者识别分配压力、存活对象和安全点到达延迟,并按证据选择调优方向和验证结果。
- IoC 容器
介绍 Spring IoC 容器创建对象、装配依赖和管理生命周期的职责,比较对象内部创建依赖与外部装配。区分控制反转、依赖注入、对象定义和实际实例,帮助准备框架面试的读者解释测试替换与管理范围,判断单例作用域和共享对象线程安全的关系。
- 依赖注入
介绍 Spring 依赖注入如何为对象提供协作者,比较构造器、属性方法和字段注入的差异。讲解多个候选组件的选择、可选依赖、延迟获取及名称解析,帮助准备框架面试的读者推演匹配结果,理解不同作用域之间的注入方式,并确定接口与依赖的边界。
- BeanDefinition
介绍 BeanDefinition 保存的类型、依赖和初始化元数据,沿定义注册、容器后处理与单例预实例化讲解启动过程。区分定义处理器、实例处理器和工厂对象,帮助准备 Spring 面试的读者判断扩展点生效时机,解释配置类方法调用与对象提前创建的关系。
- Bean 生命周期
介绍 Spring Bean 从实例化、依赖填充到初始化与销毁的生命周期,讲解回调和实例后处理器的执行顺序。区分对象可用、服务就绪与生命周期组件启停,帮助准备框架面试的读者通过日志推演创建过程,分析初始化期间的代理调用及资源销毁条件。
- Spring 循环依赖
介绍 Spring 循环依赖中的构造器注入与属性注入差异,讲解早期引用、三级缓存及代理一致性。以显式允许循环引用为前提说明部分单例循环的处理过程,帮助准备框架面试的读者判断作用域和默认配置的限制,并通过职责拆分消除不合理的对象依赖。
- Spring AOP
介绍 Spring AOP 通过代理增强方法调用的过程,讲解连接点、切点、通知和拦截链的嵌套顺序。结合自调用、异常回滚、异步线程和缓存提交时机,帮助准备框架面试的读者推演增强何时生效,分析可代理方法与调用入口的限制,并定位代理相关故障。
- JDK 动态代理与 CGLIB
比较 JDK 动态代理与 CGLIB 的接口实现和继承增强方式,以 Spring 6.2、Boot 3.5 说明默认选择。讲解代理类型、注解匹配、方法边界和同类自调用,帮助准备框架面试的读者推演增强结果,分析最终方法、非公开方法及调用性能的限制。
- Spring 事务
以 Spring 6.2 的 JDBC 本地事务讲解代理、拦截器、事务管理器和连接上下文的协作过程。比较传播、隔离、回滚规则与提交后事件,帮助准备后端面试的读者推演事务边界,分析自调用、保存点、独立事务及提交失败对数据库操作结果的影响。
- Spring MVC 请求生命周期
沿 Spring MVC 请求生命周期介绍容器接收、过滤链、请求分派、控制器调用和结果写回的顺序。比较同步处理与异步续接,说明请求日志、耗时指标和执行容量,帮助准备后端面试的读者定位处理阶段,分析线程切换及同一请求多次分派的行为。
- DispatcherServlet
介绍 DispatcherServlet 在 Spring MVC 请求分派中的协调职责,沿处理器查找、映射条件和适配调用讲解执行过程。覆盖拦截器回调、异常解析及错误状态定位,帮助准备框架面试的读者推演处理顺序,区分控制器与资源处理器,并理解异常解析返回值的含义。
- Spring MVC 参数解析
介绍 Spring MVC 如何把路径、请求参数、请求头和请求体转换为控制器方法参数,以 Spring 6.2 讲解绑定与校验。覆盖方法校验、请求和响应的格式选择及自定义解析器,帮助准备框架面试的读者区分转换失败、字段错误与业务授权,并定位参数处理阶段。
- Spring 拦截机制
比较 Spring 过滤器、拦截器和切面在请求、处理器与对象方法层的覆盖范围,说明各层能够读取的信息。讲解回调顺序、异常处理和异步请求中的线程上下文清理,帮助准备框架面试的读者为认证、日志和监控选择位置,并分析跨层协作的边界。
- API 错误契约
介绍 API 错误契约中的状态码、稳定错误字段和日志关联,讲解 Spring MVC 异常映射及字段校验错误的表达。覆盖异常处理器选择和统一处理的作用范围,帮助准备后端面试的读者设计客户端可判断的失败响应,并通过契约测试核对不同错误入口的行为。
- Spring Boot 启动
以 Spring Boot 3.5 介绍启动类、环境准备、容器刷新与初始化任务的执行过程,讲解内嵌服务器和启动事件顺序。区分端口监听、应用存活与业务就绪,帮助准备框架面试的读者推演启动运行器的时机,并根据耗时证据定位配置、装配和初始化问题。
- Spring Boot 自动配置
以 Spring Boot 3.5 讲解自动配置候选发现、条件注解和默认组件注册,补充 Boot 2.7 的登记方式。说明用户配置优先、属性条件与条件评估报告,帮助准备框架面试的读者推演配置生效或退让的过程,定位未装配原因,并分析启动阶段的副作用。
- Spring Boot Starter
以 Spring Boot 3.5 介绍自定义 Starter 的依赖聚合与自动配置模块,讲解配置登记、对外接口和默认行为替换。覆盖启动副作用、可选依赖隔离与条件组合测试,帮助准备框架面试的读者设计可覆盖的接入方式,定位装配失败,并判断封装边界。
- Spring Boot 外部化配置
以 Spring Boot 3.5 介绍外部化配置的来源、覆盖优先级和文件加载顺序,讲解环境变量绑定、启动校验及密钥管理。结合配置来源诊断和列表、映射的覆盖规则,帮助准备框架面试的读者定位最终取值,解释环境差异,并判断修改文件后的刷新边界。
- Spring Boot Actuator
介绍 Spring Boot Actuator 的运行状态与诊断端点,以 Boot 3.5 讲解端点暴露、访问控制和启动耗时分析。区分存活探针、就绪探针及业务端口探测,帮助准备框架面试的读者按故障选择诊断入口,判断健康检查对外部依赖和实际请求能力的覆盖范围。
- Spring Security
以 Spring Security 6.5 介绍过滤器链中的认证和授权过程,讲解多链匹配、认证管理器与安全上下文生命周期。覆盖上下文持久化、异常转换、会话和令牌认证,帮助准备框架安全面试的读者推演请求处理顺序,判断自定义过滤器位置及方法和数据级权限范围。
- 数据库连接池
以 HikariCP 介绍数据库连接池的借出、代理归还和物理连接复用,讲解容量、超时预算与生命周期配置。结合等待指标、慢查询和泄漏检测,帮助准备 Java 后端面试的读者判断连接耗尽原因,权衡扩池与数据库并发,并解释内部性能机制及连接轮换。
- MyBatis
沿 MyBatis 查询链路讲解接口代理、映射语句、执行器、参数绑定和结果映射,说明批处理与两级缓存的作用范围。覆盖分页插件、动态语句、事务会话和关联延迟加载,帮助准备后端面试的读者推演数据库访问过程,区分执行刷新与提交,并分析插件扩展边界。
- JPA
介绍 JPA 持久化上下文中的实体身份与状态转换,讲解状态合并、脏检查、刷新和懒加载。结合事务边界、关联所有权、乐观锁及批量更新,帮助准备 Java 持久层面试的读者推演对象修改何时写入数据库,分析上下文同步与查询可见性的条件。
- N+1 查询
介绍 N+1 查询在列表和关联访问中的形成过程,用语句数量与结果规模定位数据库往返问题。比较关联抓取、加载图、批量抓取和数据投影,帮助准备 Java 持久层面试的读者选择优化方式,分析多个集合造成的结果膨胀,并验证父对象分页和查询回归。
- 批处理与分页
介绍数据库批处理与分页如何减少往返并控制结果规模,区分执行批次、事务提交和框架本地状态。比较偏移分页、游标分页及关联集合分页,帮助准备 Java 数据访问面试的读者分析并发修改与部分失败,并用真实数据库验证查询数量、页大小和一致性边界。
- JUnit
介绍 JUnit 测试的前置状态、目标动作与结果断言,讲解异常验证、参数化测试和生命周期隔离。结合时间、随机与并发依赖,说明不同超时执行方式的线程边界,帮助准备 Java 测试面试的读者设计可重复且能发现错误的检查,分析上下文与共享状态对结果的影响。
- Maven
以 Maven 3 介绍生命周期、阶段和插件目标的执行关系,讲解依赖范围、版本仲裁、依赖管理与物料清单。结合多模块聚合、继承、构建顺序和集成测试,帮助准备 Java 工程面试的读者定位依赖冲突,检查可重复构建的输入,并区分打包与安装的作用。
AI 应用与 Agent
- AI 应用与 Agent
面向智能体、大模型应用开发及允许使用人工智能编码的面试,整理模型基础、上下文管理、检索增强生成和工具调用。提供任务状态、记忆、评估、安全与开发框架的原理文章及面试练习入口,帮助求职者按岗位要求确定复习顺序,解释机制并分析设计选择。
- 大语言模型基础
介绍大语言模型的分词、自回归生成和训练阶段,讲解上下文窗口、输入输出用量、采样与前缀缓存。围绕推理预算、输出结束状态和能力边界,帮助准备大模型应用面试的读者解释生成过程、估算调用成本,并判断回答差异和输出截断的原因。
- Transformer 与注意力机制
介绍 Transformer 的整体结构、位置表示与自注意力计算,比较多头注意力及其变体。结合 KV Cache、FlashAttention 和因果注意力,讲解推理时的缓存收益与内存开销,帮助准备人工智能技术面试的读者分析长序列成本和信息遗漏的边界。
- 模型幻觉
讲解模型幻觉的类型与成因,区分事实错误、违背给定文档和虚构工具执行结果。围绕检索补充证据、引用校验、拒答和人工介入,帮助准备大模型应用面试的读者分析各层防护的作用,理解忠实度与事实正确性的差别,并用业务状态核对操作结果。
- 提示词工程
介绍提示词工程中的任务、约束、输入与输出要求,比较示例提示和思维链的适用条件。讲解结构化输出、拒答、截断与流式解析,并用开发集和留出集验证修改效果,帮助准备大模型应用面试的读者设计可检查的提示,解释调优依据和调用边界。
- 上下文管理
讲解上下文管理中的信息选择、预算分配与组装顺序,说明系统指令、对话历史、检索文档和工具结果如何进入模型输入。覆盖前缀缓存、按需加载、信任边界与状态冲突,帮助准备智能体开发面试的读者解释信息取舍,避免过期结果和无关内容干扰任务。
- 上下文压缩
介绍上下文压缩如何用较短摘要替换旧对话,比较压缩方案、触发时机和合并方式。说明目标、约束、已完成事项与下一步应如何保留,覆盖工具消息配对和恢复验证,帮助准备智能体开发面试的读者分析有损摘要的限制,避免长任务恢复后遗漏要求。
- 检索增强生成(RAG)
介绍检索增强生成的离线索引与在线问答链路,讲解查询改写、多跳检索、证据组装和带引用的回答。比较 RAG 与微调的适用需求,覆盖知识更新、索引发布、缓存和权限,帮助准备大模型应用面试的读者解释方案选择,并分析检索与内容维护的边界。
- 文档解析与切分
讲解文档解析与切分如何把网页、文档和表格转成可检索片段,比较块大小、重叠和结构保留的取舍。覆盖父子索引、跨块证据和原文定位,帮助准备检索增强生成面试的读者根据文件类型选择分块方式,并检查检索片段能否保留回答所需的完整条件。
- Embedding 与向量检索
介绍 Embedding 把文本转为向量的过程,讲解相似度度量、近似最近邻与 HNSW 的搜索机制。结合向量数据库选型和过滤后候选不足的情况,帮助准备检索增强生成面试的读者比较召回质量、查询成本与过滤策略,解释向量索引参数的作用。
- 混合检索与重排序
介绍混合检索如何结合关键词与向量召回,讲解 BM25、RRF 排名融合和重排模型各自的作用。覆盖候选数量、证据覆盖、上下文截断和异常降级,帮助准备检索增强生成面试的读者解释多路召回的互补条件,并权衡相关性、延迟与推理成本。
- Function Calling
讲解 Function Calling 中工具定义、调用请求与结果回传的完整往返,说明模型决策和应用执行的分工。覆盖参数契约、错误处理、严格模式、流式参数和并行依赖,帮助准备智能体开发面试的读者设计可靠的工具接口,并处理大量工具的选择问题。
- MCP
按 MCP 规范介绍宿主、客户端与服务端的职责,沿一次工具调用讲解能力发现、消息交互和传输方式。覆盖协议错误、工具错误、断线恢复与鉴权,帮助准备智能体开发面试的读者区分接入协议、模型工具请求和业务接口,并分析共享工具的安全边界。
- Agent Skills
介绍 Agent Skills 的目录结构、任务说明与配套脚本,讲解渐进式加载如何减少上下文占用。区分技能、工具、接入协议和命令行的职责,覆盖选择错误、执行失败、权限与评测,帮助准备智能体开发面试的读者判断何时封装技能及怎样验证效果。
- 工作流与 Agent
比较单次模型调用、工作流与 Agent 的控制流,说明预设步骤和模型动态决策分别适合哪些任务。介绍常见工作流模式与混合编排,帮助准备人工智能应用面试的读者根据路径稳定性、验证方式和执行成本选择方案,并说明引入多轮调用的理由。
- Agent 执行循环
讲解 Agent 执行循环中模型决策、工具执行与结果回传的完整过程,比较 ReAct 与先规划再执行的适用任务。围绕停止条件、步数预算、错误重试和完成校验,帮助准备智能体开发面试的读者解释任务如何推进,以及怎样避免无限循环和虚报完成。
- Agent Harness
介绍 Agent Harness 如何组织模型、工具和任务状态,沿代码修改任务讲解上下文组装、动作执行与结果验证。覆盖长任务衔接、事件钩子和权限检查,帮助准备智能体开发面试的读者说明运行时各模块的职责,以及任务恢复需要保留哪些信息。
- 多 Agent 协作
介绍多 Agent 协作的组织方式、信息传递和状态共享,说明适合独立执行的任务如何拆分与汇总。覆盖部分失败、超时重试、资源竞争和上下文隔离,帮助准备智能体开发面试的读者比较协作收益与额外成本,并解释并行执行时的冲突处理。
- Agent 状态与持久化执行
介绍 Agent 状态与持久化执行如何保存进度并恢复中断任务,说明消息、检查点和动作结果的存储范围。覆盖工具失败、幂等恢复、人工介入和中断节点重跑,帮助准备智能体开发面试的读者区分状态恢复与动作重放,避免重试造成重复业务操作。
- Agent 记忆
介绍 Agent 记忆在上下文之外保存和取回信息的机制,区分短期记忆、长期记忆与当前模型输入。讲解提取、检索、去重、冲突处理和遗忘,覆盖租户隔离与删除传播,帮助准备智能体开发面试的读者设计记忆系统,并解释文件记忆及其与检索的关系。
- Agent 评估
介绍 Agent 评估中任务结果、执行轨迹和运行成本的检查方法,讲解评测集构造、评分校准与重复运行的统计口径。覆盖运行隔离、失败归因、版本回归和灰度验证,帮助准备智能体工程面试的读者判断系统能否稳定完成任务,并定位失败环节。
- RAG 评估
讲解 RAG 评估如何分别衡量证据检索和答案生成,介绍召回指标、证据标注、答案忠实度、引用与拒答检查。通过无检索和理想证据对照定位失败,帮助准备大模型应用面试的读者区分召回遗漏与生成错误,并判断切分、重排或提示的改进方向。
- 提示注入
介绍提示注入如何通过用户输入、网页或工具结果改变模型行为,区分直接攻击与间接攻击。讲解指令和数据隔离、工具权限、对外发送限制及对抗评测,帮助准备智能体安全面试的读者判断结构化提取的保护范围,并分析防护效果与误报的取舍。
- 工具授权与执行沙箱
讲解工具授权与执行沙箱的职责,区分动作权限和文件、网络、进程的访问限制。围绕风险分级、审批绑定、执行期校验与凭据传递,帮助准备智能体工程面试的读者把用户意图对应到具体操作,并分析命令白名单和运行时隔离各自能控制的风险。
- 延迟、成本与服务扩展
分析 Agent 服务中模型调用、工具执行和排队造成的延迟,讲解关键路径、费用计算与运行预算。比较前缀缓存和结果缓存,说明请求增长后的并发、配额、限流与降级,帮助准备人工智能工程面试的读者定位长任务变慢的原因,并权衡质量和成本。
- AI 辅助开发
介绍 AI 辅助开发中阅读代码、生成修改和验证交付的任务流程,说明开发者如何提供仓库上下文、需求与验收条件。围绕提示反馈、差异审查和测试结果,帮助准备允许人工智能编码的面试的读者解释实现选择,检查生成代码是否满足实际要求。
- AI 代码调试
讲解借助 AI 编码助手复现、定位和修复缺陷的过程,覆盖最小复现、证据收集、假设验证与回归检查。结合失败测试修复和多次尝试失败后的任务恢复,帮助准备辅助编码面试的读者判断补丁是否解决原因,并检查修复是否引入新的问题。
- 仓库指令
介绍仓库指令如何保存编码 Agent 需要的构建命令、目录职责和代码约定,说明 AGENTS.md 与 CLAUDE.md 的内容组织。覆盖指令维护、发现顺序、加载范围与效果验证,帮助准备人工智能编码面试的读者解释项目规则如何参与任务执行。
- 编码 Agent 评测
介绍编码 Agent 评测的任务集、隔离运行与重复试验,说明如何比较不同模型、提示和工具配置的质量及成本。区分代码检索效果、代码生成率与真实团队收益,帮助准备人工智能工程面试的读者定义成功标准,分析交付速度和缺陷变化。
- Agent 框架
介绍 Agent 框架在模型调用、工具执行和状态管理中的职责,比较 LangChain、LangGraph 与手写实现。讲解状态归并、并行更新和常见框架的定位,帮助准备智能体开发面试的读者结合控制流、恢复与观测需求解释选型依据及接入成本。
大数据
- Lec 1: MapReduce
整理 MapReduce 论文与课程中的批量计算模型,通过单词计数讲解映射、分组、分区和归约的执行流程。覆盖任务重执行、输出提交、数据局部性及倾斜处理,帮助学习分布式系统并准备面试的读者分析节点故障与确定性,理解合并优化和备份任务的使用条件。
- 实验 1: MapReduce
整理 MIT MapReduce 实验的实现笔记,按所选课程版本介绍基本配置、协调器、工作节点与远程调用。围绕任务状态、超时重派、状态校验和输出提交,帮助学习分布式系统并准备相关面试的读者推演失败恢复,明确各组件职责,再通过实验测试验证执行结果。
运维与云原生
- 运维与 SRE
面向 SRE、运维开发、DevOps 和承担线上排障的后端岗位,整理 Linux、容器、集群编排、监控和故障响应。提供流量接入与共享基础专题的原理文章及面试练习,帮助求职者确定复习重点、掌握核心运行机制,沿用户请求路径收集证据,并解释定位与恢复过程。
- Linux 性能排查
介绍 Linux 性能排查中的负载、处理器、内存和磁盘指标,比较利用率与等待状态所表达的问题。结合热点线程、内存压力、低处理器占用但高延迟,以及压力停顿和容器限流,帮助准备运维及后端面试的读者按症状选择工具,用资源证据定位请求瓶颈。
- Linux 常用命令与文件权限
介绍 Linux 常用命令如何通过管道完成文本分析与文件操作,比较文本筛选、替换和字段处理工具。讲解用户与目录权限、默认权限掩码、访问控制列表及重定向,帮助准备运维面试的读者组合命令,判断输出位置和管道退出状态,并分析权限不足的原因。
- 磁盘与文件系统排查
介绍 Linux 文件系统中的目录项、索引节点和数据块,围绕容量、文件删除与缓存写回讲解排查。结合空间统计差异、仍被打开的删除文件和稀疏文件,帮助准备运维面试的读者定位磁盘或节点耗尽,解释删除后空间未释放,并区分缓存、写回与持久化。
- 进程管理与信号
介绍 Linux 进程管理中的启动、停止和子进程回收,区分用户态、内核态及常见进程状态。讲解信号处理、父子关系、后台运行和服务托管,帮助准备运维面试的读者分析僵尸进程与退出行为,选择终止方式,并检查服务依赖、重启策略和资源清理责任。
- Linux 网络排查
按域名解析、连接建立、安全握手和应用响应介绍 Linux 网络排查,讲解端口状态、抓包与防火墙规则路径。结合连接堆积和请求分段耗时,帮助准备运维及后端面试的读者选择命令收集证据,区分超时发生的阶段,并分析请求未到达或响应缓慢的原因。
- 容器原理
介绍 Linux 容器作为受隔离和资源约束的进程集合,比较容器与虚拟机的运行方式。讲解命名空间、控制组和联合文件系统,帮助准备运维或后端面试的读者解释进程能够看到哪些资源,分析配额与文件分层的作用,并判断共享内核下的安全隔离边界。
- Docker 镜像与 Dockerfile
介绍 Docker 镜像的文件系统层与运行配置,讲解构建指令、层复用、缓存和多阶段优化。比较容器可写层、数据卷及挂载方式,帮助准备运维面试的读者分析镜像体积和构建速度,选择持久存储,并检查镜像标识、构建输入与密钥处理的使用边界。
- Kubernetes 架构
介绍 Kubernetes 通过控制循环协调容器工作负载的机制,讲解控制平面与工作节点的组件分工。沿声明、创建和调度到实际运行追踪请求,说明集群状态存储、接口访问及秘密数据加密,帮助准备云平台与运维面试的读者解释协调过程和各组件的故障边界。
- Pod:生命周期、探针与资源
介绍 Pod 中紧密协作容器的组成与生命周期,讲解运行状态、启动存活就绪探针及资源请求和限制。结合服务质量等级、调度约束、弹性伸缩和优雅终止,帮助准备集群运维面试的读者分析异常状态,检查请求排空,并区分调度依据与运行时资源控制。
- 工作负载、Service 与集群网络
介绍 Kubernetes 工作负载如何维护应用副本,比较控制器用途、滚动更新与回滚。讲解服务入口、配置更新、集群网络和网络策略,帮助准备运维面试的读者推演请求到达实例的路径,分析外部流量策略,并根据有状态、无状态及批处理需求选择管理方式。
- 可重复交付
介绍可重复交付如何让同一份已验证产物逐级进入生产,讲解镜像标识、多阶段构建和流水线晋升。结合数据库变更、无损替换、构建缓存与终止信号,帮助准备后端工程面试的读者解释发布证据,分析流水线失败,并检查凭据和产物来源的管理方式。
- 监控与告警
介绍监控采集与告警处置的分工,讲解 Prometheus 组件、指标类型、服务和资源指标及规则设计。覆盖监控高可用、速率计算和分位数聚合,帮助准备可靠性面试的读者选择可行动的告警条件,明确统计范围,并判断不同指标能否正确反映请求质量与容量压力。
- 可观测性
介绍可观测性中指标、结构化日志和分布式追踪的分工,讲解关联标识、上下文传播与遥测管道。通过告警下钻、采样和分位数聚合,帮助准备后端面试的读者把总体症状关联到具体请求,分析尾部采样完整性,并判断不同信号能提供的诊断证据。
- SRE 的职责与工作方式
介绍站点可靠性工程的职责与实践,说明用软件工程方法改善可靠性、减少重复操作及相关岗位的分工。讲解错误预算策略、消耗速率、故障注入和混沌实验,帮助准备可靠性岗位面试的读者解释交付速度与稳定性的取舍,并设计实验范围、停止条件与结果验证。
- 故障响应与排查
介绍故障响应从定级、止血和定位到恢复验证的处置顺序,按用户请求路径组织跨服务证据。讲解影响范围、回切与事故复盘,帮助准备运维和后端排障面试的读者选择缓解措施,说明何时继续调查或恢复流量,并用业务结果判断服务是否真正恢复。
- 生产故障诊断
介绍生产慢请求的跨层排查方法,从故障时间、影响范围和最近变更入手拆分端到端耗时。结合虚拟机事件、线程栈、数据库与网络证据,帮助准备后端排障面试的读者建立同一时间线,按观测选择下一步检查,并解释低处理器使用率与高尾延迟并存的原因。
- Nginx 与负载均衡
介绍 Nginx 的反向代理、路由和负载均衡,讲解连接模型、容量、代理参数及不同负载分发方式。结合网关错误、代理超时、重试和请求限流,帮助准备运维面试的读者定位上游连接与响应问题,推演路径映射,并检查真实客户端地址的传递和信任范围。
求职与面试准备
- 阿里巴巴 2027 校招岗位
整理阿里巴巴面向 2027 届的 Java 研发岗位公开资料,列出职责、任职要求、资格、地点和原始投递来源。帮助准备后端校招的读者对照技术基础、项目及人工智能应用要求选择复习重点,梳理可展示的真实经历,并在投递前回到招聘原页确认条件和开放状态。
- 百度 2027 校招岗位
整理百度面向 2027 届的北京后端开发岗位公开资料,提供工作职责、任职条件、资格和原始投递入口。帮助准备后端校招的读者根据编程基础、开发能力与项目要求确定复习范围,衔接技术、简历和项目准备,并在投递前核对招聘原页中的最新条件。
- 哔哩哔哩 2027 校招岗位
整理哔哩哔哩面向 2027 届的 Java 后端岗位公开资料,分别列出交易和广告方向的职责、资格、技术要求及投递来源。帮助准备后端校招的读者比较业务方向,选择基础复习和项目表达重点,再回到原始职位页面确认地点、开放状态与具体投递条件。
- 字节跳动 2027 校招岗位
整理字节跳动面向 2027 届的后端岗位公开资料,覆盖交易与广告、抖音直播和飞书方向的职责、要求及来源。帮助准备后端校招的读者比较业务与技术条件,选择计算机基础和项目复习重点,核对资格及加分项,并通过原始招聘入口确认职位开放情况。
- 滴滴 2027 校招岗位
整理滴滴面向 2027 届的 Java 开发岗位公开资料,覆盖代驾和人工智能开发方向的职责、资格、任职要求及来源。帮助准备后端校招的读者比较业务开发与智能应用的能力要求,结合真实项目选择复习重点,并回到原始职位页面核对投递条件及开放状态。
- 2027 校招岗位与投递
整理面向 2027 届且接受 Java 的后端校招岗位公开资料,提供具体职责、资格、任职要求和投递来源。帮助求职者区分基础能力、方向条件与加分项,比较不同公司的岗位范围,再选择技术复习、简历和项目准备内容,并在投递前回查原始职位的开放状态。
- 京东 2027 校招岗位
整理京东面向 2027 届的后端开发岗位公开资料,列出职位职责、资格、地点、任职要求和原始投递入口。帮助准备后端校招的读者核对编程基础与项目经历,识别需要补充的技术范围,衔接简历及项目准备,并在投递前回查招聘来源中的具体条件。
- 快手 2027 校招岗位
整理快手面向 2027 届的 Java 开发与安全方向岗位公开资料,列出职责、资格、通用基础及专项要求。帮助准备后端校招的读者比较业务开发和安全工程的复习范围,按职位区分必需能力与加分项,选择项目表达重点,并回到招聘来源确认投递条件。
- 美团 2027 校招岗位
整理美团面向 2027 届的软件后端、人工智能后端与应用开发岗位公开资料,提供职责、资格、技术要求和来源。帮助准备校招的读者比较各方向需要的基础与专项能力,选择相应技术文章和项目复习内容,并回查原始职位确认投递条件及开放状态。
- 腾讯 2027 校招岗位
整理腾讯面向 2027 届的后台开发岗位公开资料,列出职责、资格、任职要求、加分项和投递来源。帮助准备后端校招的读者对照编程语言、计算机基础与项目能力确定复习重点,整理能解释个人贡献的经历,并在投递前回到原始招聘页面核对具体条件。
- 携程 2027 校招岗位
整理携程面向 2027 届秋招的 Java 开发岗位公开资料,提供工作职责、资格、地点、任职要求与原始投递来源。帮助准备后端校招的读者核对技术基础和项目经历,选择相关复习主题及简历重点,并在投递前回查职位是否开放、适用毕业时间和其他具体条件。
- 小红书 2027 校招岗位
整理小红书面向 2027 届的智能平台和产品工程岗位公开资料,覆盖电商与商业平台的人工智能全栈方向。列出职责、资格、任职要求和投递来源,帮助准备开发校招的读者比较能力范围,选择技术及项目复习重点,并回查原页确认职位条件与开放状态。
- 编码与 SQL 练习
按算法模式、Java 并发和数据库查询组织编码与 SQL 练习,提供输入边界、实现目标、自检条件及相关原理入口。帮助准备后端校招的读者先独立完成代码和查询,再核对结果、复杂度与并发条件,通过题型迁移和执行计划验证检查解题方法是否掌握。
- 研发类面试复习指南
介绍研发类面试如何根据目标职位、编程语言和项目经历选择复习资料,连接岗位要求、通用基础、现场编码及技术专题。帮助求职者区分不同方向的核心能力,确定阅读顺序和学习范围,再结合真实经历安排简历与项目准备,避免把所有技术内容都当作必会。
- 面试准备
提供岗位资料、技术复习、简历和项目准备的阅读入口,当前重点面向 Java 后端校招,包含公开面经、编码与数据库查询练习。帮助求职者根据目标职位和可用时间选择核心内容,独立整理经历、安排复习,再通过作答与实现检查机制理解和面试表达。
- 研发类面试流程
介绍研发类面试中的自我介绍、项目追问、技术问答、编码与数据库查询,以及开放设计问题。说明各环节可以提前准备的经历和验证证据,帮助求职者按招聘通知安排演练,检查表达、实现与推导是否完整,并在面试后记录问题、复盘遗漏和调整复习重点。
- 面经考点与来源
从候选人公开复盘中整理 Java 后端面试考点,标明样本范围、日期依据与原帖来源,连接原理文章、编码和项目练习。帮助准备后端校招的读者了解追问方向并回查出处,区分历史样本与当前岗位要求,再通过独立作答检查机制和边界,避免把样本当作固定题库。
- Java 校招复习范围
面向已有 Java 基础的后端校招求职者,按核心主题、前置知识和停止条件组织复习资料。以两周核心和一个月深入学习为参考,帮助读者结合基础与可用时间选择算法、语言、数据库及项目内容,通过独立作答、编码和迁移练习检查掌握程度,自行安排具体日程。
- 项目准备
介绍面试项目准备如何把课程、个人作品和实习经历整理为可解释、可追问的证据,提供一页项目结构与课程预约示例。围绕个人贡献、技术取舍、验证结果和人工智能辅助开发经历,帮助后端求职者组织回答顺序,并通过独立演练检查细节与真实参与范围。
- 代表题与练习
按知识主题索引已有技术文章中的代表问题,说明公开面经与原理自测的来源边界,提供编码、数据库查询和项目练习入口。帮助准备后端面试的读者先独立回答,再核对考察重点和默认收起的参考回答,回到对应原理补齐遗漏,并避免把公司信息当作固定题库。
- 简历准备
面向 Java 后端校招介绍简历的内容取舍与排列方式,围绕岗位匹配、真实贡献和项目证据讲解写作。提供项目描述示例、可复制的空白模板与投递前核对项,帮助求职者对照职位要求整理技术和经历,检查表述准确性,并准备能够进一步解释的实现细节。
基础知识栏目
- 算法
面向已有编程基础的求职者整理递归、二分、双指针、前缀和、排序、贪心和回溯的复习入口。按前置知识、核心阅读与自检要求组织学习,帮助读者根据问题条件维护状态和不变量,解释算法成立的原因,再完成实现、复杂度分析与边界测试。
- 数据结构
整理数据结构面试的核心与深入阅读入口,覆盖数组、链表、栈、队列、二叉树、搜索树、堆、哈希表和图。帮助求职者先比较访问与修改成本,再根据顺序、查找、范围和极值需求选择结构,通过独立自测检查机制理解后,进入算法模式和现场编码练习。
- 数据建模
围绕一行记录的含义、唯一标识和合法状态介绍数据建模的复习起点,提供数据约束的核心阅读入口。帮助准备数据库面试的读者先用键、非空和引用规则表达业务要求,再衔接事务与索引,结合目标岗位选择是否补充范式及复杂建模内容。
- SQL
按查询、连接和聚合安排 SQL 面试复习,提供使用独立小表的核心阅读与练习入口。帮助准备后端笔试和现场编码的读者实际编写查询,逐行解释空值、连接匹配和统计结果,再进入索引设计与执行计划分析,把查询正确性和访问成本联系起来。
- 基础知识
整理技术面试中的数据结构、算法、操作系统、网络、数据库与缓存知识,提供通用复习顺序和语言方向入口。面向已有编程基础的求职者,帮助读者先完成核心阅读和主题自测,再根据目标岗位补充语言、框架与深入专题,把知识复习落实到问题解释和现场判断。
- Java 算法
面向 Java 现场编码面试整理复杂度分析、滑动窗口、树与图搜索、动态规划和正确性验证的阅读入口。复习从输入约束开始,练习定义状态、解释算法成立的条件,再用边界输入和可复现测试检查实现,逐步建立能够迁移到新题目的解题方法。
- Java 集合
面向 Java 后端面试整理集合复习顺序,先掌握容器选择、动态数组操作成本和哈希映射查找机制,再补有序容器与并发集合。提供核心阅读和深入专题入口,帮助求职者根据顺序、访问方式及线程共享需求选择范围,并通过题目检查原理和使用边界。
- Java 并发编程
面向 Java 后端面试整理并发编程的阅读顺序,从线程与共享状态出发,用内存模型解释可见性,再学习锁、原子类和同步器。提供线程池、异步组合、任务取消与活跃性问题的专题入口,并按追问需要衔接同步框架、性能诊断和虚拟线程。
- Java 数据访问
面向 Java 后端面试整理持久层框架与数据库访问优化,提供查询执行、实体状态、连接池、批处理和分页的专题入口。先按项目使用的框架理解读写链路,再检查关联查询次数与连接占用,最后通过性能测试验证结果规模、分页正确性和事务边界。
- Java 函数式编程
整理 Java 函数式编程的面试复习入口,按表达行为、流水线处理和结果收集的顺序介绍函数表达式、流与收集器。进一步讨论并行流的适用条件,并提供日期时间专题,帮助求职者理解变量捕获、归约规则、线程池竞争和跨时区数据处理。
- Java I/O
整理 Java 文件与网络读写的面试复习入口,从字节和文本处理开始,依次学习缓冲区、通道、非阻塞事件循环与零拷贝。提供原生序列化和资源关闭相关内容,帮助求职者理解数据读取、转换和写出的过程,分析编码、内存占用及对象恢复的使用边界。
- JVM
面向 Java 后端面试整理虚拟机运行机制与排障专题,覆盖字节码、类加载、运行时内存、对象和垃圾回收。建议先掌握内存区域、可达性与回收基础,再按故障问题补充诊断工具和证据分析,并将即时编译优化、具体收集器与启动方案作为深入阅读。
- Java 语言
整理 Java 语言基础的复习入口,覆盖值传递、对象模型、字符串、异常、泛型、注解和反射。面向技术求职者,按基础类型关系到运行时能力安排阅读,通过最小示例和自测解释代码的编译及运行结果,再衔接框架发现类型与生成代码所需的知识。
- Java API 与测试
面向 Java 后端面试整理接口设计、不可变对象、单元测试、测试替身和测试分层的学习入口。先理解合法状态与对象修改边界,再验证正常结果、边界值和失败情况,最后按业务风险选择单元、集成与契约测试,练习用可重复的检查解释代码行为。
- Spring 框架
面向 Java 后端面试整理 Spring 容器、依赖注入、切面、事务、请求处理与自动配置的复习入口。按对象创建和依赖装配到请求、代理及数据库调用的顺序学习,先掌握核心执行过程,再结合项目补充启动流程、扩展点、故障诊断与自定义组件设计。
系统设计资料
- 软件架构
围绕业务边界和系统演进整理软件架构的面试复习入口,覆盖限界上下文、聚合、模块化单体、微服务与渐进迁移。帮助后端求职者结合真实项目解释模型划分、事务范围和依赖约束,分析独立部署的收益、网络故障与迁移成本,再根据岗位要求选择深入主题。
- 可用性工程
围绕服务质量与故障恢复整理可用性工程的复习入口,覆盖服务目标、错误预算、灾难恢复、故障转移和多租户隔离。提供容量余量与成本归因专题,帮助准备系统设计面试的读者把可靠性指标落实到资源、演练和验证步骤,并解释方案的成本与运行约束。
- 分布式数据
从跨服务业务不变量出发整理分布式数据的复习入口,涵盖协调提交、业务补偿、事务发件箱、变更捕获与失败恢复。帮助准备后端面试的读者根据提交范围、同步确认和不一致窗口选择主题,比较补偿能力及事件交付要求,并分析中断后的状态恢复。
- 分布式系统
围绕多节点状态、复制和故障恢复整理分布式系统的面试复习入口,涵盖主备复制、共识协议、分区约束、一致性模型与跨地域设计。帮助后端求职者分析网络延迟、节点失效和并发写入下的服务保证,解释确认与读取条件,再根据项目选择深入专题。
- 架构决策与演进
面向明确考察架构经验的求职面试,整理技术选型、架构迁移、技术债、设计评审与事故复盘的专题入口。帮助资深后端候选人根据真实项目说明约束、备选方案和取舍,准备可追问的验证与回滚证据,并将跨团队协作问题联系到具体设计决定及结果。
- 微服务治理
整理微服务治理中的服务发现、配置分发、网关路由与灰度发布,提供控制平面和数据平面故障边界的阅读入口。帮助准备后端面试的读者串联实例注册、健康检查、请求流转和版本上线,分析状态变化与运行故障,再根据项目选取需要深入解释的机制。
- MIT 6.824
介绍 MIT 分布式系统课程通过论文阅读和实验理解运行机制的学习方式,提供课程官网及现有讲义笔记入口。本目录保留批处理模型与实验实现内容,帮助准备分布式面试的读者把任务调度、数据流转和故障恢复联系起来,按所选学期要求开展实现练习。
- [WIP]面向对象程序设计
介绍面向对象程序设计在低级设计面试中的任务与考察范围,比较类结构设计和产品系统设计关注的问题。围绕职责、对象关系和设计原则,帮助软件工程求职者从业务场景划分对象,解释类之间的协作与扩展方式,并进入已有专题练习;本栏目仍在整理中。
- 生产工程
围绕构建、交付、观测和故障诊断整理生产工程的面试复习入口,涵盖依赖管理、容器流水线、日志指标和分布式追踪。帮助后端求职者沿发布到运行的过程选择专题,把虚拟机、线程、数据库与网络证据联系起来,解释问题定位、恢复及验证方法。
- 服务可靠性
按调用链和容量边界整理服务可靠性的面试复习入口,涵盖超时、取消、重试、限流、熔断、降级与幂等。帮助后端求职者分别理解等待时间、下游负载、资源竞争和业务副作用的控制方式,再分析各项保护的组合顺序,通过故障场景检查系统能否恢复。
- 系统设计
围绕需求、容量、数据、通信和故障恢复整理系统设计的面试复习入口,提供讨论流程、架构演进、数据拆分与案例练习。帮助求职者先明确业务约束和成功条件,再沿读写路径选择组件,比较增长与故障场景中的方案,并用可验证的结果说明设计取舍。
已有算法题解
- LeetCode 101
介绍按知识点整理的 LeetCode 101 刷题资源,提供原始项目、电子文档和在线阅读入口,说明题解语言及适用读者。面向已有编程基础但缺少刷题经验的求职者,帮助选择代表性问题,按主题复习常见算法,再通过原始资料继续完成实现和思路对照。
- 134. 加油站
讲解力扣第 134 题加油站的环路起点选择,从总油量和局部失败区间推导贪心策略,提供 Java 实现与复杂度分析。帮助准备算法面试的读者解释哪些候选起点可以一起跳过,判断是否能够完成一周行驶,并根据累计差值验证最终答案的成立条件。
- 数组篇
按元素移动、数组旋转、频次统计、矩阵遍历和前缀和整理力扣数组练习,列出难度、原题及已有题解入口。帮助准备算法面试的读者选择同类问题,比较下标转换、原地修改与边界处理的思路,再通过实际编码和复杂度分析检查解法能否迁移。
- 189. 轮转数组
讲解力扣第 189 题轮转数组的向右移动过程,比较临时数组模拟与分段反转,提供 Java 参考实现和复杂度分析。帮助准备算法面试的读者从移动步数推导位置变化,处理超过数组长度的轮转,核对原地修改的结果,并比较不同方法的额外空间成本。
- 238. 除自身以外数组的乘积
讲解力扣第 238 题除自身以外数组乘积的前缀与后缀分解,说明每个位置怎样组合左右两侧的结果。提供 Java 实现和复杂度分析,帮助准备算法面试的读者在禁用除法的条件下复用累计乘积,推导初始化与下标边界,并检查零值对结果的影响。
- 283. 移动零
讲解力扣第 283 题移动零的快慢指针解法,依次扫描非零元素、压缩写入并在尾部补零,提供 Java 实现。帮助准备数组面试的读者区分扫描位置和写入位置,说明相对顺序为何保持,检查全零及连续非零的输入,并分析原地修改的时间与空间成本。
- 289. 生命游戏
讲解力扣第 289 题生命游戏的矩阵同步更新,利用额外状态同时保存细胞的旧值和新值,提供 Java 参考实现。帮助准备算法面试的读者推演邻居统计、状态编码和最终恢复,避免原地修改污染后续判断,并分析遍历顺序、矩阵边界与额外空间需求。
- 304. 二维区域和检索 - 矩阵不可变
讲解力扣第 304 题不可变矩阵的二维区域和查询,通过累计矩形之间的包含关系推导容斥公式。提供初始化、查表的 Java 实现与复杂度分析,帮助准备算法面试的读者把重复求和转为预处理,检查坐标边界,并区分构建成本、存储空间和单次查询成本。
- 396. 旋转函数
讲解力扣第 396 题旋转函数的递推解法,从元素位置变化推导相邻旋转加权和与数组总和的关系。提供 Java 实现和复杂度分析,帮助准备算法面试的读者复用上一次计算,遍历全部旋转状态取最大值,并解释递推如何把重复求和降为一次线性扫描。
- 41. 缺失的第一个正整数
讲解力扣第 41 题缺失的第一个正整数,利用答案范围把有效数字交换到对应下标,提供 Java 实现和复杂度分析。帮助准备算法面试的读者判断哪些值可以忽略,处理重复元素并保证交换终止,再扫描未匹配的位置,验证线性时间和常数额外空间的要求。
- 419. 棋盘上的战舰
讲解力扣第 419 题棋盘上的战舰,利用战舰水平或竖直连续且彼此分隔的条件,通过上方与左侧格子识别起点。提供 Java 实现和复杂度分析,帮助准备矩阵算法面试的读者从题目约束简化搜索,避免重复计数,并验证一次遍历和常数额外空间的思路。
- 442. 数组中重复的数据
讲解力扣第 442 题数组中重复的数据,利用值域与下标的对应关系,在原数组中累加数组长度记录出现次数。提供 Java 实现和复杂度分析,帮助准备算法面试的读者理解修改后如何取模恢复原值,通过计数阈值识别重复元素,并检查原地存储的条件。
- 448. 找到所有数组中消失的数字
讲解力扣第 448 题查找数组中消失的数字,比较额外标记与原地累加,说明值域、下标映射和取模恢复的关系。提供 Java 实现与复杂度分析,帮助准备算法面试的读者复用输入数组记录出现信息,再扫描未标记位置,分析修改输入与额外空间的取舍。
- 453. 最小操作次数使数组元素相等
讲解力扣第 453 题使数组元素相等的最小操作次数,把多个元素同时加一转化为相对差值问题。提供公式推导、Java 实现与复杂度分析,帮助准备算法面试的读者解释等价操作为何保留答案,根据最小元素累加差值,并用线性遍历替代逐次模拟。
- 48. 旋转图像
讲解力扣第 48 题旋转图像,通过正方形矩阵中四个对应位置的循环交换完成原地旋转。提供坐标推导、Java 实现和复杂度分析,帮助准备算法面试的读者确定遍历范围,避免重复交换,检查奇偶边长及角落位置,并验证常数额外空间下的旋转结果。
- 498. 对角线遍历
讲解力扣第 498 题对角线遍历,把坐标和相同的元素组织为一层,再按层数奇偶调整访问方向。提供起止位置推导、Java 实现与复杂度分析,帮助准备模拟题面试的读者维护遍历状态,处理非正方形矩阵的边界,并核对每个元素是否恰好输出一次。
- 54. 螺旋矩阵
讲解力扣第 54 题螺旋矩阵,使用方向和访问记录按右、下、左、上的顺序读取元素。提供 Java 实现与复杂度分析,帮助准备算法面试的读者维护当前位置,判断越界和重复访问时何时转向,检查单行单列及矩形边界,并验证遍历的结束条件。
- 59. 螺旋矩阵 II
讲解力扣第 59 题螺旋矩阵生成,将顺时针遍历方法迁移为依次填入递增数字,提供 Java 实现与复杂度分析。帮助准备算法面试的读者协调当前位置、方向和待填值,判断边界与已填区域的转向条件,检查中心位置,并验证所有元素填完后正确结束。
- 645. 错误的集合
讲解力扣第 645 题错误的集合,寻找一个重复数字和一个缺失数字,比较额外出现标记与原地放置两种解法。提供实现和复杂度分析,帮助准备数组面试的读者利用值域建立下标关系,处理交换中的重复值,并区分修改输入与使用额外存储的成本。
- 665. 非递减数列
讲解力扣第 665 题非递减数列,定位相邻逆序后分析降低前一元素或提高后一元素的条件。提供 Java 实现与复杂度分析,帮助准备算法面试的读者在最多修改一次的约束下检查局部选择,处理首尾边界,再验证整个序列是否满足非递减要求。
- 697. 数组的度
讲解力扣第 697 题数组的度,记录每个值的出现次数、首次位置和末次位置,寻找保持最高频次的最短区间。提供 Java 实现和复杂度分析,帮助准备算法面试的读者组合多个统计量,比较最高频次并列时的候选长度,并解释连续子数组的边界选择。
- 73. 矩阵置零
讲解力扣第 73 题矩阵置零,利用首行和首列保存行列标记,并额外记录它们自身是否需要清零。提供 Java 实现与复杂度分析,帮助准备算法面试的读者区分原始零值和新增标记,安排扫描及修改顺序,验证原地复用空间时不会污染后续判断。
- 哈希表篇
按查找、插入删除、位置索引、频次统计和前缀和整理力扣哈希表练习,列出题目难度与原题入口。帮助准备算法面试的读者比较映射设计、重复元素和集合交集等问题,选择合适的键值含义,练习记录位置及次数,并通过同类题目验证建模方法。
- Re:从零开始的力扣刷题生活
介绍按知识点分类的力扣练习路线,提供原始推荐路线、本站题解进度及已有专题入口。面向具备编程基础的求职者,帮助读者在数组、链表和哈希表等类型中选择练习,比较相近问题的状态与边界,再结合已提供的题解核对实现和复杂度分析。
- 链表篇
按插入删除、遍历、旋转反转、高精度加法、合并和双指针整理力扣链表练习,提供题目难度与原题入口。帮助准备算法面试的读者选择同类问题,练习节点定位、链接更新及头尾边界,通过连续操作核对结构完整性,再比较不同方法的时间和空间成本。
- 19. 删除链表的倒数第 N 个结点
讲解力扣第 19 题删除链表倒数节点,使用固定间距的双指针定位目标前驱,并通过虚拟头节点统一删除操作。提供 Java 实现与复杂度分析,帮助准备算法面试的读者推演同步移动,处理删除首节点的边界,检查链接更新后的结果,并解释一次遍历的条件。
- 237. 删除链表中的节点
讲解力扣第 237 题只持有目标节点时的删除操作,利用后继节点的值与链接完成替换,提供 Java 实现和复杂度分析。帮助准备链表面试的读者理解目标非尾节点的必要条件,区分修改节点值和解除节点链接,并根据题目可用信息解释操作为何成立。
- 707. 设计链表
讲解力扣第 707 题设计链表中的下标读取、头尾插入和指定位置删除,提供 Java 链式及数组式列表的参考实现。帮助准备数据结构面试的读者维护头尾、长度和索引边界,核对连续增删后的访问结果,并比较节点定位、链接修改及数组搬移的成本。
工具与框架
- 使用 Git 进行第一次提交
介绍在独立练习目录中完成 Git 第一次本地提交的步骤,从创建仓库到编辑、暂存、提交和核对结果。帮助初学者通过命令观察工作区、暂存区与提交之间的关系,确认下一次提交实际包含哪些修改,建立可解释的版本控制操作习惯,为项目协作和工程面试打下基础。
- 2.1. Git 的安装与配置
介绍 Git 的下载、安装与本地配置,提供工具来源和基础命令,说明用户名、邮箱及常用命令缩写的设置方式。帮助初次使用版本控制的读者准备命令行环境,理解提交身份与配置范围,再继续完成创建仓库和第一次提交的练习,为项目开发与工程基础复习做准备。
- 2. Git 基本使用
介绍 Git 基本使用栏目的学习目标,从日常文件变化和版本管理场景出发,提供安装配置与入门操作的阅读方向。帮助初学者先准备命令行环境,理解仓库、暂存区和提交等概念,再结合已有教程练习保存修改,为阅读分支、协作及其他命令建立基础。
- Git
介绍 Git 用对象和引用保存项目快照与开发历史的方式,围绕工作区、暂存区和仓库解释日常命令。比较合并、变基、冲突处理与撤销操作,帮助准备工程面试的读者判断命令改变哪个区域,组织可审查的提交,并理解获取远端变化和补充遗漏文件的流程。
- 1. 版本控制简介
从文档多版本与协作修改的问题介绍版本控制,说明文件变化记录、差异比较和历史恢复的用途。比较集中式与分布式系统的仓库组织方式,帮助初次学习 Git 的读者理解本地历史和远端协作的关系,明确版本控制可以管理什么,再进入安装配置及日常操作练习。
ChatGPT 入门与历史笔记
- ChatGPT 的注册与充值
记录作者在 2024 年使用 ChatGPT 的账号注册、应用商店订阅及接口额度购买经历,内容反映当时的模型与支付环境。供新手了解历史操作流程,区分对话产品订阅和开发接口用量;具体功能、价格、地区与支付方式需使用当前产品信息核对,不能直接视为现行操作指南。
- ChatGPT 简明指南
介绍面向新手的 ChatGPT 简明指南及其组织方向,从大语言模型原理出发,说明理解模型能力与使用场景的学习目标。帮助初次接触对话式人工智能的读者选择已有入门内容,认识提示技巧与基本原则的联系,并区分当前可阅读的文章和后续计划补充的应用案例。
- 大语言模型(LLM)
用简化示例介绍大语言模型根据已有上下文预测后续内容的方式,说明预训练和微调如何影响文本生成倾向。面向初次接触人工智能的读者,讲解训练数据、特定场景、计算资源与对话产品的联系,帮助理解模型学习过程,并区分语言模型本身和基于模型构建的应用。
站点使用指南
- Coding 101
Coding 101 是面向技术岗位求职者的就业准备网站,为校招、社招和转岗读者提供岗位路线、技术文章、面试自测及算法和项目资料。帮助你从目标职位确定复习范围、顺序与回答深度,先掌握核心知识,再通过独立作答和实践检查理解,准备面试中的机制解释与场景分析。