Java面试题十道
第一章节:Java基础
1.是什么是解释性语言?什么是编译性语言
解释型语言
不需要编译过程,由解释器逐行阅读并执行。
编译性语言
编写完代码后,由编译器进行整体翻译为机器能理解的二进制。然后生成可执行的文件,再执行。
2.Java特点?
1. 跨平台(JVM是跨平台的根本)
2. 面向对象(低耦合,高内聚)
3. 支持多线程
3.简述一下JDK,JRE
JDK(Java Development Kit)
JDK 是 Java 开发工具包,包含了完整的Java编译器(javac),Java虚拟机(JVM),包括各种开发调试的工具。
JRE(Java Runtime Environment)
JRE 是 提供了 Java 运行环境,包含了JVM和核心类库。可以让用户在不安装JDK的情况下运行Java程序。
4.Java基本类型有哪些,包装类,默认值,以及他们的字节?
基本类型 | 包装类 | 字节 | 默认值 |
---|---|---|---|
byte | Intger | 1 | (byte)0 |
short | Short | 2 | (short)0 |
int | Integer | 4 | 0 |
long | Long | 8 | 0L |
float | Float | 4 | 0.0f |
double | Double | 8 | 0.0d |
boolean | Boolean | - | false |
char | Character | 2 | null |
5.什么是JVM?
Java平台的核心组件之一,它是一个执行Java程序的虚拟计算机。JVM充当了Java程序与底层操作系统之间的中间层,提供了跨平台和安全性的特性
6.标识符命名规则?
含义:
指在程序中,类名,方法名,变量名等都是标识符
规则:
可以包含英文字母,0-9数字,$以及 _ 下划线。不能以数字开头,不能是关键字
规范:
类名大驼峰,变量名小驼峰
7.equals与==的区别?
==:
比较的是变量(栈)在内存中存放的对象(堆)的内存地址,判断两个对象是否相等,是否是同一对象。
(比较两者必须是同一类型,如果比较的是阿拉伯数字,值相等则为true)
equals:
比较两个对象内容是否相等,由于所有类都是继承于java.long.Object类,所以适用于所有对象。
8.面向对象和面向过程的区别?
1.解决问题方式不同
面向过程:以步骤为核心,通过一系列步骤解决问题,将问题分解成一系列函数或过程,每个函数执行特定的任务。
面向对象:以对象为核心,通过相互协作的对象解决问题,将问题分解为一系列对象,每个对象具有数据和方法,可以相互调用
2.封装性不同
面向过程:注重编程结构和数据组织,通过数据和函数处理,将细节暴露给外部。
面向对象:强调数据和操作绑定,将数据和相关方法封装在对象内部,提供接口给外部使用,隐藏内部细节。
3.可维护性不同
面向过程:程序结构相对简单,随着问题复杂度增加,代码冗长难以维护
面向对象:将数据和方法封装为对象,提供了更好的代码组织和管理机制,维护性强。
9.什么是数组?声明数组几种方式
数组是一种存储相同数据类型的元素集合,它可以按照一定的顺序排列,通过索引访问和操作其中元素。Java中是一种固定长度的对象。
创建方式:
1.静态初始化
int[] numbers = {1, 2, 3, 4, 5}; // 声明并初始化一个整型数组 String[] names = {"Alice", "Bob", "Charlie"}; // 声明并初始化一个字符串数组
2.动态初始化
int[] numbers = new int[5]; // 声明并创建一个包含5个整型元素的数组 String[] names = new String[3]; // 声明并创建一个包含3个字符串元素的数组
3.使用Array类的静态方法进行初始化
int[] numbers = new int[] {1, 2, 3, 4, 5}; // 声明并初始化一个整型数组 String[] names = new String[] {"Alice", "Bob", "Charlie"}; // 声明并初始化一个字符串数组
10.简述一下冒泡排序的工作机制
冒泡排序是一种简单的排序算法,它重复地比较相邻的两个元素,交换他们的位置,直到整个数组以特定的方式排列。
1.从数组的第一个元素开始,与其相邻的元素进行比较,如果顺序不正确,则交换他们的位置。
2.继续比较下一组元素,直到数组末尾。
3.重复上述步骤,直到按照特定的顺序完毕。