“面试不败计划”: java语言基础面试题(一)
點擊上方“好好學java”,選擇“置頂公眾號”
優(yōu)秀學習資源、干貨第一時間送達!
好好學java
java知識分享/學習資源免費分享
關注
?精彩內(nèi)容?
java實戰(zhàn)練習項目教程
全網(wǎng)最全電子圖書分享
你所需要的大數(shù)據(jù)視頻教程
java全套學習視頻教程及源碼
1、面向?qū)ο蟮娜齻€特征
封裝,繼承,多態(tài).這個應該是人人皆知.有時候也會加上抽象.
2、多態(tài)的好處
允許不同類對象對同一消息做出響應,即同一消息可以根據(jù)發(fā)送對象的不同而采用多種不同的行為方式(發(fā)送消息就是函數(shù)調(diào)用).主要有以下優(yōu)點:
可替換性:多態(tài)對已存在代碼具有可替換性.
可擴充性:增加新的子類不影響已經(jīng)存在的類結構.
接口性:多態(tài)是超類通過方法簽名,向子類提供一個公共接口,由子類來完善或者重寫它來實現(xiàn)的.
靈活性.
簡化性.
3、代碼中如何實現(xiàn)多態(tài)
實現(xiàn)多態(tài)主要有以下三種方式:
接口實現(xiàn)
繼承父類重寫方法
同一類中進行方法重載
4、虛擬機是如何實現(xiàn)多態(tài)
動態(tài)綁定技術(dynamic binding),執(zhí)行期間判斷所引用對象的實際類型,根據(jù)實際類型調(diào)用對應的方法.
5、接口的意義
接口的意義用三個詞就可以概括:規(guī)范,擴展,回調(diào).
6、抽象類的意義
抽象類的意義可以用三句話來概括:
為其他子類提供一個公共的類型
封裝子類中重復定義的內(nèi)容
定義抽象方法,子類雖然有不同的實現(xiàn),但是定義時一致的
7、接口和抽象類的區(qū)別
| 比較 | 抽象類 | 接口 |
| 默認方法 | 抽象類可以有默認的方法實現(xiàn) | java 8之前,接口中不存在方法的實現(xiàn). |
| 實現(xiàn)方式 | 子類使用extends關鍵字來繼承抽象類.如果子類不是抽象類,子類需要提供抽象類中所聲明方法的實現(xiàn). | 子類使用implements來實現(xiàn)接口,需要提供接口中所有聲明的實現(xiàn). |
| 構造器 | 抽象類中可以有構造器, | 接口中不能 |
| 和正常類區(qū)別 | 抽象類不能被實例化 | 接口則是完全不同的類型 |
| 訪問修飾符 | 抽象方法可以有public,protected和default等修飾 | 接口默認是public,不能使用其他修飾符 |
| 多繼承 | 一個子類只能存在一個父類 | 一個子類可以存在多個接口 |
| 添加新方法 | 想抽象類中添加新方法,可以提供默認的實現(xiàn),因此可以不修改子類現(xiàn)有的代碼 | 如果往接口中添加新方法,則子類中需要實現(xiàn)該方法. |
8、父類的靜態(tài)方法能否被子類重寫
不能.重寫只適用于實例方法,不能用于靜態(tài)方法,而子類當中含有和父類相同簽名的靜態(tài)方法,我們一般稱之為隱藏.
9、什么是不可變對象
不可變對象指對象一旦被創(chuàng)建,狀態(tài)就不能再改變。任何修改都會創(chuàng)建一個新的對象,如 String、Integer及其它包裝類。
10、靜態(tài)變量和實例變量的區(qū)別?
靜態(tài)變量存儲在方法區(qū),屬于類所有.實例變量存儲在堆當中,其引用存在當前線程棧.
11、能否創(chuàng)建一個包含可變對象的不可變對象?
當然可以創(chuàng)建一個包含可變對象的不可變對象的,你只需要謹慎一點,不要共享可變對象的引用就可以了,如果需要變化時,就返回原對象的一個拷貝。最常見的例子就是對象中包含一個日期對象的引用.
12、java 創(chuàng)建對象的幾種方式
采用new
通過反射
采用clone
通過序列化機制
前2者都需要顯式地調(diào)用構造方法. 造成耦合性最高的恰好是第一種,因此你發(fā)現(xiàn)無論什么框架,只要涉及到解耦必先減少new的使用.
13、switch中能否使用string做參數(shù)
在idk 1.7之前,switch只能支持byte,short,char,int或者其對應的封裝類以及Enum類型。從idk 1.7之后switch開始支持String.
14、switch能否作用在byte,long上?
可以用在byte上,但是不能用在long上.
15、String s1=”ab”,String s2=”a”+”b”,String s3=”a”,String s4=”b”,s5=s3+s4請問s5==s2返回什么?
返回false.在編譯過程中,編譯器會將s2直接優(yōu)化為”ab”,會將其放置在常量池當中,s5則是被創(chuàng)建在堆區(qū),相當于s5=new String(“ab”);
如果不太清楚,可以查看我的公眾號的關于介紹String的文章,看完你肯定知道了。
附上熱門QQ群,存放資源和歷史資料,500容量(低門檻付費群),長按二維碼入群
????????????????????????????????????????????? ? ? ? 長按二維碼關注
總結
以上是生活随笔為你收集整理的“面试不败计划”: java语言基础面试题(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “面试不败计划”:面试题基础一
- 下一篇: “365算法每日学计划”:01打卡