<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>测试 on Liangweidong's blog</title><link>https://liangweidonggood.github.io/tags/%E6%B5%8B%E8%AF%95/</link><description>Recent content in 测试 on Liangweidong's blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Sun, 15 Dec 2019 00:00:00 +0800</lastBuildDate><atom:link href="https://liangweidonggood.github.io/tags/%E6%B5%8B%E8%AF%95/index.xml" rel="self" type="application/rss+xml"/><item><title>面试软技能 + 智力题：技术之外的硬通货</title><link>https://liangweidonggood.github.io/p/mianshi-ruanjineng-zhili-ti/</link><pubDate>Sun, 15 Dec 2019 00:00:00 +0800</pubDate><guid>https://liangweidonggood.github.io/p/mianshi-ruanjineng-zhili-ti/</guid><description>&lt;img src="https://liangweidonggood.github.io/p/mianshi-ruanjineng-zhili-ti/image/cover.jpg" alt="Featured image of post 面试软技能 + 智力题：技术之外的硬通货" /&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;本文写于 2019 年 12 月&lt;/strong&gt;——经济下行期，面试软技能 + 智力题权重上升。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="一面试软技能清单"&gt;一、面试软技能清单
&lt;/h2&gt;&lt;h3 id="11-沟通能力"&gt;1.1 沟通能力
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;STAR 法则&lt;/strong&gt;：Situation（情境）/ Task（任务）/ Action（行动）/ Result（结果）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用数据说话&lt;/strong&gt;：不说&amp;quot;做了高并发系统&amp;quot;，说&amp;quot;支持 10 万 QPS、可用性 99.99%&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;结论先行&lt;/strong&gt;：先说结论，再说过程&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;听不懂就问&lt;/strong&gt;：面试官也欣赏&amp;quot;敢问&amp;quot;的人&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="12-抗压能力"&gt;1.2 抗压能力
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;接受挑战&lt;/strong&gt;：不回避难题&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;承认边界&lt;/strong&gt;：不会就说不会，但说明学习路径&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;情绪稳定&lt;/strong&gt;：不与面试官争论&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="13-学习能力"&gt;1.3 学习能力
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;学习路径&lt;/strong&gt;：展示如何学一项新技术&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;举一反三&lt;/strong&gt;：用类比说明理解深度&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;总结输出&lt;/strong&gt;：博客 / GitHub / 技术分享&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="14-团队协作"&gt;1.4 团队协作
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;冲突处理&lt;/strong&gt;：如何处理技术分歧&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码评审&lt;/strong&gt;：如何给别人 review&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;知识传递&lt;/strong&gt;：如何给团队培训&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="二智力题分类"&gt;二、智力题分类
&lt;/h2&gt;&lt;h3 id="21-推理题"&gt;2.1 推理题
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;经典题&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;蓝眼岛&lt;/strong&gt;：岛上有蓝眼/棕眼两种人，每天傍晚有人离岛。岛主说&amp;quot;你们中间有蓝眼的人&amp;quot;，第二天所有蓝眼都离岛了，为什么？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;解法&lt;/strong&gt;：n=1 时自己会走（如果自己是棕眼，岛主的话无意义），所以当 n 个人时，递归 n-1 后第 n 步自己走&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;疯狗&lt;/strong&gt;：村里有 50 条狗，其中若干是疯狗（不表现出任何症状），每天傍晚杀掉所有疯狗。村民不知道自己是疯狗。第几天杀完？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;解法&lt;/strong&gt;：第 49 天（如果有 1 条疯狗，当天就杀光；以此类推）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;耳光&lt;/strong&gt;：100 个逻辑学家围成一圈，每人头上一个数（红/蓝），能看见其他人看不见自己。每晚有人按规则打耳光。三天后耳光声响了，怎么推理？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;解法&lt;/strong&gt;：递归 + 公共知识&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="22-二进制问题"&gt;2.2 二进制问题
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;经典题&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;毒酒问题&lt;/strong&gt;：1000 桶酒，1 桶有毒，10 只小白鼠，24 小时找出毒酒。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;解法&lt;/strong&gt;：每桶编号二进制，每只老鼠喝对应位为 1 的酒。24h 后看哪几只死，二进制转十进制就是毒酒编号&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;砝码问题&lt;/strong&gt;：1-100 找最重 / 最轻的多少次？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;解法&lt;/strong&gt;：天平分组（3 进制）
&lt;ul&gt;
&lt;li&gt;找最重：1 次分 3 组&lt;/li&gt;
&lt;li&gt;找最重 + 最轻：⌈n/3⌉ 次&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="23-先手必胜"&gt;2.3 先手必胜
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;经典题&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;取石子&lt;/strong&gt;：100 个石子，每次取 1-3 个，先取必胜？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;解法&lt;/strong&gt;：必胜点为 4 的倍数（先手凑到 4 的倍数必胜）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;翻硬币&lt;/strong&gt;：N 枚硬币排成一行，每次翻一枚 + 邻接一枚，所有正面朝上为赢。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;解法&lt;/strong&gt;：分奇偶讨论&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="24-水桶问题"&gt;2.4 水桶问题
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;经典题&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;3 升和 5 升&lt;/strong&gt;：如何量出 4 升？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;解法&lt;/strong&gt;：3L 倒满 5L → 5L 倒掉 → 3L 倒进 5L → 再取 3L 倒满 → 5L 已有 3L 只能再装 2L → 3L 剩 1L → 5L 倒空 → 1L 倒入 5L → 再取 3L → 4L 搞定&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;8 升和 5 升&lt;/strong&gt;：量出任意整数升&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="25-赛马问题"&gt;2.5 赛马问题
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;经典题&lt;/strong&gt;：25 匹马，每次只能 5 匹比赛，最少几次找出最快的 3 匹？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解法&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;6 次&lt;/strong&gt;（无计时器）/ &lt;strong&gt;5 次&lt;/strong&gt;（有计时器）&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;第 1-5 轮：5 组比赛，每组 5 匹（共 25 匹）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 找出每组最快的 1 匹（A1, B1, C1, D1, E1）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;第 6 轮：A1, B1, C1, D1, E1 比赛
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 排序：A1 &amp;gt; B1 &amp;gt; C1 &amp;gt; D1 &amp;gt; E1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;最快的 3 匹：A1 + A2 + A3 或 B1 或 B2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- A1：确定最快
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- A2：A 组第二
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- A3 / B1 / B2：竞争第二、第三
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;A3 比 B1：需要第 6 轮 A1, B1, C1 + A2, A3, B1 比赛
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 答案 6 次
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="26-过河过桥"&gt;2.6 过河/过桥
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;经典题&lt;/strong&gt;：4 人过桥，1/2/5/10 分钟，最少几分钟？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解法&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1+2 过，1 回 → 3 分钟&lt;/li&gt;
&lt;li&gt;5+10 过，2 回 → 12 分钟&lt;/li&gt;
&lt;li&gt;1+2 过 → 2 分钟&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;总计 17 分钟&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="27-灯泡开关"&gt;2.7 灯泡开关
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;经典题&lt;/strong&gt;：3 个开关控制 3 个灯泡（楼下看不见楼上），只能上楼 1 次，怎么确定对应关系？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解法&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;开 1 号 5 分钟 → 关 1 号 → 开 2 号 → 上楼&lt;/li&gt;
&lt;li&gt;亮的是 2 号控制&lt;/li&gt;
&lt;li&gt;灭但热的是 1 号控制&lt;/li&gt;
&lt;li&gt;灭且冷的是 3 号控制&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="28-最优解问题"&gt;2.8 最优解问题
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;经典题&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;撕书问题&lt;/strong&gt;：N 页书（双面），最少多少次撕出 100 张单页？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;解法&lt;/strong&gt;：50 张 = 1 次（N/2 张）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;煎饼排序&lt;/strong&gt;：每次翻转前缀，最少几次排好序？&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="三java-集合类"&gt;三、Java 集合类
&lt;/h2&gt;&lt;h3 id="31-java-基础合集"&gt;3.1 Java 基础合集
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;类&lt;/th&gt;
					&lt;th&gt;作用&lt;/th&gt;
					&lt;th&gt;关键&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;ArrayList&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;动态数组&lt;/td&gt;
					&lt;td&gt;扩容 1.5x&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;LinkedList&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;双向链表&lt;/td&gt;
					&lt;td&gt;增删快，查找慢&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;HashMap&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;哈希表&lt;/td&gt;
					&lt;td&gt;JDK 8 红黑树化&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;ConcurrentHashMap&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;线程安全哈希表&lt;/td&gt;
					&lt;td&gt;CAS + synchronized&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;TreeMap&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;红黑树&lt;/td&gt;
					&lt;td&gt;有序&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;HashSet&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;基于 HashMap&lt;/td&gt;
					&lt;td&gt;O(1) 查找&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="32-经典面试追问"&gt;3.2 经典面试追问
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Q1：HashMap 为什么用红黑树而不是 AVL？&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AVL 严格平衡，查询快 O(log n)&lt;/li&gt;
&lt;li&gt;红黑树近似平衡，&lt;strong&gt;插入删除快&lt;/strong&gt;（旋转少）&lt;/li&gt;
&lt;li&gt;哈希冲突链表 &amp;gt; 8 时转红黑树，避免 hash 攻击退化为 O(n)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Q2：ConcurrentHashMap 1.7 vs 1.8？&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;1.7&lt;/strong&gt;：Segment（16 个）+ ReentrantLock&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1.8&lt;/strong&gt;：Node + CAS + synchronized（锁粒度更细）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Q3：ArrayList vs LinkedList？&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;维度&lt;/th&gt;
					&lt;th&gt;ArrayList&lt;/th&gt;
					&lt;th&gt;LinkedList&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;随机访问&lt;/td&gt;
					&lt;td&gt;O(1)&lt;/td&gt;
					&lt;td&gt;O(n)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;头部插入&lt;/td&gt;
					&lt;td&gt;O(n)&lt;/td&gt;
					&lt;td&gt;O(1)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;内存占用&lt;/td&gt;
					&lt;td&gt;少&lt;/td&gt;
					&lt;td&gt;多（每个节点 2 个指针）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;缓存友好&lt;/td&gt;
					&lt;td&gt;友好&lt;/td&gt;
					&lt;td&gt;不友好&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="四java-io-模型"&gt;四、Java IO 模型
