1772 字
约 5 分钟
3
S04-X02 · 八股速查与跨系列索引
定位:附录型索引,可跳读。只做"题 → 一句话答案 → 正文位置"。
前置:S04-B01–B08。
覆盖旧文:22,282 点 —— 6 张面试大卡(A-2313/2600/553/1817/1818/1547)+ 星球/总结/简介类卡 + 20 张并发卡(→ S05)。
上一篇:S04-B08 · 字符串、常量池与编码
下一篇:S04-J01 · List 与迭代器源码。
用法:先读正文再背答案。只有答案没有机制,追问一层就露馅。
1. 基础语法与类型(对应 B01–B04)
| # | 问题 | 一句话答案 | 正文 |
|---|---|---|---|
| 1 | JDK / JRE / JVM 区别 | JDK 含编译器,JRE 只运行,JVM 是执行字节码的虚拟机 | B01 §1 |
| 2 | 为什么能"一次编写到处运行" | 编译成字节码 + 各平台各自的 JVM | B01 §1 |
| 3 | javap 有什么用 |
反汇编字节码,看编译器插入了什么 | B01 §2 |
| 4 | 装箱发生在哪 | 编译期插入 Integer.valueOf |
B01 §2 |
| 5 | Integer a=127,b=127; a==b |
true(缓存 −128..127) | B02 §2 |
| 6 | 为什么 128 就不相等 | 超出缓存范围 → 新对象 | B02 §2 |
| 7 | Integer == int |
自动拆箱比数值;左侧 null 会 NPE | B02 §3 |
| 8 | Java 是值传递还是引用传递 | 只有值传递(对象传引用的副本) | B02 §4 |
| 9 | i = i++ 结果 |
原值(先取值后赋值) | B03 §2 |
| 10 | && 与 & |
前者短路,后者不短路 | B03 §3 |
| 11 | switch 默认行为 |
穿透(需 break;箭头语法不穿透) |
B03 §4 |
| 12 | -5 % 2 |
-1(符号随被除数) | B03 §5 |
| 13 | >> 与 >>> |
算术右移(保符号)/ 逻辑右移(补 0) | B03 §5 |
| 14 | new Child() 初始化顺序 |
父静态→子静态→父实例→父构造→子实例→子构造 | B04 §2 |
| 15 | 静态块执行几次 | 类加载时一次 | B04 §3 |
| 16 | 数组的 length |
是字段,不是方法 | B04 §4 |
| 17 | final int[] a 能否改元素 |
能(引用不可变,内容可变) | B04 §5 |
| 18 | 静态内部类与成员内部类 | 前者不持有外部实例引用 | B04 §3 |
2. 面向对象(对应 B05–B06)
| # | 问题 | 一句话答案 | 正文 |
|---|---|---|---|
| 19 | 三大特性各解决什么 | 封装(状态保护)/继承(复用)/多态(解耦) | B05 §1 |
| 20 | 实例方法与静态方法分派 | 运行期(实际类型)/ 编译期(声明类型) | B05 §2 |
| 21 | 字段有多态吗 | 没有,按声明类型访问 | B05 §2 |
| 22 | 多态如何实现 | 虚方法表 + 动态分派 | B05 §3 |
| 23 | 重写与重载区别 | 运行期 vs 编译期绑定;子类 vs 同类 | B05 §4 |
| 24 | f(null) 选哪个重载 |
最具体的那个(编译期决定) | B05 §4 |
| 25 | 优先继承还是组合 | 组合(避免脆弱基类问题) | B05 §5 |
| 26 | 接口 vs 抽象类 | 多实现/契约 vs 单继承/状态 | B06 §1 |
| 27 | default 方法的作用 |
加方法而不破坏已有实现 | B06 §2 |
| 28 | Lambda 的三条边界 | 函数式接口/effectively final/this 指外部类 |
B06 §3 |
| 29 | 枚举比常量强在哪 | 类型安全、可带字段方法、天然单例 | B06 §4 |
| 30 | Optional 用在哪 |
返回值(不要用于字段/参数) | B06 §5 |
3. 异常(对应 B07)
| # | 问题 | 一句话答案 | 正文 |
|---|---|---|---|
| 31 | 受检 vs 非受检 | 调用方能否合理恢复 | B07 §3 |
| 32 | Error 该捕获吗 |
不该(JVM 级问题) | B07 §3 |
| 33 | finally 里 return |
覆盖返回值、吞异常 | B07 §2 |
| 34 | 丢失原始栈的写法 | new RuntimeException(e.getMessage()) |
B07 §4 |
| 35 | try-with-resources 优势 | 自动关闭 + 异常抑制 | B07 §5 |
| 36 | 自定义异常要素 | 合适父类 + 上下文 + cause | B07 §6 |
4. 字符串(对应 B08)
| # | 问题 | 一句话答案 | 正文 |
|---|---|---|---|
| 37 | new String("x") == "x" |
false;intern() 后 true |
B08 §2 |
| 38 | 为什么 final String 拼接能折叠 |
编译期常量 | B08 §2 |
| 39 | 循环拼接为什么慢 | 每次复制整个字符串,O(n²)(实测差 189 倍) | B08 §3 |
| 40 | 不可变的收益 | 安全共享/可做 key/常量池复用 | B08 §4 |
| 41 | getBytes() 不带参数 |
依赖平台默认编码,跨环境出错 | B08 §5 |
| 42 | String 内部编码 |
UTF-16(char 是 16 位) |
B08 §5 |
5. 并发与 JVM:不在本系列,指向 S05
这 20 张卡(5,174 点)内容属并发/JVM,避免与 S05 重复,此处只做索引登记。
| 主题 | 旧卡 | 去向 |
|---|---|---|
| 并发面试题(73 道 / 答案) | A-2314 A-2605 A-2604 | S05 |
| 《30天速通Java》并发篇 | A-2333 | S05 |
| 锁(ReentrantLock/读写锁/Condition) | A-1605 A-1602 A-1590 A-929 | S05 |
| CAS / LockSupport / ForkJoin | A-1586 A-1596 A-1593 | S05 |
| 线程状态 / Callable-Future / 定时任务 | A-1610 A-1585 A-1603 | S05 |
| ConcurrentLinkedQueue | A-1589 | S05 |
| CMS GC 问题分析 | A-1631 | S05 |
| Unsafe | A-1612 | S05 |
| JVM 背诵版八股 | A-1820 | S05 |
| 多线程入门(王者类比) | A-1614 | S05 |
| 并发学习路线 | A-1892 | S05 |
6. 非知识性卡片登记(星球/总结/简介类)
| 卡 | 性质 | 处理 |
|---|---|---|
| A-1921 星球图谱 | 社区内容索引 | 仅登记,不入正文 |
| A-1915/1916/1919/1920/1922 月度总结 | 个人总结 | 仅登记 |
| A-1931/1934/1832/1835 | 星球/小册推广 | 仅登记 |
| A-2425/1917 | 面试指南专栏目录 | 仅登记 |
| A-2335《30天速通Java》 | 超长合辑(1,876 点) | 按主题拆到 B 系列对应小节,剩余进本附录 |
7. 统计
| 分类 | 点数 |
|---|---|
| 本附录承载 | 22,282(含跨系列 5,174) |
| 其中真正"本系列知识" | 约 17,108(其余为并发卡与非知识性登记) |
8. 下一篇
S04-J01 · List 与迭代器:ArrayList/LinkedList/ArrayDeque 源码
进阶层开始:从"会用集合"到"读得懂源码"。第一篇讲 List 的扩容、迭代器的 fail-fast(实测 CME)、以及 subList 的视图陷阱。
本篇属于系列《S04 · Java 语言核心》,是基础层附录。旧文来源:6 张面试大卡 + 星球/总结类卡 + 20 张并发卡(→S05)。
S04-X02 · 八股速查与跨系列索引
https://www.clxhxhhr.top/posts/5240/ 评论
0 条
还没有评论,先写一条吧。