华锐分布式 Java 一面面经

华锐技术 · Java 开发工程师 · 一面 · 2026-03

面试题目

Java 基础与集合

  • HashMap 底层实现原理是什么?初始化容量如何设置?与 LinkedHashMap 有何区别?
  • 基础数据类型的取值范围与默认值是什么?
  • 位运算和运算符重载的概念?
  • volatile 关键字的作用?
  • Java 内存存储模型是怎样的?

JVM

  • JVM 核心模块有哪些?
  • JDK17 与其他版本(如 JDK8/11)的主要差异?
  • GC 回收机制有哪些算法?常用垃圾收集器?
  • 常用 JVM 参数如何调整(堆大小、GC 策略等)?

计算机网络

  • 输入 URL 到页面展示的完整流程?
  • HTTP 状态码 401、502 分别代表什么含义?
  • TCP 与 UDP 的区别?TCP 协议包大小限制和端口范围?
  • OSI 七层网络模型的分层及各层作用?为什么要分层?

Linux 与操作系统

  • Linux 中如何复制文件夹(常用命令)?
  • 系统 32 位与 64 位的含义和区别?
  • CPU 与内存的连接方式是什么?

数据库

  • 编写 SQL 统计每个用户的消费总金额(使用聚合函数 + 分组)。

中间件

  • XXL-Job 的功能是什么?在项目中有哪些使用场景?

综合 / 行为

  • 大学或实习期间印象最深刻的专业相关经历?
  • 多人协作开发时如何进行代码管理?
  • 未来两三年的职业规划?

反问环节

  • 面试官开放提问,由应聘者提出想了解的问题。

参考解析

HashMap 底层实现

  • JDK8 后:数组 + 链表 + 红黑树,链表长度 ≥8 且数组长度 ≥64 时树化。
  • 初始容量建议设为「预计元素数 / 0.75 + 1」并取 2 的幂次,避免频繁扩容。
  • LinkedHashMap 继承 HashMap,内部维护双向链表,保证插入/访问顺序,可用于实现 LRU 缓存。

volatile 关键字

  • 保证变量的可见性(写操作立即刷新到主存)和禁止指令重排序(内存屏障)。
  • 不保证原子性,复合操作(如 i++)仍需用 synchronizedAtomicInteger

GC 回收机制

  • 常见算法:标记-清除、标记-整理、复制算法;分代收集综合使用。
  • JDK8 默认 Parallel GC;JDK11+ 推荐 G1;JDK17 引入 ZGC 低延迟收集器作为生产级支持。
  • 常用参数:-Xms/-Xmx(堆初始/最大)、-XX:+UseG1GC-XX:MaxGCPauseMillis

TCP vs UDP

  • TCP:面向连接、可靠传输、三次握手、流控与拥塞控制,适合文件传输/HTTP。
  • UDP:无连接、不可靠、低延迟,适合视频流/DNS/游戏。
  • TCP 端口范围 0-65535,其中 0-1023 为知名端口;单个 TCP 报文段数据部分大小受 MSS 限制(通常约 1460 字节)。

OSI 七层模型

  • 从下到上:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
  • 分层原因:职责分离,降低耦合;各层独立演进,便于标准化和故障排查。

SQL 聚合查询

SELECT user_id, SUM(amount) AS total_amount
FROM orders
GROUP BY user_id
ORDER BY total_amount DESC;
  • 重点:GROUP BYSUM() 配合使用;HAVING 可对聚合结果过滤(如 HAVING SUM(amount) > 1000)。

XXL-Job

  • 分布式任务调度框架,支持 CRON 表达式、分片广播、失败重试、任务监控。
  • 常见场景:定时对账、数据报表生成、定时清理过期数据、定时推送消息。
  • 核心组件:调度中心(Admin)+ 执行器(Executor),通过 HTTP 心跳注册。

URL 到页面的流程

  1. DNS 解析域名 → 获取 IP;2. TCP 三次握手建立连接;3. 发送 HTTP/HTTPS 请求;4. 服务器处理并返回响应;5. 浏览器解析 HTML/CSS/JS,渲染页面;6. TCP 四次挥手断开连接。
  • 401:未授权(需登录认证);502:Bad Gateway(上游服务器无响应,常见于反向代理)。