面试题目
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++)仍需用
synchronized 或 AtomicInteger。
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 BY 与 SUM() 配合使用;HAVING 可对聚合结果过滤(如 HAVING SUM(amount) > 1000)。
XXL-Job
- 分布式任务调度框架,支持 CRON 表达式、分片广播、失败重试、任务监控。
- 常见场景:定时对账、数据报表生成、定时清理过期数据、定时推送消息。
- 核心组件:调度中心(Admin)+ 执行器(Executor),通过 HTTP 心跳注册。
URL 到页面的流程
- DNS 解析域名 → 获取 IP;2. TCP 三次握手建立连接;3. 发送 HTTP/HTTPS 请求;4. 服务器处理并返回响应;5. 浏览器解析 HTML/CSS/JS,渲染页面;6. TCP 四次挥手断开连接。
- 401:未授权(需登录认证);502:Bad Gateway(上游服务器无响应,常见于反向代理)。