Java-基础篇
1、怎样理解OOP面向对象⭐
三大特征
- 继承:子类可以从父类继承属性和方法,增强了代码的复用性。
- 封装:封装是将对象属性方法捆绑在一起,并对外界隐藏内部细节。只暴露必要的接口,保证了安全性。
- 多态:继承,重写,父类引用指向子类对象,可移植性,健壮性,灵活性
2、ArrayList 和 LinkedList区别 ⭐⭐
ArrayList和LinkedList都是List接口的实现类,但是底层实现不同,ArrayList采用的是数组的结构,而LinkedList采用的是双向链表.其次,他们的查询效率不同,
ArrayList查询效率是O(1),添加效率是O(n),而LinkedList是O(N),添加效率是O(1),所以ArrayList适合用于查询操作,而LinkedList适合增删。
3、高并发中的集合有哪些问题? 待定
4、Jdk1.8 新特性有哪些 ⭐⭐
- Lambda表达式:允许把
函数作为一个方法的参数进行传递 - Stream API:一种新的抽象层,专门用于简化集合对象的处理过程。
- 方法引用:是Lambda表达式的另一种简洁写法,可以直接引用已存在的方法或者构造器。
- 默认方法:支持在接口中定义默认方法和静态方法,默认方法可以被实现接口引用
5、抽象类和接口的区别⭐
| 抽象类 | 接口 |
|---|---|
| 可以定义构造方法 | 不可以定义构造方法 |
| 可以有抽象方法和具体方法 | 全部是抽象方法, JDK1.8以后添加了默认方法和静态方法 |
| private、默认、protected、public | 修饰全是public |
| 抽象方法类必须为抽象类 但是抽象类未必有抽象方法 | 接口中定义的成员变量实际上都是常量 |
| 一个类只能继承一个抽象类 | 一个类可以实现多个接口 |
6、HashCode 与equals 待定
7、equals 与 ==的区别⭐
- ==与equals都是来判断内容是否相等
- == 判断两个基本数据类型是相等,判断引用数据类型地址值是否相等
- equals判断是两个引用数据类型是否相等,如果类没有重写equals方法则跟== 一样,如果重写了往往是比较对象属性内容
8、Java代理的几种实现方式⭐
静态代理
- CGLib动态代理
- JDK动态代理
动态代理