Java笔试面试题汇总(6)

2019-08-30 12:59

线程不安全,效率高。

List有三个儿子,我们到底使用谁呢? 看需求(情况)。 要安全吗?

要:Vector(即使要安全,也不用这个了,后面有替代的) 不要:ArrayList或者LinkedList 查询多:ArrayList 增删多:LinkedList

如果你什么都不懂,就用ArrayList。

面试题:

Collection和Collections的区别?

Collection:是单列集合的顶层接口,有子接口List和Set。

Collections:是针对集合操作的工具类,有对集合进行排序和二分查找的方法

1.Hashtable和HashMap的区别?

Hashtable:线程安全,效率低。不允许null键和null值 HashMap:线程不安全,效率高。允许null键和null值

2.List,Set,Map等接口是否都继承子Map接口?

List,Set不是继承自Map接口,它们继承自Collection接口 Map接口本身就是一个顶层接口

编译时异常和运行时异常的区别

编译期异常:Java程序必须显示处理,否则程序就会发生错误,无法通过编译 运行期异常:无需显示处理,也可以和编译时异常一样处理

throws和throw的区别(面试题) throws

用在方法声明后面,跟的是异常类名 可以跟多个异常类名,用逗号隔开

表示抛出异常,由该方法的调用者来处理

throws表示出现异常的一种可能性,并不一定会发生这些异常 throw

用在方法体内,跟的是异常对象名 只能抛出一个异常对象名

表示抛出异常,由方法体内的语句处理

throw则是抛出了异常,执行throw则一定抛出了某种异常

finally关键字及其面试题

1:final,finally和finalize的区别

final:最终的意思,可以修饰类,成员变量,成员方法 修饰类,类不能被继承 修饰变量,变量是常量 修饰方法,方法不能被重写

finally:是异常处理的一部分,用于释放资源。

一般来说,代码肯定会执行,特殊情况:在执行到finally之前jvm退出了

finalize:是Object类的一个方法,用于垃圾回收

2:如果catch里面有return语句,请问finally里面的代码还会执行吗? 如果会,请问是在return前,还是return后。 会。前。

准确的说,应该是在中间。

3:try...catch...finally的格式变形 A:try...catch...finally B:try...catch

C:try...catch...catch...

D:try...catch...catch...finally E:try...finally

这种做法的目前是为了释放资源。

面试题:

public class FinallyDemo {

public static void main(String[] args) { System.out.println(getInt()); }

public static int getInt() { int a = 10; try {

System.out.println(a / 0); a = 20;

} catch (ArithmeticException e) { a = 30; return a; /*

* return a在程序执行到这一步的时候,这里不是return a而是return 30;这个返回路径就形成了。

* 但是呢,它发现后面还有finally,所以继续执行finally的内容,a=40

* 再次回到以前的返回路径,继续走return 30; */

} finally { a = 40;

//return a;//如果这样结果就是40了。 }

return a; } }

面试题:

什么时候序列化? 如何实现序列化? 什么是反序列化?

调用run()方法为什么是单线程的呢?

因为run()方法直接调用其实就相当于普通的方法调用,所以你看到的是单线程的效果

要想看到多线程的效果,就必须说说另一个方法:start() 面试题:run()和start()的区别?

run():仅仅是封装被线程执行的代码,直接调用是普通方法

start():首先启动了线程,然后再由jvm去调用该线程的run()方法。

多线程常见面试题:

1:多线程有几种实现方案,分别是哪几种? 两种。

继承Thread类 实现Runnable接口

扩展一种:实现Callable接口。这个得和线程池结合。

2:同步有几种方式,分别是什么? 两种。

同步代码块 同步方法

3:启动一个线程是run()还是start()?它们的区别? start();

run():封装了被线程执行的代码,直接调用仅仅是普通方法的调用 start():启动线程,并由JVM自动调用run()方法

4:sleep()和wait()方法的区别

sleep():必须指定时间;不释放锁。

wait():可以不指定时间,也可以指定时间;释放锁。

5:为什么wait(),notify(),notifyAll()等方法都定义在Object类中

因为这些方法的调用是依赖于锁对象的,而同步代码块的锁对象是任意锁。 而Object代表任意的对象,所以,定义在这里面。

6:线程的生命周期图

新建 -- 就绪 -- 运行 -- 死亡

新建 -- 就绪 -- 运行 -- 就绪 -- 运行 -- 死亡

新建 -- 就绪 -- 运行 -- 其他阻塞 -- 就绪 -- 运行 -- 死亡 新建 -- 就绪 -- 运行 -- 同步阻塞 -- 就绪 -- 运行 -- 死亡

新建 -- 就绪 -- 运行 -- 等待阻塞 -- 同步阻塞 -- 就绪 -- 运行 -- 死亡

面试题:单例模式的思想是什么?请写一个代码体现。

面试题:close()和flush()的区别?

A:close()关闭流对象,但是先刷新一次缓冲区。关闭之后,流对象不可以继续再使用了。

B:flush()仅仅刷新缓冲区,刷新之后,流对象还可以继续使用。


Java笔试面试题汇总(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:广东省关于〈幼儿园收费管理暂行办法〉的实施细则和《广东省关于

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: