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

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 比較難的java經典面試題及答案

比較難的java經典面試題及答案

更新時間:2020-02-17 10:39:24 來源:動力節點 瀏覽2229次


比較難的java經典面試題及答案


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


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


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


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


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


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


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


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


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


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


  4)Java是基于Hoare的監視器的思想(http://en.wikipedia.org/wiki/...。在Java中,所有對象都有一個監視器。


  線程在監視器上等待,為執行等待,我們需要2個參數:


  一個線程


  一個監視器(任何對象)


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


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


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


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


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


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


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


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


  為什么char數組比Java中的String更適合存儲密碼?


  另一個基于String的棘手Java問題,相信我只有很少的Java程序員可以正確回答這個問題。這是一個真正艱難的核心Java面試問題,并且需要對String的扎實知識才能回答這個問題。


  這是最近在Java面試中向我的一位朋友詢問的問題。他正在接受技術主管職位的面試,并且有超過6年的經驗。如果你還沒有遇到過這種情況,那么字符數組和字符串可以用來存儲文本數據,但是選擇一個而不是另一個很難。但正如我的朋友所說,任何與String相關的問題都必須對字符串的特殊屬性有一些線索,比如不變性,他用它來說服訪提問的人。在這里,我們將探討為什么你應該使用char[]存儲密碼而不是String的一些原因。


  字符串:1)由于字符串在Java中是不可變的,如果你將密碼存儲為純文本,它將在內存中可用,直到垃圾收集器清除它.并且為了可重用性,會存在String在字符串池中,它很可能會保留在內存中持續很長時間,從而構成安全威脅。


  由于任何有權訪問內存轉儲的人都可以以明文形式找到密碼,這是另一個原因,你應該始終使用加密密碼而不是純文本。由于字符串是不可變的,所以不能更改字符串的內容,因為任何更改都會產生新的字符串,而如果你使用char[],你就可以將所有元素設置為空白或零。因此,在字符數組中存儲密碼可以明顯降低竊取密碼的安全風險。


  2)Java本身建議使用JPasswordField的getPassword()方法,該方法返回一個char[]和不推薦使用的getTex()方法,該方法以明文形式返回密碼,由于安全原因。應遵循Java團隊的建議,堅持標準而不是反對它。


  3)使用String時,總是存在在日志文件或控制臺中打印純文本的風險,但如果使用Array,則不會打印數組的內容而是打印其內存位置。雖然不是一個真正的原因,但仍然有道理。


  StringstrPassword=“Unknown”;


  char[]charPassword=newchar[]{'U','n','k','w','o','n'};


  System.out.println(“字符密碼:”+strPassword);


  System.out.println(“字符密碼:”+charPassword);


  輸出


  字符串密碼:Unknown


  我還建議使用散列或加密的密碼而不是純文本,并在驗證完成后立即從內存中清除它。因此,在Java中,用字符數組用存儲密碼比字符串是更好的選擇。雖然僅使用char[]還不夠,還你需要擦除內容才能更安全。


比較難的java經典面試題及答案


      以上就是動力節點Java培訓機構小編介紹的“比較難的java經典面試題及答案”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。


相關推薦


最新最全java面試題及答案(初級到高級)


史上最全的中高級JAVA工程師面試題及答案匯總


Java高級開發工程師面試題


2019史上最全java面試題題庫大全800題


哪有資深java工程師面試題


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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 中文字幕在线综合 | 日韩欧美中文字幕在线播放 | 亚洲日本视频 | 99国产成人精品2021 | 欧美精品国产第一区二区 | 九九视频高清视频免费观看 | 青青爽国产手机在线观看免费 | 国外欧美一区另类中文字幕 | 欧美日韩免费看 | 精品久久久久久中文字幕专区 | 爱爱的免费视频 | 国内精品久久久久不卡 | 老子午夜精品我不卡影院 | 亚洲欧洲日本在线观看 | 性视频xxx | 国产专区日韩精品欧美色 | 有色视频在线观看免费高清 | 伊人黄色| 国产精品成人观看视频国产 | 欧美88| 天天操天天干天天透 | 伊人不卡久久大香线蕉综合影院 | 欧美在线观看高清一二三区 | 久久这里只有精品首页 | 欧美亚洲国产人成aaa | 天天影视欧美综合在线观看 | 91在线视屏| 国产娱乐凹凸视觉盛宴在线视频 | 毛片69| 色婷婷在线观看视频 | 国产高清自拍一区 | 国产日韩久久久久69影院 | 福利国产| 久久99精品这里精品3 | 岛国精品在线 | 香蕉视频在线观看男女 | 又爽又黄又无遮挡的视频在线观看 | 国产一区二区精品在线观看 | 亚洲第一视频在线播放 | 天天操伊人 | 亚洲精品欧美精品日韩精品 |