Java面试题及答案(一)

Java面试题及答案(一)

目录

Java面试题及答案(一)

1.String,Stringbuffer,StringBuild 的区别

2.ArrayList和LinkedList有什么区别

3.讲讲类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,当new的时候他们的执行顺序

4.用过哪些Map类,都有什么区别,HashMap是线程安全的吗,并发下使用的Map是什么,他们内部原理是什么,比如储存方式,hashcode,扩容,默认容量等

5.有没有顺序的Map实现类,如果有,他们是怎么保证有序的

6.抽象类和接口的区别,类可以继承多个类吗,接口可以继承多个接口吗,类可以实现多个接口吗

7.继承和聚合的区别在哪

8.讲讲你理解的nio和bio的区别是啥,谈谈reactor模型

9.反射的原理是什么,反射创建类实例的三种方式是什么

10.反射中,Class.forName和ClassLoader的区别  

  


 1.String,Stringbuffer,StringBuild 的区别

String是final类不能被继承,字符串常量,而StringBuilder和StringBuffer均为字符串变量
运算速度(通常情况下):StringBuilder>StringBuffer>String
线程安全:stringBuilder非线程安全,该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)StringBuffer中大部分方法由synchronized关键字修饰
String:适用于少量的字符串操作。
StringBuilder:适用于单线程下在字符串缓冲区进行大量操作。
StringBuffer:适用于多线程下在字符串缓冲区进行大量操作。

2.ArrayList和LinkedList有什么区别

1、数据结构不同:ArrayList是基于Array(动态数组)的数据结构,LinkedList是基于Link(链表)的数据结构。
2、效率不同:

(1)随机遍历访问:linkedlist的性能要低于arraylist.
   因为LinkedList是线性的数据存储方式,所以需要移动指针从前往后依次查找。查找某个元素的时间复杂度是O(n)。而ArrayList查找某个元素的时间复杂度是O(1)

(2)增删效率:linkedlist的增删要优于arraylist

   因为ArrayList是数组,所以在其中进行增删操作时,会对操作点之后所有数据的下标索引造成影响,需要进行数据的移动
3、内存消耗不同
   LinkedList比ArrayList更占内存,因为 ArrayList 的每个索引的位置是实际的数据,而 LinkedList 中的每个节点中存储的是实际的数据和前后节点的位置 ( 一个 LinkedList 实例存储了两个值: Node<E> first 和 Node<E> last 分别表示链表的其实节点和尾节点,每个 Node 实例存储了三个值: E item,Node next,Node pre) 。

3.讲讲类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,当new的时候他们的执行顺序

  • 没有继承关系

  1. 静态字段
  2. 静态构造方法
  3. 实例字段
  4. 实例构造方法
  • 有继承关系

  1. 子类的静态字段
  2. 子类的静态构造方法
  3. 子类的实例字段
  4. 父类的静态字段
  5. 父类的静态构造方法
  6. 父类的实例字段
  7. 父类的实例构造方法
  8. 子类的实例构造方法

4.用过哪些Map类,都有什么区别,HashMap是线程安全的吗,并发下使用的Map是什么,他们内部原理是什么,比如储存方式,hashcode,扩容,默认容量等

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值