大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 2020年比較難的Java軟件開發(fā)面試題

2020年比較難的Java軟件開發(fā)面試題

更新時間:2020-08-10 16:11:48 來源:動力節(jié)點 瀏覽2137次

1.為什么等待和通知是在Object類而不是Thread中聲明的?

一個棘手的Java問題,如果Java編程語言不是你設計的,你怎么能回答這個問題呢。Java編程的常識和深入了解有助于回答這種棘手的Java核心方面的面試問題。

為什么wait,notify和notifyAll是在Object類中定義的而不是在Thread類中定義

這是有名的Java面試問題,招2~4年經(jīng)驗的到高級Java開發(fā)人員面試都可能碰到。

這個問題的好在它能反映了面試者對等待通知機制的了解,以及他對此主題的理解是否明確。就像為什么Java中不支持多繼承或者為什么String在Java中是final的問題一樣,這個問題也可能有多個答案。

為什么在Object類中定義wait和notify方法,每個人都能說出一些理由。從我的面試經(jīng)驗來看,wait和nofity仍然是大多數(shù)Java程序員最困惑的,特別是2到3年的開發(fā)人員,如果他們要求使用wait和notify,他們會很困惑。因此,如果你去參加Java面試,請確保對wait和notify機制有充分的了解,并且可以輕松地使用wait來編寫代碼,并通過生產(chǎn)者-消費者問題或?qū)崿F(xiàn)阻塞隊列等了解通知的機制。

為什么等待和通知需要從同步塊或方法中調(diào)用,以及Java中的wait,sleep和yield方法之間的差異,如果你還沒有讀過,你會覺得有趣。為何wait,notify和notifyAll屬于Object類?為什么它們不應該在Thread類中?以下是我認為有意義的一些想法:

1)wait和notify不僅僅是普通方法或同步工具,更重要的是它們是Java中兩個線程之間的通信機制。對語言設計者而言,如果不能通過Java關鍵字(例如synchronized)實現(xiàn)通信此機制,同時又要確保這個機制對每個對象可用,那么Object類則是的正確聲明位置。記住同步和等待通知是兩個不同的領域,不要把它們看成是相同的或相關的。同步是提供互斥并確保Java類的線程安全,而wait和notify是兩個線程之間的通信機制。

2)每個對象都可上鎖,這是在Object類而不是Thread類中聲明wait和notify的另一個原因。

3)在Java中為了進入代碼的臨界區(qū),線程需要鎖定并等待鎖定,他們不知道哪些線程持有鎖,而只是知道鎖被某個線程持有,并且他們應該等待取得鎖,而不是去了解哪個線程在同步塊內(nèi),并請求它們釋放鎖定。

4)Java是基于Hoare的監(jiān)視器的思想。在Java中,所有對象都有一個監(jiān)視器。

線程在監(jiān)視器上等待,為執(zhí)行等待,我們需要2個參數(shù):

一個線程

一個監(jiān)視器(任何對象)

在Java設計中,線程不能被指定,它總是運行當前代碼的線程。但是,我們可以指定監(jiān)視器(這是我們稱之為等待的對象)。這是一個很好的設計,因為如果我們可以讓任何其他線程在所需的監(jiān)視器上等待,這將導致“入侵”,導致在設計并發(fā)程序時會遇到困難。請記住,在Java中,所有在另一個線程的執(zhí)行中侵入的操作都被棄用了(例如stop方法)。

2.為什么Java不支持運算符重載?

另一個類似棘手的Java問題。為什么C++支持運算符重載而Java不支持?有人可能會說+運算符在Java中已被重載用于字符串連接,不要被這些論據(jù)所欺騙。

與C++不同,Java不支持運算符重載。Java不能為程序員提供自由的標準算術運算符重載,例如+,-,*和/等。如果你以前用過C++,那么Java與C++相比少了很多功能,例如Java不支持多重繼承,Java中沒有指針,Java中沒有引用傳遞。另一個類似的問題是關于Java通過引用傳遞,這主要表現(xiàn)為Java是通過值還是引用傳參。雖然我不知道背后的真正原因,但我認為以下說法有些道理,為什么Java不支持運算符重載。

1)簡單性和清晰性。清晰性是Java設計者的目標之一。設計者不是只想復制語言,而是希望擁有一種清晰,真正面向?qū)ο蟮恼Z言。添加運算符重載比沒有它肯定會使設計更復雜,并且它可能導致更復雜的編譯器,或減慢JVM,因為它需要做額外的工作來識別運算符的實際含義,并減少優(yōu)化的機會,以保證Java中運算符的行為。

