星环科技测开电话一面

记错面试时间,毫无准备的一面,已经凉凉 。
1、自我介绍
2、数据库的ACID(原子性、一致性、隔离性与持久性)
数据库管理系统中事务()的四个特性(分析时根据首字母缩写依次解释):原子性()、一致性()、隔离性()、持久性()
原子性是指事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生 。可采用“A向B转账”这个例子来说明解释 。
一致性是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏 。这是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性 。如A给B转账,不论转账的事务操作是否成功,其两者的存款总额不变(这是业务逻辑的一致性,至于数据库关系约束的完整性就更好理解了) 。
隔离性多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果 。
持久性,意味着在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚 。(完成的事务是系统永久的部分,对系统的影响是永久性的,该修改即使出现致命的系统故障也将一直保持)
3、怎么保持分布式系统的一致性
CAP理论, 一致性, 可用性,分区容错性,简称CAP 。三选其二 。
BASE理论:BA 是(基本可用):基本可用是指分布式系统在出现不可预知故障的时候,允许损失部分可用性 。比如:响应时间的损失,响应时间变长;功能的损失,购物高峰,部分消费者被引导到降级页面 。S 是Soft state(软状态):允许部分节点的数据存在一定的延时,这个延时不影响可用性 。E 是 (最终一致性)
2PC(二阶段提交) 用来保证分布式系统数据的一致性问题,目前绝大部分关系型数据库都是采用二阶段提交协议来完成分布式系统数据一致性的,能够有效的保证分布式数据一致性问题 。阶段一:提交事务请求,等待各参与者的响应 。阶段二:分为两种情况 。执行事务提交 。假如参与者的反馈都是yes,协调者向所有参与者发出请求,参与者收到请求后,会执行事务提交操作,并释放事务资源,向协调者发送Ack消息,协调者收到消息完成事务 。中断事务提交 。假如有任何一个参与者向协调者发送了No响应,或者等待超时之后,协调者都没有接到参与者的响应,那么就中断事务,发送请求,参与者收到后,利用阶段一中记录的Undo信息来执行事务回滚操作,并回滚后释放在整个事务执行期间占用过的资源,完成后滚后,向协调者发送Ack信息 。协调者收到后,完成事务中断 。
【星环科技测开电话一面】3PC(三阶段提交)
3PC比2PC改进在 1引入超时机制 。(超时提交策略,当第三阶段参与者等待协调者超时后会提交事务,解决参与者同步阻塞问题,同时能在发生单点故障时,继续达成一致)
2在第一阶段和第二阶段中插入一个准备阶段 。(也是为了减少同步阻塞的发生范围)
3、查询成绩第二高学生的成绩
# 创建函数getNthHighestSalary,参数N为INT,返回类型为INTCREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT# 开始BEGIN# Decalre 是定义变量的用法,所以定义M 为INT类型Declare M INT;# 如果在select查询语句中直接写入N-1 会语法报错 。所以通过创建存储函数来实现 。#另外由于选取的是第N高的薪水,采取的是逆序排序,取第N个 。# 根据逆序排序的用法,本应该写入DESC limit n-1,1(现在是DESC limit M,1) #所以意思是逆序排序从下标n-1的元素开始取1个 。当我们输入2的时候,第2高的薪水,#就要选择下标为1的属性salary,取1个值 。#(limit m,n ,其中m的计数是从0开始,表示第一条)SET M=N-1RETURN(select discintct salary from employee order by Salary desc limit M,1);END