去年面了多個候選人券册,看看我挖的坑還有他們應(yīng)該要補的Java基礎(chǔ)(二)

看看我在Object 通用方法埋了什么坑

equals方法用過吧频轿?看看這道題,說說看equals方法在前和在后有什么區(qū)別烁焙?

image-20210110172344885

沒什么區(qū)別航邢。

<u style="box-sizing: border-box;">錯,初學(xué)者或者代碼打得少的人都會犯這個錯骄蝇。</u>

test1會直接報空指針異常膳殷,你想想看,null.equals看不起來不就怪怪的嗎乞榨?空指針怎么可能有方法呢是吧秽之,

拓展:我們一般在企業(yè)開發(fā)中都會將已知的字面量放在equals,未知的參數(shù)放在equals后面吃既,這樣可以避免空指針考榨,編程新手容易犯這個異常,我review過的代碼這么實現(xiàn)的鹦倚,說實話河质,挺多次的,不止編程新人震叙,兩三年工作經(jīng)驗的都會這么做掀鹅,實在不應(yīng)該,

說說看equlas 跟 == 的區(qū)別

equals方法比較的是字符串的內(nèi)容是否相等媒楼,而 == 比較的則是對象地址乐尊。

這么回答也是對的,但是划址,我們更希望聽到更專業(yè)的回答扔嵌,比如:

首先Java中的數(shù)據(jù)類型可以分為兩種,一種是基本數(shù)據(jù)類型夺颤,也稱原始數(shù)據(jù)類型痢缎,如byte,short,char,int,long,float,double,boolean 他們之間的比較,應(yīng)用雙等號(==),比較的是他們的值世澜。

另一種是復(fù)合數(shù)據(jù)類型独旷,包括類,當(dāng)他們用(==)進(jìn)行比較的時候寥裂,比較的是他們在內(nèi)存中的存放地址嵌洼,所以,除非 是同一個new出來的對象封恰,他們的比較后的結(jié)果為true咱台,否則比較后結(jié)果為false。

而JAVA當(dāng)中所有的類都是繼承于Object這個基類的俭驮,在Object中的基類中定義了一個equals的方法回溺,這個方法的初始行為是比較對象的內(nèi)存地址,但在一些類庫當(dāng)中這個方法被覆蓋掉了混萝,如String,Integer,Date在這些類當(dāng)中equals有其自身的實現(xiàn)遗遵,而不再是比較類在堆內(nèi)存中的存放地址了。

<u style="box-sizing: border-box;">這么回答顯的既專業(yè)又牛逼逸嘀,還大氣上檔次车要,你學(xué)廢了嗎?</u>

聊聊對hashCode和equals方法的理解

一般問到這種問題崭倘,候選人都可以回答:

如果兩個對象equals方法相等翼岁,則它們的hashCode一定相同类垫;

如果兩個對象的hashCode相同,它們的equals()方法則不一定相等琅坡。

而兩個對象的hashCode()返回值相等不能判斷這兩個對象是相等的悉患,但兩個對象的hashcode()返回值不相等則可以判定兩個對象一定不相等。

<u style="box-sizing: border-box;">考察對hashCode的理解</u> 那請問hashCode有什么作用呢榆俺?為什么要這么規(guī)范

基本上初學(xué)者或者應(yīng)屆生在這一步就被我卡主了售躁, 支支吾吾的回答不了多少,基本上都在這里掉分茴晋,因為上面的規(guī)范回答百度一查一大把陪捷,但是對hashCode作用有深入了解的卻很少,這道題也可以看出一個人的專業(yè)水平诺擅。

正確的回答是:

hashCode的作用實際上是為了提高在散列結(jié)構(gòu)存儲中查找的效率市袖,自然只有每個對象的hashCode盡可能的不同才能保證散列存儲性能的提高,這也是為什么Object默認(rèn)提供hash碼都是不同的原因烁涌。

舉個例子:

以HashSet為例凌盯,要想保證元素不重復(fù)則需要調(diào)用對象的equals方法比較一次,但是如果這個結(jié)構(gòu)放了很多元素烹玉,比如5000次驰怎,如果沒有hashCode的話則需要在每次加元素的時候?qū)Ρ?000次,而如果有hashCode則不一樣了二打,當(dāng)集合要添加新的元素的時候先調(diào)用hashCode方法县忌,這樣便可以定位到元素的地址,而無需多次判斷继效。

