小弟昨天去面试,面试官问我工作中没有用到过事务。我跟他说 spring 是声明式事务,加上 Transactional 注解后整个方法中的所有 sql 语句就在一个事务中了,方法执行完毕事务自动提交。他跟我说不是这意思,我又说工作中没有自己给 sql 加过事务,他说也不是问我有没有自己手动加过事务,就问有没有用到过事务。恕小弟愚钝,实在没有搞明白他具体想问什么,有人帮忙看看面试官具体想问什么吗?
1
timethinker 2022-03-11 09:55:38 +08:00
你说的事务都是技术执行层面的 [如何使用事务] ,猜测一下他应该想问的是业务层面的 [为什么 /什么情况要使用事务] ,一个是 How to do ,一个是 Why to do 。
不过仅从你描述的这些也只是猜测而已,假如说我来进行面试的话,一般就不会问具体的实现细节,而是问这个东西有什么用,为什么要用。 |
2
Zss77 2022-03-11 10:02:59 +08:00
问数据库的事务和 spring 那些东西有什么关系呢。它们只是提供了事务功能的一种实现。
事务具有 ACID 特性,事务中的 SQL 要么全部成功要么全部失败。我觉得他想问的是这个。 |
3
wolfie 2022-03-11 10:11:19 +08:00
估计是想看抛开框架 懂不懂 start 、commit 、rollback 。
|
4
Seulgi 2022-03-11 10:12:55 +08:00 2
你这就是纯粹的想秀。人家问你工作中用到过事务吗?答用到过。人家看到你停了肯定会再问,哪里用到过,哪个业务场景?你再结合你写的项目经历里的业务场景说,比如某个业务场景,先讲解这个业务场景,然后说怎么用的,也就是你说的 spring transactional 。这时候再去秀技术,讲原理之类的,如果你自己也没有研究得很深,答到 spring 事务就 ok 了。如果他对原理有要求,他会再问,你知道 spring 事务的 xxxx ,你才继续答下去。面试最忌讳浮躁,就是别人刚说一个名词,你就开始你的表演,首先面试官的考点可能不是你说的,其次几轮沟通下来,面试官会给你打上一个不好沟通的标签。就跟算法题一样,先问清楚各种边界,才能利于你更好的解题。
|
5
28Sv0ngQfIE7Yloe 2022-03-11 10:30:54 +08:00
“面试官问我工作中没有用到过事务。
我跟他说 spring 是声明式事务” 这个描述看起来就不太通顺~ |
6
oneisall8955 2022-03-11 10:34:52 +08:00
你说用到就行。后面抛出,事务的定义,它的几个特性,为什么需要使用(场景),mysql 中的实现原理,隔离级别,在应用代码中怎么使用,如 spring ,还会涉及到传播行为。你就一下说到代码怎么使用,还没到那一步呢
|
8
liu1996 OP @qwe520liao 感谢感谢,感觉确实是我理解有问题了
|
10
liu1996 OP @oneisall8955 感谢回复,确实是我没想到这一层面
|
11
jorneyr 2022-03-11 11:27:55 +08:00 4
@Seulgi 只是你喜欢这种方式,恰恰相反,我更喜欢我问一个问题,作为引子,面试者能够主动滔滔不绝的介绍相关的知识,我不喜欢一问一答的方式,我更注重的是面试者的能力,而不是某个问题的直接答案。当然,我会提前告知面试者如果能这样回答是我最希望看到的,而不是让人家猜测。
|
12
meeop 2022-03-11 11:33:53 +08:00
无非想问你对[事务]这个概念的了解和使用经验
说 spring 的 api 没问题,但是光说这个没有反映出你对事物这个概念的理解程度 标答(我猜的)应该是先说事物的概念,用途,然后是主要 api(添加事物,提交事务),最后讲原理(隔离级别,每种级别都啥意思,什么场景用什么级别,mysql 默认是什么级别,之前工作中用什么级别),最后再描述实现的原理(行锁,表锁,版本快照),最后再扩展一下(如何实现一个分布式事务,各个主流数据库支持到什么情况) 应该就能满足绝大多数面试官了 |
13
lblblong 2022-03-11 11:55:01 +08:00
我认为如果给的不是他想要的答案,应该稍加引导,而不是说一句“不是这个意思”
单从他的问题:有没有用到过事务? 我认为你的回答已经侧面说明你有用到过了 |
14
potatowish 2022-03-11 12:52:01 +08:00
这问题问的就不好,事务这个概念可宽泛了,要问什么直接说清楚
|
15
Felldeadbird 2022-03-11 13:54:40 +08:00
面试官提问有问题。我猜他想问你事务啥时候用。结果你回到了一个框架事务,打乱了他的提问节奏。
|
16
q474818917 2022-03-11 13:59:51 +08:00
事务能扯的真的太多了,什么事务隔离机制、事务的传播性,并发事务带来的问题,这面试官不太会问
|
18
hidemyself 2022-03-11 14:17:09 +08:00
工作中没有用到过事务?
用过的。比如在什么项目 /功能上,因为要实现 xxx 功能,使用 spring 的声明式事务,我们在函数上加上 Transactional 注解,达到了什么样的效果。然后再说一点要注意的点。 我会这么答。。。 |
19
Suaxi 2022-03-11 14:20:36 +08:00
昨天早上面试也是被问到相同的问题,我答的也是 @Transactional 注解,然后说了下具体的业务场景就到下一个问题了
|
21
liu1996 OP @hidemyself 感谢,确实受教了
|
22
encro 2022-03-11 14:45:38 +08:00
有没有用到事务?问这个问题其实要看的是你对事务理解多少?
标准回答:我在什么业务场景用到事务解决了什么问题。 而不是我是如何用事务的,就如 #1 所说人家要知道的是 Why ,你回答了 How 。 知道问 Why 的通常比问 How 的略胜一筹,知道回答 Why 的也通常比回答 How 的略胜一筹。 就好比面试官问你用过 redis 吗? 你告诉他用过 Java 的某个 Redis 库,那么非常 Low ,面试官对这个库不熟悉,那么接下来没法问了,这种回答对于面试官来说就是“死猪不怕开水烫”毫无诚意,要么沟通理解有问题。 如果你告诉他你用 Redis 在业务中用到了缓存,队列,HyperLogLog 等,回答到这步,你基本是有一定经验的,是能胜任相关开发工作的, 那么接下来可以问你 Redis 缓存持久,HLL 等的实现原理等等,如果都能回答对,那么是基础还可以,且具备钻研精神的,是值得培养的, 如果随便问你几个,你都能回答到第二层,那么价格合适赶紧来上班吧。 |
23
sampeng 2022-03-11 14:48:41 +08:00 2
如果我是面试官。。我会直接标记一个不会用事务,只知道用框架打个标签,为什么?因为别人都是这么用的。。。
|
24
bigbyto 2022-03-11 15:27:42 +08:00
|
25
haython 2022-03-11 15:31:36 +08:00
面试不只是面技术,也是要面能不能沟通
|
28
Erroad 2022-03-11 21:05:28 +08:00
万一人家不用 spring 呢,说事务就说事务,纯粹点挺好的。
|