山西手机版建站系统开发,公司展示类网站模板,梓潼移动网站建设,如何制作网页图片素材熙牛医疗面经
1.平衡二叉树的概念 平衡二叉树是一种二叉搜索树#xff0c;他的左右两个字数的高度差绝对值不超过1#xff0c;并且左右两个子树都是一颗平衡二叉树#xff0c;通过左旋#xff0c;右旋#xff0c;左右双旋#xff0c;右左双旋#xff0c;来保持平衡他的左右两个字数的高度差绝对值不超过1并且左右两个子树都是一颗平衡二叉树通过左旋右旋左右双旋右左双旋来保持平衡目的就是为了提高二叉排序树的查找效率避免出现退化为链表的情况也就是偏树使其平均查找时间复查度Ologn
2.B树结构与平衡二叉树区别 B树是一种多路平衡查找树所有数据都放在了叶子节点非叶子节点就只存储了键值且叶子夜店通过指针链接成有序链表便于范围查找 与平衡二叉树的区别平衡二叉树最多有两个子树而B树可以有多个子树平衡二叉树数据和键值可以存放到任何节点B树的数据节点只存储在叶子节点B树更适合磁盘存储和范围查询而平衡二叉树在插入删除频繁时旋转操作比较多
3.广度优先搜索和深度搜索区别 1搜索顺序广度优先搜索是从起点开始一层一层向外扩展深度优先搜索是从起点节点开始沿着一条路径尽可能的去搜索知道无法继续或者到达目标节点 2数据结构bfs经常使用队列来存储访问的节点dfs使用栈和递归实现 3应用场景bfs常用来求最短路径问题dfs常用遍历图求解迷宫问题
4.数据链路层的作用 数据链路层的主要功能就是给网络层传来的ip数据报组装成帧确保两个相邻节点间的数据传输不出差错
5.TCP三次握手四次挥手 三次握手客户端发送syn请求连接服务器收到后返回acksyn客户端接收到后返回ack建立连接 四次挥手客户端发送fin请求关闭连接fin_wait_1,服务器收到后发送ack确认close_wait,客户端状态变为fin_wait_2,然后等待服务器处理完业务后返回fin(last_ack,然后客户端返回acktime_wait 6.前端发起请求到后端发生的过程 前端通过浏览器或者其他客户端发起http请求包括请求方法url请求头请求体 浏览器根据域名进行dns解析获取服务器ip地址通过tcp协议进行三次握手建立连接将请求数据发送到服务器服务器接受请求后根据路由映射到对应方法调用相应处理程序处理业务逻辑可能涉及数据库操作等 服务器处理结果构建成相应响应保温返回给客户客户端接收响应
7.策略模式和模版模式 策略模式定义了多种方法将他们封装起来不同情况下可以选择不同的方法 模版模式在一个抽象类中定义一个算法模板然后在子类中进行实现不同子类可以实现不同的具体细节 两者区别就是策略模式是本身定义了多种方法的而模板模式则是只有一个抽象方法剩下的我们要自己实现他的细节
8.聚簇索引和非聚簇索引的区别 1数据存储方式聚簇索引的叶子节点存储的是数据本身数据按照聚簇索引的顺序存储的非聚簇索引的叶子节点存储的是索引键和指向聚簇索引的指针 2查找效率局促索引对于范围查找的查找效率高对于基于聚簇索引的查询效率高非聚簇索引对于基于非聚簇索引的查询效率高但需要回表查询到完整数据 注一个表只可以有一个聚簇索引但是可以有多个非聚簇索引
9.如何避免非聚簇索引的回表操作 我们可以通过覆盖索引来避免回表操作即查询所需要的所有列都包含在非聚簇索引中这样查询时就无需再非聚簇索引的叶子节点中获取数据不用回表查询
10.Mysql事务特性 1原子性事务中的操作要么全部执行要么全部不执行 2一致性事务执行前后数据都要保证正确 3隔离性多个事务并发执行相互之间不干扰如同各自独立执行一样隔离级别有读未提交读已提交可重复读串行化 4持久化事务一旦提交那么对数据库的修改就是永久的
11.InnoDB如何保证一致性
InnoDB是通过事务的特性锁机制mvccundologredolog等保证一致性
12.Undologredologbinlog作用
Undolog主要用于事务的回滚和mvcc记录了数据修改前的版本和操作的反方向操作以便我们在事务回滚时回复数据也用于提供旧版本数据的读取
Redolog用于记录数据的修改操作数据库崩溃恢复时我们就可以使用redolog中的数据恢复到最新状态记录的是数据页的物理修改比如就是把xx改成了xx等我们恢复时只需要更改这个值不需要使用sql语句
Binlog是二进制日志记录了数据库所有更改操作用于主从复制和数据恢复存储的是sql语句跟我之前所学的aof有点类似都是存sql语句但是aof是文本文件而且主从复制其实主要使用rdb快照
13.解决MQ幂等性 通过引入一个唯一id每次我们进行校验或者通过一些业务逻辑上的判断比如数据库中是否有当前数据
14.悲观锁是行级锁还是表级锁 悲观锁既可以是行级锁也可以是表级锁具体取决于我们的应用场景就比如mysql中innodb存储引擎中使用select 。。。for update语句且条件能够精准匹配索引时就位行级锁也可以是间隙锁无法精准记录时就是用表级锁
15.Spring AOP SpringAOP是面向切面编程思想的一种实现底层通过动态代理jdk动态代理和cglib动态代理实现jdk动态代理只能代理接口而cglib则都可以代理但是我们spring底层中的proxytargetclass这个参数设置默认为fasle默认是使用jdk动态代理我们自己使用也可以使用注解的方式Aspectxml的方式和动态代理的方式实现。
16.Spring事务失败原因
1事务代理的方法一定要是public否则不支持事务
2方法被final修饰spring事务基于aop实现通过代理类但是被final修饰后代理类无法重写该方法
3没有被Spring管理没有五大注解
4多线程调用事务方法和调用方法不在同一个线程中不同线程现获取到的数据库连接不同从而是两个不同的事务
5表不支持事务可能使用的存储引擎是myisam
17.什么时候使用mq做异步处理什么时候新开一个线程做异步处理比较好 mq异步处理适用于在分布式系统中适合不同服务之间的异步通信具有更好的可靠性和稳定性而新开一个线程只适用于简单的异步场景无法在分布式系统中执行同时mq的消息是可以存储在磁盘上的持久化是不会丢失的但是使用多线程当我们异常结束进程或者崩溃未处理完的任务就会有数据丢失