<u style="box-sizing: border-box;">考察對clone方法的理解</u>看看這道題症杏,結(jié)果輸出什么?

image-20210110183459155

每次問到這道題瑞信,大部分人都是回答2厉颤,小部分人是回答1。

<u style="box-sizing: border-box;">都錯凡简,正確答案是直接報錯</u>

image-20210110183635113

為什么逼友?因為clone方法是Object的protect方法,需要子類顯示的去重寫clone方法秤涩,并且實現(xiàn)Cloneable 接口帜乞,這是規(guī)定。

那么問題來了筐眷?加上Cloneable 接口后呢黎烈?到底是2還是1呢?

<u style="box-sizing: border-box;">這又是我挖的坑,主要為了考察候選人對淺拷貝和深拷貝的理解</u>

最終結(jié)果其實是2照棋,因為直接用clone拷貝的時候是一種淺拷貝资溃,最終拷貝對象和原始對象的引用類型引用還是同一個對象。

如果想要實現(xiàn)深拷貝烈炭,則需要開發(fā)人員自己在clone方法內(nèi)自己進(jìn)行重寫溶锭。

拓展:在企業(yè)開發(fā)中一般我們不允許直接用clone方法來做拷貝,存在拋出異常的風(fēng)險梳庆,還需要進(jìn)行類型轉(zhuǎn)換。如果是我review到這種代碼卑惜,都是直接告訴同事:在Effective Java 書上有講到膏执,最好不要去使用 clone(),我們可以使用拷貝構(gòu)造函數(shù)或者拷貝工廠來拷貝一個對象露久,比如這樣

image-20210111224630388

總結(jié):我們都知道Java是面向?qū)ο缶幊痰母祝业睦斫鈱嶋H上就是面對Object編程,能夠合理的使用和了解原理equals和hashCode是一個初級程序員必須具備的素養(yǎng)毫痕,而對淺拷貝和深拷貝的理解也基本是基礎(chǔ)中的基礎(chǔ)征峦,希望看完這系列,大家可以了然于胸消请,下次遇見這種面試題栏笆,直接吹。

看看我在抽象類和接口埋了什么坑

<u style="box-sizing: border-box;">考察候選人編碼水平</u> 說說看你對抽象類的理解

抽象類和抽象方法都使用 abstract 關(guān)鍵字進(jìn)行聲明臊泰,如果一個類中包含抽象方法蛉加,那么這個類必須聲明為抽象類,并且抽象類和普通類最大的區(qū)別是缸逃,抽象類不能被實例化针饥,只能被繼承。

<u style="box-sizing: border-box;">bingo,答案是對的需频,但是還不夠好</u>

上面的是標(biāo)準(zhǔn)答案丁眼,隨便一本Java書籍都可以看到,但是可以補充下你們對應(yīng)用的理解昭殉,這可以體現(xiàn)你的編碼水平到了哪一步苞七,我這邊補充我理想的答案:

抽象類可以實現(xiàn)代碼的重用,模板方法設(shè)計模式是抽象類的一個典型應(yīng)用挪丢,例如我們游戲的所有活動都要進(jìn)行一樣的初始化莽鸭,但是初始化的時候需要根據(jù)不同活動進(jìn)行不同功能開啟判斷,那么就可以定義一個活動的基類吃靠,將功能開啟判斷做成一個抽象方法硫眨,讓所有活動都繼承這個基類,然后在子類自行重寫功能開啟判斷。

補充上自己對應(yīng)用的理解礁阁,可以充分體現(xiàn)你的專業(yè)巧号,面試官聽完,肯定是內(nèi)心一頓尼瑪?shù)呐1啤?/p>

<u style="box-sizing: border-box;">繼續(xù)考察候選人編碼水平</u>說說看你對接口的理解

接口可以說成是抽象類的一種延伸姥闭,接口中的所有方法都必須是抽象的丹鸿。實際上,接口中的方法定義默認(rèn)為public abstract類型棚品,接口中的成員變量類型默認(rèn)為public static final靠欢。

