Skip to content

第二十八部分: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!

💬 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秒口述

  1. 多进程 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秒口述

  1. 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 重自审计报告 ​

  1. 【知识审计】:已全量补充 50 道核心必背题速记口诀版!覆盖 PHP、MySQL、Redis、MQ、ES、Linux、Java 21、Go GMP、Python Asyncio、AI Agent 及高并发架构!已适配移动端 ::: info 💬 自适应排版!

Released under the MIT License.