当前位置: 首页 > 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.lryc.cn/news/624674.html

相关文章:

  • AI 推荐系统云端部署实战:基于亚马逊云科技免费资源的工程实现
  • 从财务整合到患者管理:德国医疗集团 Asklepios完成 SAP S/4HANA 全链条升级路径
  • CAN总线的安全性
  • Linux小白加油站,第三周周考
  • 世界模型之自动驾驶
  • 想找出版社出书?这样选就对了!
  • 《P1195 口袋的天空》
  • OVS:ovn是如何支持组播的?
  • GPT-5之后:当大模型更新不再是唯一焦点
  • 多硬盘构建lvm存储
  • GPT-5博士级AI使用教程及国内平替方案
  • 基于SpringBoot+Uniapp的互联网订餐小程序(协同过滤算法、Echarts图形化分析)
  • “Let it Crash“:分布式系统设计的涅槃重生哲学
  • 【笔记】位错的定义和分类
  • 【2025CVPR-目标检测方向】学习稳健且硬件自适应的对象检测器,以应对边缘设备的延迟攻击
  • Image-to-Music API 接入文档(图片生成音乐)
  • 综合布线系统的网络分线箱计量-文字查找精准定位
  • 区块链技术原理(16)-以太坊节点与客户端
  • 从0-1使用Fastmcp开发一个MCP服务,并部署到阿里云百炼 -持续更新中
  • 深入理解浏览器渲染机制:重排(Reflow)与重绘(Repaint)
  • 深入剖析以太坊虚拟机(EVM):区块链世界的计算引擎
  • 【低空安全】低空安全简介
  • OCR库pytesseract安装保姆级教程
  • 【LLM1】大型语言模型的基本生成机制
  • 特种行业许可证识别技术:通过图像处理、OCR和结构化提取,实现高效、准确的许可证核验与管理
  • 力扣32:最长有效括号
  • Docker小游戏 | 使用Docker部署文字风格冒险网页小游戏
  • 【Linux开发】错误更改bash.sh导致PATH环境变量被破坏所有命令不可用的解决方法
  • CANOE-新建工程
  • shell脚本实现读取ini键值