<u style="box-sizing: border-box;">你們懂的,這又是一個標(biāo)準(zhǔn)回答铜跑,實際上门怪,不夠好,可以補充以下幾句話</u>

從Java8開始锅纺,接口也可以擁有默認(rèn)的方法實現(xiàn)了掷空,為啥Java團(tuán)隊要做這個支持呢?

實際上囤锉,在Java上深耕多年的老司機其實都被接口沒有默認(rèn)實現(xiàn)搞過坦弟,維護(hù)成本太高了,你想想官地,如果你現(xiàn)在有100個類實現(xiàn)了一個接口酿傍,而在這個時候,需要給接口新增一個方法驱入,特么Java8之前不允許給接口加默認(rèn)實現(xiàn)拧粪,所以你就得改100個類,這特么不得搞出人命嗎沧侥?

<u style="box-sizing: border-box;">真心話:能夠說出對抽象類和接口應(yīng)用的理解的候選人不多可霎,基本上說出來的我內(nèi)心都是往牛逼去吹的,大寫的服宴杀,因為這充分體現(xiàn)一個開發(fā)人員對編碼方面的思考癣朗,你不知道一個寫代碼有思考和整潔,而不是只顧實現(xiàn)功能的程序員旺罢,主管會多喜歡?跤唷!扁达!</u>

<u style="box-sizing: border-box;">真正的直接背的答案</u>說說看抽象類和接口的區(qū)別

  • 抽象類可以有構(gòu)造方法正卧,接口中不能有構(gòu)造方法。

  • 抽象類中可以有普通成員變量跪解,接口中沒有普通成員變量

  • 抽象類中可以包含非抽象的普通方法炉旷,接口中的所有方法必須都是抽象的,不能有非抽象的普通方法。

  • 抽象類中可以包含靜態(tài)方法窘行,接口中不能包含靜態(tài)方法

  • 抽象類和接口中都可以包含靜態(tài)成員變量饥追,抽象類中的靜態(tài)成員變量的訪問類型可以任意,但接口中定義的變量只能是public static final類型罐盔,并且默認(rèn)即為public static final類型但绕。

  • 一個類可以實現(xiàn)多個接口,但只能繼承一個抽象類惶看。

這個就是標(biāo)準(zhǔn)答案了捏顺,不過我們面試官比較希望可以在回答區(qū)別題的時候自己做些拓展回答,將上面接口和抽象類的理解都說一遍纬黎,而不是背書一樣的回答幅骄,<u style="box-sizing: border-box;">切記,回答問題莹桅,遇見自己懂的知識點昌执,盡量做拓展烛亦,加上自己的理解诈泼,一是可以向面試官展示你的專業(yè),二是可以拖時間煤禽,盡量避免讓面試官想更多難題坑你</u>

總結(jié):看到這里铐达,估計很多人對抽象類和接口都嗤之以鼻,都是隨口可以說出的答案檬果,但是瓮孙,你以為我們只是想要聽你背書式的回答嗎,錯了选脊,我們想知道的是后面你的拓展和理解杭抠,這才可以體現(xiàn)你的編碼能力和專業(yè)。

看看我在重寫和重載里埋了什么坑

<u style="box-sizing: border-box;">給大家來一個筆試中超級常見的題</u> 看看以下這道題恳啥,說說看結(jié)果是啥偏灿?

image-20210111235033082

這道題簡直就是了,很多年前我來我司應(yīng)聘的時候也遇見過這道題钝的,說實話翁垂,應(yīng)屆生和初級繞不過這道題,現(xiàn)在直接給大家亮牌:

image-20210111235450101

<u style="box-sizing: border-box;">給大家說說如何理解這種題硝桩,理解以下的原則就可以了:</u>

JVM在調(diào)用一個方法時沿猜,會優(yōu)先從本類中查找看是否有對應(yīng)的方法,如果沒有再到父類中查看是否從父類繼承來碗脊。

如果沒有怎么辦啼肩?那JVM就會對參數(shù)進(jìn)行轉(zhuǎn)型,轉(zhuǎn)成父類之后看是否有對應(yīng)的方法。

總的來說疟游,方法調(diào)用的優(yōu)先級如下:

  • this.func(this)

  • super.func(this)

  • this.func(super)

  • super.func(super)

