Java 面试核心考点梳理
在技术面试中,除了语言基础,架构设计与底层原理往往是区分度的关键。以下整理了几个高频考察点,结合实战经验进行解析。
1. 架构演进:SOA 与微服务
很多面试官会问是否了解 SOA(面向服务架构)和微服务。虽然两者都强调服务的解耦,但微服务更侧重于轻量级通信、独立部署以及围绕业务能力构建的细粒度拆分。SOA 往往依赖 ESB 总线,而微服务倾向于去中心化的治理模式。
2. 分布式系统的负载均衡策略
当面对海量请求时,如何确定访问的资源在哪个服务器上?常见的策略包括:
- 轮询(Round Robin):按顺序依次分配,简单公平。
- 随机(Random):随机选取服务器,适用于负载差异不大的场景。
- 最小响应时间:优先选择当前处理请求耗时最短的节点。
- 最小并发数:将新请求分配给当前活跃连接数最少的服务器。
- 哈希(Hash):基于 Key 进行哈希计算,保证同一用户的请求总是落到同一台机器,常用于会话保持。
设计一个分布式负载均衡缓冲系统时,可以通过 Key 分段或一致性 Hash 算法来快速定位目标服务器,减少数据迁移成本。
3. 数据一致性与强一致性保障
在缓存与数据库之间维持强一致性是个经典难题。通常的做法是引入分布式锁,确保在更新数据库和清理/更新缓存的操作具有原子性。当然,实际生产中也要权衡性能,有时最终一致性方案更能满足高并发需求。
4. HashMap 的高并发陷阱
HashMap 在高并发环境下扩容时存在严重隐患。多线程同时触发 resize 操作可能导致链表成环,进而引发 CPU 100% 的死循环问题。此外,非线程安全还可能导致数据覆盖。生产环境建议使用 ConcurrentHashMap,它通过分段锁或 CAS + synchronized 机制保证了线程安全。
5. 浏览器输入 URL 后的完整链路
从输入 URL 到页面显示,中间经历了复杂的交互过程,这也是考察网络基础的必答题:
- DNS 解析:将域名转换为 IP 地址,涉及本地缓存、Hosts、DNS 服务器递归查询等细节。
- TCP 连接:三次握手建立连接,确保可靠传输。
- HTTP 请求:发送请求报文,包含方法、头信息、Cookie 等。
- 服务端处理:经过网关、应用服务器、数据库等多层处理。
- 响应渲染:浏览器接收响应后,解析 HTML/CSS/JS,构建 DOM 树并渲染页面。
面试中如果只提到 DNS,通常会追问后续步骤。建议对 TCP/IP 协议栈和 HTTP 状态码也有清晰的理解,这样能体现更扎实的网络功底。

