核心 Java MCQs

2025 年 1 月 7 日 | 阅读 3 分钟

1. 下列哪项是标记接口?

  1. Serializable
  2. Cloneable
  3. Remote
  4. 以上全部。
 

答案:d)

解释: Java 中的标记接口是空的接口,用于向 JVM 或其他代码发出信号,表明实现类的对象应被区别对待。示例包括 Serializable、Cloneable 和 Remote。


2. 以下代码的输出是什么?

  1. 10 20
  2. 20 10
  3. 10 10
  4. 20 20
 

答案:b)

解释: 该代码使用 XOR 交换算法,该算法无需临时变量即可交换 x 和 y 的值。执行后,x 变为 20,y 变为 10。


3. 关于 final 关键字,下列哪项是正确的?

  1. 它可以与类、方法和变量一起使用。
  2. 它可以与构造函数一起使用。
  3. 它不能与方法一起使用。
  4. 它与 finally 关键字相同。
 

答案:a)

解释: Java 中的 final 关键字可用于声明常量(变量)、防止方法重写(方法)和防止继承(类)。它不能与构造函数一起使用,并且与异常处理中使用的 finally 关键字不同。


4. Java 中 transient 关键字的目的是什么?

  1. 指示变量不是序列化过程的一部分。
  2. 指示变量是易失的。
  3. 使变量同步。
  4. 使变量成为 final。
 

答案:a)

解释: Java 中的 transient 关键字用于标记不应序列化的成员变量。序列化对象时,会忽略 transient 变量,并且不会保存它们的值。


5. 下列哪种方法用于让一个线程等待另一个线程完成?

  1. wait()
  2. sleep()
  3. join()
  4. notify()
 

答案:c)

解释: Java 中的 join() 方法允许一个线程等待直到另一个线程完成其执行。


6. 关于 Java 内存模型,下列哪项陈述是正确的?

  1. Stack 内存用于存储对象。
  2. Heap 内存用于存储原始数据类型和方法帧。
  3. Stack 内存用于存储方法帧和局部变量。
  4. Heap 内存用于存储方法帧和局部变量。
 

答案:C)

解释: 在 Java 中,Stack 内存存储方法帧和局部变量,而 Heap 内存用于存储对象及其实例变量。


7. 下列代码的输出将是什么?

  1. 30
  2. 31
  3. 32
  4. 编译错误
 

答案:B)

解释: 表达式的计算如下:x++ 使用 x 的当前值(10),然后将 x 增至 11,而 ++y 将 y 增至 21,然后使用该值。因此,10 + 21 = 31。


8. 下列哪项允许线程传达它已准备好但必须等待处理器可用?

  1. yield()
  2. sleep()
  3. wait()
  4. notify()
 

答案:A)

解释: yield() 方法会导致当前正在执行的线程暂停,并允许具有相同优先级的其他线程执行。它向调度程序发出信号,表明线程已准备好运行,但必须等待处理器时间。


9. 在 Java 中,下列哪种类型的异常必须被捕获或在方法签名中声明抛出?

  1. RuntimeException
  2. Error
  3. CheckedException
  4. 以上全部。
 

答案:C)

解释: Checked 异常必须被捕获或在方法签名中声明。示例包括 IOException 和 SQLException。运行时异常和错误不需要被捕获或声明。


10. 下列代码的输出将是什么?

  1. false true
  2. true false
  3. true true
  4. false false
 

答案:A)

解释: s1 == s2 返回 false,因为它们是内存中不同的对象。s1.equals(s2) 返回 true,因为 equals 方法比较字符串的内容。