初級Java面試

Java基本數(shù)據(jù)類型(8種)

  • 整型:byte僻焚、short允悦、int、long 對應(yīng)字節(jié)(8 16 32 64)
  • 浮點型:float虑啤、double 對應(yīng)字節(jié)(32 64)
  • Boolean型:boolean 對應(yīng)字節(jié)(1)
  • 字符型:char 對應(yīng)字節(jié)(64)

string澡屡、stringBuffer、stringBuilder

  • string

若連接后得到的字符串在靜態(tài)存儲區(qū)中早已存在咐旧,那么使用“+”優(yōu)于stringBuilder

  • string能被繼承嗎驶鹉?

不能,因為string被final修飾铣墨,string為常量室埋,定義后不能修改

  • stringBuffer與stringBuilder的區(qū)別

stringBuffer(字符串常量)---線程安全
stringBuilder(字符串常量)---線程非安全

Array和ArrayList的區(qū)別

  • Array可以容納基本類型和對象,而ArrayList只能容納對象
  • Array是指定大小的伊约,ArrayList是大小固定的
  • Array沒有提供ArrayList那么多功能

適用與Array的場景

  1. 如果列表的大小已經(jīng)指定姚淆,大部分情況是存儲和遍歷它們
  2. 對于遍歷基本數(shù)據(jù)類型,盡管Collection使用自動裝箱來減輕編碼任務(wù)屡律,在指定大小的基本類型的列表上工作也會變得很慢

ArrayList和LinkedList的區(qū)別:(使用迭代進(jìn)行遍歷)

  1. ArrayList和LinkedList均實現(xiàn)了List接口
  2. ArrayList:實現(xiàn)了所有可選操作列表腌逢,包括null
  • 特點:
    查詢快、增刪慢(快:集合的特點超埋,內(nèi)存地址是連續(xù)的搏讶,只要知道一個,后面的都可以得到
    慢:刪除或增加后霍殴,該索引后的所有數(shù)據(jù)進(jìn)行copy媒惕,所以較慢)
  1. LinkedList:鏈表數(shù)據(jù)結(jié)構(gòu)
  • 特點:查詢慢,增刪快(快:只是修改記錄的前一個元素記錄的內(nèi)存地址發(fā)生改變
    慢:挨個查詢進(jìn)行比較)
  1. LinkedList比ArrayList更占內(nèi)存来庭,因為LinkedList為每一個節(jié)點存儲兩個引用

類的實例化

  1. 類:指描述一種事物的定義妒蔚,是一個抽象的概念,是一些事物具有相同的特性的集合
  2. 實例:該種事物的一個具體的個體,是具體的東西
  3. 例:”動物“是一個類肴盏,”貓“和”狗“就是實例
  • 實例化的順序

父類靜態(tài)變量>父類靜態(tài)代碼塊>子類靜態(tài)變量>子類靜態(tài)代碼塊>父類非靜態(tài)變量(實例成員)>父類構(gòu)造函數(shù)>子類非靜態(tài)變量(子類實力成員變量)>子類構(gòu)造函數(shù)

  • 構(gòu)造函數(shù)

是一種特殊的方法科盛,主要用來創(chuàng)建對象時初始化對象,即為對象成員變量賦值

  • 構(gòu)造函數(shù)的重載

特別的類有多個構(gòu)造函數(shù)菜皂,使用參數(shù)個數(shù)不同或或參數(shù)的類型進(jìn)行區(qū)分

  • 特點:函數(shù)名與類名完全相同土涝,無返回值,無修飾符(包括void)不能被直接調(diào)用幌墓,須new

Map類(key--value型)

  • HashMap

依賴于哈希表實現(xiàn)但壮,存儲位置根據(jù)鍵的哈希碼計算的

  • TreeMap

使用紅黑樹(二叉樹),根據(jù)鍵的數(shù)據(jù)進(jìn)行排序存儲的(默認(rèn)升序)

  • 區(qū)別

HashMap是線程非安全的常侣,TreeMap是線程安全的

