每天五个面试题,保温杯里泡枸杞!!!

1、final关键字的作用?

  1. final修饰成员变量时,必须赋值,一旦赋值不能被更改

  2. final修饰局部变量时可以不赋值,但是赋值后就不能更改

  3. final修饰成员方法时,子类不能重写

  4. final修饰类不能被继承

接口中的变量都是默认 public static final 修饰的!!!

2、抽象类和接口的区别?

  1. 接口的方法都是抽象的,抽象类可以有抽象方法也可以有非抽象方法

  2. 类可以有多个接口,但是只能继承一个抽象类

  3. 类如果要实现一个接口必须实现他的所有抽象类,但是类继承抽象类可以重写抽象方法,非抽象方法不强制重写

  4. 抽象类去实现接口,接口的方法在抽象类中不强制重写

  5. java 8以上的版本可以写默认的方法,这个方法带有方法体

3、简单说一下ArrayList和LinkedList

  1. Arraylist和LinkedList都是List的接口的实现类

  2. ArrayList底层是数组,查找增删慢

因为数组名字加索引计算会当成地址,直接查询号这个地址就可以把数据取出来(相当于读书时,通过目录查找),增删慢,是因为牵扯到数组的扩容,增删数据的时候,后续的元素需要前移或者后移

  1. LinkedList底层是双向链表,查找慢增删快

  2. 查找慢:是因为底层使用的是二分法查找的一种算法,比较慢

增删快,直接找到要被插入数据或者删除数据的前置节点或者是后置节点直接插入,其他元素保持不变

(LinkedList是双向链表,没有下标,所以直接插入,不会引起数据的移动)

4、Java集合类:list、set、map的特点和用法?

Map

Map是键值对,键key是唯一不重复的,一个键对应一个值,值可以重复

TreeMap可以保证顺序,HashMap不保证顺序,Map中可以将Key和value单独抽取出来,其中KeySet()方法可以将所有的Keys抽取成一个Set,而Values()方法可以将map中所有的values抽取成一个集合。

Set

不包含重复元素的集合,set中最多包含一个null元素,只能用Iterator实现单项遍历,set中没有同步方法

List

有序可重复的集合,可以在任意位置增删元素,用Iterator实现单项遍历,也可以使用ListIterator实现双向遍历

5、String 、StringBuilder、StringBuffer区别?

String字符串常量不可变安全性 使用字符拼接时是不同的两个空间
StringBuffer字符串常量可变线程安全字符串拼接直接在字符串后面追加
StringBuilder字符串常量可变非线程安全字符串拼接直接在字符串后追加

StringBuilder执行效率高于StringBuffer 高于String

String是一个常量,是不可变得,所以每次赋值都会创建一个新的对象,StringBuffer和StringBuilder都是可变的,当进行字符串拼接时采用append方法在原来的基础上进行追加,所以性能比String要高,又因为StringBuffer是线程安全的而StringBuilder是线程非安全的,所以StringBuilder的效率高于StringBuffer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值