成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

前百度面試官整理的——Java后端面試題(三)

mumumu / 1454人閱讀

摘要:但在的過程中過程中有可能被其他對(duì)象調(diào)用它的產(chǎn)生異常,如果你的程序不捕獲這個(gè)異常,線程就會(huì)異常終止,進(jìn)入狀態(tài),如果你的程序捕獲了這個(gè)異常,那么程序就會(huì)繼續(xù)執(zhí)行語句塊可能還有語句塊以及以后的代碼。

LinkedHashMap 的應(yīng)用

基于 LinkedHashMap 的訪問順序的特點(diǎn),可構(gòu)造一個(gè) LRU(Least Recently Used) 最近最少使用簡(jiǎn)單緩存。 也有一些開源的緩存產(chǎn)品如 ehcache 的淘汰策略( LRU )就是在 LinkedHashMap 上擴(kuò)展的。

Cloneable 接口實(shí)現(xiàn)原理

Cloneable接口是Java開發(fā)中常用的一個(gè)接口, 它的作用是使一個(gè)類的實(shí)例能夠?qū)⒆陨砜截惖搅硪粋€(gè)新的實(shí)例中, 注意,這里所說的“拷貝”拷的是對(duì)象實(shí)例,而不是類的定義,進(jìn)一步說,拷貝的是一個(gè)類的實(shí)例中各字段的值。

在開發(fā)過程中,拷貝實(shí)例是常見的一種操作,如果一個(gè)類中的字段較多,而我們又采用在客戶端中逐字段復(fù)制的方 法進(jìn)行拷貝操作的話,將不可避免的造成客戶端代碼繁雜冗長(zhǎng),而且也無法對(duì)類中的私有成員進(jìn)行復(fù)制,而如果讓需要 具備拷貝功能的類實(shí)現(xiàn)Cloneable接口,并重寫clone()方法,就可以通過調(diào)用clone()方法的方式簡(jiǎn)潔地實(shí)現(xiàn)實(shí)例 拷貝功能
深拷貝(深復(fù)制)和淺拷貝(淺復(fù)制)是兩個(gè)比較通用的概念,尤其在C++語言中,若不弄懂,則會(huì)在delete的時(shí)候出問題,但是我們?cè)谶@幸好用的是Java。雖然Java自動(dòng)管理對(duì)象的回收,但對(duì)于深拷貝(深復(fù)制)和淺拷貝(淺復(fù)制),我們 還是要給予足夠的重視,因?yàn)橛袝r(shí)這兩個(gè)概念往往會(huì)給我們帶來不小的困惑。

淺拷貝是指拷貝對(duì)象時(shí)僅僅拷貝對(duì)象本身(包括對(duì)象中的基本變量),而不拷貝對(duì)象包含的引用指向的對(duì)象。深拷 貝不僅拷貝對(duì)象本身,而且拷貝對(duì)象包含的引用指向的所有對(duì)象。舉例來說更加清楚:對(duì)象 A1 中包含對(duì) B1 的引用, B1 中包含對(duì) C1 的引用。淺拷貝 A1 得到 A2 , A2 中依然包含對(duì) B1 的引用, B1 中依然包含對(duì) C1 的引 用。深拷貝則是對(duì)淺拷貝的遞歸,深拷貝 A1 得到 A2 , A2 中包含對(duì) B2 ( B1 的 copy )的引用, B2 中包含 對(duì) C2 ( C1 的 copy )的引用。

若不對(duì)clone()方法進(jìn)行改寫,則調(diào)用此方法得到的對(duì)象即為淺拷貝

異常分類以及處理機(jī)制

Java標(biāo)準(zhǔn)庫內(nèi)建了一些通用的異常,這些類以Throwable為頂層父類。

Throwable又派生出Error類和Exception類。

錯(cuò)誤:Error類以及他的子類的實(shí)例,代表了JVM本身的錯(cuò)誤。錯(cuò)誤不能被程序員通過代碼處理,Error很少出現(xiàn)。

因此,程序員應(yīng)該關(guān)注Exception為父類的分支下的各種異常類。

異常:Exception以及他的子類,代表程序運(yùn)行時(shí)發(fā)送的各種不期望發(fā)生的事件??梢员籎ava異常處理機(jī)制使用, 是異常處理的核心。

總體上我們根據(jù) Javac 對(duì)異常的處理要求,將異常類分為二類。

