面灵AI

京东后端开发一面面经

时间
2026-08
来源
牛客网

《面试题目》

  1. 东哥东哥我爱你,快让我过吧
  2. 自我介绍一下,简单介绍自己的技术背景。
  3. Redis 常见的持久化方式有哪些?RDB 和 AOF 的实现机制有什么区别?线上环境一般如何选择?
  4. Redis 出现缓存穿透、缓存击穿、缓存雪崩时,分别有哪些解决方案?
  5. 在电商大促场景下,某个热门商品访问量和库存操作量非常高,如果大量请求直接访问 Redis,会产生什么问题?
  6. 如果热点商品不仅查询量大,同时更新库存的请求也非常频繁,仅依靠本地缓存是否能够解决?为什么?
  7. 针对高并发写热点问题,你有哪些优化思路?如果引入消息队列进行流量削峰,如何保证消息可靠性和消费顺序?
  8. 除了消息队列之外,还有哪些方式可以避免数据库因为突发流量导致压力过大?
  9. 日常开发或者代码 Review 时,你会如何判断一条 SQL 是否存在性能问题?
  10. MySQL 建立联合索引时,最左匹配原则具体是什么?实际查询中有哪些注意事项?
  11. Kafka、RabbitMQ、RocketMQ 这些消息中间件有什么区别?Kafka 的优势和适用场景是什么?
  12. 手撕代码:基于阻塞队列实现一个简单的生产者-消费者模型(共享屏幕完成)。
  13. synchronized 在 JDK
  14. 之后进行了哪些优化?锁升级过程是怎样的?
  15. 线程上下文切换为什么会产生性能损耗?有哪些方式可以减少线程切换?
  16. Java 线程池有哪些核心参数?任务提交后的执行流程是什么?拒绝策略通常如何选择?
  17. ReentrantLock 和 synchronized 在实现机制上有哪些区别?各自适用于什么场景?
  18. ReentrantLock 是否支持公平锁?默认采用哪种锁模式?

《参考解析》

  1. Redis常用于缓存、分布式锁和计数。缓存与数据库更新通常采用“先写数据库、再删除缓存”,并通过重试、延时双删或消息补偿处理删除失败。
  2. MySQL索引通常使用B+树,叶子节点按顺序连接,适合范围查询;设计索引时结合选择性、最左匹配原则和执行计划,避免无效索引与回表开销。