亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

范文資料網(wǎng)>人事資料>招聘與面試>《java面試官常問(wèn)的問(wèn)題

java面試官常問(wèn)的問(wèn)題

時(shí)間:2022-04-05 14:26:34 招聘與面試 我要投稿
  • 相關(guān)推薦

java面試官常問(wèn)的問(wèn)題

http://emrowgh.com中多線程同步是什么?

java面試官常問(wèn)的問(wèn)題

在多線程程序下,同步能控制對(duì)共享資源的訪問(wèn)。如果沒(méi)有同步,當(dāng)一個(gè) Java 線程在修改一個(gè)共享變量時(shí),另外一個(gè)線程正在使用或者更新同一個(gè)變量,這樣容易導(dǎo)致程序出現(xiàn)錯(cuò)誤的結(jié)果。 

2.Sleep ()、suspend ()和 wait ()之間有什么區(qū)別?

http://emrowgh.com()使當(dāng)前線程在指定的時(shí)間處于“非運(yùn)行”(Not Runnable)狀態(tài)。線程一直持有對(duì)象的監(jiān)視器。比如一個(gè)線程當(dāng)前在一個(gè)同步塊或同步方法中,其它線程不能進(jìn)入該塊或方法中。如果另一線程調(diào)用了 interrupt ()方法,它將喚醒那個(gè)“睡眠的”線程。 

注意:sleep ()是一個(gè)靜態(tài)方法。這意味著只對(duì)當(dāng)前線程有效,一個(gè)常見(jiàn)的錯(cuò)誤是調(diào)用http://emrowgh.com(),(這里的t是一個(gè)不同于當(dāng)前線程的線程)。即便是執(zhí)行http://emrowgh.com(),也是當(dāng)前線程進(jìn)入睡眠,而不是t線程。http://emrowgh.com()是過(guò)時(shí)的方法,使用 suspend ()導(dǎo)致線程進(jìn)入停滯狀態(tài),該線程會(huì)一直持有對(duì)象的監(jiān)視器,suspend ()容易引起死鎖問(wèn)題。 

http://emrowgh.com()使當(dāng)前線程出于“不可運(yùn)行”狀態(tài),和 sleep ()不同的是 wait 是 object 的方法而不是 thread。

Sleep() s調(diào)用 http://emrowgh.com()時(shí),線程先要獲取這個(gè)對(duì)象的對(duì)象鎖,當(dāng)前線程必須在鎖對(duì)象保持同步,把當(dāng)前線程添加到等待隊(duì)列中,隨后另一線程可以同步同一個(gè)對(duì)象鎖來(lái)調(diào)用 http://emrowgh.com(),這樣將喚醒原來(lái)等待中的線程,然后釋放該鎖;旧 wait ()/notify ()與 sleep ()/interrupt ()類(lèi)似,只是前者需要獲取對(duì)象鎖。

3. Java三大特性:多態(tài) 、繼承和封裝

http://emrowgh.com和 == 的區(qū)別?

參考《Head First Java》

使用==來(lái)比較兩個(gè)primitive主數(shù)據(jù)類(lèi)型,或者判斷兩個(gè)引用是否引用同一個(gè)對(duì)象。

使用equals()來(lái)判斷兩個(gè)對(duì)象是否在意義上相等。(像是兩個(gè)String對(duì)象是否帶有相同的字節(jié)組合)

==:  如果涉及的是比較基本數(shù)據(jù)類(lèi)型的話,==用來(lái)比較基本數(shù)據(jù)類(lèi)型的值的大小(也就是其中的字節(jié)組合)

例:

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

如果涉及的是引用,那么==用來(lái)判斷引用的是否是同一個(gè)對(duì)象:

例:

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

5.代碼塊各自的鎖

6.父類(lèi)與子類(lèi)里的構(gòu)造方法

http://emrowgh.com,map,list的區(qū)別與用法

8.同步在不同位置加同步標(biāo)記(synchronized)有什么區(qū)別? 同步標(biāo)記加到靜態(tài)方法(靜態(tài)方法同步)

9.設(shè)計(jì)模式,懶漢模式,工廠模式

10.堆和棧的比較

http://emrowgh.com

11. arraylist 用數(shù)組來(lái)實(shí)現(xiàn)一個(gè)

1http://emrowgh.com和linklist有什么區(qū)別

arraylist:

呈線性鏈狀,結(jié)構(gòu)類(lèi)似數(shù)組。

如果只是修改刪除頭或者尾部的元素的話,使用arraylist比較好

linklist:

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

13.for和foreach的區(qū)別

for: 

for each: 

14. 進(jìn)程和線程的區(qū)別

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

16.volatile int a = 0; 內(nèi)存同步

17.ArrayList,HashMap等集合框架類(lèi),重要基礎(chǔ)類(lèi)String的處理。HashMap的底層存儲(chǔ)結(jié)構(gòu)等。順帶考察:對(duì)接口,繼承,重載重寫(xiě)的基本理解;以及異常處理的注意事項(xiàng)

18.多線程問(wèn)題:

(1)線程安全問(wèn)題。HashMap是否安全,為何不安全。ConcurrentHashMap,線程安全,為何安全。底層是如何實(shí)現(xiàn)的。

(2)http://emrowgh.com下的常見(jiàn)類(lèi)的使用,ThreadPool的深入考察;BlockingQueue的使用。(take,poll的區(qū)別,put,offer的區(qū)別);原子類(lèi)的實(shí)現(xiàn)。

(3)各種常見(jiàn)鎖的使用

(17,18均為某位大神羅列,我就偷個(gè)懶在這挪用一下,請(qǐng)見(jiàn)諒)

19.什么是死鎖 

死鎖就是兩個(gè)或兩個(gè)以上的線程被無(wú)限的阻塞,線程之間相互等待所需資源。這種情況可能發(fā)生在當(dāng)兩個(gè)線程嘗試獲取其它資源的鎖,而每個(gè)線程又陷入無(wú)限等待其它資源鎖的釋放,除非一個(gè)用戶進(jìn)程被終止。就 JavaAPI 而言,線程死鎖可能發(fā)生在一下情況。 

當(dāng)兩個(gè)線程相互調(diào)用 http://emrowgh.com() 

當(dāng)兩個(gè)線程使用嵌套的同步塊,一個(gè)線程占用了另外一個(gè)線程必需的鎖,互相等待時(shí)被阻塞就有可能出現(xiàn)死鎖。

20.什么是線程餓死,什么是活鎖? 

http://emrowgh.com是最基本的數(shù)據(jù)類(lèi)型嗎?

基本數(shù)據(jù)類(lèi)型(primitive data type):

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

String 不是基本數(shù)據(jù)類(lèi)型,http://emrowgh.com類(lèi)是final類(lèi)型的,因此不可以繼承這個(gè)類(lèi)、不能修改這個(gè)類(lèi)。為了提高效率節(jié)省空間,我們應(yīng)該用StringBuffer類(lèi)

http://emrowgh.com和StringBuilder的區(qū)別?

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://emrowgh.com