1 八種基本數(shù)據(jù)類型的大小绣的,以及他們的封裝類
2 引用數(shù)據(jù)類型
類、接口欲账、數(shù)組屡江;
在棧中存放別名,相當(dāng)于“指針”赛不,指向 堆的變量(new的)惩嘉;
當(dāng)堆的變量不再被引用,由GC回收
3 Switch能否用string做參數(shù)
jdk1.7踢故,字符串文黎,字符類型,枚舉殿较,布爾耸峭;
4 equals與==的區(qū)別
字符串變量,==比較內(nèi)存存放地址淋纲,equals比較內(nèi)容劳闹;
非字符串變量,比較兩個(gè)引用變量是否指向同一個(gè)對(duì)象帚戳,即在堆內(nèi)存的首地址玷或;
Object類中的equals方法是用來比較“地址”的;
5 自動(dòng)裝箱片任,常量池
6 Object有哪些公用方法
clone 保護(hù)方法偏友,實(shí)現(xiàn)對(duì)象的淺復(fù)制,只有實(shí)現(xiàn)了Cloneable接口才可以調(diào)用該方法对供,否則拋出CloneNotSupportedException異常
equals 在Object中與==是一樣的位他,子類一般需要重寫該方法
hashCode 該方法用于哈希查找,重寫了equals方法一般都要重寫hashCode方法产场。這個(gè)方法在一些具有哈希功能的Collection中用到
getClass final方法鹅髓,獲得運(yùn)行時(shí)類型
wait 使當(dāng)前線程等待該對(duì)象的鎖,當(dāng)前線程必須是該對(duì)象的擁有者京景,也就是具有該對(duì)象的鎖窿冯。
notify 喚醒在該對(duì)象上等待的某個(gè)線程
notifyAll 喚醒在該對(duì)象上等待的所有線程
toString 轉(zhuǎn)換成字符串,一般子類都有重寫确徙,否則打印句柄
7 java的四種引用醒串,強(qiáng)弱軟虛执桌,用到的場景
強(qiáng)引用:對(duì)象;
軟引用:把對(duì)象賦值為null芜赌,內(nèi)存不足時(shí)會(huì)被回收仰挣;
弱引用:無object對(duì)象存放,new后直接使用缠沈;
虛引用(PhantomReference):在任何時(shí)候都可能被垃圾回收器回收
8 Hashcode的作用
尋域(尋找某個(gè)對(duì)象在集合中區(qū)域位置)
返回該對(duì)象的哈希碼值
9 HashMap的hashcode的作用
10 為什么重載hashCode方法膘壶?
11 ArrayList、LinkedList洲愤、Vector的區(qū)別
ArrayList-數(shù)組颓芭,遍歷方式(迭代器Iterator、for禽篱、foreach)畜伐,適合隨機(jī)查找和遍歷;
LinkedList-雙向鏈表躺率,適合動(dòng)態(tài)插入和刪除元素;
Vector-數(shù)組万矾,支持線程同步悼吱;
ArrayList和Vector都是使用Object類型的數(shù)組來存儲(chǔ)數(shù)據(jù)的,
ArrayList的默認(rèn)容量是0良狈,Vector的默認(rèn)容量是10后添;
擴(kuò)容的本質(zhì)是產(chǎn)生一個(gè)新數(shù)組,將原數(shù)組的數(shù)據(jù)復(fù)制到新數(shù)組薪丁,
再將新的元素添加到新數(shù)組中遇西,使用的方法是Arrays.copyOf(),
其中ArrayList擴(kuò)容后的容量是之前的1.5倍严嗜,
Vector默認(rèn)情況下擴(kuò)容后的容量是之前的2倍粱檀。
12 String、StringBuffer與StringBuilder的區(qū)別
運(yùn)行速度快慢為:StringBuilder > StringBuffer > String漫玄;
StringBuffer是線程安全茄蚯;
13 Map、Set睦优、List渗常、Queue、Stack的特點(diǎn)與用法
Map:一個(gè)映射不能包含重復(fù)的鍵汗盘;每個(gè)鍵最多只能映射到一個(gè)值皱碘;
Set:不包含重復(fù)元素的 collection,不可隨機(jī)訪問包含的元素隐孽,只能Iterator單向遍歷癌椿;
List:隨機(jī)訪問家凯,有序,任意增刪如失;
Queue:先進(jìn)先出绊诲,LinkedList類實(shí)現(xiàn)了Queue接口;
Stack:繼承自Vector
14 HashMap和HashTable的區(qū)別
hash數(shù)組初始化時(shí)機(jī)不同褪贵,Hashtable在構(gòu)造函數(shù)初始化掂之,HashMap在第一次put()初始化hash數(shù)組。
在HashTable中脆丁,hash數(shù)組默認(rèn)大小是11世舰,增加的方式是old*2+1。
在HashMap中槽卫,hash數(shù)組默認(rèn)大小是16跟压,增加的方式是2*old而且一定是2的整數(shù).
HashMap允許空(null)鍵值(key),而HashTable不允許歼培。
HashMap把Hashtable的contains()方法去掉了震蒋,改成了containsvalue()和containsKey()。
Hashtable的方法是線程安全的躲庄,而HashMap不支持線程的同步查剖,不是線程安全的。
Hashtable使用Enumeration,HashMap使用Iterator噪窘。
hash值的使用不同笋庄,HashTable直接使用對(duì)象的hashCode。
15 JDK7與JDK8中HashMap的實(shí)現(xiàn)
JDK7中采用位桶+鏈表倔监,即散列鏈表直砂,
而JDK8中采用位桶+鏈表/紅黑樹,非線程安全的浩习。
當(dāng)某個(gè)位桶的鏈表的長度達(dá)到某個(gè)閥值的時(shí)候静暂,這個(gè)鏈表就將轉(zhuǎn)換成紅黑樹。
16 HashMap和ConcurrentHashMap的區(qū)別瘦锹,HashMap的底層源碼
17 ConcurrentHashMap能完全替代HashTable嗎
18 為什么HashMap是線程不安全的
19 如何線程安全的使用HashMap
20 多并發(fā)情況下HashMap是否還會(huì)產(chǎn)生死循環(huán)
21 TreeMap籍嘹、HashMap、LindedHashMap的區(qū)別
22 Collection包結(jié)構(gòu)弯院,與Collections的區(qū)別
23 try?catch?finally辱士,try里有return,finally還執(zhí)行么
24 Excption與Error包結(jié)構(gòu)听绳,OOM你遇到過哪些情況颂碘,SOF你遇到過哪些情況
25 Java(OOP)面向?qū)ο蟮娜齻€(gè)特征與含義
封裝:把客觀事物封裝成抽象的類;
繼承:獲得某個(gè)對(duì)象的屬性的方法;實(shí)現(xiàn)方式有:實(shí)現(xiàn)繼承與接口繼承头岔;
多態(tài):指一個(gè)類實(shí)例的相同方法在不同情形有不同表現(xiàn)形式塔拳;
26 Override和Overload的含義去區(qū)別
Override描述子類與父類方法的關(guān)系,Overload描述同一個(gè)類中方法的關(guān)系
Override的方法必須完全相同峡竣,權(quán)限不少于父類靠抑,Overload方法名必須相同,參數(shù)必須不同适掰,返回值可同可不同
27 Interface與abstract類的區(qū)別
接口作為系統(tǒng)和外界交互的 窗口颂碧,“規(guī)范”;抽象類作為系統(tǒng)中多個(gè)子類的共同父類类浪,“模板設(shè)計(jì)”载城;
.一個(gè)類最多繼承一個(gè)直接父類(普通類或者抽象類),可以實(shí)現(xiàn)多個(gè)接口费就。
29 foreach與正常for循環(huán)效率對(duì)比
for:數(shù)組結(jié)構(gòu)诉瓦;
foreach:編譯成字節(jié)碼之后,使用迭代器實(shí)現(xiàn)力细;比迭代器遍歷多了生成中間變量這一步睬澡,因?yàn)樾阅芤猜晕⑾陆盗艘恍?/p>
30 Java IO與NIO
31 java反射的作用于原理
32 泛型常用特點(diǎn)
33 解析XML的幾種方式的原理與特點(diǎn):DOM、SAX
34 Java1.7與1.8,1.9,10 新特性
35 設(shè)計(jì)模式:單例艳汽、工廠猴贰、適配器、責(zé)任鏈河狐、觀察者等等
36 JNI的使用
37 AOP是什么
38 OOP是什么
39 AOP與OOP的區(qū)別