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

2025年Java最新社招面试八股文+技术场景题(金九银十)

一、Java基础与JVM篇 

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. ThreadLocal原理及内存泄漏问题

    • 每个线程维护ThreadLocalMap,Key是弱引用,Value是强引用,需手动remove()避免内存泄漏。

  5. Java 8新特性

    • Lambda表达式、Stream API、Optional、方法引用、接口默认方法。


2. JVM深度解析

  1. JVM内存模型

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

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

  2. G1垃圾回收器特点

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

  3. OOM排查方法

    • 使用MAT分析堆转储文件,jstack查线程死锁,jmap获取堆内存快照。

  4. 类加载机制与双亲委派模型

    • 加载→验证→准备→解析→初始化。

    • 打破双亲委派:重写loadClass()(如Tomcat的WebAppClassLoader)。


二、并发编程与分布式系统 

1. 并发编程核心

  1. 线程池参数设置

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

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

  2. AQS(AbstractQueuedSynchronizer)原理

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

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

    • 使用AtomicStampedReference(版本号)或AtomicMarkableReference(时间戳)。

  4. 分布式锁实现方式

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


2. 分布式系统设计

  1. CAP理论应用

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

  2. 分布式事务解决方案

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

  3. 分布式ID生成

    • Snowflake(趋势递增,时钟回拨问题)、Leaf-Segment(DB号段缓冲,适合金融场景)。


三、数据库与缓存优化 

1. MySQL深度优化

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

    • ES search_after(深度分页)、覆盖索引+禁止跳页(LIMIT优化)。

  2. 索引失效场景

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

  3. MVCC实现原理

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


2. Redis高级应用

  1. 缓存一致性方案

    • 延迟双删(先删缓存→更新DB→再删缓存)、订阅Binlog(Canal监听MySQL变更)。

  2. 热点数据隔离

    • 为秒杀商品配置独立Redis集群,避免影响主业务。

  3. Redis持久化策略

    • RDB(快照恢复快)和AOF(日志更安全)的对比与选择。


四、微服务与架构设计 

1. 微服务核心问题

  1. 服务熔断与降级

    • Sentinel实现熔断(慢调用比例阈值触发降级)。

  2. 全链路灰度发布

    • 通过Header传递流量标记(Nginx动态路由)或Service Mesh(Istio Sidecar代理)。

  3. Spring Boot自动配置原理

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


2. 系统架构设计

  1. 同城多活架构

    • 数据同步(MySQL Binlog + Kafka)、流量调度(DNS/GSLB)、冲突解决(时间戳/版本号)。

  2. Service Mesh落地难点

    • Sidecar带来的性能损耗(约10%延迟)和多语言服务治理的统一化挑战。


五、技术场景题(实战向) 

1. 高并发场景

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

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

  2. 如何解决缓存穿透?

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

  3. 如何防止缓存雪崩?

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


2. 银行业务相关面试题(加分项)

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

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

  2. 如何防止重复支付?

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

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

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


 

 

 


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

http://www.xdnf.cn/news/1130635.html

相关文章:

  • Hadoop架构演进:从1.0到2.0的深度对比与优化解析
  • Hadoop(二)
  • QT技巧之快速搭建串口收发平台
  • Taro.getRandomValues() 用法详解
  • 有哪些好用的原型设计软件?墨刀、Axure等测评对比
  • Elasticsearch+Logstash+Kibana部署
  • Taro.eventCenter 用法详解与实战
  • 深入核心:理解Spring Boot的三大基石:起步依赖、自动配置与内嵌容器
  • 【Qt+error】error: use of undeclared identifier ‘MainWindow
  • uniapp各端通过webview实现互相通信
  • qt 中英文翻译 如何配置和使用
  • Spring AI 系列之十三 - RAG-加载本地嵌入模型
  • 在 CentOS 8 上彻底卸载 Kubernetes(k8s)
  • k8s之持久化存储流程
  • JavaScript 异步编程的终极指南:从回调到 Promise、Async/Await
  • 深入解析Linux进程地址空间与虚拟内存管理
  • vivo S30评测:用设计诠释科技,以性能书写情怀
  • 电脑安装 Win10 提示无法在当前分区上安装Windows的解决办法
  • openEuler 22.03 LTS Rootless Docker 安装指南
  • Apache IoTDB(1):时序数据库介绍与单机版安装部署指南
  • 免费MCP服务:Excel CSV 转 JSON MCP by WTSolutions 文档
  • 计算机网络:(九)网络层(下)超详细讲解互联网的路由选择协议、IPV6与IP多播
  • 微服务中token鉴权设计的4种方式
  • STM32 | 定时器 PWM 呼吸灯
  • Python 程序设计讲义(2):Python 概述
  • kube-proxy 中 IPVS 与 iptables
  • SQL学习记录01
  • 【PTA数据结构 | C语言版】根据层序序列重构二叉树
  • day053-初识docker与基础命令
  • 【人工智能99问】神经网络的工作原理是什么?(4/99)