当前位置: 首页 > news >正文

2025年Java后端最新面试场景题 + 八股文高频面试题

一、Java 八股文高频面试题(基础+进阶)

1. Java 基础

  1. HashMap 和 ConcurrentHashMap 的区别?ConcurrentHashMap 如何保证线程安全?

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

    • ConcurrentHashMap:线程安全,JDK1.7 使用 分段锁,JDK1.8 改用 CAS + synchronized 优化锁粒度。

  2. synchronized 和 ReentrantLock 的区别?

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

    • ReentrantLock:可重入锁,支持 公平锁/非公平锁,可中断,支持 Condition 条件队列

  3. volatile 的作用?能否保证原子性?

    • 可见性:强制线程从主存读取最新值。

    • 有序性:禁止指令重排序(内存屏障)。

    • 不保证原子性(如 i++ 仍需 AtomicInteger)。

  4. ThreadLocal 原理及内存泄漏问题?

    • 原理:每个线程维护 ThreadLocalMap,Key 是弱引用,Value 是强引用。

    • 内存泄漏:Key 被回收后,Value 仍存在,需手动 remove()

  5. Java 8 新特性?

    • LambdaStream APIOptional方法引用接口默认方法


2. JVM 篇

  1. JVM 内存模型?哪些区域是线程共享的?

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

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

  2. 垃圾回收算法有哪些?G1 的特点?

    • 标记-清除(碎片化)、复制算法(新生代)、标记-整理(老年代)。

    • G1:分代回收,Region 分区可预测停顿,适合大内存应用。

  3. 如何排查 OOM?常见工具有哪些?

    • MAT(Memory Analyzer)jstack(线程分析)、jmap(堆内存快照)。

  4. 类加载机制?如何打破双亲委派?

    • 双亲委派:BootStrap → Extension → Application → 自定义类加载器。

    • 打破方式:重写 loadClass()(如 Tomcat 的 WebAppClassLoader)。

  5. JVM 调优参数?

    • -Xms(初始堆)、-Xmx(最大堆)、-Xmn(新生代)、-XX:SurvivorRatio(Eden:Survivor 比例)。


3. 并发编程

  1. 线程池的核心参数?如何设置?

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

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

  2. AQS(AbstractQueuedSynchronizer)原理?

    • 核心state(资源状态) + CLH 队列(线程排队)。

    • 实现类ReentrantLockCountDownLatchSemaphore

  3. CAS 的 ABA 问题如何解决?

    • 版本号AtomicStampedReference)或 时间戳

  4. synchronized 锁升级过程?

    • 无锁 → 偏向锁 → 轻量级锁(CAS)→ 重量级锁(OS 互斥锁)

  5. 分布式锁的实现方式?

    • Redis(SETNX + RedLock)ZooKeeper(临时节点 + Watch)


二、Java 后端面试场景题(实战向)

1. 高并发场景

  1. 如何设计一个百万级 QPS 的秒杀系统?

    • 分层削峰:Nginx 限流 + Redis 预减库存 + 消息队列异步处理。

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

  2. 如何解决缓存穿透?

    • 布隆过滤器(拦截无效请求)+ 空值缓存(防止频繁查 DB)。

  3. 如何防止缓存雪崩?

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


2. 分布式系统

  1. 如何实现分布式唯一 ID?

    • Snowflake(趋势递增,时钟回拨问题)。

    • Leaf-Segment(DB 号段缓冲,适合金融场景)。

  2. 如何保证分布式事务?

    • 2PC(强一致,性能差)TCC(最终一致)SAGA(长事务)本地消息表

  3. CAP 理论如何理解?银行系统更侧重哪两点?

    • CP(一致性 + 分区容错性),如支付系统必须保证数据强一致。


3. 数据库优化

  1. 十亿级数据分页查询优化?

    • ES search_after(深度分页)+ 覆盖索引 + 禁止跳页

  2. MySQL 索引失效场景?

    • LIKE '%xx'函数计算OR 条件隐式类型转换

  3. MVCC 实现原理?

    • ReadView + Undo Log 版本链,解决 不可重复读 & 幻读


4. 微服务 & 架构

  1. Spring Boot 自动配置原理?

    • @EnableAutoConfiguration + META-INF/spring.factories + 条件注解@Conditional)4。

  2. Dubbo 和 Spring Cloud 的区别?

    • Dubbo:RPC 框架,性能高,适合内部服务调用。

    • Spring Cloud:全家桶(Eureka、Feign、Hystrix),适合微服务生态。

  3. 如何设计微服务限流?

    • 令牌桶算法(Guava RateLimiter)+ Sentinel 熔断降级


三、银行业务相关面试题(加分项)

  1. 如何保证金融级数据一致性?

    • TCC 事务(Try-Confirm-Cancel)+ 对账机制(定时核对账务)。

  2. 如何防止重复支付?

    • 幂等性设计(唯一订单号 + 状态机)。

  3. 银行系统常用的加密算法?

    • RSA(非对称)SHA-256(摘要)国密 SM4(对称)

 

 

 

  需要25年最新完整版面试场景题库丝我890嗱

http://www.lqws.cn/news/519985.html

相关文章:

  • Dagster数据管道构建指南:I/O管理与数据库连接实践
  • React Native【实战范例】账号管理(含转换分组列表数据的封装,分组折叠的实现,账号的增删改查,表单校验等)
  • rules写成动态
  • syncthing忘记密码怎么办(Mac版)?
  • 成都芯谷金融中心·文化科技园打造文化科技高地
  • 微服务思想与C++服务化框架
  • 跟着AI学习C#之项目实践Day7
  • sentinel 自定义 dashboard 用户名密码
  • 第⼀个与⼤模型交互的应⽤
  • Swagger 在 Spring Boot 中的详细使用指南
  • thinkphp8之文件上传
  • 用户体验驱动的3D设计:从功能实现到情感共鸣的设计升级
  • 融合聚类与分类的退役锂电智能分选技术:助力新能源汽车产业可持续发展
  • JVM调优实战 Day 6:JVM性能监控工具实战
  • 数据结构 顺序表与链表
  • python的易家宜超市云购物系统
  • webman 利用tcp 做服务端 对接物联网
  • 使用 Spread.net将 Excel 中的文本拆分为多段
  • 注解+AOP+自动配置实现自定义starter
  • Java8 Stream流:Stream流的思想和获取Stream流
  • 深入浅出:RocketMQ与Kafka的双剑合璧,实现高可用与高吞吐
  • 服务器不支持PUT,DELETE 的解决方案
  • python爬虫框架scrapy学习记录
  • 打造属于你的AI智能体,从数据开始 —— 使用 Bright Data MCP+Trae快速构建垂直智能体
  • 量学云讲堂2025朱永海慢牛开启第58期视频课程
  • 卡萨帝发布AI深度科技:实现从守护生活到守护文明的升级
  • Linux系统之Nginx反向代理与缓存
  • Aurora MySQL 3.05/3.06/3.07版本即将停用,全局数据库升级实战指南
  • 逆序对的数量
  • 基于MATLAB的BP神经网络的心电图分类方法应用