VOL.01 / 2026
展示分析

八股文-01

2026.06.17 · 系列「面试问题记录」

1. 什么是多态?

关键词

  • 同一接口
  • 多种实现
  • 重写 Override
  • 动态绑定

回答

多态是指同一个方法调用,在不同对象上表现出不同实现。实现条件是继承、重写、父类引用指向子类对象。


2. 多态实现原理

关键词

  • Runtime
  • objc_msgSend
  • isa
  • 动态绑定
  • Method Cache

回答

OC通过Runtime实现多态,方法调用最终转换为objc_msgSend,通过isa找到真实Class并执行对应IMP。


3. 重载是多态吗?

关键词

  • 编译时多态
  • Overload
  • Override

回答

重载属于编译时多态;面试中通常说的多态指运行时多态,即重写。


4. static和private支持多态吗?

关键词

  • static不能
  • private不能
  • 静态绑定

回答

static属于类,private不能被重写,因此都不支持运行时多态。


5. Java static关键字作用

关键词

  • 静态变量
  • 静态方法
  • 静态代码块
  • 静态内部类

回答

static修饰类级别成员,所有对象共享,无需实例化即可访问。


6. 堆和栈区别

关键词

  • 栈:局部变量
  • 堆:对象实例
  • 栈线程私有
  • 堆线程共享

回答

栈存储局部变量和方法调用;堆存储对象实例,由GC管理。


7. GC如何管理堆和栈?

关键词

  • 栈不归GC管理
  • 堆归GC管理

回答

栈帧随方法结束自动释放;堆中对象通过GC回收。


8. 什么对象可以作为GC Root?

关键词

  • 栈引用
  • 静态变量
  • 常量
  • JNI引用

回答

GC从GC Root开始搜索,可达对象不会被回收。


9. 可达性分析

关键词

  • GC Root
  • 引用链
  • Reachability Analysis

回答

从GC Root向下遍历引用链,无法到达的对象会被GC回收。


10. 为什么不用引用计数?

关键词

  • 循环引用
  • 可达性分析

回答

引用计数无法解决循环引用问题,可达性分析可以。


11. Python为什么使用引用计数?

关键词

  • 实时回收
  • 引用计数
  • 分代GC

回答

CPython采用引用计数实现快速回收,再结合分代GC解决循环引用。


12. 强引用、软引用、弱引用、虚引用

回答

  • 强引用:GC不回收
  • 软引用:内存不足回收
  • 弱引用:GC即回收
  • 虚引用:跟踪回收过程

13. 类加载过程

关键词

  • 加载
  • 验证
  • 准备
  • 解析
  • 初始化

回答

加载Class文件后完成校验、内存分配、解析引用并执行static代码。


14. 为什么需要打破双亲委派?

关键词

  • SPI
  • JDBC
  • Tomcat
  • OSGi

回答

用于类隔离、SPI扩展和热部署。


15. Java传参机制

关键词

  • 值传递

回答

Java永远是值传递,对象传递的是引用副本。


16. TCP和UDP区别

关键词

  • TCP可靠
  • UDP高性能

回答

TCP面向连接、可靠传输;UDP无连接、效率高。


17. QUIC为什么基于UDP?

关键词

  • UDP
  • TLS1.3
  • 0-RTT

回答

QUIC在UDP上实现可靠传输,并集成TLS1.3降低握手延迟。


18. TLS握手过程

关键词

  • Client Hello
  • Server Hello
  • 证书验证
  • 密钥协商

回答

通过证书认证和密钥协商生成会话密钥,实现安全通信。


19. TCP拥塞控制

关键词

  • 慢启动
  • 拥塞避免
  • 快重传
  • 快恢复

回答

动态调整拥塞窗口,防止网络过载。


20. TCP滑动窗口

关键词

  • 流量控制
  • ACK
  • Window Size

回答

允许连续发送多个数据包,提高传输效率。


21. TCP粘包拆包

关键词

  • 面向字节流
  • 无消息边界
  • Length+Body

回答

TCP不保证消息边界,需要应用层协议解决。


22. 幂等性

关键词

  • 防重复提交
  • 唯一ID
  • Redis

回答

同一请求执行多次结果一致。


23. 如何监控幂等?

关键词

  • 请求ID
  • 命中率
  • Prometheus

回答

统计重复请求和幂等命中情况进行告警。


24. MySQL索引

关键词

  • B+Tree
  • 聚簇索引
  • 联合索引

回答

索引是提高查询效率的数据结构。


25. 联合索引

关键词

  • 最左前缀原则

回答

多个字段组成索引,遵循最左匹配。


26. B+Tree为什么优于红黑树?

关键词

  • 树更矮
  • IO更少
  • 范围查询快

回答

数据库关注磁盘IO,因此选择B+Tree。


27. Sentinel

关键词

  • 限流
  • 熔断
  • 降级

回答

用于流量治理和微服务保护。


28. 熔断后如何恢复?

关键词

  • Closed
  • Open
  • Half-Open

回答

通过半开状态探测请求恢复服务。


29. Two Sum(两数之和)

关键词

  • HashMap
  • O(n)

核心代码

Map<Integer,Integer> map = new HashMap<>();
for(int i=0;i<nums.length;i++){
    if(map.containsKey(target-nums[i]))
        return;
    map.put(nums[i],i);
}