非檢查異常( unckecked exception ): Error 和 RuntimeException 以及他們的子類。 javac 在編譯時(shí), 不會(huì)提示和發(fā)現(xiàn)這樣的異常,不要求在程序處理這些異常。所以如果愿意,我們可以編寫代碼處理(使用 try… catch…finally )這樣的異常,也可以不處理。對(duì)于這些異常,我們應(yīng)該修正代碼,而不是去通過異常處理器處理 。這樣的異常發(fā)生的原因多半是代碼寫的有問題。如除0錯(cuò)誤 ArithmeticException ,錯(cuò)誤的強(qiáng)制類型轉(zhuǎn)換錯(cuò) 誤 ClassCastException ,數(shù)組索引越界 ArrayIndexOutOfBoundsException ,使用了空對(duì)象 NullPointerException 等等。

檢查異常( checked exception ):除了 Error 和 RuntimeException 的其它異常。 javac 強(qiáng)制要求程序員 為這樣的異常做預(yù)備處理工作(使用 try…catch…finally 或者 throws )。在方法中要么用 try-catch 語句捕 獲它并處理,要么用throws子句聲明拋出它,否則編譯不會(huì)通過。這樣的異常一般是由程序的運(yùn)行環(huán)境導(dǎo)致的。因 為程序可能被運(yùn)行在各種未知的環(huán)境下,而程序員無法干預(yù)用戶如何使用他編寫的程序,于是程序員就應(yīng)該為這樣 的異常時(shí)刻準(zhǔn)備著。如 SQLException , IOException , ClassNotFoundException 等。

需要明確的是:檢查和非檢查是對(duì)于 javac 來說的,這樣就很好理解和區(qū)分了。

wait 和 sleep 的區(qū)別

源碼如下

1、 sleep 來自 Thread 類,和 wait 來自 Object 類。 2、最主要是sleep方法沒有釋放鎖,而wait方法釋放了 鎖,使得其他線程可以使用同步控制塊或者方法。 3、wait,notify和 notifyAll 只能在同步控制方法或者同步控制塊里面使用,而 sleep 可以在任何地方使用(使 用范圍)

4、 sleep 必須捕獲異常,而 wait , notify 和 notifyAll 不需要捕獲異常

(1) sleep 方法屬于 Thread 類中方法,表示讓一個(gè)線程進(jìn)入睡眠狀態(tài),等待一定的時(shí)間之后,自動(dòng)醒來進(jìn)入到可 運(yùn)行狀態(tài),不會(huì)馬上進(jìn)入運(yùn)行狀態(tài),因?yàn)榫€程調(diào)度機(jī)制恢復(fù)線程的運(yùn)行也需要時(shí)間,一個(gè)線程對(duì)象調(diào)用了 sleep 方法之后,并不會(huì)釋放他所持有的所有對(duì)象鎖,所以也就不會(huì)影響其他進(jìn)程對(duì)象的運(yùn)行。但在 sleep 的過程中過 程中有可能被其他對(duì)象調(diào)用它的 interrupt() ,產(chǎn)生 InterruptedException 異常,如果你的程序不捕獲這個(gè)異 常,線程就會(huì)異常終止,進(jìn)入 TERMINATED 狀態(tài),如果你的程序捕獲了這個(gè)異常,那么程序就會(huì)繼續(xù)執(zhí)行catch語 句塊(可能還有 finally 語句塊)以及以后的代碼。

注意 sleep() 方法是一個(gè)靜態(tài)方法,也就是說他只對(duì)當(dāng)前對(duì)象有效,通過 t.sleep() 讓t對(duì)象進(jìn)入 sleep ,這樣 的做法是錯(cuò)誤的,它只會(huì)是使當(dāng)前線程被 sleep 而不是 t 線程

(2) wait 屬于 Object 的成員方法,一旦一個(gè)對(duì)象調(diào)用了wait方法,必須要采用 notify() 和 notifyAll() 方法 喚醒該進(jìn)程;如果線程擁有某個(gè)或某些對(duì)象的同步鎖,那么在調(diào)用了 wait() 后,這個(gè)線程就會(huì)釋放它持有的所有 同步資源,而不限于這個(gè)被調(diào)用了 wait() 方法的對(duì)象。 wait() 方法也同樣會(huì)在 wait 的過程中有可能被其他對(duì) 象調(diào)用 interrupt() 方法而產(chǎn)生 。

數(shù)組在內(nèi)存中如何分配

對(duì)于 Java 數(shù)組的初始化,有以下兩種方式,這也是面試中經(jīng)??嫉降慕?jīng)典題目:

靜態(tài)初始化:初始化時(shí)由程序員顯式指定每個(gè)數(shù)組元素的初始值,由系統(tǒng)決定數(shù)組長(zhǎng)度,如:

