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(長整型) | 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說明及區(qū)別
字符串是否可改變
String:String中的字符串是固定的汁展,即常量
StringBuffer StringBuilde都可改變字符串的長度等,通過.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í)行的過程中擁有獨(dú)立的內(nèi)存單元食绿,而線程是多個(gè)線程共享內(nèi)存單元,從而提高程序運(yùn)行效率
兩者執(zhí)行過程有所區(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 塊來執(zhí)行操作精拟。在開發(fā)者使用finally的情況下燎斩,如果程序拋出一個(gè)異常,那么相匹配的 catch 模塊會(huì)執(zhí)行蜂绎,然后程序就會(huì)進(jìn)入 finally 塊中栅表,如果程序正常執(zhí)行(未發(fā)生異常),在執(zhí)行完程序后(try{}部分)同樣會(huì)進(jìn)入finally中师枣,即無論程序是否異常怪瓶,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)部類、局部內(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ù)更新中……