java八股文(值得收藏)
Java基础
1. String 和StringBuffer和 StringBuilder的区别?
2. sleep() 区间wait()区间有什么区别?
3. Object 中有哪些方法?其中clone(),怎么实现一个对象的克隆,Java如何实现深度克隆?
ThreadLocal 相关
4. ThreadLocal作用和实现方式 ?
ThreadLocal会不会发生内存泄漏?
ThreadLocal为什么使用弱引用?
5. InheritableThreadLocal作用和实现方式 ?
6. InheritableThreadLocal所带来的问题?
7. 如何解决线程池异步值传递问题 (transmittable-thread-local)?
HashMap ConcurrentHashMap相关
9. HashMap为什么线程不安全
10. HashMap在jdk7和8中的区别
11. HashMap 为啥将链表改成红黑树?
12. ConcurrentHashMap在jdk7和8中的区别?
提到synchronized时候,顺便说一下javaSE1.6对锁的优化?
偏向锁
轻量级锁
重量级锁
其他优化
ReentrantLock和synchronized的区别?
Synchronized
ReentrantLock
13. 为什么重写equals时候被要求重写hashCode()?
14. 什么时候回发生内存泄露?让你写一段内存泄露的代码你会怎么写?
Java内存模型
Java 内存模型中的 happen-before 是什么?
简单聊聊volatile 的特性?以及内存语义
GC垃圾回收
垃圾回收主要是针对 内存区的哪些区域?
垃圾检查有哪些算法?
垃圾回收方法有哪些?
什么时候会触发Full GC
**GC机制**简要说明一下,不同区使用的算法。
两个对象循环引用会不会被被GC?
哪些可以算作根节点?
垃圾收集器 G1有什么样的特性了解吗? CMS呢?
CMS收集器和G1收集器的区别
Jvm相关
Jvm内存结构简要说一些,栈里面一般存储了什么?
Java内存模型简要描述一下?
**类加载机制**简要描述一下?
类的加载方式
类加载的过程
JVM三种预定义类型类加载器
双亲委派加载
由不同的类加载器加载的指定类型还是相同的类型吗(不同)
在代码中直接调用Class.forName(String name)方法,到底会触发那个类加载器进行类加载行为?
在编写自定义类加载器时,如果没有设定父加载器,那么父加载器是?
编写自定义类加载器时,一般有哪些注意点?
如何在运行时判断系统类加载器能加载哪些路径下的类?
在Java的反射中,Class.forName和ClassLoader的区别
Java 类加载机制及常见异常
ClassNotFoundException 发生在加载阶段
ClassNotFoundError 发生在 链接 阶段
NoClassDefFoundError 通常在链接阶段
Exception和Error的区别
平时有没有遇到一些栈溢出或者内存溢出,内存泄露的问题吗?如何去分析这个问题?
如果内存猛增,怎么去排查?
多线程
为什么《阿里巴巴Java开发手册》强制不允许使用Executor创建线程池
ThreadPoolExecutor机制
线程设置越多越好吗?设置到什么值比较合理?
锁
CAS实现机制?
CAS的ABA问题
算法
有哪些常用的排序算法?
RPC框架 DUBBO
dubbo请求流程
dubbo 各个模块?
如果zookeeper挂掉了,dubbo还能正常运行吗?
Dubbo 使用什么通信框架?
Dubbo 支持哪些序列化方式?
Dubbo 有哪些集群容错策略?
Dubbo 服务如何做降级?
Dubbo 如何做限流?
如何自己设计一个类似 Dubbo 的 RPC 框架?
dubbo SPI 机制 与 JAVA SPI?
Zookeeper
zookeeper快速选举描述一下?
有了解过zk的watch机制吗?
那你说说Zookeeper有哪些应用场景?
zookeeper实现分布式锁怎么实现?
zookeeper集群可以部署2台吗?
Redis
redis是单线程还是双线程?
Redis 不仅仅是单线程
Redis6.0为什么网络处理要引入多线程?
为什么redis的性能高?什么决定的?
redis的持久化策略?
redis有哪些数据类型?
你有尝试的去优化redis吗?
rdb和aof工作原理?各有什么优缺点
如何选择合适的持久化方式
Redis持久化数据和缓存怎么做扩容?
Redis 对过期数据的处理
LRU(the least recently used 最近最少使用)算法
Redis线程模型
官方Redis Cluster 方案(服务端路由查询)
Redis的哨兵模式
基于代理服务器分片
redis的有哪些主从同步方式?
redis集群扩容与收缩
Redis底层ZSet跳表是如何设计与实现的
Redis底层ZSet实现压缩列表和跳表如何选择
Redis高并发场景热点缓存如何重建
高并发场景缓存穿透&失效&雪崩如何解决
Redis集群架构如何抗住双十一的洪峰流量
Redis缓存与数据库双写不一致如何解决
Redis分布式锁主从架构锁失效问题如何解决
从CAP角度解释下Redis&Zookeeper锁架构异同
超大并发的分布式锁架构该如何设计
双十一亿级用户日活统计如何用Redis快速计算
双十一电商推荐系统如何用Redis实现
双十一电商购物车系统如何用Redis实现
类似微信的社交App朋友圈关注模型如何设计实现
美团单车如何基于Redis快速找到附近的车
Redis 6.0 多线程模型比单线程优化在哪里了
Spring
请简要描述一下IOC 和AOP?
Spring是怎么解决的循环依赖?
为啥Spring不能解决“A的构造方法中依赖了B的实例对象
Spring 中使用的那种方式来实现动态代理的?
Spring中的事务传播机制?事务嵌套
Spring中同一个类中有方法A 和 B 两个方法都被标记了@Transtional,在A中调用了B,那么B的事务会生效吗?为什么?
Spring 中IOC 和工厂模式的区别,为啥不用工厂模式?
网络
select、poll、epoll之间的区别
BIO、NIO、AIO
BIO
NIO
NIO 和 BIO 对比
netty是用select 还是 epoll
Channel 的基本介绍
说说Reactor线程模型的理解
AIO
Reactor 单线程
Reactor 多线程
Reactor 主从
TCP三次握手四次挥手
四次挥手中TIME_WAIT状态存在的目的是什么?
TCP是通过什么机制保障可靠性的?
TCP粘包,拆包及解决方法
操作系统虚拟内存换页的过程
kafka
Sentinel的简单原理
`服务隔离机制:`线程池隔离或者信号量隔离机制
分布式锁
数据库乐观锁
Redis分布式锁
Mysql
本地事务
隔离型(Isolation) 主要由MVCC和锁实现
MVCC 多版本并发控制
回滚日志 `undo log`
事务日志 `REDO LOG` Write Ahead Log(WAL)策略
锁
索引
索引类型
高性能索引的一些策略
什么是联合索引,为什么建议尽量用联合索引
什么是覆盖索引,以及优点?
为什么使用B+树,而不用其他的例如红黑树做索引
InnoDB 与 MyISAM 结构上的区别
什么是索引下推
分区分表分库
项目介绍
秒杀系统
你做的这个秒杀系统QPS怎么样
你怎么判断需要多少机器来承受?
如果判断一个机器达到了极限?CPU IO 磁盘?
缓存穿透 缓存击穿 缓存雪崩
漏桶算法和令牌桶算法
操作系统
什么是零拷贝
什么是 DMA (DMA控制器Direct Memory Access)
传统拷贝方式
利用 mmap()实现零拷贝 **`应用程序跟操作系统共享这个缓冲区(地址映射)`** 用户空间可以修改数据
sendfile() 方式零拷贝 **`不仅减少了数据拷贝操作,它也减少了上下文切换`** 但是用户空间不可修改数据
带有 DMA 收集拷贝功能的 sendfile() **`不拷贝内容,只拷贝描述符(带地址和偏移量)`**
利用写时复制
Java NIO对文件映射mmap的支持
Java NIO对sendfile的支持就是
Spring
Spring cloud
开放性问题
你觉得一个好的团队应该是什么样的?
解决问题的能力
平时会使用设计模式吗?请讲一个使用的情景
工作中有碰到过线上的问题吗?怎么解决的?
你有过Jvm调优经验吗?
你做了这么多系统,是怎么做系统监控的,系统的稳定性?内存满了,磁盘满了,和cpu高了之类的?
有碰到过数据库死锁的问题吗?怎么解决的?
算法
滑动窗口
反转单链表
复杂链表复制
数组a,先单调地址再单调递减,输出数组中不同元素个数。要求:O(1)空间复杂度,不能改变原数组
给出两个升序数组A、B和长度m、n,求第k个大的数
给出数组A,长度为n,数组中元素的值位于[0, n - 1]之间,求是否有重复元素
镜像二叉树
二叉树多个节点的最近公共祖先
树的非递归先序遍历。
如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论,
,咱们下期见!