跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava算法

Java 大厂实习面试高频考点:MySQL、Redis、并发与算法实战

汇总了 Java 大厂实习面试中的高频技术考点,涵盖 MySQL 事务机制与 SQL 优化、Redis 数据结构与缓存策略、Nacos 注册中心原理、RabbitMQ 消息可靠性与顺序性、Java 集合框架 HashMap 底层实现、并发编程中 sleep 与 wait 的区别、Linux 常用运维命令以及 HTTPS 加密握手流程。内容结合阿里、快手、字节跳动等实际面试题,重点解析了缓存一致性、索引失效原因、分布式锁及算法题解题思路,适合求职者系统性复习。

t ag发布于 2026/3/15更新于 2026/10/2589 浏览
Java 大厂实习面试高频考点:MySQL、Redis、并发与算法实战

1. MySQL 事务机制(阿里巴巴)

事务确保一组数据库操作要么全部成功执行,要么全部失败回滚。

核心特性:

  • 原子性:把多个操作打包成一个整体,要么全做,要么全不做。
  • 一致性:事务执行前后,数据库从一个一致状态转换到另一个一致状态,数据完整性约束不被破坏。
  • 隔离性:多个事务并发执行时,彼此的操作互不干扰,每个事务都感觉不到其他事务的存在。
  • 持久性:事务一旦提交,其修改会永久保存到数据库中,即使系统崩溃也不会丢失。

2. SQL 优化实践(阿里巴巴)

1. 优化联表查询,使用 JOIN

-- 优化前
SELECT name FROM users WHERE id IN (SELECT user_id FROM orders WHERE status = 1);

-- 优化后
SELECT u.name FROM users u JOIN orders o ON u.id = o.user_id WHERE o.status = 1;

*2. 避免使用 SELECT ,只查询需要的字段

-- 优化前
SELECT * FROM users WHERE age > 30;

-- 优化后
SELECT id, name, email FROM users WHERE age > 30;

3. 为 WHERE、JOIN、ORDER BY 字段建立索引

-- 为查询条件字段建索引
CREATE INDEX idx_user_age ON users(age);
-- 为 JOIN 关联字段建索引
CREATE INDEX idx_orders_user_id ON orders(user_id);
-- 为排序字段建索引
CREATE INDEX idx_articles_create_time ON articles(create_time);

3. Nacos 底层注册中心实现(阿里巴巴)

Nacos 的核心围绕服务注册、服务发现、健康检查三大功能展开。

服务注册机制 服务提供者启动时,通过客户端向 Server 发送注册请求,携带服务名、IP、端口等元数据。Server 将信息存储在内存注册表中。

服务发现机制 消费者启动时主动拉取实例列表并缓存本地。变更时,Server 主动推送通知给消费者,减少轮询开销。

健康检查机制 Server 定期向实例发送健康检查请求,若连续失败则标记为不健康;或者实例定期发送心跳包。

4. RocketMQ 如何持久化(阿里巴巴)

RocketMQ 依靠交换器持久化、队列持久化和消息持久化来实现数据的可靠存储。

5. WebSocket 介绍(阿里巴巴)

WebSocket 是一种协议,用于在客户端和服务器之间建立持久的双向通信连接,适用于需要实时数据交换的场景。

核心特点:

  • 持久连接:建立后保持长期通信状态,无需频繁创建关闭。
  • 双向通信:服务器可主动向客户端推送数据,打破 HTTP 限制。
  • 低开销:传输时无需携带大量 HTTP 头部信息。

6. HTTP 长连接与短连接判断(阿里巴巴)

区别在于一次 TCP 连接是否可以被多次 HTTP 请求复用。

  • HTTP/1.0:默认短连接。
  • HTTP/1.1:默认长连接。

可通过响应头 Connection 字段判断,若无则按默认处理。设置长连接即修改该响应头。

7. HashMap 实现原理(快手)

HashMap 底层是数组 + 链表 + 红黑树的组合。

  1. Hash 计算:对键的 hashcode 进行高低位异或,混合信息以减少冲突。桶索引通过 哈希值 & (数组长度 - 1) 计算,要求长度为 2 的幂次方。
  2. 插入逻辑:桶为空直接插入;非空且为树则按树规则插入;为链表则遍历尾部插入。若链表长度≥8,转为红黑树。
  3. 扩容机制:元素总数超过阈值(capacity * loadFactor,默认 0.75)时,数组长度翻倍并重新计算索引。
  4. JDK 版本差异:JDK 1.8 优化了扩容重哈希开销,并将头插法改为尾插法,避免多线程扩容死循环。

