范文资料网>人事资料>招聘与面试>《java面试官常问的问题

java面试官常问的问题

时间:2022-04-05 14:26:34 招聘与面试 我要投稿
  • 相关推荐

java面试官常问的问题

http://cankao.gcw818.com中多线程同步是什么?

java面试官常问的问题

在多线程程序下,同步能控制对共享资源的访问。如果没有同步,当一个 Java 线程在修改一个共享变量时,另外一个线程正在使用或者更新同一个变量,这样容易导致程序出现错误的结果。 

2.Sleep ()、suspend ()和 wait ()之间有什么区别?

http://cankao.gcw818.com()使当前线程在指定的时间处于“非运行”(Not Runnable)状态。线程一直持有对象的监视器。比如一个线程当前在一个同步块或同步方法中,其它线程不能进入该块或方法中。如果另一线程调用了 interrupt ()方法,它将唤醒那个“睡眠的”线程。 

注意:sleep ()是一个静态方法。这意味着只对当前线程有效,一个常见的错误是调用http://cankao.gcw818.com(),(这里的t是一个不同于当前线程的线程)。即便是执行http://cankao.gcw818.com(),也是当前线程进入睡眠,而不是t线程。http://cankao.gcw818.com()是过时的方法,使用 suspend ()导致线程进入停滞状态,该线程会一直持有对象的监视器,suspend ()容易引起死锁问题。 

http://cankao.gcw818.com()使当前线程出于“不可运行”状态,和 sleep ()不同的是 wait 是 object 的方法而不是 thread。

Sleep() s调用 http://cankao.gcw818.com()时,线程先要获取这个对象的对象锁,当前线程必须在锁对象保持同步,把当前线程添加到等待队列中,随后另一线程可以同步同一个对象锁来调用 http://cankao.gcw818.com(),这样将唤醒原来等待中的线程,然后释放该锁。基本上 wait ()/notify ()与 sleep ()/interrupt ()类似,只是前者需要获取对象锁。

3. Java三大特性:多态 、继承和封装

http://cankao.gcw818.com和 == 的区别?

参考《Head First Java》

使用==来比较两个primitive主数据类型,或者判断两个引用是否引用同一个对象。

使用equals()来判断两个对象是否在意义上相等。(像是两个String对象是否带有相同的字节组合)

==:  如果涉及的是比较基本数据类型的话,==用来比较基本数据类型的值的大小(也就是其中的字节组合)

例:

inta = 3;byteb = 3;if (a== b) {//返回的是true}

如果涉及的是引用,那么==用来判断引用的是否是同一个对象:

例:

Car a =newCar();Car b=newCar();Car c = a;if (a== b) {//返回false}if (a == c) {//返回true}if (b == c) {//返回false}

5.代码块各自的锁

6.父类与子类里的构造方法

http://cankao.gcw818.com,map,list的区别与用法

8.同步在不同位置加同步标记(synchronized)有什么区别? 同步标记加到静态方法(静态方法同步)

9.设计模式,懒汉模式,工厂模式

10.堆和栈的比较

http://cankao.gcw818.com

11. arraylist 用数组来实现一个

1http://cankao.gcw818.com和linklist有什么区别

arraylist:

呈线性链状,结构类似数组。

如果只是修改删除头或者尾部的元素的话,使用arraylist比较好

linklist:

如果想要在链表中插入元素,使用linklist最合适。

13.for和foreach的区别

for: 

for each: 

14. 进程和线程的区别

15.线程和线程非安全的概念

16.volatile int a = 0; 内存同步

17.ArrayList,HashMap等集合框架类,重要基础类String的处理。HashMap的底层存储结构等。顺带考察:对接口,继承,重载重写的基本理解;以及异常处理的注意事项

18.多线程问题:

(1)线程安全问题。HashMap是否安全,为何不安全。ConcurrentHashMap,线程安全,为何安全。底层是如何实现的。

(2)http://cankao.gcw818.com下的常见类的使用,ThreadPool的深入考察;BlockingQueue的使用。(take,poll的区别,put,offer的区别);原子类的实现。

(3)各种常见锁的使用

(17,18均为某位大神罗列,我就偷个懒在这挪用一下,请见谅)

19.什么是死锁 

死锁就是两个或两个以上的线程被无限的阻塞,线程之间相互等待所需资源。这种情况可能发生在当两个线程尝试获取其它资源的锁,而每个线程又陷入无限等待其它资源锁的释放,除非一个用户进程被终止。就 JavaAPI 而言,线程死锁可能发生在一下情况。 

当两个线程相互调用 http://cankao.gcw818.com() 

当两个线程使用嵌套的同步块,一个线程占用了另外一个线程必需的锁,互相等待时被阻塞就有可能出现死锁。

20.什么是线程饿死,什么是活锁? 

http://cankao.gcw818.com是最基本的数据类型吗?

基本数据类型(primitive data type):

Byte(8bit),short(16bit),char(16bit),int(32bit),long(64bit),float(32bit),double(64bit),Boolean(true/false); 

String 不是基本数据类型,http://cankao.gcw818.com类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类

http://cankao.gcw818.com和StringBuilder的区别?

StringBuffer和StringBuilder有相似的功能,但是StringBuffer是synchronized(同步)。 (The StringBuffer class is similar to StringBuffer except that methods for modifying buffer in StringBuffer are synchronized. Use StringBuffer if it may be accessed by multiple tasks http://cankao.gcw818.com