文章目录
- 前言
- 一、Java基础题
-
- 1.什么是Java?
- 2.Jdk和Jre和JVM的区别?
- 3.Java语言有哪些特点?
- 4.Java有哪些数据类型?
- 5.switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String上?
- 6.用最有效率的方法计算 2 乘以 8
- 7.Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?
- 8.float f=3.4;是否正确?
- 9.short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?
- 10.Java语言采用何种编码方案?有何特点?
- 11.什么Java注释?
- 12.== 和 equals 的区别是什么?
- 13.两个对象的 hashCode() 相同,则 equals() 也一定为 true,对吗?
- 14.final 在 Java 中有什么作用?
- 15.Java 中的 Math. round(-1. 5) 等于多少?
- 16.String 属于基础的数据类型吗?
- 17.Java 中操作字符串都有哪些类?它们之间有什么区别?
- 18.String str="i"与 String str=new String(“i”)一样吗?
- 19. String 类的常用方法都有那些?
- 20. 抽象类必须要有抽象方法吗?
- 21. 普通类和抽象类有哪些区别?
- 22. 抽象类能使用 final 修饰吗?
- 23. 接口和抽象类有什么区别?
- 24. Java 中 IO 流分为几种?
- 25. Files 的常用方法都有哪些?
- 26. Java 容器都有哪些?
- 27. Collection 和 Collections 有什么区别?
- 28. HashMap 和 Hashtable 有什么区别?
- 29. 如何决定使用 HashMap 还是 TreeMap?
- 30. 说一下 HashMap 的实现原理?
- 二、设计模式
- 三、Java虚拟机(JVM)
前言
毕业季意味着即将找工作面试,以下是我整理的部分Java面试题目,以供面试者参考。
一、Java基础题
1.什么是Java?
答:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。
2.Jdk和Jre和JVM的区别?
答:Java官方的图片,Jdk中包括了Jre,Jre中包括了JVM
JDK :Jdk还包括了一些Jre之外的东西 ,就是这些东西帮我们编译Java代码的, 还有就是监控Jvm的一些工具 Java Development Kit是提供给Java开发人员使用的,其中包含了Java的开发工具,也
包括了JRE。所以安装了JDK,就无需再单独安装JRE了。其中的开发工具:编译工具(javac.exe),打包工具(jar.exe)等
JRE :Jre大部分都是 C 和 C++ 语言编写的,他是我们在编译java时所需要的基础的类库 JavaRuntime Environment包括Java虚拟机和Java程序所需的核心类库等。核心类库主要是java.lang包:包含了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线
程、异常处理类等,系统缺省加载这个包如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。
Jvm:在倒数第二层 由他可以在(最后一层的)各种平台上运行 Java Virtual Machine是Java虚拟机,Java程序需要运行在虚拟机上,不同的平台有自己的虚拟机,因此Java语言可以实现跨平台
3.Java语言有哪些特点?
答:简单易学(Java语言的语法与C语言和C++语言很接近)
面向对象(封装,继承,多态)
平台无关性(Java虚拟机实现平台无关性)
支持网络编程并且很方便(Java语言诞生本身就是为简化网络编程设计的)
支持多线程(多线程机制使应用程序在同一时间并行执行多项任)
健壮性(Java语言的强类型机制、异常处理、垃圾的自动收集等)
安全性好
4.Java有哪些数据类型?
答:定义:Java语言是强类型语言,对于每一种数据都定义了明确的具体的数据类型,在内存中分配了不同
大小的内存空间。
分类
基本数据类型
数值型
整数类型(byte,short,int,long)
浮点类型(float,double)
字符型(char)
布尔型(boolean)
引用数据类型
类(class)
接口(interface)
数组([])
5.switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String上?
答:在 Java 5 以前,switch(expr)中,expr 只能是 byte、short、char、int。从 Java5 开始,Java 中引入了枚举类型,expr 也可以是 enum 类型,从 Java 7 开始,expr 还可以是字符串(String),但是长整型(long)在目前所有的版本中都是不可以的
6.用最有效率的方法计算 2 乘以 8
答:2 << 3(左移 3 位相当于乘以 2 的 3 次方,右移 3 位相当于除以 2 的 3 次方)
7.Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?
答:Math.round(11.5)的返回值是 12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加 0.5 然后进行下取整
8.float f=3.4;是否正确?
答:不正确。3.4 是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成 floatf =3.4F。
9.short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?
答:对于 short s1 = 1; s1 = s1 + 1;由于 1 是 int 类型,因此 s1+1 运算结果也是 int型,需要强制转换类型才能赋值给 short 型。而 short s1 = 1; s1 += 1;可以正确编译,因为 s1+= 1;相当于 s1 = (short(s1 + 1);其中有隐含的强制类型转换
10.Java语言采用何种编码方案?有何特点?
答:Java语言采用Unicode编码标准,Unicode(标准码),它为每个字符制订了一个唯一的数值,因此在任何的语言,平台,程序都可以放心的
11.什么Java注释?
答:定义:用于解释说明程序的文字
分类
单行注释
格式: // 注释文字
多行注释
格式: /* 注释文字 /
文档注释
格式:/* 注释文字 */
作用
在程序中,尤其是复杂的程序中,适当地加入注释可以增加程序的可读性,有利于程序的修改、调试和交流。注释的内容在程序编译的时候会被忽视,不会产生目标代码,注释的部分不会对程序的执行结果产生任何影响。
注意事项:多行和文档注释都不能嵌套
12.== 和 equals 的区别是什么?
答:== 对于基本类型和引用类型 == 的作用效果是不同的,如下所示:
基本类型:比较的是值是否相同;
引用类型:比较的是引用是否相同;
代码示例:
String x = “string”;
String y = “string”;
String z = new String(“string”);
System.out.println(xy); // true
System.out.println(xz); // false
System.out.println(x.equals(y)); // true
System.out.println(x.equals(z)); // true
equals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals 方法,把它变成了值比较。看下面的代码就明白了。
首先来看默认情况下 equals 比较一个有相同值的对象,代码如下:
class Cat {
public Cat(String name) {
this.name = name;
}
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Cat c1 = new Cat(“王磊”);
Cat c2 = new Cat(“王磊”);
System.out.println(c1.equals(c2)); // false
== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;而 equals 默认情况下是引用比较,只是很多类重