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

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后为元空间)。

2. JVM篇

  1. G1垃圾回收器特点

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

  2. OOM排查方法

    • jmap -dump导出堆内存 → MAT分析内存泄漏 → jstack查死锁。

  3. 类加载机制

    • 双亲委派模型(BootStrap → Extension → Application),打破方式(如Tomcat的WebAppClassLoader)。

3. 并发编程

  1. 线程池参数设置

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

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

  2. AQS(AbstractQueuedSynchronizer)原理

    • 核心:state(资源状态)+ CLH队列(线程排队),实现类如ReentrantLockCountDownLatch

  3. 分布式锁方案

  • Redis(SETNX + RedLock)、ZooKeeper(临时节点 + Watch机制)。


二、高并发与分布式系统(高频场景题)

1. 秒杀系统设计

  1. 核心问题:超卖、库存一致性、高并发请求。

  2. 解决方案

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

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

2. 分布式事务

  1. TCC模式Try-Confirm-Cancel):适用于金融支付系统。

  2. SAGA长事务:适用于补偿机制较强的业务。

  3. 本地消息表:最终一致性方案,适用于订单系统。

3. 缓存一致性

  1. 延迟双删:先删缓存 → 更新DB → 再删缓存。

  2. 订阅BinlogCanal监听MySQL变更)。

4. 十亿级数据分页优化

  1. ES search_after(深度分页)。

  2. 覆盖索引 + 禁止跳页LIMIT 10000, 10优化)。


三、数据库与缓存优化

1. MySQL高频考点

  1. 索引失效场景

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

  2. MVCC实现原理

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

2. Redis实战

  1. 缓存雪崩预防

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

  2. 热点Key探测

    • redis-cli --hotkeys --pattern "user:*"


四、微服务与系统设计

1. Spring Boot自动配置原理

  1. @EnableAutoConfiguration + META-INF/spring.factories + 条件注解(@Conditional)

2. 服务熔断策略

  1. Sentinel动态调整阈值(基于慢调用比例触发降级)。

3. 全链路灰度发布

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


http://www.dtcms.com/a/338306.html

相关文章:

  • pandas基本数据
  • 开疆智能Profient转EtherCAT网关连接伦茨变频器配置案例
  • DeepSeek辅助编写的将ET格式文件转换为xls和xlsb格式程序
  • 数据结构:查找表
  • Unity爆炸力场实战指南
  • 94、23种设计模式之工厂方法模式
  • 循序渐进学 Spring (下):从注解、AOP到底层原理与整合实战
  • SpringBoot 自研运行时 SQL 调用树,3 分钟定位慢 SQL!
  • SpringBoot3整合OpenAPI3(Swagger3)完整指南
  • 王树森深度强化学习DRL(三)围棋AlphaGo+蒙特卡洛
  • Laravel中如何使用php-casbin
  • MP4 文件格式验证工具
  • onRequestHide at ORIGIN_CLIENT reason HIDE_SOFT_INPUT fromUser false
  • kafka的pull的依据
  • python 数据拟合(线性拟合、多项式回归)
  • 【2025CVPR-目标检测方向】学习稳健且硬件自适应的对象检测器,以应对边缘设备的延迟攻击
  • 【K8s】K8s 服务优雅下线调试记录
  • C# NX二次开发:字符串控件StringBlock讲解
  • 【MongoDB】常见八股合集,mongodb的特性,索引使用,优化,事务,ACID,聚合查询,数据复制机制,理解其基于raft的选举机制
  • 虚拟货币(BTC)走势分析指标体系
  • JMeter与大模型融合应用之构建AI智能体:评审性能测试脚本
  • 浅入浅出常见敏感数据处理的加密算法
  • 如何在 Ubuntu 24.04 或 22.04 LTS 上安装 PowerShell
  • SHA-256 详解
  • UE5 批量编译蓝图技巧
  • Linux Miniconda安装教程与conda常用指令介绍
  • 区块链数字存证应用
  • 健身房预约系统SSM+Mybatis实现(四、登录页面+JWT+注销)
  • 【前端智能化】AG-UI实践及原理浅析
  • 决策树的笔记