抽象類和接口的區(qū)別

  1. 抽象類和接口都不能直接實例化蜡饵,如果要實例化,抽象類變量必須指向?qū)崿F(xiàn)所有抽象方法的子類對象胳施,接口變量必須指向?qū)崿F(xiàn)所有接口方法的類對象
  2. 抽象類要被子類繼承溯祸,接口要被類實現(xiàn)
  3. 接口只能做方法申明,抽象類可以做方法申明舞肆,也可以做方法實現(xiàn)
  4. 接口是定義的變量焦辅,只能是公共的靜態(tài)的常量,抽象類中的變量是普通變量
  5. 抽象類與抽象接口中的所有方法椿胯,必須被子類(實現(xiàn)類)全部實現(xiàn)筷登,否則子類也為抽象類,接口
  6. 抽象方法只能申明哩盲,不能實現(xiàn)
  7. 抽象類中可以沒有抽象方法
  8. 如果一個類中有抽象方法前方,那么這個類只能是抽象類
  9. 抽象方法要被實現(xiàn),所以不能是靜態(tài)的廉油,也不能是私有的
  10. 接口可以繼承接口惠险,并可以多繼承,但類只能單繼承

equals與==的區(qū)別

==是判斷兩個變量或?qū)嵗遣皇侵赶蛲粋€內(nèi)存空間
equals是判斷兩個變量或?qū)嵗赶虻膬?nèi)存空間的值是不是相同

Object有哪些公用方法

  • 方法equals測試的是兩個對象是否相等
  • 方法clone進(jìn)行對象拷貝
  • 方法getClass返回和當(dāng)前對象相關(guān)的class對象
  • 方法notify抒线、notifall班巩、wait都是用來對給定對象進(jìn)行線程同步的

Override與Overload的含義機(jī)區(qū)別

Overload顧名思義是重新加載
它可以表現(xiàn)類的多重性,在函數(shù)里面可以有相同的函數(shù)名但是參數(shù)名嘶炭、返回值抱慌、類型不能相同、或者說可以改變參數(shù)旱物、類型遥缕、返回值但是函數(shù)名不變

Overrider是重寫
在子類繼承父類的時候子類中可以定義某方法與其父類有相同的名稱和參數(shù),當(dāng)子類在調(diào)用這一個函數(shù)時自動調(diào)用子類的方法宵呛,而父類相當(dāng)于被覆蓋了

多態(tài)

  1. 抽象的講:多態(tài)就是同一消息可以根據(jù)發(fā)送對象的不同而采用多種不同的行為方式(發(fā)送消息即為函數(shù)調(diào)用)
  2. 實現(xiàn)的原理是動態(tài)綁定,程序調(diào)用的方法在運行期才動態(tài)綁定夕凝,追朔源碼可以發(fā)現(xiàn)宝穗,jvm通過參數(shù)的自動轉(zhuǎn)型來找到公用的方法

面向?qū)ο笫鞘裁?/h4>

面型對象是一種思想户秤,世間萬物都可以看作是一個對象,這里是討論面向?qū)ο缶幊蹋╫op)逮矛,java是一個支持并發(fā)鸡号,基于類和面向?qū)ο蟮挠嬎銠C(jī)編程語言

面向?qū)ο筌浖_發(fā)的優(yōu)點

  1. 代碼開發(fā)模塊化
  2. 代碼復(fù)用性強(qiáng)
  3. 增強(qiáng)代碼的可靠性和靈活性
  4. 增加代碼的可讀性

面向?qū)ο蟮乃拇蠡咎匦?/h4>
  • 抽象

提取現(xiàn)實世界中某事物的關(guān)鍵特性,為該事物構(gòu)建模型的過程

  • 封裝

可以使類具有獨立性和隔離性须鼎,保證類的高內(nèi)聚鲸伴,只暴露給外部或子類必須的屬性和方法

  • 繼承

對現(xiàn)有類的一種復(fù)用機(jī)制

  • 多態(tài)

多態(tài)是在繼承的基礎(chǔ)上實現(xiàn)的,三要素(1. 繼承 2. 重寫 3. 父類引用指向子類對象)父類引用指向不同的子類對象時晋控,調(diào)用相同的方法汞窗,呈現(xiàn)出不同的行為,就是類的多態(tài)性赡译,多態(tài)可分為編譯時仲吏、運行時
抽象、封裝蝌焚、繼承和多態(tài)是面向?qū)ο蟮幕A(chǔ)

面向?qū)ο蟮钠叽笤O(shè)計原則

SOLID原則(單一原則裹唆、開閉原則、里氏替換原則只洒、接口隔離原則和依賴倒置原則)

迪萊特原則
組合伏于繼承原則(合成復(fù)用原則)

什么是值傳遞和引用傳遞

