2017 版
融创软通 IT 学院
教育培训事业部
2017 年 9 月
Java 开发经典面试题宝典
各位同学:本文件因时间仓促,里面问题挺
多的,后期继续完善的,请大家谅解。
融创软通 IT 学院
1 / 182
Java 面试宝典 2017 版
1. Java 基础部分....................................................................................................................... 9
1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? ...... 9
2、Java 有没有 goto? ....................................................................................................... 9
3、说说&和&&的区别。 ............................................................................................. 10
4、在 JAVA 中如何跳出当前的多重嵌套循环? ........................................................ 10
5、switch 语句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上? 11
6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? ..................... 11
7、char 型变量中能不能存贮一个中文汉字?为什么? ................................................ 11
8、用最有效率的方法算出 2 乘以 8 等於几? ............................................................. 12
9、请设计一个一百亿的计算器 ................................................................................... 12
10、使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
......................................................................................................................................... 14
11、"=="和 equals 方法究竟有什么区别? ................................................................. 14
12、静态变量和实例变量的区别? ............................................................................. 15
13、是否可以从一个 static 方法内部发出对非 static 方法的调用? ........................ 16
14、Integer 与 int 的区别 .............................................................................................. 16
15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? ................................... 17
16、下面的代码有什么不妥之处? ............................................................................... 17
17、请说出作用域 public,private,protected,以及不写时的区别 ........................ 17
18、Overload 和 Override 的区别。Overloaded 的方法是否可以改变返回值的类型?
......................................................................................................................................... 18
19、构造器 Constructor 是否可被 override? ................................................................ 19
20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继
承具体类(concrete class)? 抽象类中是否可以有静态的 main 方法? ...................... 19
21、写 clone()方法时,通常都有一行代码,是什么? ............................................. 20
22、面向对象的特征有哪些方面 ................................................................................. 20
23、java 中实现多态的机制是什么? ......................................................................... 22
24、abstract class 和 interface 有什么区别? ................................................................. 22
融创软通 IT 学院
2 / 182
25、abstract 的 method 是否可同时是 static,是否可同时是 native,是否可同时是
synchronized? .................................................................................................................. 24
26、什么是内部类?Static Nested Class 和 Inner Class 的不同。 ........................... 25
27、内部类可以引用它的包含类的成员吗?有没有什么限制? ............................. 27
28、Anonymous Inner Class (匿名内部类) 是否可以 extends(继承)其它类,是否可
以 implements(实现)interface(接口)? ............................................................................ 28
29、super.getClass()方法调用 .......................................................................... 28
30、String 是最基本的数据类型吗? ............................................................................ 29
31、String s = "Hello";s = s + " world!";这两行代码执行后,原始的 String 对象中的
内容到底变了没有? ..................................................................................................... 29
32、是否可以继承 String 类? ....................................................................................... 31
33、String s = new String("xyz");创建了几个 String Object? 二者之间有什么区别?
......................................................................................................................................... 31
34、String 和 StringBuffer 的区别 ............................................................................... 31
35、如何把一段逗号分割的字符串转换成一个数组? ............................................... 32
36、数组有没有 length()这个方法? String 有没有 length()这个方法? .................... 32
37、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d"; .................. 32
38、try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会不
会被执行,什么时候被执行,在 return 前还是后? .................................................... 33
39、下面的程序代码输出的结果是多少? ................................................................. 34
40、final, finally, finalize 的区别。 .............................................................................. 37
41、运行时异常与一般异常有何异同? ..................................................................... 37
42、error 和 exception 有什么区别? ............................................................................. 37
43、Java 中的异常处理机制的简单原理和应用。 ..................................................... 38
44、请写出你最常见到的 5 个 runtime exception。 ................................................... 38
45、JAVA 语言如何进行异常处理,关键字:throws,throw,try,catch,finally 分别代表
什么意义?在 try 块中可以抛出异常吗? .................................................................. 39
46、java 中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和
suspend()方法为何不推荐使用? ................................................................................. 39
47、sleep() 和 wait() 有什么区别? ............................................................................. 41
融创软通 IT 学院
3 / 182
48、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 ................. 44
49. 下面两个方法同步吗?(自己发明) .................................................................. 44
50、多线程有几种实现方法?同步有几种实现方法? ................................................. 45
51、启动一个线程是用 run()还是 start()? . .................................................................. 45
52、当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此
对象的其它方法? ........................................................................................................... 46
53、线程的基本概念、线程的基本状态以及状态之间的关系 ................................. 46
54、简述 synchronized 和 java.util.concurrent.locks.Lock 的异同 ? ........................ 47
55、设计 4 个线程,其中两个线程每次对 j 增加 1,另外两个线程对 j 每次减少 1。
写出程序。 ..................................................................................................................... 49
56、子线程循环 10 次,接着主线程循环 100,接着又回到子线程循环 10 次,接着
再回到主线程又循环 100,如此循环 50 次,请写出程序。 .................................... 52
57、介绍 Collection 框架的结构 .................................................................................. 60
58、Collection 框架中实现比较要实现什么接口 ....................................................... 60
59、ArrayList 和 Vector 的区别 .................................................................................... 60
60、HashMap 和 Hashtable 的区别 .............................................................................. 61
61、List 和 Map 区别? ............................................................................................... 62
62、List, Set, Map 是否继承自 Collection 接口? ......................................................... 62
63、List、Map、Set 三个接口,存取元素时,各有什么特点? ............................. 62
64、说出 ArrayList,Vector, LinkedList 的存储性能和特性 ......................................... 64
65、去掉一个 Vector 集合中重复的元素 .................................................................... 64
66、Collection 和 Collections 的区别。 ..................................................................... 64
67、Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是
equals()? 它们有何区别? .............................................................................................. 65
68、你所知道的集合类都有哪些?主要方法? ......................................................... 65
69、两个对象值相同(x.equals(y) == true),但却可有不同的 hash code,这句话对不
对? ................................................................................................................................... 66
70、TreeSet 里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用
的是父类的 compareTo 方法,还是使用的子类的 compareTo 方法,还是抛异常!
......................................................................................................................................... 66
融创软通 IT 学院
4 / 182
71、说出一些常用的类,包,接口,请各举 5 个 ..................................................... 68
72、java 中有几种类型的流?JDK 为每种类型的流提供了一些抽象类以供继承,请
说出他们分别是哪些类? ............................................................................................. 68
73、字节流与字符流的区别 ......................................................................................... 69
74、什么是 java 序列化,如何实现 java 序列化?或者请解释 Serializable 接口的作
用。 ................................................................................................................................. 71
75、描述一下 JVM 加载 class 文件的原理机制? ....................................................... 71
76、heap 和 stack 有什么区别。 .................................................................................. 72
77、GC 是什么? 为什么要有 GC? .............................................................................. 72
78、垃圾回收的优点和原理。并考虑 2 种回收机制。 ............................................. 72
79、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法
主动通知虚拟机进行垃圾回收? ................................................................................. 73
80、什么时候用 assert。 ............................................................................................... 73
81、java 中会存在内存泄漏吗,请简单描述。 ......................................................... 74
82、能不能自己写个类,也叫 java.lang.String? ....................................................... 79
83. Java 代码查错................................................................................................................... 80
二. 算法与编程 ...................................................................................................................... 85
1、编写一个程序,将 a.txt 文件中的单词与 b.txt 文件中的单词交替合并到 c.txt 文
件中,a.txt 文件中的单词用回车符分隔,b.txt 文件中用回车或空格进行分隔。 . 85
2、编写一个程序,将 d:\java 目录下的所有.java 文件复制到 d:\jad 目录下,并将原
来文件的扩展名从.java 改为.jad。 .............................................................................. 87
3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取
的字符串,但要保证汉字不被截取半个,如“我 ABC”, 4,应该截取“我 AB”,
输入“我 ABC 汉 DEF”, 6,应该输出“我 ABC”,而不是“我 ABC+汉的半个”。
......................................................................................................................................... 90
4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各
个字符的个数。 ............................................................................................................. 91
5、说明生活中遇到的二叉树,用 java 实现二叉树 .................................................. 93
6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次
数,并按重复次数排序: ........................................................................................... 100
评论0