- 相關(guān)推薦
70道Android面試題(大全)
下面是小編精選挑選的70道Android面試題,一起來做一做吧。
1.GC是什么? 為什么要有GC?
GC是垃圾收集的意思(Gabage Collection),內(nèi)存處理是編程人員容易出現(xiàn)問題的地方,忘記或者錯(cuò)誤的內(nèi)存回收會(huì)導(dǎo)致程序或系統(tǒng)的不穩(wěn)定甚至崩潰,Java提供的GC功能可以自動(dòng)監(jiān)測(cè)對(duì)象是否超過作用域從而達(dá)到自動(dòng)回收內(nèi)存的目的,Java語言沒有提供釋放已分配內(nèi)存的顯示操作方法。
2.XML包括哪些解釋技術(shù),區(qū)別是什么?
DOM和SAX
DOM將文檔解析成一顆文檔樹,可在節(jié)點(diǎn)上進(jìn)行遍歷、增加、修改和刪除。一次性讀入內(nèi)存,對(duì)內(nèi)存消耗大。
SAX至上而下解析文檔,以事件進(jìn)行驅(qū)動(dòng)。不會(huì)一次性讀入內(nèi)存,對(duì)內(nèi)存消耗小,不能任意讀取節(jié)點(diǎn),并且不能對(duì)節(jié)點(diǎn)進(jìn)行增加、修改和刪除。
3.switch語句能否作用在byte上,能否作用在long上,能否作用在String上?
switch能作用在byte、char、short和int上,JDK1.7后可以作用在String上。
4."=="和equals方法究竟有什么區(qū)別?
==和equals都可以比較地址。==是運(yùn)算符,equals是方法,方法可以通過重寫改變其行為,如String的equals就是比較字符串內(nèi)容。
5.構(gòu)造方法能否被重寫和重載?
構(gòu)造方法不能被重寫但是能被重載。
6.面向?qū)ο蟮奶卣饔心男?
封裝、繼承、多態(tài)和抽象。
7.抽象類和接口的區(qū)別?
1).抽象類是abstract class修飾,接口是interface修飾。
2).抽象類可以有任意類型的屬性,接口只能有靜態(tài)常量修飾的屬性。
3).抽象類可以有普通方法和抽象法方法,接口的方法都是抽象方法。
4).抽象類和接口都不能實(shí)例化,但是抽象類有構(gòu)造方法,接口沒有構(gòu)造方法。
5).抽象類只能單根繼承,接口可以多重實(shí)現(xiàn)。
8.內(nèi)部類可以引用它的包含類的成員嗎?有沒有什么限制?
可以引用。如果需要指定當(dāng)前類時(shí)要用外部類.this來引用。如果引用局部變量,需要將局部變量指定為final。
9.String s = new String("xyz");創(chuàng)建了幾個(gè)String Object? 二者之間有什么區(qū)別?
2個(gè)對(duì)象。"xyz"創(chuàng)建在字符串常量池中,new String()創(chuàng)建在堆中。
10.try {}里有一個(gè)return語句,那么緊跟在這個(gè)try后的finally {}里的code會(huì)不會(huì)被執(zhí)行,什么時(shí)候被執(zhí)行,在return前還是后?
會(huì)在return前執(zhí)行。
11.Integer與int的區(qū)別
Integer為包裝類,int是基本數(shù)據(jù)類型。包裝類擁有方法和屬性,基本數(shù)據(jù)類型不具備。包裝類可以通過intValue來轉(zhuǎn)換成基本數(shù)據(jù)
類型,也可以通過new Integer()將基本數(shù)據(jù)類型轉(zhuǎn)換為包裝類。在JDK1.5后,包裝類和基本數(shù)據(jù)類型可以實(shí)現(xiàn)自動(dòng)轉(zhuǎn)換。
12.sleep()和wait()有什么區(qū)別?
sleep是Thread類的方法,wait是Object類的方法。
sleep是自動(dòng)喚醒,wait需要其他線程來喚醒。
sleep不會(huì)釋放同步鎖,wait會(huì)釋放同步鎖。
sleep可以用在任意方法中,wait只能用在同步方法或同步塊中。
13.Sleep()
不會(huì)釋放對(duì)象鎖 到時(shí)自動(dòng)恢復(fù) wait()會(huì)釋放對(duì)象鎖 進(jìn)入等待此對(duì)象的等待鎖定池 發(fā)出notify()方法后 才進(jìn)入等待鎖定池準(zhǔn)備對(duì)象鎖的獲取進(jìn)入運(yùn)行狀態(tài)
14.同步和異步有何異同,在什么情況下分別使用他們?
同步指同一時(shí)間只能一個(gè)線程執(zhí)行該方法,其他線程需要等待。異步指多個(gè)線程可以同時(shí)執(zhí)行某個(gè)方法,并共享同一資源。
同步可以讓訪問的資源具有安全性,因?yàn)橥粫r(shí)間只能一個(gè)線程對(duì)其進(jìn)行訪問。但是效率不高。
異步對(duì)訪問的資源會(huì)造成不穩(wěn)定性,比如多個(gè)線程同時(shí)訪問一個(gè)資源,一個(gè)在修改、一個(gè)在刪除、一個(gè)在讀取,這樣可能會(huì)造成資源的混亂。但是由于同時(shí)運(yùn)行,執(zhí)行效率得到提高。
15.啟動(dòng)一個(gè)線程是用run()還是start()?
start()方法啟動(dòng)線程,run方法是線程執(zhí)行的主方法。
16.java中有幾種類型的流?JDK為每種類型的流提供了一些抽象類以供繼承,請(qǐng)說出他們分別是哪些類?
java中有三種流,分別是字節(jié)流(InputStream、OutputStream)、字符流(Reader、Writer)、對(duì)象流(ObjectInputStream、ObjectOutputStream)。
17.字節(jié)流與字符流的區(qū)別?
字節(jié)流用于讀取或?qū)懗龆M(jìn)制數(shù)據(jù),比如圖片、影像等數(shù)據(jù)。
字符流用于讀取或?qū)懗鲎址麛?shù)據(jù),比如傳輸字符串。
所有的數(shù)據(jù)都可以通過字節(jié)流來進(jìn)行處理,不過如果是字符數(shù)據(jù),用字節(jié)流還需要進(jìn)行轉(zhuǎn)換后傳輸,如果使用字符流可以方便數(shù)據(jù)的轉(zhuǎn)換。
18.error和exception有什么區(qū)別?
error是系統(tǒng)錯(cuò)誤,代碼不能處理的錯(cuò)誤,比如內(nèi)存溢出、堆棧溢出等。
exception是程序異常,可以通過代碼try-catch進(jìn)行處理,比如空指針異常,數(shù)組越界等。
19.談?wù)刦inal,finally,finalize的區(qū)別?
final是修飾符,可以修飾類(不能被繼承)、屬性(常量)、和方法(不能被重寫)。
finally是異常處理塊中的代碼塊,表示無論如何都會(huì)執(zhí)行的代碼塊。
finalize是Object類的方法,該方法在對(duì)象被垃圾回收之前執(zhí)行的方法。
20.當(dāng)一個(gè)線程進(jìn)入一個(gè)對(duì)象的一個(gè)synchronized方法后,其它線程是否可進(jìn)入此對(duì)象的其它方法?
如果其他方法沒有加synchronized的話是可以進(jìn)入的。
【70道Android面試題】相關(guān)文章:
android面試題11-07
android面試題大全12-30
android面試題摘要02-20
android面試題目匯總02-17
Android工程師面試題匯總11-03
百度面試Android面試題08-01
2016年最新最全Android 面試題11-06