今天记录一下今年一家深圳上市公司java开发工程师的面试题,也是比较经典的一些问题,希望能帮助到大家
学习目标:
2024年JAVA开发工程师面试题
学习内容:
1.常见的集合有哪些?
常见的集合有list,set,map,其中:
list集合常见的有:ArrayList和LinkedList和Vector,区别就是ArrayList的底部是数组,查询速度快,删除效率低,LinkedList的底部是双向链表,增删操作快,查询较慢。Vector:底层数据结构是数组,查询快,增删慢,线程安全,效率低,可以存储重复元素(其区别经常会问)
set集合常见的有HashSet
map集合常见的有haspmap与ConcurrHashmap,后者比前者具有线程安全性。
2.== 和 equals 的区别是什么?
== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;
而 equals 默认情况下是引用比较,只是很多类重新了 equals 方法,比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等。
3.HashMap 和 Hashtable 有什么区别?
hashTable同步的,而HashMap是非同步的,效率上比hashTable要高。
hashMap允许空键值,而hashTable不允许。
4.面对对象的特点
Java面向对象具有以下三个主要特征:
封装(Encapsulation)
封装是Java面向对象编程的基本特征之一。它将数据和相关的方法封装在一个对象中,并对外部提供公共接口来访问这些数据和方法。通过封装,对象的内部细节被隐藏起来,外部只能通过接口来与对象进行交互,而无需关心对象内部的实现细节。
封装的优势在于它提高了代码的可维护性和复用性。封装将数据和行为封装在一起,使得代码更加模块化和可组织。这种模块化的设计有助于代码的维护和调试,并且可以减少对其他代码的依赖性。此外,封装还可以保护数据的安全性,防止数据被意外修改或破坏。通过提供合适的访问控制,可以限制对数据的直接访问,从而确保数据的完整性和一致性。
继承(Inheritance)
继承是Java面向对象编程的另一个重要特征。继承允许创建一个新类,通过继承已有类的属性和方法,从而实现代