首页 > 其他分享 >4.3面试

4.3面试

时间:2023-04-03 20:57:29浏览次数:26  
标签:请求 4.3 重复 事物 接口 面试 操作 数据

# 脏读,不可重复读,幻读 ,mysql5.7以后默认隔离级别是什么?
# 什么是qps,tps,并发量,pv,uv
# 什么是接口幂等性问题,如何解决?
脏读,不可重复读,幻读 ,mysql5.7以后默认隔离级别是什么?
脏读:事物A读取事物B 更新的数据,然后B进行了回滚,A读取到的数据是脏数据
不可重复读:事物A多次读取同一数据时,事物B在事物A在读取过程中对数据进行了更新并提交,导致了A多次读取同一数据时,结果不一致
幻读:指一个事物在前后两次查询同一个范围的时候,后一个查询看到了前一次没有看到的行
(系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。)
mysql5.7以后默认隔离级别是什么?
可重复读,也是最常用的隔离级别。
当启用可重复读隔离级别时,使用select语句获取到的数据是事物开始执行时的状态。即使其他事物修改了同样的数据,当前事物查询到的数据也会受影响
# 什么是qps,tps,并发量,pv,uv
qps:即Queries Per Second的缩写,每秒能处理的查询数目(发出请求到服务器处理完成功返回结果),是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准
    
tps:即Transactions Per Second的缩写,每秒处理的事物数目。
一个事物是指一个客户机向服务器发送请求然后服务器做出反应的过程,客户机在发送请求时开始计时,收到服务器做出反应后结束计时,以此来计算使用的时间和完成的事物个数

并发量:系统能同时处理的请求数

PV:即 page view,页面的浏览量,用户每对网站中的每个页面访问均被记录一次,用户对同一页面的多次刷新,访问量累计

UV:即 Unique visitor,独立访客,通过客户端的cookies实现,即同一页面,客户端点击只计算一次,访问量不累计
# 什么是接口幂等性问题,如何解决?
接口幂等性:就是指用户对于同一操作发起的一次或者多次请求,其操作的结果都是一致的,不会因为多次请求而改变。

不做接口幂等性有什么影响:用户购买商品,发起支付操作,支付系统显示已经支付成功后,由于网络原因没有及时返回成功的信息给用户,其实这个时候订单已经扣过款,相应的支付流水也都已经生成。这个时候,用户又点击支付操作,此时会进行第二次扣款,扣款成功后吧操作成功的信息返回给了用户。用户去查看支付订单和流水时 会发现自己支付了两次,完蛋了,该系统要被用户投诉了。这就是没有保证接口的幂等性而造成的不良后果。
什么 情况下需要保证接口幂等性:
在增删改查四个操作中,尤为需要注意的是增加和修改操作
select是天然的幂等操作,update对数据不会产生副作用
使用幂等性的业务场景:
1.前端重复提交
2.接口超时重试
3.MQ消息重复消费
幂等性的解决方案:
1.唯一索引:
	使用唯一索引可以避免脏数据的insert,当插入重复数据时数据库会抛出异常,确保了数据的唯一性
     
2.乐观锁:
	为表增加一个version字段,当数据需要更新时,先去获取version版本号。和最新版本号进行对比,如果不相等,说明已经有其他的请求去更新数据了,则会提示更新失败,让用户重试
    
3.悲观锁:
    在获取数据的时候加锁,当同时有多个重复请求过来时,其他的请求都会因为无法获得被操作数据的锁而阻塞住,因此,其他请求都无法对被操作的数据进行操作
    
4.CAS思想保证接口幂等性:
    状态机制来实现接口幂等性
    
5.分布式锁:
    分布式锁可以通过redis或zookeeper来实现
    在分布环境下,锁定全局唯一资源,使多个请求串行化,实际表现为互斥锁,可以防止重复,以此来解决幂等性问题。
    
6.基于token+redis机制实现(通用性强):
    每次操作都生成一个唯一性的凭证,也就是token,一个token在操作的每个阶段只有一次执行权
    
