面试题整理
原文地址:https://maimai.cn/article/detail?fid=509832818
git:https://github.com/crossoverJie/Java-Interview
- JMM 内存模型,如何划分的?分别存储什么内容?线程安全与否?
- 类加载机制,谈到双亲委派模型后会问到哪些违反了双亲委派模型?为什么?为什么要双亲委派?好处是什么?
- 平时怎么使用多线程?有哪些好处?线程池的几个核心参数的意义?
- 线程间通信的方式?
- HashMap 的原理?当谈到线程不安全时自然引申出 ConcurrentHashMap ,它的实现原理?
- 分库分表如何设计?垂直拆分、水平拆分?
- 业务 ID 的生成规则,有哪些方式?
- SQL 调优?平时使用数据库有哪些注意点?
- 当一个应用启动缓慢如何优化?
- 从一个日志文件中根据关键字读取日志,记录出现的次数,最后按照次数排序打印。
- 谈谈你所理解的 HTTP 协议?
- 对 TCP 的理解?三次握手?滑动窗口?
- 基本算法,Base64 等。
- Java 内存模型,Happen Before 的理解。
- 对 Java 锁的理解?
我谈到了 synchronize,Lock 接口的应用。他们两者的区别以及优缺点呢?
- 线程间通信的多种方式?
- 限流算法?单机限流?分布式限流?
- 提到了 Guava Cache ,了解它的实现原理嘛?
- 如何定位一个线上问题?
- CPU 高负载?OOM 排查等?
- 谈谈对 Netty 的理解?
- Netty 的线程模型?
- 写一个 LRU 缓存。
- 一致性 Hash 算法的原理?
- 谈谈你理解的 Zookeeper?
- 如何处理 MQ 重复消费?业务幂等处理
- 客户端负载算法:轮询、随机、一致性 Hash、故障转移、LRU 等。。
- volatile 关键字的原理及作用?happen Before?可见性、一致性。。