動(dòng)態(tài)初始化:初始化時(shí)由程序員顯示的指定數(shù)組的長(zhǎng)度,由系統(tǒng)為數(shù)據(jù)每個(gè)元素分配初始值,如:

因?yàn)?Java 數(shù)組變量是引用類型的變量,所以上述幾行初始化語句執(zhí)行后,三個(gè)數(shù)組在內(nèi)存中的分配情況如下圖所 示:

由上圖可知,靜態(tài)初始化方式,程序員雖然沒有指定數(shù)組長(zhǎng)度,但是系統(tǒng)已經(jīng)自動(dòng)幫我們給分配了,而動(dòng)態(tài)初始化 方式,程序員雖然沒有顯示的指定初始化值,但是因?yàn)?Java 數(shù)組是引用類型的變量,所以系統(tǒng)也為每個(gè)元素分配 了初始化值 null ,當(dāng)然不同類型的初始化值也是不一樣的,假設(shè)是基本類型int類型,那么為系統(tǒng)分配的初始化值 也是對(duì)應(yīng)的默認(rèn)值0。

關(guān)注作者,我會(huì)不定期在思否分享Java,Spring,MyBatis,Redis,Netty源碼分析,高并發(fā)、高性能、分布式、微服務(wù)架構(gòu)的原理,JVM性能優(yōu)化、分布式架構(gòu),BATJ面試 等資料…

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/74607.html

相關(guān)文章

  • 百度面試整理——Java面試題(二)

    摘要:另外,還可以調(diào)用和等很便利的方法,以返回表示字段,方法,以及構(gòu)造器的對(duì)象的數(shù)組。運(yùn)行結(jié)果無參構(gòu)造器有參構(gòu)造器和實(shí)現(xiàn)原理和區(qū)別和區(qū)別是一個(gè)集合接口。 對(duì)象的四種引用 強(qiáng)引用只要引用存在,垃圾回收器永遠(yuǎn)不會(huì)回收 showImg(https://segmentfault.com/img/bVbsYsz?w=652&h=52); 可直接通過obj取得對(duì)應(yīng)的對(duì)象 如 obj.equels(new...

    thekingisalwaysluc 評(píng)論0 收藏0
  • 百度面試整理——Java面試題(一)

    摘要:發(fā)生了線程不安全情況。本來在中,發(fā)生哈希沖突是可以用鏈表法或者紅黑樹來解決的,但是在多線程中,可能就直接給覆蓋了。中,當(dāng)同一個(gè)值上元素的鏈表節(jié)點(diǎn)數(shù)不小于時(shí),將不再以單鏈表的形式存儲(chǔ)了,會(huì)被調(diào)整成一顆紅黑樹。 showImg(https://segmentfault.com/img/bVbsVLk?w=288&h=226); List 和 Set 的區(qū)別 List , Set 都是繼承自...

    JessYanCoding 評(píng)論0 收藏0
  • 端最強(qiáng)面經(jīng)匯總

    摘要:獲取的對(duì)象范圍方法獲取的是最終應(yīng)用在元素上的所有屬性對(duì)象即使沒有代碼,也會(huì)把默認(rèn)的祖宗八代都顯示出來而只能獲取元素屬性中的樣式。因此對(duì)于一個(gè)光禿禿的元素,方法返回對(duì)象中屬性值如果有就是據(jù)我測(cè)試不同環(huán)境結(jié)果可能有差異而就是。 花了很長(zhǎng)時(shí)間整理的前端面試資源,喜歡請(qǐng)大家不要吝嗇star~ 別只收藏,點(diǎn)個(gè)贊,點(diǎn)個(gè)star再走哈~ 持續(xù)更新中……,可以關(guān)注下github 項(xiàng)目地址 https:...

    wangjuntytl 評(píng)論0 收藏0
  • Android-Java面試

    摘要:好不容易在月號(hào)這天中午點(diǎn)左右接到了來自阿里的面試電話。這里會(huì)不斷收集和更新基礎(chǔ)相關(guān)的面試題,目前已收集題。面試重難點(diǎn)的和的打包過程多線程機(jī)制機(jī)制系統(tǒng)啟動(dòng)過程,啟動(dòng)過程等等掃清面試障礙最新面試經(jīng)驗(yàn)分享,此為第一篇,開篇。 2016 年末,騰訊,百度,華為,搜狗和滴滴面試題匯總 2016 年未,騰訊,百度,華為,搜狗和滴滴面試題匯總 各大公司 Java 后端開發(fā)面試題總結(jié) 各大公司 Jav...

    TalkingData 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<