1.项目拷打
2.有哪些熟悉的内容可以自己去讲一下
3.集合分类、具体实现类
4.set不能重复的原理--》引申到HashMap相关知识
5.红黑树是一个什么样的结构?
6.Queue里边都有哪些实现?
7.线程池为什么要使用BlockingQueue?
8.线程池的工作原理
9.线程池参数设置(核心线程数、最大线程数、阻塞队列长度),设置依据是什么?线程池的拒绝策略有哪些?
10.假设有十个任务是一组任务。我希望整体都完成了主线程才继续执行。哪些方式可以实现这个功能?
11.上接问题10,我期望主线程只等待5秒钟,等到5秒钟之后,如果没有完成就离开,如何实现?
12.什么是线程安全?怎么保证线程安全?
13.数据库怎么实现一个乐观锁?执行失败以后怎么办?
14.sychronized加在这个方法上面和加在代码块上面有什么区别?
15.Redis怎么实现分布式锁?锁支持可重入吗?怎么实现?
16.Redis支持什么结构?
17.Redisson看门狗是什么?如果传入过期时间还会有看门狗吗?
18.MySQL会设置索引,设置索引的原则是什么?联合索引是什么?
19.MySQL里面的索引都有哪些类型?
20.什么是聚簇索引?什么是非聚簇索引?我说的是主键索引就是聚簇索引,面试官问:如果表没有设置主键呢还会有聚簇索引吗?
21.什么是回表?
22.如果我的SQL查询语句没有使用order by,默认的排序是怎样的?
23.RabbitMQ由哪些组件组成?这些组件怎么配合的呢?
24.你未来找工作的话是想找一个什么类型的工作呢?自己有没有一个对未来工作的一个期待?比如说工作环境、业务、行业等等。你现在每天花在学习上的时间大概是什么样?
25.我说最近在看JVM,面试官:了解双亲委派吗?它的这个上下级是怎么决定的?这么设计是为了解决什么问题?
面试官挺好的,一直带着我,比如说数据库实现乐观锁,我说update带上where,他马上就问这样很容易失败,如果失败了怎么办。HashMap的equals比较时相等了怎么办,不相等又怎么办?
面试官特别爱问为什么这么设计,这么设计是为了解决什么问题。还有就是从八股延伸到一些场景问题
总结:背八股的时候一定要多问自己为什么这么设计?
最后我想问:线程池中的队列长度到底设置多少?全网都搜不到
#Java##面经#