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