京东后端开发一面面经
- 时间
- 2026-08
- 来源
- 牛客网
《面试题目》
- 东哥东哥我爱你,快让我过吧
- 自我介绍一下,简单介绍自己的技术背景。
- Redis 常见的持久化方式有哪些?RDB 和 AOF 的实现机制有什么区别?线上环境一般如何选择?
- Redis 出现缓存穿透、缓存击穿、缓存雪崩时,分别有哪些解决方案?
- 在电商大促场景下,某个热门商品访问量和库存操作量非常高,如果大量请求直接访问 Redis,会产生什么问题?
- 如果热点商品不仅查询量大,同时更新库存的请求也非常频繁,仅依靠本地缓存是否能够解决?为什么?
- 针对高并发写热点问题,你有哪些优化思路?如果引入消息队列进行流量削峰,如何保证消息可靠性和消费顺序?
- 除了消息队列之外,还有哪些方式可以避免数据库因为突发流量导致压力过大?
- 日常开发或者代码 Review 时,你会如何判断一条 SQL 是否存在性能问题?
- MySQL 建立联合索引时,最左匹配原则具体是什么?实际查询中有哪些注意事项?
- Kafka、RabbitMQ、RocketMQ 这些消息中间件有什么区别?Kafka 的优势和适用场景是什么?
- 手撕代码:基于阻塞队列实现一个简单的生产者-消费者模型(共享屏幕完成)。
- synchronized 在 JDK
- 之后进行了哪些优化?锁升级过程是怎样的?
- 线程上下文切换为什么会产生性能损耗?有哪些方式可以减少线程切换?
- Java 线程池有哪些核心参数?任务提交后的执行流程是什么?拒绝策略通常如何选择?
- ReentrantLock 和 synchronized 在实现机制上有哪些区别?各自适用于什么场景?
- ReentrantLock 是否支持公平锁?默认采用哪种锁模式?
《参考解析》
- Redis常用于缓存、分布式锁和计数。缓存与数据库更新通常采用“先写数据库、再删除缓存”,并通过重试、延时双删或消息补偿处理删除失败。
- MySQL索引通常使用B+树,叶子节点按顺序连接,适合范围查询;设计索引时结合选择性、最左匹配原则和执行计划,避免无效索引与回表开销。