京东 Java 二面面经
最近参加了京东的 Java 岗位二面,整体时长大约 60 分钟。相比一面更偏向基础知识点考察,二面更加注重 项目经验的深度挖掘 和 对技术选型的思考,同时也会穿插一些进阶的八股文内容。
一、项目深挖
面试官首先围绕我之前提到的高并发下订单处理的项目,进行了深入追问,重点包括:
- 系统架构设计为什么选择分布式架构,服务拆分的依据是什么?如果订单服务出现单点故障,如何保证高可用?数据库与缓存双写一致性的具体实现方案。
- 高并发处理如何保证下单接口的幂等性?高并发写入数据库时如何避免热点行锁问题?使用了哪些限流、降级、熔断手段?限流算法是如何实现的(令牌桶/漏桶)?
- 消息队列项目中是否用过消息中间件?选择 Kafka、RocketMQ 还是 RabbitMQ 的原因。如何保证消息不丢失、不重复消费?消息堆积时的解决办法。
- 监控与运维系统运行过程中的监控指标如何设计?如何排查线上接口延迟或超时问题?
可以明显感觉到二面对于 实际场景下的问题处理能力 要求更高,面试官会从一个点不断深入,直到确认你是否真的在项目中思考和解决过。
答案都在:
全网最全面的java八股文专栏:https://www.nowcoder.com/creation/manager/columnDetail/0n9XOd
二、Java 基础与八股文延伸
除了项目,面试官还会抽查一些核心知识点,但问题会更有深度:
- Java 内存模型(JMM)happens-before 原则有哪些?synchronized 与 volatile 在内存语义上的区别。
- 集合与并发容器ConcurrentHashMap 的分段锁到 CAS 的演进过程。CopyOnWriteArrayList 的底层机制,适用场景和缺点。
- 多线程与锁机制ThreadLocal 的原理以及可能导致的内存泄漏问题。AQS 的实现原理,ReentrantLock、公平锁与非公平锁的实现区别。Condition 的使用场景。
- JVM 调优线上遇到 Full GC 频繁的问题,如何排查?内存泄漏的常见场景,如何利用工具(如 jmap、MAT)定位。CMS 和 G1 的对比,为什么生产上更多选择 G1。
三、数据库与缓存
数据库和缓存部分的问题更多聚焦在 实际设计与优化:
- 数据库如何设计表结构避免大事务?分库分表后的主键生成策略有哪些?MySQL InnoDB 的行锁与间隙锁区别,什么时候会出现死锁?
- 缓存Redis 的持久化方式 RDB 与 AOF 的差异。如何避免 Redis 热点 key 问题?Redis 集群中的一致性哈希与槽分配机制。
四、系统设计与场景题
面试官给了几个开放性问题:
- 如何设计一个秒杀系统,保证库存不超卖?
- 如果下单量暴增,数据库写入撑不住,怎么优化?
- 如果 Redis 挂掉,如何保证系统可用性?
这些题目考察的不是单一知识点,而是你是否能结合 缓存、数据库、消息队列、分布式锁 等技术,设计出合理的解决方案。
五、总结
京东二面的整体感觉是:
- 比一面更注重 项目实践能力,会从细节不断深入。
- 八股文不再是单纯背诵,而是考察 原理与实际场景的结合。
- 面试官很看重 架构设计能力,尤其是在高并发、高可用场景下的解决方案。
因此,准备京东二面时,不仅需要对 Java 基础、集合、多线程、JVM、数据库、缓存有较深理解,还要能够结合实际项目,给出合理的设计思路和取舍依据。
#发面经攒人品#