目录
1.Java语言有哪些优势 ?
2.什么是JVM,JRE,JDK ?
3.Java中常见的基本数据类型有哪些 ?
4.Java中的浮点数为什么不精确 ?
5. & 和 && 有什么区别呢 ?
7. 谈谈你对Arrays工具类的理解 ?
8. == 和 equals() 的区别 ?
9.hashCode() 或HashCode的作用是什么 ?
10. 为什么要有 hashCode() ? (以"HashSet如何检查重复"为例子来说明为什么要有hashCode)
11.为什么重写equals()时必须重写hahsCode()方法 ?
12. 什么是装箱和拆箱 ?
13. 基本类型的包装器类型有哪些 ?
14.包装类中的常量池技术有什么作用 ?
15. 什么是字符串常量池(String Pool) ?
16.Java是按值传递还是按引用传递 ?
17. 重载和重写的区别 ?
18. 什么是浅拷贝,什么是深拷贝 ?
19.成员变量与局部变量的区别有哪些 ?
20. 什么是构造方法 ?
21. 构造方法的作用是什么 ?
22.面向对象的三大特征是什么 ?
24.Java中如何实现多态 ?
25. String为什么是不可变的 ?
26.String与StringBuffer / StringBuilder有什么区别 ?
27. StringBuffer和StringBuilder有什么区别 ?
28.String,StringBuffer,StringBuilder如何选择使用 ?
29.String类中有哪些常见方法 ?
30. String中 intern() 方法的作用是什么 ?
31. final关键字的用法有哪些 ?
32. final,finally,finalize的区别 ?
33. 抽象类和接口有什么区别 ?
34.说说static关键字的主要使用场景有哪些 ?
35.静态方法与实例方法的区别有哪些 ?
36. 说说静态代码块static{} 与代码块{}的相同点和不同点 。
37.Object类中有哪些常见的方法 ?
38. Java中常见接口有哪些 ?
40. 你是如何理解Java中的异常体系的 ?
41.Error和Exception的区别是什么 ?
42. throw 和 throws的区别是什么 ?
43. 检查型异常和非检查型异常有什么区别 ?
44. 如果在try/catch中出现return,会执行finally中的语句吗 ?
45. Java中的常见异常有哪些 ?
47. 你对Java集合是怎么理解的:
48. List,Set,Map三者的特点是 ?
49. 如何更好的选择集合 ?
50. 如何对集合进行排序 ?
51. ArrayList和Vector区别 ?
52. ArrayList与LinkedList的区别 ?
53. List的遍历例方式该如何选择?
54. 谈谈ArrayList的扩容机制 。
55. CopyOnWriteArrayList是什么 ?
56.CopyOnWriteArrayList有啥缺点 ?
57.CopyOnWriteArrayList的实现原理是什么 ?
58. CopyOnWriteArrayList为什么并发安全且性能比Vector好 ?
59.HashSet,LinkedHashSet和TreeSet有那些区别 ?
60.HashSet是如何检查重复的 ?
1.Java语言有哪些优势 ?
1.面向对象(封装,继承,多态);
2.平台无关性(Java虚拟机实现了平台无关性) ;
3.可靠性;
4.安全性;
5.支持多线程;
6.支持网络编程;
7.执行方式采用了解释执行 + 编译执行并存的方式;
8.实践应用案例很丰富。
2.什么是JVM,JRE,JDK ?
JVM
JVM是Java虚拟机(Java Virtual Machine) 的缩写,用于运行Java字节码文件(*.class文件)。JVM针对不同的操作系统都有特性的实现(例如Windows,Linux,nacOC),目的是使用相同的字节码啊,在不同操作系统运行结果相同,是Java实现跨平台的核心机制。Java中默认虚拟机为HotSpot VM,除此之外还有JRockit(BEA),j9(IBM),TaoBaoVM(淘宝)等虚拟机;
JRE
JRE全称Java Runtime Environment(Java运行时环境)。JRE包括Java虚拟机和Java程序我所需要的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。
JDK
JDK是Java开发工具包(Java Development Kit)的缩写,是提供给Java开发人员使用的,JDK中包含JRE以及开发,调节和监视应用程序的工具,编译工具(javac.exe),打包工具(jar.exe),Java监控和管理平台(jConsole,jvisualvm)等,
JDK包含JRE,JRE包含JVM。 所以JDK > JRE > JVM。
3.Java中常见的基本数据类型有哪些 ?
Java中的基本数据类型共有8种,分别是:
数值类型:
整型:
1.byte 字节型,内存中占1个字节。
2.short 短整型,内存中占2个字节。
3.int 整型,内存中占4个字节。
4.long 长整型,内存中占8个字节。
浮点型:
5.float 单精度浮点型,内存中占4个字节。
6.double 双精度浮点型,内存中占8个字节。
非数值类型:
1.char 字符型,内存中占两个字节。
2.boolean 布尔型(在Java虚拟机里采用8位二进制数表示布尔值,00000001表示true,00000000表示false)。boolean类型被编译成int类型来使用,占4个byte。boolean数组被编译成byte数组,每个boolean数组成员占1个byte。
4.Java中的浮点数为什么不精确 ?
计算机使用二进制运算,程序中1的十进制数先转换成二进制,再进行运算。Float和Double的小数部分在转换成二进制时容易产生无线循环的情况,通常都是取无限接近于原值的近似值,所以导致出现精度丢失的情况。(在金融,建筑,工程,科学等领域,对计算数值的精度要求一般比较高,为了避免计算结果不精准,往往采用BigDecimal + 字符串来解决精度丢失的问题。)
例如:
BigDecimal d1 = new BigDecimal("0.1"); BigDecimal d2 = new BigDecimal("0.2"); BigDecimal d3 = d1.mutiply(d2); //计算0.1 × 0.2的精确值。 double result = d3.doubleValue(); //获取double类型的结果。
5. & 和 && 有什么区别呢 ?
"&按位与" 运算 当位运算符时,a & b时把a和b都转换成二进制数,然后再逐位进行"与运算",同时为1结果为1,否则为0;
int result; result = 9 & 8; //9 & 8 = 1001(9) & 1000(8) = 1000(8). System.out.println(result); //result = 8
"&不断路与"运算符 当逻辑运算符时,当执行"表达式1 & 表达式2"时,表达式1等于true或者false,都会继续执行表达式2,执行不会中断。
int i = 3; if(i++ > 5) & (i++ < 9){ System.out.println("if语句执行啦"); //该语句未执行 } System.out.println(i); //结果输出i = 5,说明执行了两个i++
"&&短路与"运算 当逻辑运算符,当执行"表达式1 && 表达式2"时,表达式1等于false,执行会中断,表达式2不会执行。
int i = 3; if((i++ > 5) && (i ++ < 9)) { System.out.println("if语句执行啦"); } System.out.println(i); //输出 i = 4