文章配图

8. HashMap 树化与退化阈值(快手)

当红黑树节点数≤6 时,退化为链表。阈值设置不对称(8→树,6→链)是为了防抖动,避免节点数在阈值附近波动导致频繁转换,减少性能开销。

9. MySQL 和 Redis 一致性保证(快手)

最终一致方案 读取时先查 Redis,无则查 MySQL 并写入 Redis。更新时先更新 MySQL,再删除 Redis 缓存。删除而非更新缓存可避免原子性问题,后续读取自动加载新数据。

强一致方案 获取分布式锁,开启 MySQL 事务更新数据,提交后立即更新或删除 Redis 缓存,最后释放锁。这避免了并发覆盖问题。

10. 数据库隔离级别(快手)

  • 读未提交:一致性最低,允许脏读。
  • 读已提交:避免脏读。
  • 可重复读:同一事务内多次读取结果一致,避免不可重复读。
  • 串行化:完全串行执行,避免所有并发问题。

默认级别:MySQL 默认可重复读,SQL Server 默认为读已提交。

11. 缓存击穿、穿透、雪崩解决(快手)

  • 缓存穿透:请求不存在 Key 持续打到 DB。解决方案:布隆过滤器预判 Key 存在性,或对 DB 也不存在的 Key 存储空值。
  • 缓存雪崩:大量 Key 同时过期或 Redis 宕机。解决方案:设置随机过期时间,避免集中失效。
  • 缓存击穿:热点 Key 失效瞬间流量打穿 DB。解决方案:热点 Key 永不过期或加互斥锁。

12. Redis 扛不住库存请求处理(快手)

  1. 集群部署:分片存储分散压力,读写分离提升吞吐。
  2. 限流:前端、网关或 MQ 进行流量控制。
  3. 熔断降级:监控响应时间,超时则返回旧缓存或将写请求暂存队列异步同步。

13. sleep 和 wait 区别(阿里巴巴)

  • 前提:sleep 无需持有锁,wait 必须拥有对象锁。
  • 锁影响:sleep 不释放锁,wait 主动释放锁。
  • 唤醒:sleep 时间到或中断唤醒;wait 需 notify 或超时/中断唤醒。
  • 用途:sleep 阻塞线程,wait 等待其他线程唤醒。

14. RabbitMQ 消息不丢失保证(快手)

从生产者到消费者全流程保障:

  1. 发送端:开启 Confirm 模式确认消息到达 Exchange,Return 模式确认到达 Queue。
  2. 中间件:配置持久化(队列、Exchange、消息),故障重启不丢。
  3. 消费端:关闭自动确认,手动 ACK,配置重试次数与死信队列。

死信队列应用:用于消息重试、丢弃无法处理的消息或日志收集。

15. 算法题:合并 K 个升序链表(快手)

暴力两两合并复杂度较高。推荐使用优先级队列(小根堆)优化,每次取出最小节点,将其下一个节点入堆。

文章配图

文章配图

16. Redis Replication 原理(快手二面)

主从复制实现数据冗余和读分流。

  1. 保存主节点信息:从节点记录 Master IP 和端口。
  2. 建立连接:验证网络连通性。
  3. 同步数据集:首次全量同步,后续部分同步。
  4. 命令持续复制:Master 持续发送写命令,Slave 执行以保证一致性。

17. Redis 数据结构及应用场景(快手)

  • String:缓存热点数据、分布式锁、计数器。
  • Hash:存储对象数据、购物车。
  • List:消息队列。
  • Set:去重、共同好友、推荐算法。
  • ZSet:排行榜、延迟任务。

18. SQL 加了索引仍慢的原因(快手)

核心是索引未被有效使用或设计不合理。

  • 索引失效:索引列参与函数运算、使用不等于或 NOT IN 等。
  • 设计缺陷:选择性差(重复值多)、大字段索引效率低。

19. RabbitMQ 消息顺序保证(快手二面)

全局顺序难保障,通常关注局部顺序。

  • 基础方案:单队列单消费者,原生 FIFO 特性。
  • 优化方案:分区消费。按 ID 分组路由到不同队列,每个队列配专属消费者,本质仍是单队列单消费。

20. Linux 查看日志命令(快手二面)

grep [选项] "字符串" 文件名

常用选项:-i忽略大小写,-n显示行号,-v反向匹配。

实时跟踪:

tail -f app.log | grep "ERROR"
docker logs -f myapp
docker logs -n 100 myapp

