Java面试知识库
Java基础
Java是个面向对象的语言,如何理解面向对象呢?
- 面向对象的三大基本特征:
继承、封装、多态
-
继承
:子类继承父类,父类的属性和方法继承到子类。 -
封装
:将现实世界的事物抽象为一个Java类,该类封装了事物的属性、方法。 -
多态
:子类继承父类,可以通过重写(overwrite)
父类方法,实现一个方法具有不同的实现。
-
- 面向对象的五大基本原则:
单一职责原则、开放封闭原则、里氏替换原则、依赖倒置原则、接口隔离原则
-
单一职责原则
:一个类只负责一件事。提高代码可维护性。 -
开放封闭原则
:对扩展开放,对修改封闭。提高代码可扩展性。 -
里氏替换原则
:子类必须能够替换其基类。提高代码灵活性。 -
依赖倒置原则
:方法依赖于抽象接口,而不是具体的实现。降低系统的耦合。 -
接口隔离原则
:将一个复杂臃肿的接口拆分为更小、更专注的接口。提高代码的灵活性和稳定性。
-
Java的继承
- Java只允许多实现,不允许多继承
- 多继承在C++中存在
菱形继承
的问题,Java为了避免该类问题,不允许多继承。 - Java允许多实现,为了避免
菱形继承
的问题,实现的接口如果方法存在重复,就必须重写(overwrite)
重复的方法。 - Java的接口和抽象类的区别
- Java8中接口有default方法,其余只能为抽象方法,没有实现代码。而抽象类可以有实现代码。
- 接口不可以有构造器,抽象类可以有。
- 接口被实现,抽象类被继承。
- 接口只能使用
public
修饰符。
Java的基本类型与包装类型
- 基本类型:
byte、short、int、long、char、float、double、boolean
- 包装类型:
Byte、Short、Integer、Long、Character、Float、Double、Boolean
- 包装类型存在的意义:Java是面向对象的语言,很多地方需要使用包装类型而不是基本类型。
- 基本类型默认值为:
0、false、\u0000
,包装类型默认值为:null
- Java为了便于开放人员,提供了
自动装箱
、自动拆箱
的功能-
自动装箱
:自动将基本类型转换对应包装类型。通过包装类型的valueOf()
方法 -
自动拆箱
:自动将包装类型转换对应基本类型。通过包装类型的xxxValue()
方法
-
Java用什么适合存储金额的类型
Java中,float
和double
都是浮点数,浮点数在计算机中都是近似值,因此使用这两个类型存储金额的话,容易产生计算错误
的问题。
因此,Java中提供了BigDecimal
进行精确运算。文章来源:https://www.toymoban.com/news/detail-840786.html
-
BigDecimal
中的等值比较应使用compareTo
,而不是equals
方法。因为equals
比较value(值)和scale(标度)
,0.1与0.10的value是一样的,而scale的值是不一样的。 -
BigDecimal
需要准确的运算,那么BigDecimal(double)
和BigDecimal(String)
对比,BigDecimal(String)
的值是准确的,而BigDecimal(double)
由于double是近似值,因此值是不准确的。
String、StringBuilder、StringBuffer
- 可变性:String不可变、StringBuilder/StringBffer是可变的。
- 线程安全:StringBuffer、String是线程安全,StringBuilder非线程安全。
Java的动态代理
- 动态代理:在运行时动态地创建代理对象,并处理代理方法调用的机制。
- 动态代理用途:各种框架中,在运行期生成代理类,如过滤器、拦截器等。
- Java中的动态代理:Spring AOP的动态代理有两种方式:
JDK动态代理
和Cglib动态代理
-
JDK动态代理
:通过反射接收被代理的类。(要求必须要实现一个接口) -
Cglib动态代理
:第三方类库,通过继承的方式做动态代理。
-
什么是AIO、BIO、NIO
-
AIO
:Asynchronous I/O
异步非阻塞I/O模型,操作后会回调通知调用方。 -
BIO
:Blocking I/O
同步阻塞I/O模型,一直阻塞,直到处理完成。 -
NIO
:Non-Blocking I/O
同步非阻塞I/O模型,不阻塞,进行其他操作,定时轮询检查。
Java集合
未完待续。。。
实时更新:https://labi-xiaoxin.github.io/labi-xiaoxin/#/docs/Java-Interview文章来源地址https://www.toymoban.com/news/detail-840786.html
到了这里,关于Java面试知识库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!