JAVA面试题
Posted y-u-p
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA面试题相关的知识,希望对你有一定的参考价值。
1.JDK.JRE.JVM的区别?
JDK:是三者之中范围最大的,JDK包含JRE与JVM。JDK主要包括java运行环境,java开发工具包,java基础类(API)库。JDK是整个java开发的核心,其中的java开发工具包是java开发中必不可少的,能够将源代码编译成.class文件交给JRE运行。
JRE:具体在java的运行环境。包括两个部分,JVM标准实现和java的一写基本类库。能够运行javac编译后的.class
文件。
JVM:即java虚拟机,识别.class文件并将其中的字节码文件进行执行。当然JVM执行.class文件时还需要调用jre下的lib类库。
2.java中常见的排序有哪些?具体代码实现
1.冒泡排序
// 冒泡排序
public static int[] bubbleSort(int[] arr){
for (int i = 0;i < arr.length - 1;i++){
for (int j = 0;j < arr.length -1 - i;j++){
if (arr[j] < arr[j + 1]){
int temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
2.选择排序
// 选择排序
public static int[] choice(int[] arr){
int min = 0;
for (int i = 0;i < arr.length - 1;i++){
min = i;
for (int j = i + 1;j < arr.length;j++) {
if (arr[min] > arr[j]) {
min = j;
}
}
if (min != i){
int temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
}
return arr;
}
3.java的基本数据类型有哪些?各占几个字节?
数据类型 | 字节 | 位数 |
---|---|---|
byte | 1 | 8 |
short | 2 | 16 |
char | 2 | 16 |
float | 4 | 32 |
int | 4 | 32 |
long | 8 | 64 |
double | 8 | 64 |
boolean | 1 | 8 |
4.方法的重载与方法的重写的区别?
方法重写是子类继承父类,对父类的方法进行重新实现,即有相同的方法签名(方法名,参数类型,参数数量,返回值类型)。
方法重载是在相同了类中,多个方法的方法名相同,参数列表不同(参数类型,参数数量)。
相同点:方法名都是相同的
不同点:重写发生在不同的类中,重载发生在同一个类中
5.public,protected,default,private的区别?
public:拥有最大权限,其成员属性,成员方法,函数对所有用户都是开放的,都可以被访问,被调用。
protected:对于同一包下的类和不同包下的子类都是开放的,相当于public,对不同包下的其他类是不可见的。
default:对于同一包下的所有类都是可见的,对不同包下的类是不可见的。
private:仅限于类内部使用。
本类 | 本包 | 子类 | 外包 | |
---|---|---|---|---|
public | Y | Y | Y | Y |
protected | Y | Y | Y | N |
default | Y | Y | N | N |
private | Y | N | N | N |
6.Http的异常状态码有哪些?各代表什么?
400:客户端异常,前台参数与后台参数不一致
404:请求资源未找到,css,js,image,后台方法映射地址等
405:请求方式不匹配
500:服务端内部错误,service层方法或业务逻辑代码错误
503:应用,服务提供方,service,业务重启,代码修改等
7.JDBC的具体实现步骤?
public class Demo02 {
public static void main(String[] args) throws Exception {
// 加载驱动
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
// 获取连接
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/note","root","root");
// 创建处理块
Statement statement = connection.createStatement();
// 设置sql语句
String sql = "select uname from tb_user";
// 执行处理块
ResultSet resultSet = statement.executeQuery(sql);
// 处理结果集
while (resultSet.next()){
String uname = resultSet.getString(1);
String uname1 = resultSet.getString("uname");
System.out.println(uname);
System.out.println(uname1);
}
// 关闭资源 先开后关
resultSet.close();
statement.close();
connection.close();
}
}
8.抽象类和接口的区别?
1.抽象类和接口都不能被实例化
2.一个类只能继承一个抽象类,但可以实现多个接口
3.抽象类和接口子类必须实现全部方法,如果子类没有全部实现,那么其子类也必定是一个抽象类
4.接口中的方法都是抽象方法,而抽象类中可以有抽象方法,也可以有非抽象方法
5.接口只能进行方法声明,而抽象类既可以声明也可以实现
6.接口没有构造方法,抽象类可以用构造方法
以上是关于JAVA面试题的主要内容,如果未能解决你的问题,请参考以下文章
经验总结:Java高级工程师面试题-字节跳动,成功跳槽阿里!