21. Linux 查找端口占用命令(快手二面)

netstat -tuln | grep 端口号
# 例如
netstat -tuln | grep 3306

22. Java 异常子类(快手)

  • Checked Exception:IOException, SQLException, ClassNotFoundException(编译期强制处理)。
  • RuntimeException:NullPointerException, IndexOutOfBoundsException, ArithmeticException(运行时抛出)。

23. 数据库操作相关异常(快手)

包括 SQL 语法错误、连接失败、违反约束、数据类型不匹配或越界等。

24. Redis 的 DECR 操作(快手)

DECR 命令对指定键数值原子性减 1。键不存在则初始化为 0 再减 1。常用于计数器递减或库存扣减,具备原子性和高性能。

25. HTTPS 底层工作原理(字节跳动)

HTTPS 是在 HTTP 基础上引入加密层。

前置知识:对称加密(同密钥)与非对称加密(公钥/私钥)。

流程:

  1. 客户端请求:发起 HTTPS 连接。
  2. 服务器响应:发送数字证书(含公钥及 CA 签名)。
  3. 客户端验证:验证证书完整性、有效期、颁发机构及吊销状态。
  4. 生成会话密钥:客户端生成随机对称密钥,用服务器公钥加密后发送。
  5. 解密会话密钥:服务器用私钥解密。双方持相同密钥进行后续通信加密。

文章配图

目录

  1. 1. MySQL 事务机制(阿里巴巴)
  2. 2. SQL 优化实践(阿里巴巴)
  3. 3. Nacos 底层注册中心实现(阿里巴巴)
  4. 4. RocketMQ 如何持久化(阿里巴巴)
  5. 5. WebSocket 介绍(阿里巴巴)
  6. 6. HTTP 长连接与短连接判断(阿里巴巴)
  7. 7. HashMap 实现原理(快手)
  8. 8. HashMap 树化与退化阈值(快手)
  9. 9. MySQL 和 Redis 一致性保证(快手)
  10. 10. 数据库隔离级别(快手)
  11. 11. 缓存击穿、穿透、雪崩解决(快手)
  12. 12. Redis 扛不住库存请求处理(快手)
  13. 13. sleep 和 wait 区别(阿里巴巴)
  14. 14. RabbitMQ 消息不丢失保证(快手)
  15. 15. 算法题:合并 K 个升序链表(快手)
  16. 16. Redis Replication 原理(快手二面)
  17. 17. Redis 数据结构及应用场景(快手)
  18. 18. SQL 加了索引仍慢的原因(快手)
  19. 19. RabbitMQ 消息顺序保证(快手二面)
  20. 20. Linux 查看日志命令(快手二面)
  21. 21. Linux 查找端口占用命令(快手二面)
  22. 例如
  23. 22. Java 异常子类(快手)
  24. 23. 数据库操作相关异常(快手)
  25. 24. Redis 的 DECR 操作(快手)
  26. 25. HTTPS 底层工作原理(字节跳动)

更多推荐文章

查看全部
  • Spring Cloud 熔断降级详解:Sentinel 实战指南
  • Vben Admin:基于 Vue 3 的企业级中后台管理系统框架
  • 基于 SpringBoot 的无人机智能管控系统小程序设计与实现
  • 主流C语言开发工具对比:VS/CLion/VSCode/Dev C++选型指南
  • Android WebView shouldInterceptRequest 异步加载
  • OpenClaw 爆红启示:AI 助手如何改写开源规则
  • Llama 3-8B-Instruct 在昇腾 NPU 上的 SGLang 性能实测
  • JDK 21 安装与环境配置实战
  • 50 道前端核心面试题:涵盖 HTML CSS JS Vue React TypeScript 及工程化
  • 群晖NAS搭建Git Server:从零配置到团队协作
  • 医疗 AI 场景下算法编程深度解析(一)
  • 开源硬件与Python融合:青少年科技创新教育实践指南
  • 无人机航拍目标检测与语义分割数据集汇总
  • ERNIE-4.5-0.3B 超轻量模型部署与测评指南
  • SubtitleEdit Purfview Faster Whisper XXL 引擎安装失败排查指南
  • 低代码结合大模型:中小企业半天构建专属SaaS应用路径
  • 前端大数据导出优化:解决 Chrome 内存崩溃的实战方案
  • ClawdBot (OpenClaw) 在 Discord 平台部署 AI 机器人指南
  • Python 赋能金融:从业者的技能转型与实战路径
  • Android ApplicationInfo 元数据读取 getString 返回 null 问题排查

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online