時間:2018-08-07 00:00:00 來源:信盈達 作者:信盈達
今天要談的主題是關于求職,求職是在每個技術人員的生涯中都要經歷多次。對于我們大部分人而言,在進入自己心儀的公司之前少不了準備工作,有一份全面細致面試題將幫助我們減少許多麻煩。在跳槽季來臨之前,特地做這個系列的文章,給大家做一個參考。
相關概念
面向對象的三個特征
封裝,繼承,多態,這個應該是人人皆知,有時候也會加上抽象。
多態的好處
允許不同類對象對同一消息做出響應,即同一消息可以根據發送對象的不同而采用多種不同的行為方式(發送消息就是函數調用)。主要有以下優點:
可替換性:多態對已存在代碼具有可替換性
可擴充性:增加新的子類不影響已經存在的類結構
接口性:多態是超類通過方法簽名,向子類提供一個公共接口,由子類來完善或者重寫它來實現的。
靈活性
簡化性
代碼中如何實現多態
實現多態主要有以下三種方式:
1. 接口實現
2. 繼承父類重寫方法
3. 同一類中進行方法重載
虛擬機是如何實現多態的
動態綁定技術(dynamic binding),執行期間判斷所引用對象的實際類型,根據實際類型調用對應的方法。
接口的意義
接口的意義用三個詞就可以概括:規范,擴展,回調。
抽象類的意義
抽象類的意義可以用三句話來概括:
為其他子類提供一個公共的類型
封裝子類中重復定義的內容
定義抽象方法,子類雖然有不同的實現,但是定義時一致的
父類的靜態方法能否被子類重寫
不能。重寫只適用于實例方法,不能用于靜態方法,而子類當中含有和父類相同簽名的靜態方法,我們一般稱之為隱藏。
什么是不可變對象
不可變對象指對象一旦被創建,狀態就不能再改變。任何修改都會創建一個新的對象,如 String、Integer及其它包裝類。
靜態變量和實例變量的區別?
靜態變量存儲在方法區,屬于類所有。實例變量存儲在堆當中,其引用存在當前線程棧。
能否創建一個包含可變對象的不可變對象?
當然可以創建一個包含可變對象的不可變對象的,你只需要謹慎一點,不要共享可變對象的引用就可以了,如果需要變化時,就返回原對象的一個拷貝。最常見的例子就是對象中包含一個日期對象的引用。
java 創建對象的幾種方式
采用new
通過反射
采用clone
通過序列化機制
前2者都需要顯式地調用構造方法。造成耦合性最高的恰好是第一種,因此你發現無論什么框架,只要涉及到解耦必先減少new的使用。
switch中能否使用string做參數
在idk 1.7之前,switch只能支持byte, short, char, int或者其對應的封裝類以及Enum類型。從idk 1.7之后switch開始支持String。
switch能否作用在byte, long上?
可以用在byte上,但是不能用在long上。
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對象的intern()熟悉么?
intern()方法會首先從常量池中查找是否存在該常量值,如果常量池中不存在則現在常量池中創建,如果已經存在則直接返回。
比如
String s1=”aa”;
String s2=s1.intern();
System.out.print(s1==s2);//返回true
Object中有哪些公共方法?
equals()
clone()
getClass()
notify(),notifyAll(),wait()
toString
java當中的四種引用
強引用,軟引用,弱引用,虛引用。不同的引用類型主要體現在GC上:
強引用:如果一個對象具有強引用,它就不會被垃圾回收器回收。即使當前內存空間不足,JVM也不會回收它,而是拋出 OutOfMemoryError 錯誤,使程序異常終止。如果想中斷強引用和某個對象之間的關聯,可以顯式地將引用賦值為null,這樣一來的話,JVM在合適的時間就會回收該對象。
軟引用:在使用軟引用時,如果內存的空間足夠,軟引用就能繼續被使用,而不會被垃圾回收器回收,只有在內存不足時,軟引用才會被垃圾回收器回收。
弱引用:具有弱引用的對象擁有的生命周期更短暫。因為當 JVM 進行垃圾回收,一旦發現弱引用對象,無論當前內存空間是否充足,都會將弱引用回收。不過由于垃圾回收器是一個優先級較低的線程,所以并不一定能迅速發現弱引用對象。
虛引用:顧名思義,就是形同虛設,如果一個對象僅持有虛引用,那么它相當于沒有引用,在任何時候都可能被垃圾回收器回收。

信盈達2008年在深圳特區南山高新科技園成立。自成立至今近九年來專注為企業和個人提供高端方案設計、高端嵌入式/Android培訓等服務。公司下設信盈達實訓學院、信盈達研發中心、信盈達教學儀器三大業務板塊。九年來公司堅持"技術領先、服務領先",以雄厚的實力和專業的品質成為國內唯一有實力從產品最底層研發到系統層開發的嵌入式實訓、產品解決方案提供商。為中國IT行業提供最具價值的職業教育服務。專業培訓i嵌入式、物聯網、人工智能、Java、單片機等課程,想了解更多信息點擊立馬咨詢
免費領取試聽卡
申請已經提交
老師會馬上給您安排試聽課程!
申請出錯了
您可以加老師QQ:914865590報名咨詢!