2)避免編程錯誤。Java不允許用戶定義的運算符重載,因為如果允許程序員進行運算符重載,將為同一運算符賦予多種含義,這將使任何開發(fā)人員的學習曲線變得陡峭,事情變得更加混亂。據(jù)觀察,當語言支持運算符重載時,編程錯誤會增加,從而增加了開發(fā)和交付時間。由于Java和JVM已經(jīng)承擔了大多數(shù)開發(fā)人員的責任,如在通過提供垃圾收集器進行內(nèi)存管理時,因為這個功能增加污染代碼的機會,成為編程錯誤之源,因此沒有多大意義。

3)JVM復雜性。從JVM的角度來看,支持運算符重載使問題變得更加困難。通過更直觀,更干凈的方式使用方法重載也能實現(xiàn)同樣的事情,因此不支持Java中的運算符重載是有意義的。與相對簡單的JVM相比,復雜的JVM可能導致JVM更慢,并為保證在Java中運算符行為的確定性從而減少了優(yōu)化代碼的機會。

4)讓開發(fā)工具處理更容易。這是在Java中不支持運算符重載的另一個好處。省略運算符重載使語言更容易處理,這反過來又更容易開發(fā)處理語言的工具,例如IDE或重構工具。Java中的重構工具遠勝于C++。

3.如何使用雙重檢查鎖定在Java中創(chuàng)建線程安全的單例?

艱難的核心Java面試問題.這個Java問題也常被問:什么是線程安全的單例,你怎么創(chuàng)建它。好吧,在Java 5之前的版本,使用雙重檢查鎖定創(chuàng)建單例Singleton時,如果多個線程試圖同時創(chuàng)建Singleton實例,則可能有多個Singleton實例被創(chuàng)建。從Java 5開始,使用Enum創(chuàng)建線程安全的Singleton很容易。但如果面試官堅持雙重檢查鎖定,那么你必須為他們編寫代碼。記得使用volatile變量。

4.為什么枚舉單例在Java中更好

枚舉單例是使用一個實例在Java中實現(xiàn)單例模式的新方法。雖然Java中的單例模式存在很長時間,但枚舉單例是相對較新的概念,在引入Enum作為關鍵字和功能之后,從Java5開始在實踐中。本文與之前關于Singleton的內(nèi)容有些相關,其中討論了有關Singleton模式的面試中的常見問題,以及10個Java枚舉示例,其中我們看到了如何通用枚舉可以。這篇文章是關于為什么我們應該使用Eeame作為Java中的單例,它比傳統(tǒng)的單例方法相比有什么好處等等。

5.Java枚舉和單例模式

Java中的枚舉單例模式是使用枚舉在Java中實現(xiàn)單例模式。單例模式在Java中早有應用,但使用枚舉類型創(chuàng)建單例模式時間卻不長.如果感興趣,你可以了解下構建者設計模式和裝飾器設計模式。

1)枚舉單例易于書寫

這是迄今為止最大的優(yōu)勢,如果你在Java 5之前一直在編寫單例,你知道,即使雙檢查鎖定,你仍可以有多個實例。雖然這個問題通過Java內(nèi)存模型的改進已經(jīng)解決了,從Java 5開始的volatile類型變量提供了保證,但是對于許多初學者來說,編寫起來仍然很棘手。與同步雙檢查鎖定相比,枚舉單例實在是太簡單了。如果你不相信,那就比較一下下面的傳統(tǒng)雙檢查鎖定單例和枚舉單例的代碼

java軟件開發(fā)面試題

以上就是動力節(jié)點java培訓機構的小編針對“2020年比較難的Java軟件開發(fā)面試題”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 欧美亚洲精品一区 | 国产亚洲日本人在线观看 | 60欧美老妇做爰视频 | 久久伊人亚洲 | 久久riav国产精品 | aⅴ一区二区三区 | www成人免费视频 | 青草视频.com | 日韩一区二区中文字幕 | 久久思 | 久久亚洲精中文字幕冲田杏梨 | 欧美成人免费tv在线播放 | 四虎国产视频 | 亚洲成在人线影视天堂网 | 日韩在线免费视频 | 国产影片中文字幕 | 动漫精品欧美一区二区三区 | 91精品国产91久久久久青草 | 亚洲成人精品久久 | 伊人久久综合影院 | 女人18毛片一级毛片在线 | 久久综合精品不卡一区二区 | 日韩午夜在线视频不卡片 | 国内偷自视频区视频综合 | 久久99国产亚洲精品观看 | 乱色美www女麻豆 | 最近手机中文字幕1页 | 日本不卡一区二区三区 | 国产一级特黄生活片 | 毛片不卡一区二区三区 | 天天摸日日摸 | 精品毛片视频 | 国产资源站 | 日韩精品欧美成人 | 风流一代在线播放 | 亚欧毛片基地国产毛片基地 | 久草青草 | 亚洲国产一区二区三区 | 国产精品亚洲专区在线播放 | 麻豆精品视频 在线视频 | 欧洲自拍偷拍 |