記住這個過程就可以了呼畸。

<u style="box-sizing: border-box;">開始挖坑</u> 說說看以下的是不是方法重載?

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="Java" cid="n3925" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">class TestMain {
?
public int show(int x) {
return x;
}
?
public void show(int x) {
System.out.println(x);
}
}</pre>

我面試過的大部分初級或者應(yīng)屆都會回答是颁虐,不得不說這道題實在太坑了蛮原,不開玩笑,你看那堆被這道題埋過的人里邊就有我另绩。

<u style="box-sizing: border-box;">千萬記住了儒陨,重載的定義是:在同一個類中,一個方法與已經(jīng)存在的方法名稱上相同笋籽,并且參數(shù)類型蹦漠、個數(shù)、順序至少有一個不同车海。這句話里邊并沒有包含著返回值笛园,如果只是返回值不同,其它都相同根本不算是重載侍芝。</u>

當(dāng)然研铆,idea是會直接提示報錯的,這也是為什么我沒有截idea的源碼出來給大家看的原因州叠,一看有爆紅你們就知道有問題了棵红。不過還是那句話,這并不意味著idea可以檢測出來的東西咧栗,你就可以不懂逆甜,這是基礎(chǔ)。

總結(jié):說實話致板,在筆試題中出現(xiàn)重載和重寫那兩道題實在是太常見了交煞,百分之九十的應(yīng)屆生或者初級開發(fā)都被坑過,所以看完這篇文章記得收藏啊斟或,并不是你看了就記住了素征,而是記得在面試前重新看一遍,這可是關(guān)系到你offer上那個金光閃閃的數(shù)字的上限的啊

看看我在反射方面埋了什么坑

<u style="box-sizing: border-box;">終于到了反射了缕粹,我們面試官其實很喜歡這個知識點稚茅,可以用它來篩掉一大批的api工程師</u>

了解過反射嗎?說說看什么是反射平斩?

在運行時亚享,Java 反射,可以獲取任意類的名稱绘面、package 信息欺税、所有屬性侈沪、方法、注解晚凿、類型亭罪、類加載器、現(xiàn)實接口等歼秽,并且可以調(diào)用任意方法和實例化任意一個類的獨享应役,通過反射我們可以實現(xiàn)動態(tài)裝配,降低代碼的耦合度燥筷、實現(xiàn)動態(tài)代理等箩祥,不過反射的過度使用會嚴(yán)重消耗系統(tǒng)資源。

<u style="box-sizing: border-box;">上面的回答很標(biāo)準(zhǔn)肆氓,不過開始深挖了</u> 你剛剛的回答有提到了反射的作用袍祖,說說哪里用到了反射機制?

例子很多谢揪,比如:

  • JDBC中蕉陋,利用反射動態(tài)加載了數(shù)據(jù)庫驅(qū)動程序。

  • Web服務(wù)器中利用反射調(diào)用了Sevlet的服務(wù)方法拨扶。

  • 還有多框架都用到反射機制凳鬓,注入屬性,調(diào)用方法屈雄,如Spring等村视。

基本上回答幾個就可以了官套,這里因為還沒到框架模塊酒奶,所以先不對Spring、JDBC等源碼進(jìn)行深挖奶赔,一般都是基礎(chǔ)題面完了惋嚎,才開始挖對框架的使用和源碼的理解。

<u style="box-sizing: border-box;">繼續(xù)挖站刑,我們面試官很喜歡抓細(xì)節(jié)另伍,所以最好保證你說的東西你都有一定的了解,否則嘿嘿嘿</u>你剛剛還說到了動態(tài)代理绞旅,說說你對動態(tài)代理的理解摆尝,以及有什么用

動態(tài)代理其實就是是運行時動態(tài)生成代理類。 動態(tài)代理的應(yīng)用有 Spring AOP因悲、測試框架的后端 mock堕汞、rpc,Java注解對象獲取等應(yīng)用晃琳。

怎么實現(xiàn)動態(tài)代理呢讯检?

目前動態(tài)代理可以提供兩種琐鲁,分為JDK 原生動態(tài)代理和 CGLIB動態(tài)代理;

