Java 架构师面试核心考点与能力标准梳理
在面试候选人时,我整理了一些高频题目。这些内容陆陆续续积累下来,每次面试会抽取一部分来问。答案会在后续文章中逐步发布。
基础题目
- Java 线程状态:进程和线程的区别,进程间如何通讯,线程间如何通讯。
- 集合框架:HashMap 的数据结构及实现原理;与 Hashtable、ConcurrentHashMap 的区别;ArrayList 的实现、扩容机制及与 LinkedList 的对比。
- Web 基础:Cookie 和 Session 的区别。
- 数据库:索引的作用及建索引策略。
- 面向对象:equals 方法的实现规范。
- JVM 基础:线程状态中 BLOCKED 和 WAITING 的区别;JVM 如何加载字节码文件;GC 算法及 Full GC 与 Young GC 的触发场景;JVM 内存模型与运行时数据区。
- 事务:事务的实现原理。
技术深度
- 源码阅读:是否看过 JDK 源码?看过的类及其实现原理是什么。
- 网络协议:HTTP 协议细节;TCP 协议;IO 和 NIO 的区别及 NIO 的优点(特别是直接内存的特点和使用场景)。
- 并发编程:Java 线程池的实现原理,keepAliveTime 等参数的作用。
- 连接池:HTTP 连接池与数据库连接池的实现原理。
- 类加载:类加载器如何卸载字节码。
- 分布式算法:一致性 Hash 算法。
- 数据库底层:数据库的实现原理。
技术框架
- 开源框架:看过哪些开源框架的源码?
- Redis:为什么要用 Redis?优缺点有哪些?如何实现扩容?
- Netty:Netty 是如何使用线程池的,为什么这么使用。
- Spring:为什么要用 Spring?优缺点有哪些;IOC 容器初始化流程及实现原理(为什么可以通过 byName 和 ByType 找到 Bean);AOP 实现原理。
- 消息中间件:实现原理及技术难点。
系统架构
- 高可用:如何搭建一个高可用系统。
- 设计模式:哪些设计模式可以增加系统的可扩展性?如模板、命令、策略、适配器、桥接、装饰、观察者、状态、访问者模式。
- 抽象能力:怎么提高研发效率;什么是高内聚低耦合,请举例子如何实现。
- 接口与消息:什么情况用接口,什么情况用消息。
- 依赖管理:如果 AB 两个系统互相依赖,如何解除依赖。
- 文档与设计:如何写一篇设计文档,目录是什么;什么场景应该拆分系统,什么场景应该合并系统;系统和模块的区别及使用场景。
分布式系统
- 事务与锁:分布式事务(两阶段提交);如何实现分布式锁。
- Session:如何实现分布式 Session。
- 一致性:如何保证消息的一致性。
- 负载均衡:正向代理(客户端代理)和反向代理(服务器端代理);CDN 实现原理。
- 性能优化:怎么提升系统的 QPS 和吞吐量。

