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