值傳遞是對基本型變量而言的许帐,傳遞的是該變量的一個副本,改變副本不影響變量本身
引用傳遞是對于對象型變量而言的毕谴,傳遞的是該對象的一個引用舞吭,因此外部對象對引用對象所做的改變會反映到多有的對象上
一般認(rèn)為Java內(nèi)的傳遞都是值傳遞,Java實例對象的傳遞是引用傳遞

面向?qū)ο笈c面向過程的區(qū)別

  • 面向?qū)ο?/li>

把構(gòu)成問題事物分解成各個對象析珊,建立對象的目的不是為了完成一個步驟羡鸥,而是為了描述事物在整個解決問題的步驟中的行為

  • 面向過程

分析出解決問題所需要的步驟,然后用函數(shù)把這些步驟一步一步實現(xiàn)忠寻,使用的時候一個一個依次調(diào)用就可以了
面向?qū)ο笫且怨δ軇澐志逶。嫦蜻^程是以步驟劃分

Java的優(yōu)點

  1. 簡單

只提供基本方法,減少了編程的復(fù)雜性

  1. 高效

可以用面向?qū)ο蟮姆椒枋鲇脩舻拿恳粋€動作

  1. 面向?qū)ο?/li>
  2. 平臺無關(guān)性
  3. 交互式特性

面向?qū)ο蟮木W(wǎng)絡(luò)編程語言奕剃,支持TCP/IP協(xié)議衷旅,使得交互式更為容易

  1. 多線程機(jī)制

Java能夠并行處理多項任務(wù)

  1. 動態(tài)的內(nèi)存管理機(jī)制

自動垃圾回收管理機(jī)制進(jìn)行內(nèi)存管理

  1. 安全性
  2. Java是解釋型的(jvm)

Java創(chuàng)建對象的幾種形式

  1. new 最常見的一種方法
  2. 調(diào)用對象的clone()方法
  3. 運用反射手段,調(diào)用Java.lang.class或者Java.lang.reflect.Constructor類的newInstance()實例方法
  4. 運用反序列化手段纵朋,調(diào)用Java.io.ObjectInputStream對象的readObject()方法

1和3都會明顯的顯示調(diào)用函數(shù)柿顶,2是在內(nèi)存上對已有對象的影印,所以不會調(diào)用構(gòu)造函數(shù)操软,4是從文件中還原類的對象也不會調(diào)用構(gòu)造函數(shù)

是否可以從一個靜態(tài)的(static)方法內(nèi)部發(fā)出對非靜態(tài)(non-static)方法的調(diào)用

不可以嘁锯,靜態(tài)方法只能訪問靜態(tài)成員,因為非靜態(tài)方法的調(diào)用要先創(chuàng)建對象,因此在調(diào)用靜態(tài)方法時可能對象并沒有初始化

靜態(tài)變量和實例變量的區(qū)別

  • 靜態(tài)變量

被static修飾符修飾的變量家乘,也稱為類變量蝗羊,不屬于類的任何一個對象,一個類不管創(chuàng)建多少個對象仁锯,靜態(tài)變量在內(nèi)存中有且僅有一個拷貝

  • 實例變量

必須依賴存于某一實例耀找,需要先創(chuàng)建對象然后通過對象才能訪問到它,靜態(tài)變量可以實現(xiàn)讓多個對象共享內(nèi)存业崖,在Java開發(fā)中野芒,上下文類和工具中通常會有大量的靜態(tài)成員

如何實現(xiàn)對象克隆

  • 兩種方式
  1. 實現(xiàn)cloneable接口并重寫Object類中的clone()方法
  2. 實現(xiàn)Serializable接口通過對象的序列化和反序列化實現(xiàn)克隆,可以實現(xiàn)真正的clone

構(gòu)造函數(shù)

構(gòu)造函數(shù)用于初始化對象的狀態(tài)双炕,與方法類似狞悲,構(gòu)造函數(shù)還包含在創(chuàng)建對象時執(zhí)行的語句集合(即指令)
每次使用new關(guān)鍵字創(chuàng)建對象時,都會調(diào)用至少一個構(gòu)造函數(shù)雄家,用以將初始值分配給同一類的數(shù)據(jù)成員效诅,(構(gòu)造函數(shù)在對象或?qū)嵗齽?chuàng)建時被調(diào)用)

