2025年Java后端秋招面试的高频八股文+场景题

一、Java核心八股文(必背)

1. Java基础
  1. HashMap vs ConcurrentHashMap

    • HashMap:非线程安全,JDK1.8后采用数组+链表/红黑树,扩容可能死循环(JDK1.7)。

    • ConcurrentHashMap:JDK1.8改用CAS+synchronized优化锁粒度,分段锁淘汰。

  2. synchronized vs ReentrantLock

    • synchronized:JVM内置锁,非公平锁,不可中断。

    • ReentrantLock:支持公平锁、可中断、Condition条件队列。

  3. volatile作用与局限性

    • 保证可见性(强制主存读取)和有序性(禁止指令重排序),但不保证原子性(如i++需AtomicInteger)。
  4. JVM内存模型

    • 线程私有:虚拟机栈、本地方法栈、程序计数器。

    • 线程共享:堆、方法区(JDK1.8后为元空间)。

  5. G1垃圾回收器特点

    • Region分区、可预测停顿、适合大内存应用。

二、高并发与分布式系统

1. 并发编程
  1. 线程池参数设置

    • corePoolSize(核心线程数)、maxPoolSize(最大线程数)、workQueue(任务队列)、拒绝策略18。

    • IO密集型 :CPU核心数 * 2;CPU密集型 :CPU核心数 + 1。

  2. AQS原理

    • 核心:state(资源状态)+ CLH队列(线程排队),实现类如ReentrantLock、CountDownLatch。
  3. 分布式锁方案

    • Redis(SETNX + RedLock)、ZooKeeper(临时节点 + Watch机制)。
2. 分布式场景题
  1. 如何设计秒杀系统?

    • 分层削峰:Nginx限流 → Redis预减库存(Lua脚本保证原子性)→ 消息队列异步处理。

    • 热点隔离:独立Redis集群处理秒杀商品。

  2. CAP理论应用

    • 支付系统侧重CP(一致性+分区容错性),社交系统可能选择AP。

三、数据库与缓存优化

1. MySQL高频考点
  1. 十亿级数据分页优化

    • ES search_after(深度分页)、覆盖索引 + 禁止跳页(LIMIT优化)。
  2. 索引失效场景

    • LIKE '%xx'、函数计算、OR条件、隐式类型转换。
  3. MVCC实现原理

    • ReadView + Undo Log版本链,解决不可重复读 & 幻读。
2. Redis实战
  1. 缓存一致性方案

    • 延迟双删(先删缓存→更新DB→再删缓存)、订阅Binlog(Canal监听变更)。
  2. 缓存雪崩预防

    • 随机过期时间 + 多级缓存(本地→Redis→DB)+ 熔断降级(Sentinel)。

四、微服务与系统设计

1. 微服务核心问题
  1. Spring Boot自动配置原理

    • @EnableAutoConfiguration + META-INF/spring.factories + 条件注解(@Conditional)。
  2. 服务熔断策略

    • Sentinel动态调整阈值(基于慢调用比例触发降级)。
2. 系统设计题
  1. 设计一个高可用支付系统

    • 一致性:TCC事务 + 对账机制。

    • 容灾:同城多活(数据同步:MySQL Binlog + Kafka)。

  2. 如何实现全链路灰度发布?

    • 流量标记(Header传递) + Service Mesh(Istio动态路由)。

五、2025年新趋势(加分项)

  1. 云原生技术

    • K8s在大促中的应用(HPA自动扩缩容)、Serverless(适合定时任务/日志分析)。
  2. 大模型与编程结合

    • 使用AI辅助代码生成(如GitHub Copilot),但需关注代码安全审查。

六、面试技巧

  1. 项目深挖

    • 用STAR法则描述项目:背景(S)、任务(T)、行动(A)、结果(R)。

    • 示例:"通过Redis集群优化,将商品查询RT从200ms降至50ms"。

  2. 避坑指南

    • 避免提及不熟悉的技术(如提到Kafka却说不清ISR机制)。
  3. 算法准备

    • LeetCode中等难度高频题:二叉树遍历、DFS/BFS、动态规划。

相关推荐
木井巳2 分钟前
【BFS 解决拓扑排序】火星词典
java·算法·leetcode·广度优先·宽度优先·图搜索算法
霸道流氓气质2 分钟前
Java调用StableDiffusion/ComfyUI图像生成:DAG工作流编排、WebSocket实时进度与Flux模型集成的生产级实战
java·websocket·stable diffusion
北风toto13 分钟前
KMP 算法详解:从暴力匹配到 O(n+m) 的字符串搜索
java·开发语言·算法
weixin1997010801614 分钟前
《京东JOS API:落地方案、接口边界与业务踩坑 —— 联盟免费 vs 商家按量的双轨制》(附python源码)
java·网络·python
衡石科技16 分钟前
从语义准备到模型验收:HENGSHI SENSE Data Agent 的 RAG 与部署工程实践
java·大数据·人工智能·数据分析·rag
G018_star sky♬17 分钟前
java学习日记-多态与好玩的写法
java
撸串-研究生19 分钟前
面向景区的综合服务管理平台设计——以稻城亚丁景区为例【附源码】
java·开发语言·vue.js·前后端分离·稻城亚丁景区
一条泥憨鱼30 分钟前
拦截器与过滤器:一次请求穿过 Spring 时,会先经过谁呢
java·开发语言·后端·spring
Shaoshing32 分钟前
二分模板(左右查询)
java·算法·二分
小七在进步32 分钟前
C++内存管理:new/delete vs malloc/free深度解析
android·java·c++