&lt;/h2&gt;&lt;h3 id="41-bio--nio--aio"&gt;4.1 BIO / NIO / AIO
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;模型&lt;/th&gt;
					&lt;th&gt;全称&lt;/th&gt;
					&lt;th&gt;适用&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;BIO&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Blocking I/O&lt;/td&gt;
					&lt;td&gt;传统阻塞（连接数少）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;NIO&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Non-blocking I/O&lt;/td&gt;
					&lt;td&gt;高并发（Netty 底层）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;AIO&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Asynchronous I/O&lt;/td&gt;
					&lt;td&gt;异步回调（Linux 5+）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="42-nio-三大组件"&gt;4.2 NIO 三大组件
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;组件&lt;/th&gt;
					&lt;th&gt;作用&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Channel（通道）&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;双向数据通道（FileChannel / SocketChannel）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Buffer（缓冲区）&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;数据容器（ByteBuffer / CharBuffer）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Selector（选择器）&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;多路复用（一个线程管理多个 Channel）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="五mybatis-实战"&gt;五、MyBatis 实战
&lt;/h2&gt;&lt;h3 id="51-一级缓存-vs-二级缓存"&gt;5.1 一级缓存 vs 二级缓存
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;维度&lt;/th&gt;
					&lt;th&gt;一级缓存&lt;/th&gt;
					&lt;th&gt;二级缓存&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;范围&lt;/td&gt;
					&lt;td&gt;SqlSession&lt;/td&gt;
					&lt;td&gt;Mapper（namespace）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;默认开启&lt;/td&gt;
					&lt;td&gt;✓&lt;/td&gt;
					&lt;td&gt;✗（需配置）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;失效&lt;/td&gt;
					&lt;td&gt;增删改 / commit / close&lt;/td&gt;
					&lt;td&gt;同 namespace 增删改&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="52--vs-"&gt;5.2 #{} vs $
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;#{}&lt;/code&gt;：预编译，&lt;code&gt;?&lt;/code&gt; 占位符（防 SQL 注入）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;${}&lt;/code&gt;：字符串拼接（有注入风险）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="六设计模式高频题"&gt;六、设计模式高频题
&lt;/h2&gt;&lt;h3 id="61-单例模式-8-种实现"&gt;6.1 单例模式 8 种实现
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;方式&lt;/th&gt;
					&lt;th&gt;线程安全&lt;/th&gt;
					&lt;th&gt;性能&lt;/th&gt;
					&lt;th&gt;推荐&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;饿汉&lt;/td&gt;
					&lt;td&gt;✓&lt;/td&gt;
					&lt;td&gt;高&lt;/td&gt;
					&lt;td&gt;★★★&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;懒汉（同步方法）&lt;/td&gt;
					&lt;td&gt;✓&lt;/td&gt;
					&lt;td&gt;低&lt;/td&gt;
					&lt;td&gt;✗&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;懒汉（DCL）&lt;/td&gt;
					&lt;td&gt;✓&lt;/td&gt;
					&lt;td&gt;中&lt;/td&gt;
					&lt;td&gt;★★★★&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;静态内部类&lt;/td&gt;
					&lt;td&gt;✓&lt;/td&gt;
					&lt;td&gt;高&lt;/td&gt;
					&lt;td&gt;★★★★★&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;枚举&lt;/td&gt;
					&lt;td&gt;✓&lt;/td&gt;
					&lt;td&gt;高&lt;/td&gt;
					&lt;td&gt;★★★★★&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;容器式&lt;/td&gt;
					&lt;td&gt;取决于实现&lt;/td&gt;
					&lt;td&gt;-&lt;/td&gt;
					&lt;td&gt;单例池&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;ThreadLocal&lt;/td&gt;
					&lt;td&gt;单线程&lt;/td&gt;
					&lt;td&gt;高&lt;/td&gt;
					&lt;td&gt;线程内单例&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;CAS&lt;/td&gt;
					&lt;td&gt;✓&lt;/td&gt;
					&lt;td&gt;高&lt;/td&gt;
					&lt;td&gt;✗（代码复杂）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="62-工厂模式-vs-抽象工厂"&gt;6.2 工厂模式 vs 抽象工厂
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;维度&lt;/th&gt;
					&lt;th&gt;工厂方法&lt;/th&gt;
					&lt;th&gt;抽象工厂&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;复杂度&lt;/td&gt;
					&lt;td&gt;单一产品&lt;/td&gt;
					&lt;td&gt;产品族&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;扩展&lt;/td&gt;
					&lt;td&gt;新增产品加新工厂&lt;/td&gt;
					&lt;td&gt;新增产品族加新工厂&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="63-代理模式"&gt;6.3 代理模式
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;静态代理&lt;/strong&gt;：手动写代理类&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JDK 动态代理&lt;/strong&gt;：基于接口（Proxy + InvocationHandler）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CGLIB 动态代理&lt;/strong&gt;：基于继承（Enhancer + MethodInterceptor）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="七netty-面试"&gt;七、Netty 面试
&lt;/h2&gt;&lt;h3 id="71-netty-三大特点"&gt;7.1 Netty 三大特点
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;异步 NIO&lt;/strong&gt;：基于 Java NIO&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;事件驱动&lt;/strong&gt;：ChannelPipeline + ChannelHandler&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;高性能&lt;/strong&gt;：零拷贝、内存池、无锁设计&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="72-经典面试题"&gt;7.2 经典面试题
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Q1：Netty 的线程模型？&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Reactor 单线程&lt;/strong&gt;：所有 I/O + 业务在单线程（NIO）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reactor 多线程&lt;/strong&gt;：I/O 单线程 + 业务线程池&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;主从 Reactor 多线程&lt;/strong&gt;：Main Reactor + Sub Reactor + 业务线程池（Netty 推荐）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Q2：Netty 的零拷贝？&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;堆外内存&lt;/strong&gt;（DirectByteBuffer）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CompositeByteBuf&lt;/strong&gt;（合并多个 buffer）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FileChannel.transferTo&lt;/strong&gt;（sendfile 系统调用）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ByteBuf 池化&lt;/strong&gt;（减少 GC）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Q3：Netty 的心跳机制？&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IdleStateHandler&lt;/strong&gt;：读 / 写 / 读写空闲检测&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;服务端定期发送 Ping&lt;/strong&gt; + &lt;strong&gt;客户端响应 Pong&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;超时未响应则关闭连接&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="八写在最后"&gt;八、写在最后
&lt;/h2&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;面试软技能要点&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;STAR 法则&lt;/strong&gt;：讲故事用情境-任务-行动-结果&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据量化&lt;/strong&gt;：用具体数字说明成就&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;诚实谦逊&lt;/strong&gt;：不懂就说不懂，承认边界&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;反向提问&lt;/strong&gt;：准备 2-3 个有深度的问题&lt;/li&gt;
&lt;/ol&gt;

 &lt;/blockquote&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://book.douban.com/subject/3004255/" target="_blank" rel="noopener"
 &gt;编程之美（智力题）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://book.douban.com/subject/25910595/" target="_blank" rel="noopener"
 &gt;剑指 Offer（编程题）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://book.douban.com/subject/26835090/" target="_blank" rel="noopener"
 &gt;软技能：代码之外的生存指南&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>