跳槽者、应届生必看JAVA面试题系列 - JAVA基础知识(五)

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

四: 如何看一个网络通不通

方式一: ping ip地址/域名

方式二: ssh ip地址 -p 端口号 -v

方式三: telnet ip地址 端口号

五: 网络通了进程也运行着 但是访问不到可能是什么原因

1、防火墙限制

2、端口未开放

3、主机被加入了黑名单

六: 从前后台描述下你如何将一个数据插入到数据库中

回答思路:

这种的题目主要是考察你是否对开发的流程掌握,可以直接使用创建账号案例来举例即可。

案例:

用创建账号为例子,前端将用户填写在表单的数据转换成json,然后通过ajax指定请求地址,发起请求,后端在control层接受前台传递的参数,转发到Service层,在Service做参数校验,不符合则直接返回错误提示,符合则将数据封装成对应的实体,传递到Dao层,Dao调用对应的持久层框架API,将数据存储到数据库中。

七: 你们的事务是放在那里,怎么使用

回答思路:

考官主要考察你实际项目中是否有接触过事务,使用事务之前是否了解事务的相关知识,所以,只需要往这两个方向回答就可以,最好可以举例一些特殊的情况,如使用声明式事务失效等

使用场景:

1、有多个对数据库操作的业务中

2、且这多个操作需要保证原子性,要么所有业务都成功,要么所有业务都失败。

使用方式:

1、声明式事务: 使用Transactional注解,特点,侵入性小,使用简单

2、编程式事务:

特点:

侵入性强,但是可用控制的颗粒度更小,适用的场景更多如多线程场景下

使用方式代码如下:

@Autowired

DataSourceTransactionManager dataSourceTransactionManager;

@Autowired

TransactionDefinition transactionDefinition;

//手动开启事务

transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);

//手动提交事务

dataSourceTransactionManager.commit(transactionStatus);

//手动回滚

dataSourceTransactionManager.rollback(transactionStatus);

八: Transactional注解失效的场景有哪些

Transactional 可以作用在接口、类、类方法。

作用于类:当把@Transactional 注解放在类上时,表示所有该类的public方法都配置相同的事务属性信息。

作用于方法:当类配置了@Transactional,方法也配置了@Transactional,方法的事务会覆盖类的事务配置信息。

作用于接口:不推荐这种使用方法,因为一旦标注在Interface上并且配置了Spring AOP 使用CGLib动态代理,将会导致@Transactional注解失效

失效场景:

1、如果Transactional注解应用在非public 修饰的方法上,Transactional将会失效。

2、Transactional 注解属性 propagation 设置错误这种失效是由于配置错误,若是错误的配置以下三种 propagation,事务将不会发生回滚。

TransactionDefinition.PROPAGATION_SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。

TransactionDefinition.PROPAGATION_NOT_SUPPORTED:以非事务方式运行,如果当前存在事务,则把当前事务挂起。

TransactionDefinition.PROPAGATION_NEVER:以非事务方式运行,如果当前存在事务,则抛出异常。

3、rollbackFor 可以指定能够触发事务回滚的异常类型。Spring默认抛出了未检查unchecked异常(继承自 RuntimeException 的异常)或者 Error才回滚事务;其他异常不会触发回滚事务。

4、同一个类中方法调用,导致@Transactional失效。因为Transactional是基于AOP实现的,它的功能实际上是生成的代理对象去实现,所以,同一个类中的方法调用,实际上默认是this,即当前类调用,不是生成的代理类调用,所以无效

5、手动使用了try…catch捕获异常,此时也不会生效

6、数据库引擎不支持事务。事务能否生效数据库引擎是否支持事务是关键。常用的MySQL数据库默认使用支持事务的innodb引擎。一旦数据库引擎切换成不支持事务的myisam,那事务就从根本上失效了。

7、类没有被 Spring 管理,此时即使方法添加了Transactional也无法生效

8、多数据源时,数据源没有配置事务管理器也不会生效。

Spring Boot本身并不管理事务,只是提供了 PlatformTransactionManager 接口来供持久层实现来达到事务的管理,Spring Boot 默认使用JDBC来控制事务。

如果是多数据源的话,需要对每个数据源配置事务管理器,步骤如下(图来源网络,侵删):

在这里插入图片描述

九: 集中式和分布式的特点

集中式:

就是一个项目就是一个独立的应用,这个项目中包含了各个子模块,比如,邮件功能、文件上传功能等等。最多也就是多部署几个服务器,前面挡上负载均衡来平衡系统负载。

缺点:不易拓展、更新一个功能就需要重新部署整个项目。 一个子模块出问题就可能影响整个系统的。

优点:对于开发、测试、运维会比较方便,不用考虑复杂的分布式环境。

分布式:

也就是 若干个 独立功能的计算机的组合,通常做法就是针对一个系统,将系统中的各个业务模块分离开来分别部署到不同的计算机上,来配合工作使系统正常运转的一种系统部署方式,如果某个业务模块负载较高那么就增 加服务器并挡上负载均衡来缓解压力,但多个服务器仍然是只提供一个业务模块的功能。 但是对于用户是感觉不到的。

缺点: 对于开发、测试、运维 要考虑复杂的分布式环境,比如分布式事务、分布式锁等。

优点: 项目的各功能模块独立分开,一个模块更新不影响其他模块。

十: 静态代码块、构造代码块和构造函数的区别

静态代码块:用于给类初始化,类加载时就会被加载执行,只加载一次。

构造代码块:用于给对象初始化的。只要建立对象该部分就会被执行,且优先于构造函数。

构造函数: 给对应对象初始化的,建立对象时,选择相应的构造函数初始化对象。

创建对象时,三者被加载执行顺序:静态代码块—>构造代码块—>构造函数

四: 总结


由于文章篇幅的限制,面试大全的第五章暂时到这里就告一段落。如果有意见或者建议,可以在下方或者私信留言,看到会及时回复,也欢迎大家参加面试挑战和面试题投稿,希望大家早日获得心仪的Offer,如果觉得文字对你有帮助,欢迎关注和点赞

笔者福利

以下是小编自己针对马上即将到来的金九银十准备的一套“面试宝典”,不管是技术还是HR的问题都有针对性的回答。

有了这个,面试踩雷?不存在的!

回馈粉丝,诚意满满!!!




网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
有针对性的回答。

有了这个,面试踩雷?不存在的!

回馈粉丝,诚意满满!!!

[外链图片转存中…(img-2Zb0cOwr-1713550275139)]
[外链图片转存中…(img-TDK3Ciib-1713550275140)]
[外链图片转存中…(img-mTWXKaK9-1713550275141)]
[外链图片转存中…(img-gA2AWlW8-1713550275141)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-3cnLIDbP-1713550275142)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值