JDK 原生動態(tài)代理是基于接口實現(xiàn)的人灼,而 CGLIB是基于繼承當(dāng)前類的子類實現(xiàn)的围段,當(dāng)目標(biāo)類有接口的時候才會使用JDK動態(tài)代理,其實是因為JDK動態(tài)代理無法代理一個沒有接口的類投放,因為JDK動態(tài)代理是利用反射機制生成一個實現(xiàn)代理接口的匿名類奈泪;

而CGLIB是針對類實現(xiàn)代理,主要是對指定的類生成一個子類灸芳,并且覆蓋其中的方法段磨。

<u style="box-sizing: border-box;">挖一個大坑</u> 你上面有說到 Spring AOP有用到了動態(tài)代理,那你說說看AOP用到了哪種方式耗绿?

大部分都會回答JDK 原生動態(tài)代理苹支,小部分人會回答CGLIB。

<u style="box-sizing: border-box;">但其實兩者都是錯的误阻,這是我挖好的坑债蜜,太多候選人都只知道AOP用了動態(tài)代理了,但是能夠完整回答出來用了哪種的卻寥寥無幾究反,畢竟只有看過源碼的人才能回答這個問題寻定,一般能夠回答出來的,我這邊都會額外加分</u>

實際答案是:在Spring中默認(rèn)使用的是JDK動態(tài)代理精耐,除非目標(biāo)類沒有實現(xiàn)接口狼速,才會轉(zhuǎn)為CGLIB代理,如果想要強行使用CGLIB代理免責(zé)需要在Spring配置文件中加入<aop:aspectj-autoproxy proxy-target-class="true" />卦停,

然而在SpringBoot中向胡,從2.0開始就默認(rèn)使用CGLIB代理。**

說說看反射機制的優(yōu)缺點

優(yōu)點:可以動態(tài)執(zhí)行惊完,在運行期間根據(jù)業(yè)務(wù)功能動態(tài)執(zhí)行方法僵芹、訪問屬性,最大限度發(fā)揮了java的靈活性小槐。 缺點:對性能有影響拇派,這類操作總是慢于直接執(zhí)行java代碼。

對性能有影響凿跳,那請問怎么解決這個問題件豌?

到了這里基本上很多候選人都無法回答了,我見過太多一開始就說性能性能的控嗜,可是一說到如何解決茧彤,就基本支支吾吾的回答不出來。

<u style="box-sizing: border-box;">記住了躬审,如果聊到性能棘街,記得想好怎么回答優(yōu)化方面的問題蟆盐,否則就是自己搬起石頭砸自己的腳。</u>

實際上可以從以下幾個方面回答:

  • 在系統(tǒng)啟動時遭殉,將反射得到元數(shù)據(jù)保存起來石挂,使用時,只需從內(nèi)存中調(diào)用即可险污。

  • 盡量用高點的JDK痹愚,因為高版本的虛擬機會對執(zhí)行次數(shù)較多的方法進(jìn)行優(yōu)化,例如使用jit技術(shù)蛔糯,而低版本的那個時候還沒實現(xiàn)拯腮,

  • 可以考慮使用高性能的反射庫,Spring內(nèi)部也有提供一些蚁飒。

總結(jié):這里其實建議大家多去玩玩反射动壤,不要只會api調(diào)用,對于我們面試官而言淮逻,熟悉和理解反射是一個中級程序員必備的條件琼懊。

看看我在異常和注解方面埋的坑

做為一個Javer,應(yīng)該對Error 和 Exception很熟悉吧爬早,說說看它們的區(qū)別

目前來說哼丈,可以作為異常拋出的類,分為兩種: Error 和 Exception筛严。

而其中 Error 用來表示 JVM 無法處理的錯誤醉旦,然后Exception 也分為兩種,分別是:

  • 受檢異常 :需要用 try...catch... 語句捕獲并進(jìn)行處理桨啃,并且可以從異常中恢復(fù)车胡;

  • 非受檢異常 :是程序運行時錯誤,例如除 0 會引發(fā) Arithmetic Exception优幸,此時程序崩潰并且無法恢復(fù)吨拍。

說說看什么是注解褪猛?以及有什么用

注解提供了一種類似注釋的機制网杆,用來將任何的信息或數(shù)據(jù)與類、方法伊滋、或者成員變量等進(jìn)行關(guān)聯(lián)碳却。

