
本文共 2178 字,大约阅读时间需要 7 分钟。
Java基础面试题总结
以下是Java基础面试题的总结,包含多篇通用问题的解答,供面试准备参考:
1. javac.exe 和 java.exe 的区别
-javac.exe 是用来编译Java源代码,生成.class文件的工具。-java.exe 是用来执行.class文件,运行Java程序的工具。
2. 关键字、保留字与标识符的区别
- 关键字:Java语言中赋予特殊含义的单词,例如 class、public、void 等。
- 保留字:Java语言中原本计划赋予特殊含义的单词,但尚未在语言规范中正式确定,例如.ArrayList、Generics 等。
- 标识符:自定义命名,用于命名类、方法、变量等,例如类名 Student,方法名 calculateTotal。
3. 变量开辟的三要素
- 数据类型:例如 int、String、List 等。
- 变量名称:需遵循命名规则,例如不能使用关键字。
- 初始化值:指定变量在定义时的初始值,例如 int age = 25。
- 作用域:变量在定义处开始生效,直到作用域结束(如封闭块)。
- 生命周期:从定义开始,直到毁标为止。
4. Java 数据类型分类
- 基本数据类型:byte、char、short、int、float、double、boolean。
- 引用数据类型:数组、类、接口、String。
- 类型转换:
- 自动类型转换:低级别到高级别,例如 int 到 double。
- 强制类型转换:高级别到低级别,需手动进行,可能丢失信息。
5. 运算符的特点
- & 和 && 的区别:& 是按位运算,双方都会进行评估;&& 是逻辑运算,双方中一旦有为 false,右侧不会评估。
- | 和 || 的区别:| 是按位或者运算,双方都会评估;|| 是逻辑或运算,左侧为 true 时,右侧不会评估。
6. 重载与重写的区别
- 重载:在同一个类中,调用同名方法,但参数列表不同。例如:
class Calculator { int add(int a, int b) { return a + b; } int add(int a, int b, int c) { return a + b + c; }}
- 重写:在父子类中,方法参数完全相同,但行为不同。例如:
class Parent { public void doSomething() {}}class Child extends Parent { @Override public void doSomething() { System.out.println("Child doSomething"); }}
7. Java 数组的表现形式
- 动态分配:
int[] array = new int[5];
- 静略初始化:
int[] array = {1, 2, 3};
- 封装分配:
int[] array = new int[]{1, 2, 3};
8. Java 内存结构
- 寄存器内存:用于存储当前线程的程序计数器和其他指令地址。
- 本地方法区:用于实现Java调用原生代码(如C语言)的接口。
- 方法区:存储类信息、常量、静态变量等,是非堆内存区域。
- 栈:存储局部变量、操作数栈、动态链接等,线程私有。
- 堆:存储对象实例,是垃圾回收的主要区域。
9. 寄存器内存的作用
寄存器内存是一块小型内存区域,主要存储程序计数器(Program Counter, PC)。PC 的作用是为字节码解释器指明当前执行的位置。例如,当遇到分支语句时,PC 会跳转到目标字节码的位置。PC 是线程私有,随着线程切换而切换,确保每个线程都能正确恢复执行。
10. 本地方法区的作用
本地方法区(Native Method)是Java用于调用非Java代码(如C语言)的接口。这些方法用 native 标识符标记,故称为本地方法。JVM 中的JPI (Java Native Interface) 提供了标准接口,保证Java和本地代码的兼容。
11. Java 虚拟机栈
虚拟机栈是线程私有的一块内存,用于存储线程执行过程中所需的变量、操作数和方法调用信息。每个方法调用都会创建一个栈帧,包含局部变量表、操作数栈、动态链接等。虚拟机栈的主要功能包括:
- 存储变量生命周期:与作用域范围一致。
- 方便方法调用:维护方法调用链。
- 支持异常处理:记录异常信息。
12. 方法区的作用
方法区(Static Method Area)是线程共享的一块内存,存储类信息、常量、静态关键字(如staticvariables)和编译时生成的代码。方法区的主要目标是为类加载机制和方法调用提供支持,虽然不直接参与垃圾回收,但在类卸载时会回收类信息。
13. Java 堆的特点
Java 堆是JVM 中最大的一块内存区域,主要用作存储对象实例。所有Java对象实例都会在堆内存中分配内存,堆内存是垃圾回收的主要目标区域。堆的特点如下:
-.thread共享:所有线程共享一块堆内存。
- 动态扩展:据需求自动扩展或收缩内存分配。
- 垃圾回收:通过复制算法、标记-清除算法等进行内存管理。
以上就是Java基础面试题的总结,涵盖了编译与运行环境、数据类型、内存管理等核心知识点。
发表评论
最新留言
关于作者
