1 自我介绍(介绍一下帅气的自己哦)
2 对象深浅复制(浅复制:对象内引用的对象不会复制,深复制会把引用对象复制。如何进行深浅复制,这块不懂的童鞋可以百度一下)
3 wait方法和sleep方法的区别(sleep来自于Thread,wait来自Object,sleep没有释放锁且一般加时间限制,wait释放了锁一般不加时间限制 ,sleep需要捕捉异常,wait不用。Thread.sleep(0)是“触发操作系统立刻重新进行一次cpu竞争”)
4 ThreadLocal原理(线程局部变量,从另一角度解决并发访问,锁一般是以时间换空间,而ThreadLocal是以空间换时间)
5 JVM内存模型(方法区、堆、Java栈帧、程序计数器、本地方法栈,不太懂的童鞋可以百度,这里涉及到各个模型功能、会发生OOM的有哪几个、线程共享和不共享)
6 索引最左前缀原则(复合索引中要用到索引必须包含建立索引时最左的字段 如建立:(a,b,c)索引,那么在下面三种情况下可以用到:a或a b或a b c。 如果是查b或c这样的就用不到该索引了)
7 redis内存模型,持久化方式(键值对、RDB快照、AOF日志)
8 redis啥是缓存穿透、缓存雪崩,怎么解决(缓存穿透:多次请求缓存中不存在的数据,缓存雪崩:redis缓存大量失效。解决穿透:1布隆过滤或压缩filter提前拦截2数据库找不到也将空对象进行缓存。雪崩解决:惰性删除、定期删除)
9 redis数据淘汰策略(6种,volatile-lru:从已设置过期时间的数据集,中挑选最近最少使用 的数据淘汰
volatile-ttl:从已设置过期时间的数据集中挑选将要过期的数 据淘汰
volatile-random:从已设置过期时间的数据集中任意选择数据 淘汰
allkeys-lru:从数据集中挑选最近最少使用的数据淘汰
allkeys-random:从数据集中任意选择数据淘汰
no-enviction(驱逐):禁止驱逐数据)
volatile-ttl:从已设置过期时间的数据集中挑选将要过期的数 据淘汰
volatile-random:从已设置过期时间的数据集中任意选择数据 淘汰
allkeys-lru:从数据集中挑选最近最少使用的数据淘汰
allkeys-random:从数据集中任意选择数据淘汰
no-enviction(驱逐):禁止驱逐数据)
10 redis中的管道有什么用(一次请求响应服务器能实现处理新的请求,即使旧的请求还未被响应,这样就可以将多个命令发送到服务器,而不用等待回复,最后在一个步骤中读取该信息)
11 TCP三次握手四次挥手
12 四次挥手中为什么TIME_WAIT状态还需要等2MSL后才能返回到CLOSED状态 (2点:1可靠的实现TCP全双工链接的终止:大概就是说最后一次发的ACK不一定会被对方接收到,这段等待时间对方可能重发FIN。2允许老的重复的分节在网络中消逝:简单说就是俩个IP的端口建立连接后释放,又马上建立连接,这样后面建立的连接就成了前面连接的化身,等待2MSL是为了防止这种情况出现)
13 top命令参数详情(top -d指定刷新时间、 top -p 123查看pid为123的进程cpu使用、 top -c显示该进程启动的命令行参数)
14 linux查看磁盘的命令(看磁盘:df -h 、看当前文件夹:du-sh)
祝早日get心仪offer
大量面试经验以及学习资料书籍请关注:AVAJ
回复"offer"进行获取
365篇大厂java面经 你想要的我这里都有