Java面试小册(1)

发布于:2025-09-13 ⋅ 阅读:(15) ⋅ 点赞:(0)

1

【Q】:序列化和反序列化

【A】:

  1. 序列化是将Java对象转化为字节流,用于网络传输,持久化或缓存。Java提供了java.io.Serializable接口实现序列化。
  2. 反序列化是将字节流转为为对象。

2

【Q】: Java中Exception和Error有什么区别?

【A】:

  1. 都是Throwable类的子类,在java中只有集成了Throwable类的实例才可以被throwcatch
  2. Exception是程序可以处理的异常情况,分为编译时异常(在编译时必须显示处理,使用try-catche或throws声音异常抛出)和运行时异常(集成RuntimeException)。
  3. Error是严重的错误,通常为JVM层次系统级的,无法预料的错误。如内存耗尽或栈溢出。

3

【Q】:Java的优势是什么?

【A】:

  1. 跨平台:java中加了一层中间件JVM,可以做到一次编译多次运行。首先Java源代码编译成字节码,字节码再由JVM解释或JIT编译执行,业务JIT编译需要预热,所有还提供了AIT,将字节码转为机器码。
  2. 垃圾回收:在内存充裕的情况下将内存管理交给GC来做。减轻编程效率。
  3. 生态:网上各种资料多。
  4. 面向对象:有明确 清晰的类,对象,继承,接口等概念,支持封装,继承,多态等OOP特性。

4

【Q】:什么是java的多态?

【A】:

  1. 多态是指同一个接口或父类引用的变量可以指向不同的对象实例。它允许同一方法在不同对象上表现出不一样的行为。
  2. 通过多态可以减低代码耦合度,增加系统可扩展性。

5

【Q】:java中的参数传递是按值还是引用?

【A】:

  1. Java中,参数传递只有按值传递,不论是基本还是引用类型。
  2. 基础数据类型:传递的是值的副本,即基础类型的数值本身。
  3. 引用数据类型:传递的是引用的副本,即对象引用的内存地址。

6

【Q】:面向对象和面向过程的区别是什么?

【A】:

  1. 面向对象是把类或对象本身作为基本单元来组织代码。
  2. 面向过程是把函数作为作为基本单元。

7

【Q】:Java中方法重载和方法重写的区别?

【A】:

  1. 方法重载:一个类中运行用有多个同名方法,只要它们的参数列表不一样。
  2. 方法重写:子类在集成父类时,可以重写父类的某个方法(参数列表,方法名都必须一样)。

8

【Q】:什么是Java的内部类?

【A】:

  1. 是指在一个类的内部定义的类,Java支持多种类型的内部类,包括成员内部类、局部内部类、匿名内部类、静态内部类。内部类可以访问外部类的成员变量和方法,包括私有的成员。

9

【Q】:String、StringBuffer、StringBuilder的区别?

【A】:

  1. String:是不可变的类,一旦被创建无法修改,每次对String进行操作都会创建新的String对象。使用于少量字符串操作。
  2. StringBuffer:是可变的,可以进行字符串的追加,删除,插入等。其是线程安全的,内部使用synchronized关键字保证多线程下的安全性。适用多线程环境的频繁字符串修改。
  3. StringBuilder:是可变的。不保证线程安全,但性能更高。使用于单线程环境中的高性能字符串处理。

10

【Q】:StringBuilder是怎么实现的?

【A】:

  1. 主要是为了解决String对象的不可变性问题,提供高效动态的字符串拼接和修改操作。
  2. 大概核心实现如下:内部使用字符数组来存储字符序列;提供append、insert等操作直接修改内部的字符数组;每次进行字符操作时,如果内存不足,它会通过扩展数组容量(一般为2倍),减少扩展次数,提高性能。