7.基于redis命令setnx实现

8.通过业务代码逻辑判断实现

img

标签:请求,4.3,重复,事物,接口,面试,操作,数据
From: https://www.cnblogs.com/zx0524/p/17284381.html

相关文章

  • C语言再学习 -- 详解C++/C 面试题 2
    (经典)C语言测试:想成为嵌入式程序员应知道的0x10个基本问题。参看:嵌入式程序员面试问题集锦1、用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #defineSENCONDS_PER_YEAR(60*60*24*365)UL解答:#define声明一个常量,使用计算常量表达式的值来表明一年中有多少......
  • 4.3电梯演说视频和原型展示
               团队项目电梯演说_哔哩哔哩_bilibili......
  • 百度面试题-海量日志,读取IP
    4、海量日志数据,提取出某日访问百度次数最多的那个IP。回答:如果日志文件足够的大,大到不能完全加载到内存中的话。那么可以考虑分而治之的策略,按照IP地址的hash(IP)%1024值,将海量日志存储到1024个小文件中。每个小文件最多包含4M个IP地址。对于每个小文件,可以构建一个IP作为ke......
  • Python常见面试题015.请实现一个如下功能的函数
    015.请实现一个如下功能的函数来自python黑魔法题目实现一个add函数,可以"反复"调用,得到累加的结果defadd(num):...add(1)#输出1add(2)#输出2add(1)(2)#输出3(即1+2)add(1)(2)(3)#输出6思考一开始我想到的是用一个参数,类型是list,能保存用户的传......
  • 力扣---面试题 02.01. 移除重复节点
    编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1:输入:[1,2,3,3,2,1]输出:[1,2,3]示例2:输入:[1,1,1,1,2]输出:[1,2]提示:链表长度在[0,20000]范围内。链表元素在[0,20000]范围内。进阶:如果不得使用临时缓冲区,该怎么解决?来源:力扣(LeetC......
  • Spark面试经典系列之数据倾斜解决方案的“银弹”是什么? 本节我们对Spark数据倾斜解决
    Spark面试经典系列之数据倾斜解决方案的“银弹”是什么?本节我们对Spark数据倾斜解决方案进行回顾和总结:1、   数据倾斜运行的症状和危害。如果发行数据倾斜,往往发现作业任务运行特别缓慢,出现OOM内存溢出等现象。2、   如果两个RDD进行操作,其中1个RDD数据不是那么多,我们把这......
  • 04分时操作系统4.3
    分时操作系统一台主机连接多台显示器和终端,允许多个用户通过客户端访问,以交互的方式,共享主机中的资源。为什么需要分时系统人机交互共享主机便于用户上机(提高商业价值)需要解决的关键技术问题及时接收信息及时处理(作业提前进入内存,能够与用户交互)分时系统的......
  • 大数据面试题
    目录大数据面试题纯技术部分java相关面试题scala相关面试题数据库相关面试题【重要】数仓相关面试题Linux相关面试题hive相关面试题【重要】kafaka相关面试题spark相关面试题Hbase相关面试题其他面试题大数据面试题纯技术部分java相关面试题java面向对象的特征【基础】java......
  • [leetcode每日一题]4.3
    1053. 交换一次的先前排列提示中等80相关企业给你一个正整数数组 arr(可能存在重复的元素),请你返回可在 一次交换(交换两数字 arr[i] 和 arr[j] 的位置)后得到的、按字典序排列小于 arr 的最大排列。如果无法这么操作,就请返回原数组。 示例1:输入:arr=[3,2,1]输出:[3,1,2]......
  • Python面试题究极篇01
    目录Python面试题第一章深浅拷贝是什么魔法方法new和init有什么区别python的可变和不可变数据类型是什么什么是生成器,有什么应用场景数据库的三大范式是什么mysql有哪些索引类型,分别有什么作用事务的特性和隔离级别Python面试题第一章深浅拷贝是什么浅拷贝和深拷贝:浅拷贝是在......