前言:這幾天看到了梁大發(fā)的一篇文章衣迷,了解到了很多關(guān)于面試方面的知識仍律,詳細(xì)參考:Java面試通過要點(diǎn)匯總暇咆,然后覺得自己對文章里面提到的知識點(diǎn)進(jìn)行一個個人總結(jié)谤牡,也方便自己查漏補(bǔ)缺副硅,共勉。
基本功:
1翅萤、面向?qū)ο蟮奶卣鳎?/strong>
封裝:把客觀事物封裝成抽象的類恐疲,并且類可以把自己的數(shù)據(jù)和方法只讓可信的類或者對象操作,對不可信的進(jìn)行封裝隱藏套么,封裝分成屬性封裝和方法封裝培己。
繼承:繼承是對有著共同特性的多類事物,進(jìn)行再抽象成一個類胚泌。這個類就是多類事物的父類省咨,父類的意義在于抽取事物的共性。
多態(tài):允許不同類的對象對同一消息做出響應(yīng)诸迟,方法的重載茸炒、類的覆蓋正體現(xiàn)了多態(tài)。
2阵苇、final, finally, finalize 的區(qū)別:
final:Java關(guān)鍵字壁公,聲明變量時變量的值不可變,聲明方法時不能重寫绅项,聲明類時不可繼承紊册。
finally:finally異常處理塊,提供finally快來執(zhí)行清除快耿、解鎖囊陡、返回等操作。
finalize:方法名掀亥,清理函數(shù)撞反,與C++的析構(gòu)函數(shù)類似,使用finalize()對GC刪除對象前作清理工作搪花。
3遏片、int 和 Integer 有什么區(qū)別:
int是基本數(shù)據(jù)類型,直接存儲數(shù)據(jù)值撮竿,默認(rèn)為0吮便;
Integer是int的包裝類,必須實(shí)例化后才能使用幢踏,Integer實(shí)際是對象的引用髓需,對象的引用存在棧里面,對象存在堆里面房蝉,執(zhí)行new的Integer對象僚匆,默認(rèn)值是null
4、 重載和重寫的區(qū)別:
重載:重載發(fā)生在同一個類中搭幻,方法名相同白热,參數(shù)類型不同、個數(shù)不同粗卜、順序不同屋确,方法返回值和訪問修飾符可以不同,發(fā)生在編譯時
重寫:重寫發(fā)生在父子類中续扔,方法名攻臀,參數(shù)列表必須相同,返回值小于等于父類纱昧,拋出異常小于等于父類刨啸,訪問修飾符大于等于父類,如果父類方法訪問修飾符為private則子類中不是重寫识脆。
5设联、抽象類和接口有什么區(qū)別:
語法層次:抽象類和接口分別給出了不同的語法定義
設(shè)計(jì)層次:抽象的層次不一樣善已,抽象類是對類進(jìn)行抽象,包括屬性离例、行為换团,時自底向上抽象而來的;接口則是對行為進(jìn)行抽象宫蛆,是對類的局部抽象艘包,是自頂向下設(shè)計(jì)出來的。
跨域不同:抽象類所體現(xiàn)的是一種繼承關(guān)系耀盗,父類與子類之間存在“is-a”的關(guān)系想虎,即本質(zhì)上概念應(yīng)該是相同的;接口則不要求接口的實(shí)現(xiàn)和接口的定義在概念上本質(zhì)相同叛拷,僅是實(shí)現(xiàn)了接口定義的契約即可舌厨,體現(xiàn)的是“l(fā)ike-a”的關(guān)系。
其他:在抽象類中可以寫非抽象的方法忿薇,避免在子類中重復(fù)書寫邓线,提高代碼的復(fù)用性,這是抽象類的優(yōu)勢煌恢;接口中只能有抽象的方法骇陈,一個類只能繼承一個直接父類,但可以實(shí)現(xiàn)多個接口瑰抵。
6你雌、說說反射的用途及實(shí)現(xiàn):
反射機(jī)制:反射機(jī)制reflect可以在運(yùn)行期間獲取類的字段、方法二汛、父類和接口等信息婿崭,對于任意一個對象,都能調(diào)用它的任意一個方法和屬性肴颊;是一種動態(tài)獲取的信息以及動態(tài)調(diào)用對象的方法的功能氓栈,即:把java的各種成分映射成相應(yīng)的java類。
反射的應(yīng)用:反射在Spring中應(yīng)用很廣婿着,Ioc便是基于反射來實(shí)現(xiàn)的
7授瘦、 equals 與 == 的區(qū)別:
equals()和 == 操作用于對象的比較,檢查兩對象的相等性竟宋,主要區(qū)別在于equals是方法提完,==是操作符,由于Java不支持操作符重載丘侠,==的行為對于每個對象來說與equals是完全相同的徒欣,但equals可以基于業(yè)務(wù)規(guī)則的不同而重寫,另外 == 常用于原生類型之間的比較蜗字,而equals僅用于對象之間的比較打肝,重寫equals方法時需要重寫hashcode方法脂新,以保證hashcode的設(shè)計(jì)規(guī)則。
8粗梭、說說自定義注解的場景及實(shí)現(xiàn)
自定義注解類編規(guī)則:
- Annotation型定義為@interface, 所有的Annotation會自動繼承java.lang.Annotation這一接口,并且不能再去繼承別的類或是接口.
- 參數(shù)成員只能用public或默認(rèn)(default)這兩個訪問權(quán)修飾
- 參數(shù)成員只能用基本類型byte,short,char,int,long,float,double,boolean八種基本數(shù)據(jù)類型和String争便、Enum、Class楼吃、annotations等數(shù)據(jù)類型,以及這一些類型的數(shù)組.
- 要獲取類方法和字段的注解信息,必須通過Java的反射技術(shù)來獲取 Annotation對象,因?yàn)槟愠酥鉀]有別的獲取注解對象的方法
9妄讯、HTTP 請求的 GET 與 POST 方式的區(qū)別
- 提交方式:GET提交孩锡,請求的數(shù)據(jù)會附在URL之后(就是把數(shù)據(jù)放置在HTTP協(xié)議頭<request-line>中,POST提交:把提交的數(shù)據(jù)放置在是HTTP包的包體<request-body>中亥贸,GET提交的數(shù)據(jù)會在地址欄中顯示出來躬窜,而POST提交,地址欄不會改變
- 傳輸數(shù)據(jù)的大锌恢谩:GET:特定瀏覽器和服務(wù)器對URL長度有限制荣挨,POST:由于不是通過URL傳值,理論上數(shù)據(jù)不受限朴摊。但實(shí)際各個WEB服務(wù)器會規(guī)定對post提交數(shù)據(jù)大小進(jìn)行限制默垄,Apache、IIS6都有各自的配置
- 安全性:POST的安全性比GET的高甚纲,通過GET提交數(shù)據(jù)口锭,用戶名和密碼將明文出現(xiàn)在URL上
10、session 與 cookie 區(qū)別
session:session是在服務(wù)端保存的一個數(shù)據(jù)結(jié)構(gòu)介杆,用來跟蹤用戶的狀態(tài)鹃操,這個數(shù)據(jù)可以保存在集群、數(shù)據(jù)庫春哨、文件中荆隘。
cookie:cookie是客戶端保存用戶信息的一種機(jī)制,用來記錄用戶的一些信息赴背,也是實(shí)現(xiàn)session的一種方式椰拒。
11、session 分布式處理(尚未解決)
12凰荚、JDBC 流程:
加載驅(qū)動程序--->建立連接--->創(chuàng)建語句--->執(zhí)行語句--->處理ResultSet
13耸三、MVC 設(shè)計(jì)思想
Model(模型): 模型代表一個存取數(shù)據(jù)的對象或 JAVA POJO。它也可以帶有邏輯浇揩,在數(shù)據(jù)變化時更新控制器仪壮。
View(視圖):視圖代表模型包含的數(shù)據(jù)的可視化。
Controller(控制器):控制器作用于模型和視圖上胳徽。它控制數(shù)據(jù)流向模型對象积锅,并在數(shù)據(jù)變化時更新視圖爽彤。它使視圖與模型分離開。
未完待續(xù)
參考資料:
1缚陷、JavaQ:BAT面試總結(jié)
2适篙、梁桂釗:Java面試要點(diǎn)