構(gòu)造函數(shù)的編寫規(guī)則

  • 類的構(gòu)造函數(shù)必須與它所在的類名具有相同的名稱
  • Java中的構(gòu)造函數(shù)不能是抽象的(abstract)、最終的(final)趟济、靜態(tài)的(static)的同步的(synchronized)
  • 訪問修飾符可以用在構(gòu)造函數(shù)申明中來控制它的訪問即哪個其他類可以調(diào)用構(gòu)造函數(shù)

Class.forName(String className)這個方法的作用

通過類的全名獲得該類的類對象

AOP乱投、OOP、IOC顷编、DI

  • AOP(面向切面編程)

將通用需求功能從不相關(guān)的類中分離出來戚炫,同時能夠使得很多類共享一個行為,一旦行為發(fā)生變化媳纬,不必修改很多類双肤,只要修改行為即可

  • OOP(面向?qū)ο缶幊蹋?/li>

是一種計算機(jī)編程架構(gòu)

  • IOC(控制反轉(zhuǎn))

控制指的是程序相關(guān)類之間的依賴關(guān)系,傳統(tǒng)觀念設(shè)計授內(nèi)閣通常由調(diào)用者來創(chuàng)建被調(diào)用著的實例钮惠,在spring里茅糜,創(chuàng)建被調(diào)用者的工作不再由調(diào)用者來完成,而是由spring容器完成素挽,依賴關(guān)系被反轉(zhuǎn)了蔑赘,成為控制反轉(zhuǎn),目的是為了獲得更好的擴(kuò)展性和良好的可維護(hù)性

  • DI(依賴注入)

創(chuàng)建被調(diào)用者的工作由spring容器完成预明,然后注入調(diào)用者缩赛,因此也稱依賴注入,控制反轉(zhuǎn)和依賴注入是同一個概念

Java中final關(guān)鍵字有哪些用法

  • 修飾類

表示該類不能被繼承

  • 修飾方法

表示方法不能被重寫

  • 修飾變量

表示變量只能一次賦值以后值不能被修改(常量)

什么時候用assert

assert(斷言)常用的調(diào)試方式撰糠,保證程序最基本酥馍、關(guān)鍵的正確性,在軟件發(fā)布后阅酪,assertion檢查通常是關(guān)閉的

final旨袒,finally汁针,finalize的區(qū)別

  • final 修飾符(修飾類、修飾方法峦失、修飾變量)
  • finally

通常放在try……catch后扇丛,只要jvm不關(guān)閉都執(zhí)行术吗,內(nèi)一般寫釋放外部資源的代碼

  • finalize

Object中定義的方法尉辑,Java中允許使用finalize()方法在垃圾收集器將對象從內(nèi)存中清除出去之前做必要的清理工作,這個方法是由垃圾收集器在銷毀對象時調(diào)用的较屿,通過重寫finalize()方法可以整理系統(tǒng)資源或執(zhí)行其他清理工作

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末隧魄,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子隘蝎,更是在濱河造成了極大的恐慌购啄,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嘱么,死亡現(xiàn)場離奇詭異狮含,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)曼振,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門几迄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人冰评,你說我怎么就攤上這事映胁。” “怎么了甲雅?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵解孙,是天一觀的道長。 經(jīng)常有香客問我抛人,道長弛姜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任妖枚,我火速辦了婚禮廷臼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘盅惜。我一直安慰自己中剩,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布抒寂。 她就那樣靜靜地躺著结啼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪屈芜。 梳的紋絲不亂的頭發(fā)上郊愧,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天朴译,我揣著相機(jī)與錄音,去河邊找鬼属铁。 笑死眠寿,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的焦蘑。 我是一名探鬼主播盯拱,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼例嘱!你這毒婦竟也來了狡逢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤拼卵,失蹤者是張志新(化名)和其女友劉穎奢浑,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腋腮,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡雀彼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了即寡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片徊哑。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖嘿悬,靈堂內(nèi)的尸體忽然破棺而出实柠,到底是詐尸還是另有隱情,我是刑警寧澤善涨,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布窒盐,位于F島的核電站,受9級特大地震影響钢拧,放射性物質(zhì)發(fā)生泄漏蟹漓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一源内、第九天 我趴在偏房一處隱蔽的房頂上張望葡粒。 院中可真熱鬧,春花似錦膜钓、人聲如沸嗽交。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽夫壁。三九已至,卻和暖如春沃疮,著一層夾襖步出監(jiān)牢的瞬間盒让,已是汗流浹背梅肤。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留邑茄,地道東北人姨蝴。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像肺缕,于是被迫代替她去往敵國和親左医。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容