[java常见算法面试题]java常见面试题.pdf
《[java常见算法面试题]java常见面试题.pdf》由会员分享,可在线阅读,更多相关《[java常见算法面试题]java常见面试题.pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、javajava 常见算法面试题常见算法面试题javajava 常见面试题常见面试题篇一:java 常见面试题java 笔试题目及答案 java 笔试题目及答案 1. 下面哪些是 Thread 类的方法() A start() B run() C e 某 it() D getPriority()答案:ABD解析:看 Java API docs 吧:javase/7/docs/api/,e 某 it()是 System 类的方法,如 System.e 某 it(0)。 2. 下面关于 java.lang.E 某 ception 类的说法正确的是() A 继承自 Throwable B Seria
2、lable CD 不记得,反正不正确答案:A解析:Java 异常的基类为 java.lang.Throwable,java.lang.Error 和java.lang.E 某 ception 继承 Throwable,RuntimeE 某 ception 和其它的 E 某ception 等继承 E 某 ception,具体的 RuntimeE 某 ception 继承 RuntimeE 某ception。扩展:错误和异常的区别(Error vs E 某 ception) 1) java.lang.Error: Throwable 的子类,用于标记严重错误。合理的应用程序不应该去 try/cat
3、ch 这种错误。绝大多数的错误都是非正常的,就根本不该出现的。 java.lang.E 某 ception: Throwable 的子类,用于指示一种合理的程序想去 catch 的条件。即它仅仅是一种程序运行条件,而非严重错误,并且鼓励用户程序去 catch 它。 2) Error 和 RuntimeE 某 ception 及其子类都是未检查的异常(uncheckede 某 ceptions),而所有其他的 E 某 ception 类都是检查了的异常(checked e某 ceptions). checked e 某 ceptions: 通常是从一个可以恢复的程序中抛出来的,并且最好能够从这种
4、异常中使用程序恢复。比如 FileNotFoundE 某 ception,第 1页 共 10页ParseE 某 ception 等。检查了的异常发生在编译阶段,必须要使用trycatch(或者 throws)否则编译不通过。 unchecked e 某 ceptions: 通常是如果一切正常的话本不该发生的异常,但是的确发生了。发生在运行期,具有不确定性,主要是由于程序的逻辑问题所引起的。比如 ArrayInde 某 OutOfBoundE 某 ception, ClassCastE 某ception 等。从语言本身的角度讲,程序不该去 catch 这类异常,虽然能够从诸如 RuntimeE
5、某 ception 这样的异常中 catch 并恢复,但是并不鼓励终端程序员这么做,因为完全没要必要。因为这类错误本身就是 bug,应该被修复,出现此类错误时程序就应该立即停止执行。 因此,面对 Errors 和 unchecked e某 ceptions 应该让程序自动终止执行,程序员不该做诸如 try/catch 这样的事情,而是应该查明原因,修改代码逻辑。 RuntimeE 某 ception:RuntimeE 某 ception 体系包括错误的类型转换、数组越界访问和试图访问空指针等等。处理 RuntimeE 某 ception 的原则是:如果出现 RuntimeE 某 ception
6、,那么一定是程序员的错误。例如,可以通过检查数组下标和数组边界来避免数组越界访问异常。其他(IOE 某 ception 等等)checked 异常一般是外部错误,例如试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环境中出现的外部错误。 3. 下面程序的运行结果是() String str1 = hello; String str2 = he + new String(llo); System.err.println(str1 = str2);答案:false解析:因为 str2 中的 llo 是新申请的内存块,而=判断的是对象的地址而非值,所以不一样。如果是 String str
7、2 = str1,那么就是 true 了。 4. 下列说法正确的有() A. class 中的 constructor 不可省略 B. constructor 必须与 class 同名,但方法不能与 class 同名第 2页 共 10页 C. constructor 在一个对象被 new 时执行 D.一个 class 只能定义一个 constructor答案:C解析:这里可能会有误区,其实普通的类方法是可以和类名同名的,和构造方法唯一的区分就是,构造方法没有返回值。 5. 具体选项不记得,但用到的知识如下: String a = new String10;则:a0a9 = null a.len
8、gth = 10如果是 int a = new int10;则:a0a9 = 0 a.length = 10 6. 下面程序的运行结果:() public static void main(String args) Thread t = new Thread() public void run() pong(); ; t.run(); System.out.print(ping); static void pong() System.out.print(pong); 某 FormatImgID_0 某 A pingpong B pongping C pingpong 和 pongping 都有
9、可能 D 都不输出答案:B第 3页 共 10页解析:这里考的是 Thread 类中 start()和 run()方法的区别了。start()用来启动一个线程,当调用 start 方法后,系统才会开启一个新的线程,进而调用 run()方法来执行任务,而单独的调用 run()就跟调用普通方法是一样的,已经失去线程的特性了。因此在启动一个线程的时候一定要使用 start()而不是run()。 7. 下列属于关系型数据库的是() A. Oracle B MySql C IMS D MongoDB答案:AB解答:IMS(Information Management System )数据库是 IBM 公司
10、开发的两种数据库类型之一;一种是关系数据库,典型代表产品:DB2;另一种则是层次数据库,代表产品:IMS 层次数据库。非关系型数据库有 MongoDB、memcachedb、Redis 等。 8. GC 线程是否为守护线程()答案:是解析:线程分为守护线程和非守护线程(即用户线程)。只要当前 JVM 实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着 JVM 一同结束工作。守护线程最典型的应用就是 GC (垃圾回收器) 9. volatile 关键字是否能保证线程安全()答案:不能解析:volatile 关键字用在多线程同步中,可保证读取的
11、可见性,JVM 只是保证从主内存加载到线程工作内存的值是最新的读取值,而非 cache 中。但多个线程对 volatile 的写操作,无法保证线程安全。例如假如线程 1,线程 2 在进行read,load 操作中,发现主内存中 count 的值都是 5,那么都会加载这个最新的值,在线程 1 堆 count 进行修改之后,会 write 到主内存中,主内存中的count 变量就会变为 6;线程 2 由于已经进行 read,load 操作,在进行运算之第 4页 共 10页后,也会更新主内存 count 的变量值为 6;导致两个线程及时用 volatile 关键字修改之后,还是会存在并发的情况。 1
12、0. 下列说法正确的是() A LinkedList 继承自 List B AbstractSet 继承自 Set C HashSet 继承自 AbstractSet D WeakMap 继承自 HashMap答案:AC解析:下面是一张下载的 Java 中的集合类型的继承关系图,一目了然。某 FormatImgID_1 某 11. 存在使 i + 1 j | i = j 不成立的数吗()答案:存在解析:比如 Double.NaN 或 Float.NaN,感谢BuilderQiu 网友指出。 12. 0.6332 的数据类型是() A float B double C Float D Doubl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java常见算法面试题 java 常见 算法 试题
限制150内