一面基础 二面算法
一面:
如何建立索引:1.create 索引类型 索引名 on 表(字段) 2.alter table 表名 add 索引类型 索引名 (字段)
使用索引时要注意什么:好多原则巴拉巴拉
Hashmap和currentHashMap:hashmap线程不安全,currentmap线程安全。
CurrentHashMap如何保证线程安全:ConcurrentHashMap引入了一个“分段锁”的概念,具体可以理解为把一个大的Map拆分成N个小的HashTable,根据key.hashCode()来决定把key放到哪个HashTable中。在ConcurrentHashMap中,就是把Map分成了N个Segment,put和get的时候,都是现根据key.hashCode()算出放到哪个Segment中
Redis的作用:
为什么用redis做缓存:redis的缓存可以持久化,redis可以实现分布式缓存,redis’可以处理每秒百万级的并发,redis有缓存过期机制,redis有丰富的API
**Tcp三次握手:**SYN->SYN+ACK->ACK
**四次挥手:**FIN->ACK;FIN->ACK
当一段连接已经断开时,另一端再发数据,此时如何防止数据丢失://还未解决也没有搜到。。。
接口和抽象类:
抽象类默认用abstrct 修饰。修饰限定符是public 或者private的,子类必须是西安它的所有方法,如果没有全部实现,则子类也要用abstract修饰。抽象类不能使private的不然子类不能继承。
接口中的变量默认是public static final的,且必须给出初始值,方法默认使用public abstract的,从jdk1.8开始,可以有具体实现的默认方法。
一个类可以实现多个但是只能继承一个抽象类
常用的线程池:
CachedThreadPool:可缓存的线程池,该线程池中没有核心线程,非核心线程的数量为Integer.max_value,相当于无限大。当需要时创建线程来执行任务,没有需要时回收线程
SecudleThreadPool:周期性的执行任务的线程池,按照某中国特定的计划周期性的执行线程中的任务。有核心线程也有非核心线程,非核心线程的大小为无限大,用于周期性的执行任务。
SingleThreadPool:只有一条线程来执行任务,适用于顺序执行任务的场景。
FixedThreadPool:定长的线程池有核心线程,核心线程就是最大的线程数,没有非核心线程。

二面:
**项目用到了多少张表:**11张
Solr是如何和数据库连接的:
1.在mysql中建立数据库表
2.将数据库的驱动文件加入solr的lib文件夹中:mysql-connector-java-版本号.jar
3.在自己创建的core实例的conf文件中进行数据配置
4.启动tomcat并访问solr,算则dataimport,点击excute
5.点击query查询后方可显示数据库信息
6.https://blog.csdn.net/gaosilingqwer/article/details/79891278
分页是如何读取数据?是一次把所有数据传过去前端分页吗?
使用分页插件在前端分页,不能再数据库中一次将所有信息查出返回给前端,这样数据库压力太大。使用sql语句,limit start n;参数含义 start-页码,n-每页显示的条数
使用springboot jpa Pageable pageable =PageRequest.of(pageNumber,pageSize); pageSize行数,pageNumber页码数
Redis重启数据会清空吗?
可以进行持久化配置,有两种方式(持久化是说可以将内存中的文件保存再数据库中,或者磁盘、xml文件等)
RDB 方式可以保存过去一段时间内的数据,并且保存结果是一个单一的文件,可以将文件备份到其他服务器,并且在回复大量数据的时候,RDB 方式的速度会比 AOF 方式的回复速度要快。
AOF 方式默认每秒钟备份1次,频率很高,它的操作方式是以追加的方式记录日志而不是数据,并且它的重写过程是按顺序进行追加,所以它的文件内容非常容易读懂。可以在某些需要的时候打开 AOF 文件对其编辑,增加或删除某些记录,最后再执行恢复操作。

Zookeeper是用集群吗?一个节点宕机后怎么办?
用集群,一个主节点剩下的都时备份节点,注册中心对等集群,任意一台宕机就会自动切换到另一台。注册中心全部宕机后,服务提供者和服务消费者仍然能通过本地缓存通信。
对zookeeper的理解:https://www.cnblogs.com/takumicx/p/9508706.html
对dubbo的理解:https://segmentfault.com/a/1190000019896723
B+树:非叶子节点不存储数据,作为索引,叶子节点存储数据,用链表进行连接。
红黑树:所有节点非黑即红,根节点是黑色,任意节点到它每个叶子节点的所有路径都包含相同的黑色节点。

**b树和b+树的区别:**b树:有序数组+多差平衡树;B+树:有序数组链表+多差平衡树
索引为什么不选择b树:b树的数据信息存放在每个节点,遍历采用中序遍历,遍历1-100可能会涉及到不同的层次。而B+树直接从叶子节点扫一遍就完了。B+树支持range-query。
————————————————
版权声明:本文为CSDN博主「cool_and_gentle」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cool_and_gentle/article/details/102833694