Skip to content

可选标题:面了一个应届生,我问了这些 Java 基础问题。

Java 中有哪 8 种基本数据类型?它们的默认值和占用的空间大小知道不? 说说这 8 种基本数据类型对应的包装类型。

💡 提示:Java 中有 8 种基本数据类型,分别为:

  1. 6 种数字类型 :byteshortintlongfloatdouble
  2. 1 种字符类型:char
  3. 1 种布尔型:boolean

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

💡 提示:Java 基本类型的包装类的大部分(Byte,Short,Integer,Long ,Character,Boolean)都实现了常量池技术。

🌈 拓展:整型包装类对象之间值的比较应该使用 equals 方法

为什么要有包装类型?

💡 提示: 基本类型有默认值、泛型参数不能是基本类型

什么是自动拆装箱?原理?

💡 提示:基本类型和包装类型之间的互转。装箱其实就是调用了 包装类的valueOf()方法,拆箱其实就是调用了 xxxValue()方法。

遇到过自动拆箱引发的 NPE 问题吗?

💡 提示:两个常见的场景:

  • 数据库的查询结果可能是 null,因为自动拆箱,用基本数据类型接收有 NPE 风险
  • 三目运算符使用不当会导致诡异的 NPE 异常

**String****StringBuffer** **StringBuilder** 的区别是什么? **String** 为什么是不可变的?

💡 提示:可以从可变性、线程安全性、性能这几个角度来回答。

重载和重写的区别?

💡 提示:可以从下面几个角度来回答:

  • 发生范围
  • 参数列表
  • 返回值类型
  • 异常
  • 访问修饰符
  • 发生阶段

**==** **equals()** 的区别

💡 提示:**==** 对于基本类型和引用类型的作用效果是不同的,**equals()** 不能用于判断基本数据类型的变量,只能用来判断两个对象是否相等。equals() 方法存在两种使用情况:

  • 类没有重写 **equals()**方法 :通过equals()比较该类的两个对象时,等价于通过“==”比较这两个对象,使用的默认是 Objectequals()方法。
  • 类重写了 **equals()**方法 :一般我们都重写 equals()方法来比较两个对象中的属性是否相等;若它们的属性相等,则返回 true(即,认为这两个对象相等)。

Java 反射?反射有什么优点/缺点?你是怎么理解反射的(为什么框架需要反射)?

💡 提示: 想想你平时使用框架为啥能够如此方便。想想动态代理以及注解和反射之间的关系。

谈谈对 Java 注解的理解,解决了什么问题?

💡 提示: 想想你平时使用框架为啥能够如此方便。另外,需要注意注解的解析依赖于反射机制,务必要提前把反射机制搞懂。

Java 泛型了解么?泛型的作用?什么是类型擦除?泛型有哪些限制?介绍一下常用的通配符?

💡 提示:

  • 好处:编译期间的类型检测(安全)、可读性更好
  • Java 的泛型是伪泛型

内部类了解吗?匿名内部类了解吗?

内部类分为下面 4 种:

  • 成员内部类
  • 静态内部类
  • 局部(方法)内部类
  • 匿名内部类

BIO,NIO,AIO 有什么区别?

IO 模型这块挺难理解的,需要很多计算机底层知识。建议小伙伴们克服困难,一定要把这个点搞明白。

文章来源于自己总结和网络转载,内容如有任何问题,请大佬斧正!联系我