面试题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)的主要原则是:
- 抽象
- 封装
- 继承
- 多态性
2.面向对象编程语言和基于对象的编程语言有什么区别?
面向对象编程语言如 Java 和 C ++遵循 OOPS 的概念,如封装,抽象,多态和 继承等。 基于对象的编程语言遵循一些特性 OOPS,但他们不提供对多态性和继承的支持。蛋。JavaScript,VBScript 等 基于对象的编程语言为对象提供支持,您可以从构造函数构建对象。他们的语 言也支持封装。这些也被称为原型导向语言。
3.在 Java 中,在对象中定义为实例变量的对象引用的默认值是什么?
Java 中的所有实例变量对象引用都是 null。