面试必备总结—jvm,juc,redis,ssm,sb等知识

1、JVM
1.1、类加载机制
1.2、类加载器
1.3、双亲委派机制
1.4、为什么要设计双亲加载机制
1.5、全盘委托机制
1.6、Tomcat如何自定义类加载机制
1.7、内存模型
1.8、对象创建与分配
1.8.1、创建
1.8.2、分配
1.9、何判断一个类是无用的类
1.10、finalize()方法最终判定对象是否存活
1.11、四大引用
1.12、对象回收算法
1.13、四大垃圾回收算法
1.14、CMS(标记-清除算法=>写屏障 + 增量更新)
1.14.1、运作过程
1.14.2、三色标记法
1.14.3、漏标-读写屏障(解决方案)
1.5、G1(复制算法=>写屏障 + SATB)
1.5.1、运作过程
1.5.2、G1的RS和CT
1.5.3、Collect Set
1.5.4、Marking bitmaps/TAMS
1.11、ZGC的颜色指针
1.12、100%CPU排查
1.13、JIT
1.14、逃逸分析
2、Disruptor的原理(生产消费者模型)
2.1、解决队列速度慢
2.2、数据结构
2.3、核心组件
2.4、Wait Strategy
2.5、写数据
3、Spring
3.1、Spring流程(IOC下的Bean的生命周期,循环依赖,构造函数)
3.2、AOP
4、SpringMVC
4.1、SpringMVC执行流程
5、SpringBoot
5.1、SpringBoot的自动装箱
5.2、Starter自动装配
6、RabbitMQ
6.1、消息丢失
6.1.1、生产者丢失消息
6.1.2、消息队列丢数据:消息持久化。
6.1.3、消费者丢失消息:消费者丢数据一般是因为采用了自动确认消息模式,改为手动确认消息即可!
6.1.4、消息不被重复消费(幂等性)
6.1.5、如何保证RabbitMQ消息的顺序性?
7、Redis
7.1、Redis线程模型(reactor模型)
7.2、Redis核心数据结构使用与原理
7.2.1、String
7.2.2、List
7.2.3、Hash
7.2.4、Set
7.2.5、Sort Set
7.2.6、GeoHash
7.2.7、BloomFilter
7.3、持久化
7.4、Redis持久化数据和缓存怎么做扩容?
7.5、内存淘汰策略
7.6、数据删除策略
7.7、缓存击穿/缓存雪崩/缓存穿透/热点缓存key重建优化/缓存与数据库双写不一致
7.7.1、缓存击穿(失效)
7.7.1.1、原因
7.7.1.2、解决方案
7.7.2、缓存雪崩
7.7.2.1、原因
7.7.2.2、解决方案
7.7.3、缓存穿透
7.7.3.1、原因
7.7.3.2、解决方案
7.7.4、热点缓存key重建优化
7.7.4.1、原因
7.7.4.2、解决方案
7.7.5、缓存与数据库双写不一致

多线程:
1、Cas(比较并交换)
2、AQS(AbstractQueuedSynchronizer)=>抽象队列同步器
3、Volatile:
3.1、JMM
3.2、As-If-Serial原则
3.3、Happens-Before原则
3.4、volatile原理
3.5、作用
3.6、原子操作
3.7、高速缓存
3.8、MESI状态切换
3.9、伪共享
4、ReentrantLock
4.1、原理
5、Synchronized
5.1、原理
5.2、锁升级
5.3、对象布局
6、CountDownLatch=>倒计时器
6.1、使用
6.2、常用api
6.3、原理
7、CyclicBarrier=>循环栅栏
7.1、原理
7.2、常用API
7.3、使用
7.2、CountDownLatch和CyclicBarrier的区别
8、Semaphore=>参数代表同时访问的线程,允许多个线程同时访问
8.1、定义
8.2、使用
8.3、主要API
9、Executors(不建议使用)
10、ThreadPoolExecutor
10.1、创建
10.2、参数解析
10.3、原理
11、ScheduledThreadPoolExecutor:
12、Exchanger(交换数据)
13、ThreadLocal
13.1、原理
14、BlockingQueue(生产者消费者模型=》队列(先进先出))
14.1、ArrayBlockingQueue
14.2、LinkedBlockingQueue
14.3、PriorityBlockingQueue
14.4、DelayQueue
14.5、常用API
15、Automic类
15.1、相关术语
15.2、常见类
16、Unsafe
16.1、怎么获取实例
16.2、功能介绍
16.2.1、内存操作
16.2.2、CAS相关
16.2.3、线程调度
16.2.4、内存屏障
17、Future/FutureTask
17.1、任务性质类型
17.2、Future(接口)
17.2.1、定义
17.2.2、常见方法
17.2.3、功能
17.3、FutureTask
18、Fork/Join(大化小,小归大,分而治之)
18.1、Fork/Join定义
18.2、Fork/Join特性
18.3、工作窃取算法
18.3.1、定义
18.3.2、例子
18.3.3、Fork/Join中的体现
18.4、ForkJoin的类
18.5、使用场景例子
19、Disruptor(生产者消费者模型)
19.1、核心设计原理(怎么解决队列速度慢)
19.2、核心组件与作用(8个)
19.3、等待策略(Wait Strategy)
19.4、写数据
20、Hashmap/ConcurrentHashMap
20.1、说一下 HashMap 的实现原理?
20.2、HashMap在JDK1.7和JDK1.8中有哪些不同?HashMap的底层实现
20.3、HashMap的put方法的具体流程?
20.4、HashMap的get方法的具体流程?
20.5、HashMap的扩容操作是怎么实现的?
20.6、HashMap是怎么解决哈希冲突的?
20.7、能否使用任何类作为 Map 的 key?
20.8、为什么HashMap中String、Integer这样的包装类适合作为K?
20.9、如果使用Object作为HashMap的Key,应该怎么办呢?
20.10、HashMap为什么不直接使用hashCode()处理后的哈希值直接作为table的下标?
20.11、HashMap 的长度为什么是2的幂次方
20.12、HashMap 与 HashTable 有什么区别?
20.13、如何决定使用 HashMap 还是TreeMap?
20.14、HashMap 和 ConcurrentHashMap 的区别
20.15、ConcurrentHashMap 和 Hashtable 的区别?
20.16、ConcurrentHashMap 底层具体实现知道吗?实现原理是什么?
21、ArrayList
21.1、快速失败机制 “Fail-Fast”
21.2、安全失败 Fail-Safe
21.3、Fail-Fast(快速失败)和Fail-Safe(安全失败)比较
21.4、说一下 ArrayList 的优缺点
21.5、如何实现数组和 List 之间的转换?
21.6、ArrayList 和 LinkedList 的区别是什么?
21.7、ArrayList 和 Vector 的区别是什么?
21.8、插入数据时,ArrayList、LinkedList、Vector谁速度较快?阐述 ArrayList、Vector、LinkedList 的存储性能和特性?
21.9、多线程场景下如何使用ArrayList?
22、CopyOnWriteArrayList
23、TreeMap
23.1、原理
23.2、红黑树
23.2.1、性质
23.2.2、插入的时候旋转和颜色变换规则
23.2.3、删除
23.2.4、红黑树的性能分析
24、StampedLock
25、wait()与sleep() 方法的区别。
26、什么时候用线程,什么时候用进程,nginx底层的用到了什么?

#Java##学习路径#
全部评论
https://blog.51cto.com/contest/index,感谢各位大佬的投票,59号,谢谢,可以投5票+评论哦
点赞 回复
分享
发布于 2021-05-08 13:00

相关推荐

8 83 评论
分享
牛客网
牛客企业服务