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

2025年Java后端开发岗面试的高频项目场景题 + 八股文(100w字)

一、Java 八股文高频面试题

1. Java 基础

  1. HashMap vs ConcurrentHashMap

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

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

  2. synchronized vs ReentrantLock

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

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

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

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

    • 有序性:禁止指令重排序。

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

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

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

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

  5. Java 8 新特性?

    • Lambda、Stream API、Optional、方法引用、接口默认方法


2. JVM 篇

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

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

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

  2. G1 垃圾回收器特点

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

  3. 如何排查 OOM?

    • 工具jmap -dump + MAT 分析堆转储jstack 查线程死锁。

  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 队列(线程排队)。

    • 实现类ReentrantLockCountDownLatch

  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)。

  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年最新100w字完整版面试场景题库丝我890嗱 

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

相关文章:

  • SAFNet:一种基于CNN的轻量化故障诊断模型
  • 【os】标准库
  • Rust 学习笔记:比较数值
  • 分布式锁——学习流程
  • 设计模式精讲 Day 20:状态模式(State Pattern)
  • 从零到一搭建远程图像生成系统:Stable Diffusion 3.5+内网穿透技术深度实战
  • 深入解析NumPy的核心函数np.array()
  • Linux 终止进程
  • 企业级应用技术-ELK日志分析系统
  • Text2SQL主流实现方案
  • js代码09
  • matlab/Simulink-全套50个汽车性能建模与仿真源码模型9
  • Next.js 安装使用教程
  • UniApp完全支持快应用QUICKAPP-以及如何采用 Uni 模式开发发行快应用优雅草卓伊凡
  • Spring Boot 启动加载执行链路分析
  • 基于Socketserver+ThreadPoolExecutor+Thread构造的TCP网络实时通信程序
  • 启用不安全的HTTP方法
  • 遥感影像岩性分类:基于CNN与CNN-EL集成学习的深度学习方法
  • 二十八、【环境管理篇】灵活应对:多测试环境配置与切换
  • Prompt生成指南
  • Gin 中间件详解与实践
  • AT6558R-5N32介绍
  • 阿里云-云效自动部署spring boot项目
  • 计算机网络:【socket】【UDP】【地址转换函数】【TCP】
  • 【文件解析】json.load(fp)
  • 借助工具给外语视频加双语字幕的实用指南​
  • 赋能城市安全韧性|众智鸿图总裁扈震受邀出席智慧城市大会发表主题报告
  • 【锂电池剩余寿命预测】GRU门控循环单元锂电池剩余寿命预测(Pytorch完整源码和数据)
  • 【机器学习深度学习】模型微调的基本概念与流程
  • OpenGL 3D编程大师基础之路:从几何体到物理引擎