Android面試大全(四大組件篇)
Android面試大全(性能優(yōu)化篇)
Android面試大全(異常處理篇)
Android面試大全(開源框架篇)
Android面試大全(網(wǎng)絡(luò)篇)
Android面試大全(java篇)
java基礎(chǔ)
- java三大特性
封裝、繼承、多態(tài) - 多態(tài)實(shí)現(xiàn)原理
- 基本數(shù)據(jù)類型及占用的字節(jié)數(shù)
8種
| 類型 | 包裝類 | 所占位數(shù)(二進(jìn)制) | 所占字節(jié)數(shù) |
|---|---|---|---|
| byte(字節(jié)) | Byte | 8 | 1 |
| short(短整型) | Short | 16 | 2 |
| int(整型) | Integer | 32 | 4 |
| long(長(zhǎng)整型) | Long | 64 | 8 |
| float(浮點(diǎn)型) | Float | 32 | 4 |
| double(雙精度) | Double | 64 | 8 |
| char(字符型) | Character | 16 | 2 |
| boolean(布爾型) | Boolean | 1 |
switch支持什么類型
jdk1.6以及之前版本是byte、char、short、int、枚舉 五種
jdk1.7時(shí),又增加了String,所以相對(duì)于JDK1.7而言就是六種String StringBuffer StringBuilder說(shuō)明及區(qū)別
字符串是否可改變
String:String中的字符串是固定的,即常量
StringBuffer StringBuilde都可改變字符串的長(zhǎng)度等,通過(guò).append()方法進(jìn)行字符串的拼接線程安全方面:
StringBuilder:線程非安全的
StringBuffer:線程安全的執(zhí)行速度比較
StringBuilder>StringBuffer>String(少量數(shù)據(jù)其實(shí)區(qū)別不大)使用經(jīng)驗(yàn):
1.操作少量的數(shù)據(jù)用 :String
2.單線程操作字符串緩沖區(qū) 下操作大量數(shù)據(jù) :StringBuilder
3.多線程操作字符串緩沖區(qū) 下操作大量數(shù)據(jù) :StringBuffer(線程安全)Java集合繼承子類繼承關(guān)系
-
Collection
- List
- LinkedList
- ArrayList
- Vector
- Stack
- List
-
Map
- HashTable
- HashMap
- WeakHashMap
進(jìn)程與線程區(qū)別
一個(gè)程序至少有一個(gè)進(jìn)程,一個(gè)進(jìn)程至少有一個(gè)線程
線程是比進(jìn)程更小的劃分單位,多線程程序的并發(fā)性高
進(jìn)程在執(zhí)行的過(guò)程中擁有獨(dú)立的內(nèi)存單元,而線程是多個(gè)線程共享內(nèi)存單元,從而提高程序運(yùn)行效率
兩者執(zhí)行過(guò)程有所區(qū)別。每個(gè)獨(dú)立的線程有一個(gè)程序運(yùn)行的入口、順序執(zhí)行序列以及程序的出口,但是線程是不能獨(dú)立運(yùn)行的,必須依附在應(yīng)用程序中,有應(yīng)用程序提供多個(gè)線程執(zhí)行控制。
線程是進(jìn)程的一個(gè)實(shí)體,是CPU調(diào)度和分派的基本單元,是比進(jìn)程更小的能獨(dú)立運(yùn)行的基本單位,線程自己不用有系統(tǒng)資源,只擁有在運(yùn)行中必不可少的資源,它可與同屬一個(gè)進(jìn)程的其他線程共享進(jìn)程所擁有的 全部資源
一個(gè)線程可以創(chuàng)建和撤銷另一個(gè)線程;統(tǒng)一進(jìn)程中線程可以多個(gè)并發(fā)進(jìn)行-
final finally finalize都是干什么用的?有什么區(qū)別
-
final
final 是java中的關(guān)鍵字。如果一個(gè)類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。一個(gè)類不能既被聲明為 abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們?cè)谑褂弥胁槐桓淖儭1宦暶鳛閒inal的變量必須在聲明時(shí)給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載。
final變量的初始化:
①:在定義的時(shí)候初始化。
②:可以在初始化塊中初始化,不可以在靜態(tài)初始化塊中初始化。
③:靜態(tài)final變量可以在靜態(tài)初始化塊中初始化,不可以在初始化塊中初始化。
④:還可以在類的構(gòu)造器中初始化,但是靜態(tài)final變量不可以。
-
final
finally
java中異常處理時(shí),提供 finally 塊來(lái)執(zhí)行操作。在開發(fā)者使用finally的情況下,如果程序拋出一個(gè)異常,那么相匹配的 catch 模塊會(huì)執(zhí)行,然后程序就會(huì)進(jìn)入 finally 塊中,如果程序正常執(zhí)行(未發(fā)生異常),在執(zhí)行完程序后(try{}部分)同樣會(huì)進(jìn)入finally中,即無(wú)論程序是否異常,finally始終都會(huì)進(jìn)入(開發(fā)者可以在此模塊中做相應(yīng)的操作,do everything what you want......)。有一種特殊情況可能不會(huì)進(jìn)入,當(dāng)程序還沒執(zhí)行完畢,強(qiáng)制結(jié)束程序進(jìn)程。(這個(gè)是整個(gè)程序被終止了,和本身程序的執(zhí)行順序并沒有什么關(guān)系)finalize
方法名,java允許使用 finalize() 方法在垃圾收集器中將對(duì)象從內(nèi)存中清除出去之前做必要的清理工作。這個(gè)方法是由垃圾收集器在確定這個(gè)對(duì)象沒有被引用時(shí)對(duì)這個(gè)對(duì)象調(diào)用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統(tǒng)資源或者執(zhí)行其他清理工作。finalize() 方法是在垃圾收集器刪除對(duì)象之前對(duì)這個(gè)對(duì)象調(diào)用的。java的四種引用?
強(qiáng)引用、弱引用、軟引用、虛引用內(nèi)部類、靜態(tài)內(nèi)部類、匿名內(nèi)部類、局部?jī)?nèi)部類
==與equals的區(qū)別
Java反射機(jī)制
Java注解相關(guān)
Java泛型
Java枚舉
Java操作文件的基本API,RdomAccessFile
訪問網(wǎng)絡(luò)的基本API. Socket
Java異常有幾種?什么是運(yùn)行時(shí)異常,有什么特點(diǎn)?
接口與抽象類的區(qū)別
什么導(dǎo)致線程阻塞
ArrayMap對(duì)比HashMap
HashMap的實(shí)現(xiàn)原理
Java排序算法
接口的意義
規(guī)范、擴(kuò)展、回調(diào)抽象類的意義
為其子類提供一個(gè)公共的類型,封裝子類中重復(fù)的內(nèi)容,定義抽象方法。子類可有又不同的實(shí)現(xiàn)方法,但是定義是一致的內(nèi)部類的作用
內(nèi)部類可以用多個(gè)實(shí)例,每個(gè)實(shí)例都有自己的狀態(tài)信息,并且與其他外圍對(duì)象的信息相互獨(dú)立
在單個(gè)外圍類中,可以讓多個(gè)內(nèi)部類以不同的方式實(shí)現(xiàn)同一個(gè)接口或者繼承同一個(gè)類
創(chuàng)建內(nèi)部類對(duì)象的時(shí)刻并不依賴于外圍內(nèi)對(duì)象的創(chuàng)建
內(nèi)部類沒有“is-a”關(guān)系,是一個(gè)獨(dú)立的實(shí)體
內(nèi)部類提供了更好的封裝,除了該外圍類,其他類都不能訪問
父類的靜態(tài)方法能否被子類重寫
不能
子類繼承父類后,用相同的靜態(tài)方法和非靜態(tài)方法,這是非靜態(tài)方法會(huì)覆蓋父類中的非靜態(tài)方法(即方法的重寫),父類的該靜態(tài)方法被隱藏(若對(duì)象是父類則調(diào)用該隱藏的方法),子類可繼承父類的靜態(tài)與非靜態(tài)方法
正在持續(xù)更新中……