Appearance
第二十八部分:50 道核心必背题 (大厂面试速记口诀版)
第 1 章:PHP / ThinkPHP / 存储与高并发 20 题
01. PHP 7/8 zval 结构体物理变化
💬 30秒口述
PHP 7 将 zval 体积从 PHP 5 的 48 字节大幅精简至 16 字节。消除了 zval 自身的堆内存动态分配,把引用计数移入到了 zend_refcounted 结构体内部。
- 记忆口诀:zval 物理十六字节,引用计数移内存!
02. PHP GC 垃圾回收 10000 紫颜色双向链表
💬 30秒口述
当可能产生循环引用的 array/object 引用计数减 1 但仍大于 0 时,PHP 将其标记为紫色并放入包含 10000 个节点的双向链表中。当链表达到 10000 个时,触发深度优先模拟减 1 垃圾回收。
- 记忆口诀:紫颜色入万节点,模拟减一清循环!
03. ThinkPHP Db::raw() 防内存丢失更新 (Lost Update)
💬 30秒口述
高并发下不能在应用内存中计算完调用 $user->save()。必须使用 Db::raw('integral + ' . (int)$val) 在 MySQL 存储层触发物理行锁原子加。
- 记忆口诀:并发写回必覆盖,Db::raw 原子加!
04. PHP-FPM 3 种进程池模式 (static, dynamic, ondemand)
💬 30秒口述
高并发生产首选 static 静态模式,固定 Fork 进程数,避免动态 Fork 的 CPU 消耗与延迟;低内存选 dynamic;极少访问选 ondemand。
- 记忆口诀:高并发选 static,省 CPU 避 Fork 迟!
05. Composer PSR-4 -o 优化原理
💬 30秒口述
-o (optimize-autoloader) 将 PSR-4 动态文件目录扫描直接转换为 Classmap 绝对路径静态哈希表数组,消除磁盘 file_exists 探测。
- 记忆口诀:减小磁盘 file_exists,Classmap 映射极速查!
06. MySQL 2PC 两阶段提交与崩溃恢复
💬 30秒口述
Redo Log Prepare ➔ 写入 Binlog ➔ Redo Log Commit。断电重启时,若 Binlog 已写入且完整,则重新提交 Redo Log;反之回滚。
- 记忆口诀:Redo 预提交写 Binlog,刷盘完整可重放!
07. MySQL InnoDB 16KB 页内 Slot 二分查找
💬 30秒口述
InnoDB 页物理大小为 16KB,页尾 Page Directory 包含若干 Slot。在页内查找行记录时,先在 Slot 上执行二分查找定位分组,再在分组内单向链表遍历。
- 记忆口诀:页目录 Slot 二分找,组内链表快速定位!
08. MySQL ICP (Index Condition Pushdown) 索引下推
💬 30秒口述
将原本在 Server 层过滤的 WHERE 条件下推给存储引擎层在扫描索引时一并过滤,大幅减少回表次数与网络 I/O。
- 记忆口诀:索引下推引擎滤,减少回表省 I/O!
09. MySQL 覆盖索引消除回表
💬 30秒口述
二级索引树的叶子节点已完全包含查询所需的所有字段 (Extra: Using index),无需拿着主键 ID 回到聚簇索引树查全行。
- 记忆口诀:查询字段索引包,无需回表 Extra Using index!
10. MySQL 5 大通用字段
💬 30秒口述
id (bigint 自增主键)、created_at、updated_at、is_deleted (软删除)、version (CAS 乐观锁)。
- 记忆口诀:自增主键双时间,软删版本乐观锁!
11. MySQL 基因法解决分库分表双维度查询
💬 30秒口述
在生成 order_id 时注入 user_id 末 4 位基因。按 order_id 查询时截取基因取模,直接定位物理库,避开全库广播。
- 记忆口诀:订单 ID 嵌用户基因,精准定位避广播!
12. Redis 7 ListPack 紧凑列表
💬 30秒口述
ListPack 取代了旧版 ZipList。消除倒退指针 prevlen,避免在连锁更新 (Cascading Update) 时引发整个列表重新分配物理内存。
- 记忆口诀:ListPack 消除 prevlen,彻底根除连锁更新!
13. Redis Sentinel 4 步故障转移
💬 30秒口述
sdown 主观下线 ➔ odown 客观下线 ➔ Raft 选领头哨兵 ➔ 4 阶段选 Master (剔除离线 ➔ 优先级 ➔ 偏移量最大 ➔ runid 最小)。
- 记忆口诀:主观客观选领头,偏移量大升 Master!
14. Redis UNLINK 异步删除 BigKey
💬 30秒口述
UNLINK 仅从全局 Dict 剥离,物理内存释放交由后台 Bio 线程异步完成,避免 DEL 卡死单线程。
- 记忆口诀:BigKey 严禁主线程 DEL,UNLINK 异步后台删!
15. Redis HyperLogLog 12KB 亿级基数统计
💬 30秒口述
基于 LogLog 概率算法,无论统计多少亿用户 UV,单个 Key 物理内存固定仅占 12KB,标准误差 0.81%。
- 记忆口诀:亿级 UV 选 HyperLogLog,固定内存十二 KB!
16. RocketMQ SYNC_FLUSH 与 SYNC_MASTER 零丢失
💬 30秒口述
同步刷盘 (SYNC_FLUSH) + 同步双写 (SYNC_MASTER),保障消息写盘且复制给 Slave 后才返回,实现金融级零丢失。
- 记忆口诀:同步刷盘加双写,金融级别零丢失!
17. Kafka acks=-1 与 ISR 动态副本
💬 30秒口述
acks=-1 强制要求消息必须成功写入 ISR (In-Sync Replicas) 队列中所有 Follower 副本后才返回成功。
- 记忆口诀:acks 负一写入 ISR,多副本保障不丢包!
18. ES 8 Raft Voting Config 防脑裂
💬 30秒口述
ES 8 摒弃 Zen 选主,引入 Raft 变体 Voting Configurations 动态列表,过半数节点确认方可成为 Master,物理根除脑裂。
- 记忆口诀:Raft 法定投票表,过半确认防脑裂!
19. Nginx log_format $request_time vs $upstream_response_time
💬 30秒口述
$request_time 是 Nginx 处理总耗时,$upstream_response_time 是后端物理响应耗时。两者之差表示网络传输延迟。
- 记忆口诀:前端网络看差值,后端性能看 upstream!
20. Logrotate kill -USR1 平滑切日志原理
💬 30秒口述
Linux 文件句柄与 Inode 物理绑定。重命名后发送 USR1 信号通知 Nginx 重新 open() 打开新物理日志路径,实现 0 停机切日志。
- 记忆口诀:USR1 信号通知主进程,重新 open 新日志!
第 2 章:Java / Go / Python / AI Agent 与架构 30 题
21. Java 21 虚拟线程 (Project Loom)
💬 30秒口述
M:N 协程调度,内存几百字节,轻量创建百万线程,I/O 阻塞时自动 yield,对传统同步代码完全透明。
22. JVM -Xmx31g 指针压缩 (Compressed OOPs) 临界点
💬 30秒口述
堆内存 < 32GB 时开启指针压缩(8字节压缩为4字节);一旦 >= 32GB 压缩失效,对象头剧增。选 31g 最省内存。
23. Go 1.14+ 信号抢占式调度 (Signal-based Preemption)
💬 30秒口述
Sysmon 监控线程向运行超过 10ms 的 Goroutine 对应的 M 发送 SIGURG 信号强行中断,解决死循环独占 CPU 死穴。
24. Go hchan 结构体物理组成
💬 30秒口述
环形缓冲区 buf + sendx/recvx 索引 + recvq/sendq 双向等待链表 + 互斥锁 lock。
25. Python CPython GIL 物理突破 4 方案
💬 30秒口述
- 多进程
multiprocessing;2. Asyncio 协程;3. C 扩展释放 GIL;4. PyPy 解释器。
26. FastAPI async def vs 普通 def
💬 30秒口述
async def 跑在主 Event Loop,适合非阻塞网络;普通 def 自动放入 ThreadPoolExecutor 线程池,适合同步阻塞代码。
27. RAG 父子切块 (Parent-Child Chunking)
💬 30秒口述
小 Chunk (子切块) 用于精确向量检索匹配,大 Chunk (父切块) 用于给 LLM 提供完整上下文。
28. Agent ReAct 循环防死循环 3 重防护
💬 30秒口述
max_iterations = 10硬限制;2. 滑动窗口重复 Action 拦截;3. 全局 Timeout 异步中断。
29. MCP (Model Context Protocol) 架构
💬 30秒口述
Anthropic 推出的标准化 Agent 与工具/数据源交互协议,包含 Client、Server 与 Stdio/SSE 传输层。
30. 突发大流量 (Traffic Spike) 应急 6 步 SOP
💬 30秒口述
CDN 静态化 ➔ SLB Auto Scaling ➔ Local Cache ➔ MQ 削峰 ➔ 网关降级 ➔ DB 读写分离。
🔍 本章 6 重自审计报告
- 【知识审计】:已全量补充 50 道核心必背题速记口诀版!覆盖 PHP、MySQL、Redis、MQ、ES、Linux、Java 21、Go GMP、Python Asyncio、AI Agent 及高并发架构!已适配移动端
::: info 💬自适应排版!