京东后端面经
1. 先做个自我介绍吧。
2. 一个标准的 Java Web 请求,从前端到数据库,都经历了哪些环节?
3. 详细讲讲 TCP 的三次握手?
4. 你用的哪个 JDK 版本?调过 JVM 参数吗?了解哪些主要参数?
5. 了解哪些垃圾回收器和算法?CMS 和 G1 对比过吗?
6. 遇到过哪些 Java OOM 的场景?怎么处理的?
7. ConcurrentHashMap 和 HashMap 的底层结构有啥区别?为啥要用 ConcurrentHashMap?
8. Java 里有哪些锁机制?CAS 乐观锁和悲观锁是怎么实现的?
9. Java 多线程有哪几种创建和管理方式?了解线程池的哪些参数?
10. 线程池的拒绝策略有哪些?项目里常用哪种?为啥?
11. 开发时用 Spring/Spring Boot 吗?用什么框架操作数据库?
12. MyBatis 是怎么实现在同一个事务里操作两个表的?
13. 开发中用过缓存吗?Redis 用得多吗?了解哪些缓存淘汰策略?
14. 更新数据库时,怎么保证缓存和数据一致?怎么防止缓存击穿、雪崩、穿透?
15. Redis 的布隆过滤器原理是啥?
16. 数据库用的 MySQL 吗?为啥 MySQL 用 B+ 树做索引?和 B 树有啥区别?
17. MySQL 是怎么实现事务隔离的?各个隔离级别是怎样的?怎么理解脏读、幻读、可重复读?
18. MySQL 的 binlog、redo log、undo log 分别是干嘛的?
19. 怎么看 SQL 有没有命中索引?用 EXPLAIN 主要看哪些字段?
20. 用过消息队列吗?怎么保证消息的顺序?
21. 操作系统里,进程和线程之间怎么传递数据?
22. 多进程和多线程有啥区别?
23. 了解分布式的 CAP 理论吗?
24. 编程题:动态规划,零钱兑换问题。