面试总结之乐信(上)

简介: 面试总结之乐信(上)

面试内容:


一、画出项目 架构图


二、所处自己负责的业务模块,其中用到了哪些技术点


三、如何实现最终一致性分布式事务?


   1. 二阶段提交:


       a. 概念:参与者将操作成败通知协调者,再由协调者根据所有参与者的


       反馈情报决定各参与者是否要提交操作还是中止操作。


       b. 作用:主要保证了分布式事务的原⼦性;第一阶段为准备阶 段,第二阶段为提交阶段;


image.png

image.png

 c. 缺点:不仅要锁住参与者的所有资源,而且要锁住协调者资源,开销大。一句话总结就是:2PC效率很低,对高并发很不友好。


   2. 三阶段提交:


      a. 概念:三阶段提交协议在协调者和参与者中都引入超时机制,并且把两阶段提交协议的第一个阶段拆分成了两步:询问,然后再锁资源,最后真正提交。这样三阶段提交就有CanCommit、PreCommit、DoCommit三个阶段。


image.png

image.png

   b. 缺点:如果进入PreCommit后,Coordinator发出的是abort请求,假设只有一个Cohort收到并进行了abort操作,而其他对于系统状态未知的Cohort会根据3PC选择继续Commit,此时系统状态发生不一致性。


    3. 柔性事务:


    a. 概念:所谓柔性事务是相对强制锁表的刚性事务而言。流程入下:服务器A的事务如果执行顺利,那么事务A就先行提交,如果事务B也执行顺利利,则事务B也提交,整个事务就算完成。但是如果事务B执行失败,事务B本身回滚,这时事务A已经被提交,所以需要执行一个补偿操作,将已经提交的事务A执行的操作反操作,恢复到未执行前事务A的状态。


   b. 缺点:业务侵入性太强,还要补偿操作,缺乏普遍性,没法大规模推广。


   4. 消息最终⼀一致性解决⽅方案之RabbitMQ实现:


   a. 实现:发送方确认+消息持久化+消费者确认。


四.索引的B+树结构是咋样的?


   1. B-tree:


image.png

image.png

B-tree 利用了磁盘块的特性进行构建的树。每个磁盘块一个节点,每个节点包含了关键字。把树的节点关键字增多后树的层级比原来的二叉树少了,减少数据查找的次数和复杂度。


B-tree巧妙利⽤了磁盘预读原理,将一个节点的⼤小设为等于一个页(每⻚为4K),这样每个节点只需要一次I/O就可以完全载入。


B-tree 的数据可以存在任何节点中。


 2. B+tree:


image.png


B+tree 是 B-tree 的变种,B+tree 数据只存储在叶子节点中。这样在B


树的基础上每个节点存储的关键字数更多,树的层级更少所以查询数据更快,所有指关键字指针都存在叶子节点,所以每次查找的次数都相同所以查询速度更稳定。


五.说⾃己了解的设计模式?Spring中用到了哪些设计模式?⾃己有用过哪些设计模式吗?


 1. spring中的设计模式:


 a. 简单工厂:spring中的BeanFactory就是简单工厂模式的体 现, 根据传入一个唯一的标识来获得bean对象,但是否是在传入 参数后创建还是传入参数前创建这个要根据具体情况来定。


b. 单例例模式: Spring下默认的bean均为singleton 。

c. 代理理模式: 为其他对象提供一种代理以控制对这个对象的访问。 从结构上来看 和Decorator模式类似,但Proxy是控制,更像是一种对功能的限制,而Decorator是增加职责。 spring的Proxy模式在aop中有体现,比如JdkDynamicAopProxy和Cglib2AopProxy。

d. 观察者模式:定义对象间的一种一对多的依赖关系,当⼀个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。spring中Observer模式常用的地方是listener的实现。如ApplicationListener。


目录
相关文章
|
负载均衡 Linux 应用服务中间件
Linux下各种锁地理解和使用以及总结解决一下epoll惊群问题(面试常考)
Linux下各种锁地理解和使用以及总结解决一下epoll惊群问题(面试常考)
Linux下各种锁地理解和使用以及总结解决一下epoll惊群问题(面试常考)
|
缓存 算法 Java
PHP面试总结
PHP面试总结
113 0
|
SQL 算法 JavaScript
西安软件园面试总结(一)
西安软件园面试总结(一)
西安软件园面试总结(一)
|
安全 Java
【Java面试】List知识点总结
【Java面试】List知识点总结
76 0
|
存储 NoSQL Java
Java模拟面试总结
Java模拟面试总结
186 0
|
机器学习/深度学习 分布式计算 算法
机器学习岗位面试总结:简历应该关注的5个重点
机器学习岗位面试总结:简历应该关注的5个重点
375 0
机器学习岗位面试总结:简历应该关注的5个重点
|
存储 NoSQL 关系型数据库
面试必过之Mongdodb数据库面试题总结大全
面试必过之Mongdodb数据库面试题总结大全
127 0
|
存储 移动开发 算法
面试必问:十大经典排序算法总结
面试必问:十大经典排序算法总结
面试必问:十大经典排序算法总结
|
存储 安全 算法
78. 别找了,Java集合面试问题这里帮你总结好了
78. 别找了,Java集合面试问题这里帮你总结好了
70 0
|
算法 网络协议 搜索推荐
CVTE寒暑假实习面试总结
目录前言1. 笔试2. 面试 前言 主要总结一些笔试和面试的具体问题 1. 笔试 笔试共有 20道选择题(单选加多选) 2道算法题(算法题基本是场景题,但是基本思路都是leetcode的题目) 1道设计题(让你设计一个系统) 20道选择题基本都是计网+数据结构的排序题以及java的一些基本概念 具体可以参考我这篇文章都有大概的提到 java框架零基础从入门到精通的学习路线(超全) 算法题的思路leetcode基本都有 我当时做的算法题主要是这两道 【leetcode】剑指 Offer 62. 圆圈中最后