文章目录
-
- 2.Java基本数据类型?
- 3.对象三大特征?
- 4.多态和封装的含义及作用?
- 5.方法重写和方法重载的区别?
- 6.String/StringBuffer和StringBuilder区别?
- 7.String常用方法有哪些?
- 8.==和equals有什么区别?
- 9.两个对象hashCode相同equals为true吗?
- 10.ArrayList和LinkedList有什么区别?
- 11.ArrayList 1.6和1.7有什么区别?
- 12.HashMap底层实现?
- 13.为什么要使用红黑树?
- 14.为什么会退化成链表?
- 15.HashMap负载因子?调大有什么影响?
- 16. 说一下使用过的线程池?
- 17.拦截器和过滤器区别?
- 18.Spring核心思想?
- 19.AOP动态代理模式?
- 20.Spring框架常用设计模式?
- 21.Bean有几种注入方式?
- 22.Bean的作用范围?
- 23.Controller多线程下会有问题吗?
- 24.事务四大特性、四种隔离级别?
- 25.默认隔离级别?
- 26.说一下MySQL索引?
- 27.解释一下原子性是什么?
- 28.一人一单怎么实现?
- 29.Redis缓存穿透、击穿、雪崩?怎么解决?
- 31.本地缓存使用过吗?
- 32.本地缓存框架?
2.Java基本数据类型?
基本数据类型是指不可再分的原子数据类型,内存中直接存储此类型的值,通过内存地址即可直接访问到数据,并且此内存区域只能存放这种类型的值。在 Java 中,一共有 8 种基本类型(primitive type),其中有 4 种整型、2 种浮点类型、1 种用于表示 Unicode 编码的字符类型 char 和 1 种用于表示真假值的 boolean 类型。4 种整型:int、short、long、byte2 种浮点类型:float、double字符类型:char真假类型:boolean
3.对象三大特征?
对象的三大特征是:封装、继承和多态。封装:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。继承:子类可以重用父类的属性和方法,同时还可以添加自己的属性和方法。多态:同一个接口可以有不同的实现方式,即同一种行为可以有多种不同的表现形式。
4.多态和封装的含义及作用?
多态是指同一个接口可以有不同的实现方式,即同一种行为可以有多种不同的表现形式。多态的作用是为了实现另一个目的是接口重用,多态可以提高代码的灵活性和可扩展性,使得程序更加健壮、易于维护。封装是指将数据和操作数据的方法包装在一起,对外隐藏内部实现细节,只提供有限的公共接口。封装的作用是为了保护对象的内部状态,防止外部对其进行非法访问和修改,同时也可以通过封装来实现代码的复用。
5.方法重写和方法重载的区别?
方法重写和方法重载是Java中多态性的不同表现。重写是指子类中的方法与父类中继承的方法有完全相同的返回值类型、方法名、参数个数以及参数类型,这样就可以实现对父类方法的覆盖。方法重载发生在同一个类中,方法名相同,参数列表不同。方法返回类型、权限修饰符不作为方法重载的依据。
6.String/StringBuffer和StringBuilder区别?
String、StringBuffer 和 StringBuilder 都是 Java 中用来操作字符串的。String:不可变的字符串,因此在动态字符串拼接的场景下不适合使用,效率很低(每次都会生成新的字符串)。StringBuffer:提供了 append 和 insert 方法可用于字符串的拼接,解决了 String 字符串拼接场景下的性能问题,并且它是线程安全的,它使用 synchronized 来保证线程安全。StringBuilder:和 StringBuffer 类似,拥有相同的操作 API,但它可以更高效的拼接字符串,但不能保证线程安全。
7.String常用方法有哪些?
String 类的常见方法有以下这些:length():返回字符串的长度。charAt(int index):返回指定索引处的字符。indexOf(String str):返回指定字符串在当前字符串中第一次出现的位置,如果未找到则返回 -1。substring(int beginIndex):返回从指定索引开始的子字符串。substring(int beginIndex, int endIndex):返回从指定索引开始到指定索引结束的子字符串。toLowerCase():将所有字符转换为小写。toUpperCase():将所有字符转换为大写。trim():去除字符串两端的空格。
8.==和equals有什么区别?
== 对于基本数据类型来说,是用于比较 “值”是否相等的;而对于引用类型来说,是用于比较引用地址是否相同的;而 equals 本质上就是 ==
,只不过很多类,比如 String 和 Integer 等类中都重写了 equals 方法,把它变成了值比较。
9.两个对象hashCode相同equals为true吗?
不一定。如果对象在重写 hashCode 方法时,重写了 equals 方法的话,那么 hashCode 相同,它们进行 equals 对比时,结果是有可能为 true 的;但如果重写 hashCode 方法时,没有重写 equals 方法,那么结果一定是 false,如下图所示:
10.ArrayList和LinkedList有什么区别?
ArrayList 和 LinkedList 都是 Java 中的 List 接口的实现类。 但它们有以下不同:底层实现不同:ArrayList 是基于动态数组的数据结构,而 LinkedList 是基于链表的数据结构。随机访问性能不同:ArrayList 优于 LinkedList,因为 ArrayList 可以根据下标以 O(1) 时间复杂度对元素进行随机访问。而 LinkedList 的访问时间复杂度为 O(n),因为它需要遍历整个链表才能找到指定的元素。插入和删除性能不同:LinkedList 优于 ArrayList,因为 LinkedList 的插入和删除操作时间复杂度为 O(1),而 ArrayList 的时间复杂度为 O(n)。更多内容,请参考:https://www.javacn.site/interview/basic/arraylist-linkedlist.html
11.ArrayList 1.6和1.7有什么区别?
ArrayList 在 JDK 1.6 和 JDK 1.7 的区别主要有两方面不同:扩容实现上:JDK 1.6 扩容是原来的 1