摘要:在單個(gè)外圍類中,可以讓多個(gè)內(nèi)部類以不同的方式實(shí)現(xiàn)同一個(gè)接口,或者繼承同一個(gè)類。創(chuàng)建內(nèi)部類對(duì)象的時(shí)刻并不依賴于外圍類對(duì)象的創(chuàng)建。內(nèi)部類并沒有令人迷惑的關(guān)系,他就是一個(gè)獨(dú)立的實(shí)體。
接口的意義
規(guī)范,可拓展,回調(diào)
抽象類的意義
為其子類提供一個(gè)公共的類型,封裝子類中重復(fù)的內(nèi)容,定義抽象方法,子類雖然有不同的實(shí)現(xiàn),但是定義是一致的
內(nèi)部類的作用
內(nèi)部類可以用多個(gè)實(shí)例,每個(gè)實(shí)例都有自己的狀態(tài)信息,并且與其他外圍對(duì)象的信息相互獨(dú)立。
在單個(gè)外圍類中,可以讓多個(gè)內(nèi)部類以不同的方式實(shí)現(xiàn)同一個(gè)接口,或者繼承同一個(gè)類。
創(chuàng)建內(nèi)部類對(duì)象的時(shí)刻并不依賴于外圍類對(duì)象的創(chuàng)建。
內(nèi)部類并沒有令人迷惑的“is-a”關(guān)系,他就是一個(gè)獨(dú)立的實(shí)體。
內(nèi)部類提供了更好的封裝,除了該外圍類,其他類都不能訪問
父類的靜態(tài)方法是否可以被子類重寫
static靜態(tài)的方法是屬于類的,而繼承和重寫是相對(duì)于對(duì)象來說的。
如果子類中有父類中的靜態(tài)方法,只能說是隱藏父類的靜態(tài)方法
java虛擬機(jī)的特性
一般的高級(jí)語言如果要在不同的平臺(tái)上運(yùn)行,至少需要編譯成不同的目標(biāo)代碼的,而引入了java虛擬機(jī)后,java代碼在不同的
平臺(tái)上運(yùn)行不需要重新編譯
哪些情況下的對(duì)象會(huì)被垃圾回收機(jī)制處理掉
Java垃圾回收機(jī)制最基本的做法是分代回收,內(nèi)存中的區(qū)域被劃分成成不同的世代,年輕,年老,永久,當(dāng)一個(gè)對(duì)象存活時(shí)間足夠久的時(shí)候
就會(huì)被復(fù)制到年老代中,對(duì)于不同的世代可以使用不同的垃圾回收算法。進(jìn)行世代劃分的出發(fā)點(diǎn)是對(duì)應(yīng)用中對(duì)象存活時(shí)間進(jìn)行研究之后得出的統(tǒng)計(jì)規(guī)律。一般來說,一個(gè)應(yīng)用中的大部分對(duì)象的存活時(shí)間都很短。比如局部變量的存活時(shí)間就只在方法的執(zhí)行過程中?;谶@一點(diǎn),對(duì)于年輕世代的垃圾回收算法就可以很有針對(duì)性。
== 和 equals 的區(qū)別
== 是一個(gè)操作符 而equals是一個(gè)方法,并且這個(gè)方法是Object中的方法,我們可以通過重寫來equals方法來實(shí)現(xiàn)我們自己的比較邏輯
為什么說對(duì)象的equals方法比較為true,那么他們的hashcode方法返回的int值也要相同?
如果兩個(gè)對(duì)象根據(jù)equals()方法比較是相等的,那么調(diào)用這兩個(gè)對(duì)象中任意一個(gè)對(duì)象的hashCode方法都必須產(chǎn)生同樣的整數(shù)結(jié)果。
如果兩個(gè)對(duì)象根據(jù)equals()方法比較是不相等的,那么調(diào)用這兩個(gè)對(duì)象中任意一個(gè)對(duì)象的hashCode方法,則不一定要產(chǎn)生相同的整數(shù)結(jié)果
從而在集合操作的時(shí)候有如下規(guī)則:
將對(duì)象放入到集合中時(shí),首先判斷要放入對(duì)象的hashcode值與集合中的任意一個(gè)元素的hashcode值是否相等,如果不相等直接將該對(duì)象放入集合中。如果hashcode值相等,然后再通過equals方法判斷要放入對(duì)象與集合中的任意一個(gè)對(duì)象是否相等,如果equals判斷不相等,直接將該元素放入到集合中,否則不放入。
回過來說get的時(shí)候,HashMap也先調(diào)key.hashCode()算出數(shù)組下標(biāo),然后看equals如果是true就是找到了,所以就涉及equals
String , StringBuffer , StringBuilder
String : 字符串常量
StringBuffer , StringBuilder :字符串變量
Java多態(tài)的理解
多態(tài)存在的三個(gè)必要條件:
1. 要有繼承 2. 要有重寫 3. 父類引用指向子類對(duì)象
線程的阻塞
里氏替換原則
子類不能重寫父類已經(jīng)實(shí)現(xiàn)的方法
子類重寫父類的方法時(shí),返回值必須比父類更嚴(yán)格
try...finally try中有return時(shí)的執(zhí)行順序
首先finally代碼塊里的代碼是一定會(huì)執(zhí)行的
1. 如果try中有return語句,會(huì)先將return的結(jié)果保存起來,然后執(zhí)行finally中的代碼,如果在finally中改變了要return 的數(shù)據(jù)的值,也不會(huì)影響到return的值 2. 如果在finally中寫了return語句,那么就會(huì)返回return的值
常見的異常
ArithmeticException(算術(shù)異常)
ClassCastException (類轉(zhuǎn)換異常)
IllegalArgumentException (非法參數(shù)異常)
IndexOutOfBoundsException (下標(biāo)越界異常)
NullPointerException (空指針異常)
面向?qū)ο?原則一法則
單一職責(zé)原則 : 說的就是高內(nèi)聚,一個(gè)類只應(yīng)該做一件事
開閉原則 : 對(duì)拓展開發(fā),對(duì)修改關(guān)閉 ,想要表達(dá)的意思是:把可能會(huì)修改的地方抽象出來(接口),具體的實(shí)現(xiàn)是可以改變和拓展的
里氏替換原則 : 在用到父類的地方一定可用其子類代替,想要表達(dá)的是:同一個(gè)繼承體系中的對(duì)象應(yīng)該具有共同的行為特征
依賴注入原則 :要依賴抽象,不要依賴具體的實(shí)現(xiàn),為了實(shí)現(xiàn)這個(gè)原則,就要求我們?cè)诰幊痰臅r(shí)候針對(duì)抽象類或者接口編程
接口分離:不應(yīng)該強(qiáng)迫程序依賴他們不需要的接口 一個(gè)接口不需要提供太多的行為,一個(gè)接口應(yīng)該只提供一種對(duì)外的功能,不應(yīng)該把所有的操作都封裝到一個(gè)接口中。
迪米特法則 :一個(gè)對(duì)象應(yīng)該對(duì)象其他對(duì)象盡量少的了解,意思是要我們降低程序的耦合度
sleep() 和 wait()的區(qū)別
sleep()會(huì)讓出cpu的執(zhí)行時(shí)間一段時(shí)間,但是不會(huì)釋放鎖,如果在同步的環(huán)境中,有可能出現(xiàn)死鎖
wait是指在一個(gè)已經(jīng)進(jìn)入了同步鎖的線程內(nèi),讓自己暫時(shí)讓出同步鎖,以便其他正在等待此鎖的線程可以得到同步鎖并運(yùn)行
什么時(shí)候使用同步
當(dāng)多個(gè)線程使用一個(gè)共享資源時(shí),使用同步
什么時(shí)候使用異步
當(dāng)一個(gè)操作需要會(huì)費(fèi)很長的時(shí)間去做,并且不希望讓程序等待方法的返回時(shí),采用異步,這樣效率更高
什么是內(nèi)存泄漏
程序員創(chuàng)建了一個(gè)對(duì)象,以后一直不使用這個(gè)對(duì)象了,但是這個(gè)對(duì)象一直被引用,即這個(gè)對(duì)象無用但是卻無法被垃圾回收器回收
例如:長生命周期的對(duì)象持有短生命周期對(duì)象的引用可能會(huì)發(fā)生內(nèi)存泄漏,
一個(gè)外部類對(duì)象返回了一個(gè)內(nèi)部類的對(duì)象,這個(gè)內(nèi)部類對(duì)象一直被引用了,即使那個(gè)外部類實(shí)例對(duì)象不再被使用,但由于內(nèi)部類持久外部類的實(shí)例對(duì)象,這個(gè)外部類對(duì)象將不會(huì)被垃圾回收,這也會(huì)造成內(nèi)存泄露
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/70541.html
摘要:作者鏈接來源??途W(wǎng)今天剛剛收到的電話,開心,簡單記錄一下美團(tuán)的面經(jīng)。當(dāng)時(shí)面試官評(píng)價(jià)基礎(chǔ)不是很好,其他還行。的三次握手四次揮手。整體感覺美團(tuán)的面試比較基礎(chǔ),但是各個(gè)方面都有涉及到。 作者:icysnowgx鏈接:https://www.nowcoder.com/disc...來源:牛客網(wǎng) 今天剛剛收到hr的電話,開心,簡單記錄一下美團(tuán)的面經(jīng)。時(shí)間隔的比較久了,簡單回憶下,最后會(huì)給出我之前...
摘要:正如我標(biāo)題所說,簡歷被拒。看了我簡歷之后說頭條競爭激烈,我背景不夠,點(diǎn)到為止。。三準(zhǔn)備面試其實(shí)從三月份投遞簡歷開始準(zhǔn)備面試到四月份收,也不過個(gè)月的時(shí)間,但這都是建立在我過去一年的積累啊。 本文是 無精瘋 同學(xué)投稿的面試經(jīng)歷 關(guān)注微信公眾號(hào):進(jìn)擊的java程序員K,即可獲取最新BAT面試資料一份 在此感謝 無精瘋 同學(xué)的分享 目錄: 印象中的頭條 面試背景 準(zhǔn)備面試 ...
摘要:正如我標(biāo)題所說,簡歷被拒。看了我簡歷之后說頭條競爭激烈,我背景不夠,點(diǎn)到為止。。三準(zhǔn)備面試其實(shí)從三月份投遞簡歷開始準(zhǔn)備面試到四月份收,也不過個(gè)月的時(shí)間,但這都是建立在我過去一年的積累啊。 本文是 無精瘋 同學(xué)投稿的面試經(jīng)歷 關(guān)注微信公眾號(hào):進(jìn)擊的java程序員K,即可獲取最新BAT面試資料一份 在此感謝 無精瘋 同學(xué)的分享目錄:印象中的頭條面試背景準(zhǔn)備面試頭條一面(Java+項(xiàng)目)頭條...
摘要:此專欄文章是對(duì)力扣上算法題目各種方法的總結(jié)和歸納整理出最重要的思路和知識(shí)重點(diǎn)并以思維導(dǎo)圖形式呈現(xiàn)當(dāng)然也會(huì)加上我對(duì)導(dǎo)圖的詳解目的是為了更方便快捷的記憶和回憶算法重點(diǎn)不用每次都重復(fù)看題解畢竟算法不是做了一遍就能完全記住的所 ...
此專欄文章是對(duì)力扣上算法題目各種方法的總結(jié)和歸納, 整理出最重要的思路和知識(shí)重點(diǎn)并以思維導(dǎo)圖形式呈現(xiàn), 當(dāng)然也會(huì)加上我對(duì)導(dǎo)圖的詳解. 目的是為了更方便快捷的記憶和回憶算法重點(diǎn)(不用每次都重復(fù)看題解), 畢竟算法不是做了一遍就能完全記住的. 所以本文適合已經(jīng)知道解題思路和方法, 想進(jìn)一步加強(qiáng)理解和記憶的朋友, 并不適合第一次接觸此題的朋友(可以根據(jù)題號(hào)先去力扣看看官方題解, 然后再看本文內(nèi)容). 關(guān)...
閱讀 2811·2023-04-26 02:28
閱讀 2702·2021-09-27 13:36
閱讀 3207·2021-09-03 10:29
閱讀 2857·2021-08-26 14:14
閱讀 2179·2019-08-30 15:56
閱讀 912·2019-08-29 13:46
閱讀 2682·2019-08-29 13:15
閱讀 512·2019-08-29 11:29