面试题03
Posted SmallCuteMonkey
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题03相关的知识,希望对你有一定的参考价值。
switch支持哪些数据类型?
jdk1.5之前只支持 byte,short,char int.
jdk1.5 增加了enum和它们的包装类
jdk1.7增加了String类型但是类型有一个hashCode()算法结果也是int类型
但是byte,short,char 类型向上转型也是int类型,可以认为switch只支持int
Java有哪些锁?区别在哪里?底层如何实现的?为什么公平锁效率高?
公平锁,非公平锁,悲观锁乐观锁,读写锁,共享锁,排他锁 ,轻量级锁,重量级锁
因为公平锁来了线程需要挂起,然后判断哪个线程被唤醒。
ThreadLocal原理和使用场景:
实现多线程通讯:
SpringBoot如何自定义starter
创建一个Spring.factories文件,在里面配上自动配置类的路径,加上@Configuration
批量导出的业务1000个,如何实现?
io密集型,开多线程来导,GZIPnputStream数据压缩传输。
什么场景会出现栈溢出?
一个循环里面出现创建大量的对象,因为对象是存储在堆中的,
局部数组过大,递归调用层次过多
一般怎么优化慢查询?
根据查询的字段建立索引,
什么情况下会使用索引失效?
聚集索引的时候不按照顺序查询,or的时候,就是查询的时候一定要是在索引列是连续的一段
Tcp的三次握手,四次挥手?
三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备。实质上其实就是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息。
Redis的缓存击穿怎么解决?缓存雪崩?
缓存大面积失效,但是大量的请求仍然有,于是去请求数据库最后导致CPU和内存的负载过高,甚至宕机
如何解决?
事发前:可以实现缓存的高可用,Redis Sentinel 和 Redis Cluster 都实现了高可用。
事发中:万一真的宕机,我们可以在本地缓存和限流(hystrix),尽量避免我们的数据库被干掉
事发后:redis持久化,重启后自动从磁盘上加载数据,快速恢复缓存数据。
Redis两种持久化机制 RDB和ROF.
一、RDB Redis DataBase
在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是snapshotting,它恢复时是将快照文件直接读到内存里。
二.AOF append only file
以日志的形式来记录每个写操作,将redis执行过的所有指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据。
以上是关于面试题03的主要内容,如果未能解决你的问题,请参考以下文章