京东两年经验社招面经
前几天,我在公众号分享了一篇京东校招面经:京东研发岗校招一二面面经
有朋友提到想要看看京东的社招面经,于是我整合了多位求职者分享的京东社招面经,筛选并优化了其中的高频、核心问题,给准备京东面试的球友提供一个参考。校招和社招都适用!
多提一嘴:网上京东 Java 社招面经分享真的少,我也是找了几篇零碎的面经,加上一位成功拿到京东 Offer(两年工作经验) 读者的帮助才完成这篇。
一面 (技术面,通常侧重基础)
面试时长通常在 50-60 分钟左右。
自我介绍和项目
- 请先做个自我介绍。
- 详细介绍一下你参与的核心项目,你在其中扮演的角色,负责了哪些模块?项目是否已上线?
- 项目中遇到的最大技术难点是什么?是如何解决的?
Java 核心基础
- 集合:
ArrayList,LinkedList,HashSet的底层数据结构、主要区别和适用场景?HashSet如何保证元素唯一性且其迭代顺序通常不固定?- 请详细说明
HashMap在 JDK 1.7 和 1.8 中的主要区别(底层结构、put 流程、哈希冲突处理、扩容机制等方面的优化)。 HashMap的 put 方法的完整流程是怎样的?ConcurrentHashMap在 JDK 1.8 中做了哪些优化?其 put 流程和保证线程安全的机制是什么?
- JVM:
- 请简述 JVM 的类加载过程(加载、验证、准备、解析、初始化)。
- 双亲委派模型是什么?它带来了哪些好处?
- 常见的垃圾回收器有哪些(如 CMS, G1)?它们各自的特点和适用场景是什么?你项目中实际使用的是哪种?
- 描述一下 G1 垃圾回收器的工作原理和主要阶段。
- 什么情况下会触发 Young GC 和 Full GC?
- 并发编程:
- 创建线程有哪几种方式?
Runnable和Callable接口有什么区别? - 请介绍一下 Java 线程池的核心参数及其含义(
corePoolSize,maximumPoolSize,keepAliveTime,workQueue,threadFactory,rejectedExecutionHandler)。你在项目中是如何配置和使用线程池的? synchronized和ReentrantLock的区别和底层实现原理是什么?ThreadLocal的工作原理是什么?它可能导致什么问题(如内存泄漏)?如何避免?
- 创建线程有哪几种方式?
MySQL
- 在哪些情况下 MySQL 索引会失效?请举例说明。
- 请解释联合索引的“最左前缀匹配原则”。
- 如果基于 (a, b, c) 三列创建了联合索引,查询条件 WHERE a = ? AND b = ? AND c = ? 会如何使用这个索引?如果查询条件是 WHERE a = ? AND c = ? 呢?
Redis
- 你在项目中是如何使用 Redis 的?主要用它来解决什么问题?
- Redis 常用的持久化方式(RDB 和 AOF)有哪些?它们各自的优缺点和适用场景是什么?线上环境通常如何配置?
- 如何保证 Redis 缓存和数据库的数据一致性?(例如:Cache Aside Pattern, Read/Write Through, Write Back, 延时双删等策略的原理和优缺点)
Spring
- 请解释一下 Spring 的 IoC (控制反转) 和 AOP (面向切面编程) 的核心思想。
- 在你的项目中,AOP 主要应用在哪些场景?
消息队列
- 请简述消息队列的基本工作原理(生产者、消费者、Broker)。
- 你项目中使用的 MQ 是什么?其消息模型是怎样的(如点对点、发布订阅)?
- 对比 Kafka、RabbitMQ 等主流 MQ 的主要区别和选型考量。
- 如何保证消息的顺序性消费?(特定场景下)
算法(可能)
手撕算法可能会考察一两题,也可能直接不考察。
下面是几道真题:
- 实现链表的反转(对应Leetcode 206. 反转链表)。
- 给定一个整数数组,要求将所有偶数移动到数组前面,奇数移动到后面,同时保持偶数之间、奇数之间的相对顺序不变。
二面 (技术面,通常侧重项目深度、架构设计与问题解决能力)
面试时长通常在 50-60 分钟左右,面试官可能会更资深。
项目
针对一面聊到的项目,深入提问实现细节、遇到的难点、技术选型的原因、性能优化、线上问题排查经历等。可能会要求画出系统架构图。
Java
ReentrantLock的底层实现原理是什么?(AQS)- 请详细解释 AQS (AbstractQueuedSynchronizer) 的工作原理,它内部维护了哪些核心数据结构(如 CLH 队列、条件队列)?
- CAS (Compare-and-Swap) 的原理是什么?它可能存在什么问题(如 ABA 问题)?如何解决?
- 请解释乐观锁和悲观锁的概念及其实现方式。
MySQL
- 请解释 MySQL 的事务特性 (ACID)。
- 说明 MySQL 的四种事务隔离级别及其可能解决的问题(脏读、不可重复读、幻读)。
- 什么是幻读?在可重复读(Repeatable Read)隔离级别下,InnoDB 是如何避免幻读的?(MVCC + Next-Key Lock)
- MySQL 索引底层为什么通常选用 B+ 树结构?它相比 B 树有哪些优势?
Redis
- Redis 的 Set 和 ZSet (Sorted Set) 底层数据结构分别是什么?它们的主要区别和适用场景?
- Redis 集群技术选型
- 线上 Redis 实例发生缓存雪崩、缓存穿透、缓存击穿时,分别是什么现象?你有什么解决方案?
分布式与微服务
- 如何设计一个高可用的分布式锁服务?
- 在微服务架构下,如何保证跨服务的事务一致性?(如 TCC, SAGA, 可靠消息最终一致性等方案)
系统设计 (可能)
京东面试可能会考虑系统设计题,下面是几道真题:
- 设计一个高并发的秒杀系统关键环节。
- 设计一个实时更新的排行榜系统(如直播打赏榜)。
- 海量数据处理问题(如两个各有 50 亿 URL 的文件,找出共同的 URL;Top K 问题等)。
算法(可能)
手撕算法可能会考察一两题,也可能直接不考察。
下面是几道真题:
- 数组有序排列并多次旋转找出最小元素(对应Leetcode 153. 寻找旋转排序数组中的最小值)
- 实现链表的两两翻转(例如 1->2->3->4 变为 2->1->4->3)(对应 Leetcode 24. 两两交换链表中的节点)。
HR 面 (通常在技术面通过后进行)
面试时长通常较短,10-30 分钟左右。
- 自我介绍 (可侧重软技能和职业素养)
- 过往经历回顾:
- 实习/工作经历中最有成就感/最具挑战性的一件事是什么?你是如何做的?
- 为什么选择离开上一家公司?
- 个人特质与动机:
- 你认为自己最大的优点和缺点是什么?
- 你的职业规划是怎样的?
- 为什么选择京东?为什么对我们这个部门/业务感兴趣?
- 文化与期望:
- 你期望在一个什么样的团队工作?
- 对加班怎么看?
- 期望薪资是多少?
- 其他情况:
- 目前还有在看其他公司的机会吗?拿到 Offer 了吗?
- 最早可以入职的时间?
- (社招可能会问职级、薪资、绩效等细节)
- 反问环节
总结与建议
- 基础扎实是前提: Java 核心(集合、并发、JVM)、数据库(MySQL、Redis)几乎是必考项,需要深入理解原理。
- 项目经验是关键: 不仅要能清晰描述项目,更要能深入阐述其中的技术难点、解决方案、个人贡献和思考。一定要提前准备好被“拷打”细节!
- 并发与分布式是加分项: 对锁、事务、缓存一致性、消息队列、RPC 等有深入理解和实践经验会非常有优势。
- 算法能力不能少: 常见的链表、数组、二分查找、排序等题目需要熟练掌握,海量数据处理思路也要有所了解。
- 沟通表达很重要: 清晰、有条理地表达自己的想法,展现良好的沟通和协作能力。
- 针对性准备: 根据京东的业务特点(电商、零售、物流、金融、健康等),思考自己的技能和经验如何与之匹配。
更新: 2025-05-05 14:03:48
原文: https://www.yuque.com/snailclimb/mf2z3k/zcynu0dn8x29okrv