2022-8-16第一次企业面试(JavaSE)

1.equals与==的区别

 (1) ==是一个运算符, 如果是基本数据类型,比较的是值是否相同,如果是引用数据类型,比较的是其对应的堆内存地址是否相同。

(2) equals是一个方法,如果没有重写equals方法,那么使用的就是Object类中的equals方法,其本质是使用的 == 进行的比较,如果重写了,例如String中的equals方法就是判断两个字符串的值是否相同。

2. 如果理解String的不可变性

  String的赋值存在两种方式,一种是字面量直接赋值的方式,一种是通过new的方式赋值。不可变性指的是字符串常量存在于常量池中

                String  s1 = "123";    一个String对象使用final Char [] 存放了一个123值的字符数组且一经定义不可改变(不可变性)

                s1 = "345"; 新生成了一个Stirng对象,final char[] 存放了一个345,指向s1

3.String、StringBuffer、StringBuilder的区别?

1.String是不可变的,底层使用的是final char[] 一经定值不可更改

2.StringBuffer是可变的字符序列,默认是16个长度的字符数组,加了同步锁,所以是线程安全的,效率低下。

3.StringBuilder是可变的字符系列,默认也是16个长度的字符数组,使线程不安全的,效率高。

对于频繁的字符串的修改,推荐使用StringBuffer或者StringBuilder

4.ArrayList、LinkedList、Vetor的异同之处?

1.存储的都是可重复的,有序的数据集合

2.ArrayList适用于进行元素的查找,LiskedList适用于元素的频繁的删除和插入

3.ArrayList存储元素时,初始化10长度的元素数组,每次扩容为原来的1.5倍

4.LinkedList底层采用的是 双向链表的数据结构存储数据,存在一个Node结点,存储元素和指向这个元素的上一个结点和下一个结点。

5.Vetor存储的是初始化的10长度的数组,每次扩容为原来的2倍,是一个线程安全的容器,

ListedList和ArrayList是线程不安全的。

对于集合中存储的类对象,都必须重写equals方法

5.redis为什么那么快?

(1)redis是基于内存的操作,数据都存放在内存中,比硬盘上IO操作速度肯定要快。

(2)redis是一种单线程模式,避免了线程切换,锁资源争夺等不必要的花销。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值