Bootstrap

Java基础笔记(面试题)

一、Tomcat中为什么要使用自定义类加载器

Tomcat中可以放多个Java项目的jar文件,如果每个jar文件中都有一个User的类,那么User类在没有自定义类加载器的情况下是只能加载一次;想要加载多次,只能自定义类加载器

二、JDK、JRE、JVM之间的区别

JDK:

JRE:

JVM:

三、hashCode()与equals()之间的关系

比较两个类是否相等

3d92b26793a14936af0af5b93eb23759.png

d955c4347eae48a9bdc3bb2bacdab5ac.png

四、String、StringBuffer、StringBuilder的区别

String:string s="4";s=5;    其实4还在

StringBuffer:线程安全

StringBuilder:

五、泛型中extends和super的区别

六、

==:比较引用地址

字符串equals:先比较引用地址,再比较内容

object对象equals:和字符串的equals不是同一个方法

七、

重载:1、和返回值无关

重写:

aa5db58d8d174deda17f935e3ac85e79.png

7. List和Set的区别

iterator

20a1b64f70d14b79b7311516a23a546d.png

8、new String("abc")到底创建了几个对象

  • 如果'abc'这个字诗串常量不存在,则创建两个对象,分别是'abc'这个字诗串常量,以及'new String'这个实例对象
  • 如果'abc'这个字符串常量存在,则只会创建一个对象

9、Redis的缓存穿透、缓存击穿和缓存雪崩_redis 缓存穿透,雪崩-CSDN博客

10、mybatis中#{}和${}的区别

11、Java加锁为什么会导致性能下降

12、事务

Spring事务的实现方式和实现原理
Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,Spring是无法提供事务功能的。Spring事务实现主要有两种方法:编程式:beginTransaction()、commit()、rollback()等事务管理相关的方法,声明式:利用注解Transactional 或者aop配置

谈谈你对事务的理解?

当Java中一个方法内有多次对数据库的增删改查等操作,并且这些操作之间有一些关联关系,如果方法执行一半出问题报错,后面的操作将不会执行,造成数据异常,但是使用了事务以后可以如果中途执行失败,可以回退到方法执行之前,保证数据不出问题。

事务的隔离级别?

注:事务的隔离级别越高,性能越低,需在两者间选其一

什么情况下事务会失效?

@Transactional放在非public修饰的方法上
如使用mysql且引擎是MyISAM,则事务会不起作用,原因是MyISAM不支持事务,可以改成InnoDB引擎
在同一个类中,在没有加事务的方法中调用带事务的方法,事务会失效。

;