一、面试第 1 轮
1. linux 网络模型
2. b+树
3. 阻塞队列
4. redis 和 MongoDB 的区别。几个概念对比,还有底层实现。
5. 算法题: merge k sorted list,时间复杂度如何?
6. HashMap 如果一直 put 元素会怎么样?hashcode 全都相同如何?equals 方法都相同
如何?
7. ApplicationContext 的初始化过程?初始化过程中发现循环依赖 Spring 是如何处理的。
8. GC 用什么收集器?收集的过程如何?哪些部分可以作为 GC Root?
9. Volatile 关键字,指令重排序有什么意义?
10.synchronied 怎么用?
11.并发包里的原子类有哪些,怎么实现?cas 在 CPU 级别用什么指令实现的?
12.Redis 数据结构有哪些?如何实现 sorted set?这种数据结构在极端情况下可能有什么
问题?二叉平衡树?
13.系统设计题:一个推送场景,50 条内容,定时推送,先推 5%用户,一段时间后再找出
效果最好的几条,推给所有用户。设计相关库表,系统模块, 需要可以落地,有伪代码
14.MySql 索引是什么数据结构?B tree 有什么特点?优点是什么?
15.慢查询怎么优化?
16.项目:cache 设计,MQ 丢失消息,RPC 使用场景。各部分职责,有哪些优化点。
17.ThreadLocal 使用场景
18.Redis 回收和备份
19.项目设计问题——主要是针对项目找漏洞,然后给出优化方案
20.遇到的坑,怎么解决,后续总结。
二、面试第 2 轮
1. 那些问题对你挑战最大?
2. JDK 1.8 ConcurrentHashMap 做过什么改进?HashMap 死锁?
3. 标记的时候怎么找出栈上的 GC Root?说出一种可能的方案,存在什么问题?
4. 字节码有了解过吗?
5. 本地缓存怎么优化空间?(提出 BitMap)BitMap 可行吗?怎么验证可行性?如果不
可行,怎么证伪?
6. 其他语言有了解过吗?Scala 的集合有什么特性?python 有什么高级特性?
7. 怎么学习新技术?哪些是基础技术?
8. 在部门中是什么角色定位?
9. JDK 1.8 比前一个版本有哪些改进?
10. ParNew 收集过程,如何调优 ParNew?如何减少 full gc?调大 YoungGen 有什么好处
坏处?
11. OpenAPI
12. 平衡二叉树13. 业务逻辑
14. MySQL
15. 服务设计题
16. web 架构设计
17. Pack
18. http 协议
19. 爬虫
20. Java Agent
21. Zookeeper
22. LoadBalance
23. 分布式 ID
24. Nginx
25. Cookie
26. Session
27. GC
28. 手写 LRU 缓存
29. 将现有线性存储结构改成环形结构
30. Redis IO 模型
31. MQ 架构对比
32. 各种缓存 memcache,MongoDB,EhCache,Guava,Caffeine 等等,使用场景
33. 数据库乐观锁悲观锁。在 JDK 和其他中间件的体现。
34. 线程池,核心参数,扩容原理,使用注意点
35. 数据库主从同步,延迟
36. 数据库和缓存一致性问题,出现的场景,解决方案
37. Spring IOC AOP
38. 一致性哈希算法
39. RPC 服务发现与注册
40. 服务提供方不稳定,频繁变动如何提升自身稳定性
三、面试第 3 轮—HR
1. 离职原因
2. 学习习惯
3. 兴趣爱好
4. 为什么选择本公司
5. 本人的优缺点
6. 唠家常
四、总结
主要看技术能力,沟通能力和态度(不会就是不会,不要说百度就知道)。
------------------------推荐阅读------------------------
2019年JVM最新面试题,必须收藏它
最全面的阿里多线程面试题,你能回答几个?
Java面试题:Java中的集合及其继承关系
花了近十年的时间,整理出史上最全面Java面试题
原文地址:https://www.cnblogs.com/yuxiang1/p/11404569.html