面试题3

面试题

Java容器

1. 说一下 HashSet 的实现原理?

HashSet 是基于 HashMap 实现的,HashSet 底层使用 HashMap 来保存所有元素,因此 HashSet 的实现比较简单,相关 HashSet 的操作,基本上都是直接调用底层 HashMap 的相关方法来完成,HashSet 不允许重复的值。

2. ArrayList 和 LinkedList 的区别是什么?

  • 数据结构实现:ArrayList 是动态数组的数据结构实现,而 LinkedList 是双向链表的数据结构实现。
  • 随机访问效率:ArrayList 比 LinkedList 在随机访问的时候效率要高,因为 LinkedList 是线性的数据存储方式,所以需要移动指针从前往后依次查找。
  • 增加和删除效率:在非首尾的增加和删除操作,LinkedList 要比 ArrayList 效率要高,因为 ArrayList 增删操作要影响数组内的其他数据的下标。

综合来说,在需要频繁读取集合中的元素时,更推荐使用 ArrayList,而在插入和删除操作较多时,更推荐使用 LinkedList。

3. 如何实现数组和 List 之间的转换?

  • 数组转 List:使用 Arrays. asList(array) 进行转换。
  • List 转数组:使用 List 自带的 toArray() 方法。

代码示例:

// list to array
List<String> list = new ArrayList<String>();
list. add("叶痕秋");
list. add("的诗情画意");
list. toArray();
// array to list
String[] array = new String[]{"王磊","的诗情画意"};
Arrays. asList(array);

OOPS

1.面向对象编程的主要原则是什么?

面向对象编程(OOPS)的主要原则是:

  1. 抽象
  2. 封装
  3. 继承
  4. 多态性

2.面向对象编程语言和基于对象的编程语言有什么区别?

面向对象编程语言如 Java 和 C ++遵循 OOPS 的概念,如封装,抽象,多态和 继承等。 基于对象的编程语言遵循一些特性 OOPS,但他们不提供对多态性和继承的支持。蛋。JavaScript,VBScript 等 基于对象的编程语言为对象提供支持,您可以从构造函数构建对象。他们的语 言也支持封装。这些也被称为原型导向语言。

3.在 Java 中,在对象中定义为实例变量的对象引用的默认值是什么?

Java 中的所有实例变量对象引用都是 null。

原文地址:https://www.cnblogs.com/coderD/p/13871293.html