拿来吧你!六十题初级开发刷真题答案(7-12)
Posted XiaoLin__Java
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了拿来吧你!六十题初级开发刷真题答案(7-12)相关的知识,希望对你有一定的参考价值。
🍕前言
失踪人口终于更新了答案,我保证会更新完毕的!想直接看题目的小伙伴可以来这个传送门:应粉丝要求,请假一周,面了9家深圳非外包初级开发,只为刷一刷真题(文末有福利)
🍟答案汇总
🌭既然你刚刚说了B+树性能高,那为什么不把所有树都换成B+树,还要红黑树二叉树干嘛?
思路
其实这道题面试官很聪明,我当时被问得哑口无言,其实也没答出来,后面面试官和我说了答案,小尴尬!
答案
因为B+树会消耗磁盘的IO(没想到吧,我也懵了,现在对这道题还是一知半解,在网上没有比较好的资料。如果有小伙伴有自己的见解可以在评论区告诉我或者私信我)。
🍿mysql索引什么时候会失效
思路
这道题就很中规中矩了,就是考察你对索引的了解。
答案
详情可以参考:你真的了解MySQL了吗,那你给我说一下锁机制!,下面我说一下简单的概括:
- 使用了or。
- 不符合最佳左前缀法则。
- 模糊查询ike以%开头。
- 有隐式类型转换。
- 索引中有计算。
- 索引中使用了函数。
🌮大型项目中,mysql的主键需要全局唯一怎么办
思路
数据库自增的id很难处理分布式存储的数据表。数据量特别大时,会导致查询数据库操作变慢。此时需要进行数据库的水平拆分,划分到不同的数据库中,那么当添加数据时,每个表都会自增长,导致主键冲突。
答案
可以使用雪花算法得出来的ID。
🍚雪花算法的原理大致讲一下
思路
不得不说,面试官很精,连环问,我喜欢!
答案
这道题我当时也没有答出来,触及到了我的知识盲区,所以面试完赶紧去查了一下答案。
我们先来看看雪花算法的
雪花算法主要分为 5 个部分:
- 第一部分是 1 个 bit:0,这个是无意义的。
- 第二部分是 41 个 bit:表示的是时间戳。
- 第三部分是 10 个 bit:表示的是机房 id,0000000000,因为我传进去的就是0。
- 是第四部分 12 个 bit:表示的序号,就是某个机房某台机器上这一毫秒内同时生成的 id 的序号,0000 0000 0000。
🍜为什么雪花算法比UUID好,好在哪里?
思路
纯粹是问雪花算法的好处
答案
生成有顺序的id,提高数据库的性能,现在大部分都不用uuid作为主键,因为不规则,每向数据库插入一条数据就要重新排列,使数据库性能降低。
🍝分布式事务你是怎么实现的
思路
这道题面试官让我讲讲原生的分布式适合如何处理。
答案
我当时回答的很简单,就是两阶段提交。
二阶段提交协议是将事务的提交过程分成提交事务请求和执行事务提交两个阶段进行处理。
阶段1:提交事务请求
- 事务询问:协调者向所有的参与者发送事务内容,询问是否可以执行事务提交操作,并开始等待各参与者的响应
- 执行事务:各参与者节点执行事务操作,并将Undo和Redo信息记入事务日志中
- 如果参与者成功执事务操作,就反馈给协调者Yes响应,表示事物可以执行,如果没有成功执行事务,就反馈给协调者No响应,表示事务不可以执行
- 二阶段提交一些的阶段一夜被称为投票阶段,即各参与者投票票表明是否可以继续执行接下去的事务提交操作
阶段二:执行事务提交
- 假如协调者从所有的参与者或得反馈都是Yes响应,那么就会执行事务提交。
- 发送提交请求:协调者向所有参与者节点发出Commit请求
- 事务提交:参与者接受到Commit请求后,会正式执行事务提交操作,并在完成提交之后放弃整个事务执行期间占用的事务资源
- 反馈事务提交结果:参与者在完成事物提交之后,向协调者发送ACK消息
- 完成事务:协调者接收到所有参与者反馈的ACK消息后,完成事务
🍧结语
好啦,今天的6道题就都结束啦,答案写的比较简陋,如果有问题可以评论区见。
以上是关于拿来吧你!六十题初级开发刷真题答案(7-12)的主要内容,如果未能解决你的问题,请参考以下文章
《每日一题》之第六十题考查知识点:指派问题动态规划问题(题源自上海海事大学09年真题第五大题)(图一为昨天题目答案)
应粉丝要求,请假一周,面了9家深圳非外包初级开发,只为刷一刷真题(文末有福利)