如果没有了Spring…

分享一下前段时间自己第三面的面试经历吧,虽然现在入职的不是BAT,但也算是细分领域里的准独角兽公司了,希望可以对你有所帮助哈。

面试官:一面、二面他们对你的评价很高啊。我看你写着精通Spring,今天我们就聊聊Spring吧!

我:走着!

面试官:谈谈你自己对Spring的理解吧!

我:我觉得Spring就是个万用排插,可以对接几乎一切的开源接口。像我接触过的项目有规则引擎,做推荐,做营销活动,做秒杀等等。

面试官:你为什么用Spring?
我:Spring的优点很多,比如方便解耦,简化开发,但是对我来说主要还是避免重复造轮子!

Spring可以说已经是业界标准了,经过了无数项目的实战检验。遇到问题也可以向全世界的开发人员请教,可以帮忙指出思路或解决方案;

还有就是学习Spring的理念,我经常会研究Spring的源码,对自己的Java技术水平和应用开发水平提升很大。Spring框架源码是Java技术的最佳实践范例。

面试官:我很赞同!我们来问问比较细的点,@Transactional到底做了什么事?

我:保证事务的完整性,结合ACID了解。

面试官:@Transactional一定能保证事务的ACID么?

我:不一定,默认情况下,回滚时,只会回滚Error与RuntimeExcetption。

面试官:Spring有几种事务的实现方式,为什么说加了@Transactional注解的业务方法里不适合有长调用?

我:排除自定义事务管理器的话,Spring提供了2种事务管理方式,分别为声明式事务@Transactional(注解式)和编程式事务,如果使用声明式事务,在源码中(省略500字),正常情况下,只有业务方法整体执行完成,才会释放数据库连接,如果业务方法中的长连接调用时间要10s,那么意味着至少10s,当前的数据库连接是无法释放的,数据库连接是很宝贵的资源(省略100字)

面试官:Spring的事务传播属性是如何实现的?

我:结合数据库连接去理解,我们在工作中常用的,有REQUIRED,REQUIRES_NEW,NESTED三种传播属性,在Spring底层实现中,它会根据传播属性的不同,去使用数据库连接,在源码中(省略500字),我们使用时,应该根据业务进行具体判断。

面试官:Spring的事务隔离级别是如何实现的?

我:高并发场景下,为了保证竞争资源的安全性,就会考虑隔离级别的问题,结合您刚才问到的事务的传播属性,实际隔离级别这个问题,我觉得结合数据库的MVCC&LBCC(省略500字),来结合业务场景会更加合适。

隔离性您真的了解么?在MySQL5.5+,InnoDB存储引擎中,如果表my_table_innodb中,id=12345,age=18,在下上事务中,Q1,Q2,Q3的查询结果分别是什么?

面试官:答的很好,最后一个问题:如果没有Spring,你打算怎么开展工作?

这个思考了几分钟后,我是这么回答的:Spring的核心源码,比如:IOC、AOP、Spring事务、MVC原理等从02年到现在基本80%都没有改动过,核心源码我还是有信心把控的,手写一个类似Spring的核心框架,在我的能力范围内。

另外,如果业务比较紧急,git上有很多可借鉴来源项目,因为我本人对Spring源码的了解,改造起来不会花费太多时间;

面试官:你本人对公司有什么要求(喜闻乐见的谈薪水时刻)?

 (省略500字)

明天可以来上班吗?


做程序员难,做一个2020年的程序员更难,随着IT人员越来越多,我们的竞争压力也越来越大,想要在茫茫人海中脱颖而出,其实考察的就是我们技术栈的广度和深度

做Java的人,应该都听说过一句话:Spring重新定义了Java。

Spring底层到底要看什么?以下是我的学习笔记,给大家分享一下,希望可以对你掌握Spring有所帮助。(xmind格式可在文末获取)

Spring学习笔记

Spring作为现在最流行Java开发技术,其内部源码设计非常优秀。但是相当一部分程序员没有用过Spring,或者说,即使用过,也是建立在SSM,SSH等框架基础上的CRUD,只关注自己用的那部分代码的逻辑,而并不真正去理解框架,完全不懂Spring底层原理。

Spring源码都不懂,还敢去面试?

为了帮助大家深刻理解Spring底层源码,并将它应用到工作中。我特邀了前美团高级工程师、Spring资深专家大飞老师,为大家带来一堂《Spring事务源码详解》,通过本节课的分享,你将摆脱面试造火箭,工作拧螺丝的困境。

源码,我来,我征服!


《Spring事务源码详解

学好Spring,薪资轻松翻倍


大飞老师

前美团项目高级研发工程师;前分享通信集团渠道、资源平台研发负责人;

对海量数据、分布式、容灾以及高并发有着丰富经验以及自己的理解。

适合人群

1. 具备Java、Spring基础;

2. 具备一定自学能力;

3. 立志成为高级工程师、架构师的IT人;


课程介绍:

5.18

人人都用的@Transactional,您真的了解么

@Transactional一定就是可靠的么?

事务源码详解;

利用编程式事务提高资源利用率;

通过源码看看Spring的事务传播属性

5.19

搞定Spring事务源码

Spring事务传播属性再深入--嵌套事务详解;

Spring事务与数据库事务的那些事儿;

Spring事务隔离级别详解;


Java进阶必备资料限时领取

附赠7.8G的Java架构进阶资料和大厂面试题目及答案

扫码添加肉兰老师报名

“如果没有了Spring,你会怎么办?”

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值