Annontation像一種修飾符一樣,應(yīng)用于包笑旺、類型昼浦、構(gòu)造方法、方法筒主、成員變量关噪、參數(shù)及本地變量的聲明語句中鸟蟹。

注解的用處很多,舉兩個最常見的例子:

  • 生成文檔使兔。這是最常見的建钥,也是java 最早提供的注解,系統(tǒng)會在掃描到使用了注解的類后虐沥,根據(jù)注解信息生成文檔熊经。

  • 在編譯時進(jìn)行格式檢查。如@override 放在方法前欲险,如果你這個方法并不是覆蓋了超類方法镐依,則編譯時就能檢查出。

Java.lang.annotation 提供了四種元注解天试,是哪四種槐壳?有什么用呢?

JAVA 中有以下幾個『元注解』:

  • @Target:注解的作用目標(biāo)

  • @Retention:注解的生命周期

  • @Documented:注解是否應(yīng)當(dāng)被包含在 JavaDoc 文檔中

  • @Inherited:是否允許子類繼承該注解

沒錯喜每,這幾個元注解太常見了宏粤,但是卻很少人能夠真的用的好。

說說看@Target作用目標(biāo)有哪些灼卢?

關(guān)于@Target的作用目標(biāo)有多個目標(biāo)類型绍哎,直接截圖如下:

image-20210112230657929

基本上回答幾個就可以了,不過記住了鞋真,上面的TYPE就是指的是類崇堰,也就是說這個注解是作用在類上的。

@Retention注解的生命周期有哪幾種涩咖?有什么區(qū)別海诲?

@Retention注解的生命周期可以分為以下幾種:

  • etentionPolicy.SOURCE:當(dāng)前注解編譯期可見,不會寫入 class 文件

  • RetentionPolicy.CLASS:類加載階段丟棄檩互,會寫入 class 文件

  • RetentionPolicy.RUNTIME:永久保存特幔,可以反射獲取

區(qū)別在于:

第一種是只能在編譯期可見,編譯后會被丟棄闸昨;

第二種會被編譯器編譯進(jìn) class 文件中蚯斯,無論是類或是方法,乃至字段饵较,他們都是有屬性表的拍嵌,而 JAVA 虛擬機也定義了幾種注解屬性表用于存儲注解信息,但是這種可見性不能帶到方法區(qū)循诉,類加載時會予以丟棄横辆;

第三種則是永久存在的可見性,可以反射獲取茄猫,基本上用這種居多狈蚤。

<u style="box-sizing: border-box;">對于注解生命周器的理解可以避免一些坑困肩,還是那句話,基本上注解這塊能回答的比較流暢的脆侮,說明都是玩過組件或者看過源碼的僻弹,因為對于開發(fā)一個組件來說,注解太常用了他嚷。</u>

<u style="box-sizing: border-box;">送命題蹋绽,百分之九十的候選人答不上來</u> 父類使用了注解,請問子類繼承了這個父類后筋蓖,是否也攜帶了這個注解呢卸耘?如果沒有,要怎么實現(xiàn)這個過程粘咖?

這道題很少人會回答的上來蚣抗,畢竟大家對@Inherited這個元注解太陌生了。

<u style="box-sizing: border-box;">在注解上使用元注解@Inherited瓮下,表示該注解會被子類所繼承翰铡,注意注意,僅針對類喲讽坏,成員锭魔、方法并不受該元注解的影響</u>

因此,如果想要讓子類也繼承父類的注解路呜,則需要給注解加上元注解@Inherited迷捧。

拓展:一般初級開發(fā)都基本不會用上注解,因為注解更多的是用來寫組件用的胀葱,我們項目組這邊就很喜歡自定義一些注解來實現(xiàn)組件漠秋,因為用起來實在是太舒服了。

總結(jié):關(guān)于異常這塊抵屿,Error 和 Exception是經(jīng)常會被問到的基礎(chǔ)考點庆锦,而注解這塊是一個能夠加分的點,希望大家別錯過這個知識點轧葛,學(xué)透它搂抒,不過記住上面幾個坑點,其實也差不多了。

最后

