(不破不立)迎战秋招面试题第一天(基础篇)

91 阅读3分钟

(不破不立)迎战秋招面试题第一天(基础篇)

基础篇

1、java语言的特点?

  • 面向对象:封装、继承、多态
  • 跨平台:java虚拟机实现平台无关性
  • 核心类库:集合容器、县城相关类、IO/NIO、异常和安全办等类库

2、java的三大特征?

2.1、封装

    封装就是将类的成员属性声明为私有的,用get、set实现。同时提供公共的方法并提供对外访问的接口。
封装的好处
  1. 隐藏内部细节
    
  2. 限制不合理操作
    
  3. 增加代码的复用性
    
  4. 模块化(属性、方法、类)
    

2.2、继承

从已知的一个类中派生出一个类,叫子类。子类实现了父类所有非私有化属性和方法,并能根据自己的实际需求扩展出新的行为。
继承的好处
  1. 继承是传递的,容易在基础上构造,简历和扩充出新的类、
  2. 简化了人们对实物的认识和描述,能清晰体现相关之间的层次结构关系。
  3. 避免代码的冗余,减少代码的重复
  4. 打打增加了代码的可维护性

2.3、多态

 多态的概念:多个不同的对象同一消息做出响应,统一消息根据不同的对象而采用各种不同的行为方法。
多态的好处
  1. 主要是利于扩展
  2. 消除类型之间的耦合关系
  3. 可替换性
  4. 可扩充性
  5. 接口性
  6. 灵活性
  7. 简化性。

多态是多种形态,父类可以引用指向多个子类对象

多态就是同一个接口,使用不同的实例而执行不同操作。

关键词:instanceof:运算符判断是否属于哪一个类型,然后进行强制转换。

有三种类型

父类作为返回值类型,小转大。 父类作为参数 父类作为方法的返回值。

多态存在的三个必要条件:继承和重写。

3、java有哪些数据类型?

3.1、基本数据类型

  • 字符型:char
  • 布尔型:boolean
  • 数值型:
    • 整数类型:
      • byte(1字节,8位)
      • short(2字节,16位)
      • int(4字节,32位)
      • long(8字节,64位).
    • 浮点类型:
      • float(4字节,32位)
      • double(8字节,64位)

3.2、引用数据类型

  • 类:class
  • 接口:interface
  • 数组:[]

金融项目中常用的数值类型

BigDecimal
java.math的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。


4、包装类型的常量池技术了解么?

  • java基本类型的包装类的大部分都实现了常量池技术。
    • Byte,Short,Integer,Long 这四种包装类默认创建了数值[-128.127]的响应类型的缓存数据。
    • Cgaracter 创建了数值在[0,127]范围的缓存数据。
    • Boolean 直接返回 True of False。
    • 如果超出对应范围会去创建新的对象
  • 两种浮点数类型的包装类Float,Double并没有实现常量池技术。
  • 推:所有整型包装类对象之间的比较,全部使用equals()方法比较

5、什么是自动装箱与拆箱?原理是什么?

  • 拆箱:将基本类型用它们对应的引用类型包装起来;
  • 装箱:将包装类型转换为基本数据类型;
  • 从字节码中分析,装箱其实就是调用了包装类的valueOf()方法,拆箱其实就是调用了xxxValue()方法。
  • 注意:如果频繁拆装箱的话,也会严重影响系统的性能。我们应该尽量避免不必要的拆箱装箱操作。

PS:每日一看 image.png