Skip to content

Java-基础篇

1、怎样理解OOP面向对象⭐

三大特征

  1. 继承:子类可以从父类继承属性和方法,增强了代码的复用性。
  2. 封装:封装是将对象属性方法捆绑在一起,并对外界隐藏内部细节。只暴露必要的接口,保证了安全性。
  3. 多态:继承,重写,父类引用指向子类对象,可移植性,健壮性,灵活性

2、ArrayList 和 LinkedList区别 ⭐⭐

  1. ArrayListLinkedList都是List接口的实现类,但是底层实现不同,ArrayList采用的是数组的结构,而LinkedList采用的是双向链表.

  2. 其次,他们的查询效率不同,ArrayList查询效率是O(1),添加效率是O(n),而LinkedListO(N),添加效率是O(1),所以ArrayList适合用于查询操作,而LinkedList适合增删。

3、高并发中的集合有哪些问题? 待定

4、Jdk1.8 新特性有哪些 ⭐⭐

  1. Lambda表达式:允许把函数作为一个方法的参数进行传递
  2. Stream API:一种新的抽象层,专门用于简化集合对象的处理过程。
  3. 方法引用:是Lambda表达式的另一种简洁写法,可以直接引用已存在的方法或者构造器。
  4. 默认方法:支持在接口中定义默认方法和静态方法,默认方法可以被实现接口引用

5、抽象类和接口的区别⭐

抽象类接口
可以定义构造方法不可以定义构造方法
可以有抽象方法和具体方法全部是抽象方法,
JDK1.8以后添加了默认方法和静态方法
private、默认、protected、public修饰全是public
抽象方法类必须为抽象类
但是抽象类未必有抽象方法
接口中定义的成员变量实际上都是常量
一个类只能继承一个抽象类一个类可以实现多个接口

6、HashCode 与equals 待定

7、equals 与 ==的区别⭐

  1. ==与equals都是来判断内容是否相等
  2. == 判断两个基本数据类型是相等,判断引用数据类型地址值是否相等
  3. equals判断是两个引用数据类型是否相等,如果类没有重写equals方法则跟== 一样,如果重写了往往是比较对象属性内容

8、Java代理的几种实现方式⭐

静态代理

  1. CGLib动态代理
  2. JDK动态代理

动态代理

根据 MIT 许可发布。