上一篇文章:https://mp.weixin.qq.com/s/F73r_f5YcBOayPdsin4gBg 點贊和閱讀量都很高,說明文章質(zhì)量是ok的猪腕,感謝大家的支持烙肺;

Java基礎(chǔ)系列也基本差不多了,說實話淀散,這兩篇文章的坑點右莱,只要你記住了蚜锨,Java基礎(chǔ)這塊基本上沒問題了。

后續(xù)安排:

  • 【好好面試】Java集合系列

  • 【好好面試】Java崗位陈眩考算法

  • Caffeine源碼解析

有興趣的關(guān)注我一波亚再,Java面試官帶你們跨過一個個的面試坑,保證不虧晨抡。

為了感謝最近大家的支持氛悬,我這邊特地跳了一些Java相關(guān)的資源,很多專題耘柱,比如JAVA+TCP如捅、Java反射機制、Java多線程專題等调煎,都是針對性訓(xùn)練的利器镜遣,建議人手一份。

image-20210113222609975
image-20210113222621341

關(guān)注公眾號士袄,回復(fù):Java面試 即可拿到資源悲关。

公眾號:飯談編程 原文鏈接:https://mp.weixin.qq.com/s/F73r_f5YcBOayPdsin4gBg

謝謝點贊支持??????!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末娄柳,一起剝皮案震驚了整個濱河市寓辱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌赤拒,老刑警劉巖讶舰,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異需了,居然都是意外死亡跳昼,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進(jìn)店門肋乍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鹅颊,“玉大人,你說我怎么就攤上這事墓造】拔椋” “怎么了?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵觅闽,是天一觀的道長帝雇。 經(jīng)常有香客問我,道長蛉拙,這世上最難降的妖魔是什么尸闸? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上吮廉,老公的妹妹穿的比我還像新娘苞尝。我一直安慰自己,他們只是感情好宦芦,可當(dāng)我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布宙址。 她就那樣靜靜地躺著,像睡著了一般调卑。 火紅的嫁衣襯著肌膚如雪抡砂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天恬涧,我揣著相機與錄音注益,去河邊找鬼。 笑死气破,一個胖子當(dāng)著我的面吹牛聊浅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播现使,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼低匙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了碳锈?” 一聲冷哼從身側(cè)響起顽冶,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎售碳,沒想到半個月后强重,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡贸人,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年间景,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片艺智。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡倘要,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出十拣,到底是詐尸還是另有隱情封拧,我是刑警寧澤,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布夭问,位于F島的核電站泽西,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏缰趋。R本人自食惡果不足惜捧杉,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一陕见、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧糠溜,春花似錦淳玩、人聲如沸直撤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谋竖。三九已至红柱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蓖乘,已是汗流浹背锤悄。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留嘉抒,地道東北人零聚。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像些侍,于是被迫代替她去往敵國和親隶症。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 看看我在基礎(chǔ)數(shù)據(jù)類型方面埋了什么坑 說說看,Java有多少種基本的數(shù)據(jù)類型耗式?多大胁住? Java有8中基本的數(shù)據(jù)類型,...
    Java面試官閱讀 223評論 0 0
  • 1.Java中的原始數(shù)據(jù)類型都有哪些刊咳,它們的大小及對應(yīng)的封裝類是什么彪见? 關(guān)于boolean的說明: boolean...
    大棄閱讀 1,013評論 0 12
  • 久違的晴天,家長會娱挨。 家長大會開好到教室時余指,離放學(xué)已經(jīng)沒多少時間了。班主任說已經(jīng)安排了三個家長分享經(jīng)驗让蕾。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,513評論 16 22
  • 今天感恩節(jié)哎浪规,感謝一直在我身邊的親朋好友。感恩相遇探孝!感恩不離不棄笋婿。 中午開了第一次的黨會,身份的轉(zhuǎn)變要...
    迷月閃星情閱讀 10,559評論 0 11
  • 可愛進(jìn)取顿颅,孤獨成精缸濒。努力飛翔,天堂翱翔。戰(zhàn)爭美好庇配,孤獨進(jìn)取斩跌。膽大飛翔,成就輝煌捞慌。努力進(jìn)取耀鸦,遙望,和諧家園啸澡⌒涠可愛游走...
    趙原野閱讀 2,723評論 1 1