前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试官的问题与解读

面试官的问题与解读

作者头像
用户1134788
发布2022-05-09 10:22:23
2170
发布2022-05-09 10:22:23
举报

最近又开始面试了。

然后当时面试官问了个问题

a()执行修改完毕。

b()执行修改完毕。

c()执行读取完毕。

发现c()出现了脏读。怎么解决?

然后我就懵逼了。

然后就在一个交流群里问了问大佬。(群中真是卧虎藏龙,问我问题的老哥,看起来都是身经百战)。

嗯,他们直接指出了问题的核心:这个问题是想问我脏读在代码中出现的原因,以及如何避免?

嗯,根据当时面试的心路历程,我感觉是???(也吐槽一点客观因素吧,当时天很冷,然后我被晾了半天,恰好又是下午最瞌睡的时间,然后很蒙蔽。就是自己太菜了)

针对如何避免出现脏读的问题。

在代码层面就是,当写方法加锁时,读方法没有加锁,就会出现脏读。

那么,怎么解决呢。就是使用读写锁:ReentrantReadWriteLock类。

这样,就不会出现脏读了,至于为什么呢?点击这里

嗯,那么万一真的脏读了,说明数据库中已经出现问题了。那么这个时候该怎么做呢?

群里老哥说了:

先去看数据库隔离级别:

            dirty read(脏读)    nonrepeatable read(不可重复读)    Phantom Read(幻读)

Read uncommitted        可能            可能                  可能

Read committed      不可能               可能                  可能

Repeatable read        不可能            不可能                 可能

Serializable        不可能            不可能                  不可能

MySQL默认是:Repeatable  read

oracle默认是:read committed

当然你去查查数据库隔离级别就可以了。

如果真的需要还原:

那么查看报文,然后查看数据。

或者直接找DBA啊。

当然在使用框架的时候,当然是spring的声明式事务啊(这也是我当时回答的。。。。。。。)

至于分布式事务。。。。这个我真的不太了解。。。属于待完成事项吧。。。。

至于这个面试总结:

自己准备不足,一些基本的问题回答的并不好,实际上自己可以回答的更好。

还有这个让我直接滚蛋的问题。。。。。。

很尴尬。线程基础书籍刚看过一本,却没有想到关于脏读与线程里面涉及的关系。这是自己的问题,没得牌面。

多多积累多多努力!!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-01-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档