八種基本數據類型的大小,以及他們的封裝類java
byte,char,short,int,long,float,double,boolean設計模式
Byte,Character,Short,Integer,Long,Float,Double,Boolean int是基本類型,Integer是保證類;Integer默認值爲null,int默認值爲0;Integer須要實例才能使用,實例對象放在堆中,對象的引用放在棧裏數組
引用數據類型安全
類class,接口interface,枚舉類Enum,多線程
Switch可否用string作參數併發
Jdk1.7之前不能使用string做爲參數,1.7開始可使用分佈式
而原理是經過調用string.hashcode方法將string類型轉換爲int類型ide
equals與==的區別工具
equals是比較兩個對象屬性是否相同,經常使用於比較對象ui
==是比較兩個值是否相同,引用類型是比較兩個地址值是否相同
自動裝箱,常量池
Object有哪些公用方法
Wait,notify,toString,equals,hashcode,notifyAll,getClass
Java的四種引用,強弱軟虛,用到的場景
New Object object = ‘hello’ 強引用 JVM不會回收,除非定義爲null
SoftReference 軟引用 JVM在內存充足時,不會回收,內存不足時纔會回收
WeakReference 弱引用 JVM均會回收,不管內存是否充足
Hashcode的做用
得到hashcode值
HashMap的hashcode的做用
得到hashcode值,用於數據插入時的判斷
爲何重載hashCode方法?
原生的hashCode是Object類下的方法,比較的內存地址是否相同,兩個對象,在重寫後的equals比較下返回true,可是原生的hashcode指向的內存地址不一樣,就會認爲是兩個不一樣的對象,不知足實際狀況
ArrayList、LinkedList、Vector的區別
Arraylist和Vector底層都是數組實現,
arraylist是線程不安全的,
vector是線程安全的,全部的方法是同步的
LinkedList底層是經過雙鏈表實現的,非線程安全
數組初始容量是10,擴容是1.5倍的
String、StringBuffer與StringBuilder的區別
StringBuffer和StringBuilder都是用於大字符串存儲,
StringBuilder是線程不安全的
Map、Set、List、Queue、Stack的特色與用法
HashMap和HashTable的區別
Hashmap是線程不安全的,
Hashtable是線程安全的
Hashtable運用了syn鎖
JDK7與JDK8中HashMap的實現
原先是數組+鏈表
1.8中變成了數組+鏈表,鏈表長度超過8時,變成紅黑樹
HashMap和ConcurrentHashMap的區別,HashMap的底層源碼
ConcurrentHashMap本質上也是數組+鏈表,他是由segment數組和hashEntry數組組成,每一個hashEntry中是一個鏈表結構。segment是一個可重入的reentrantLock,當要對hashEntry數組下的數據進行操做時,先須要得到segment鎖
ConcurrentHashMap能徹底替代HashTable嗎
ConcurrentHashMap是弱一致性的
HashTable是強一致性的
若是某個Segment實例中的put將一個Entry加入到了table中,在未執行count賦值操做以前有另外一個線程執行了同一個Segment實例中的get,來獲取這個剛加入的Entry中的value,那麼是有可能取不到的!
爲何HashMap是線程不安全的
操做沒有上鎖
如何線程安全的使用HashMap
不考慮多線程狀況下用hashmap
Put方法前,加syn操做
操做hashmap前加個分佈式鎖
多併發狀況下HashMap是否還會產生死循環
1.7之前hashmap中的鏈表插入採用頭插入法,這種狀況下會有死循環形成,1.8中改成尾插入法,不會形成死循環
TreeMap、HashMap、LindedHashMap的區別
Hashmap無序,線程不安全
LindedHashMap有序
TreeMap一樣有序
Collection包結構,與Collections的區別
Collection是集合類的頂級接口,子接口有Set,Map,List Collecitons只是一個集合的工具類
try?catch?finally,try裏有return,finally還執行麼
會執行
Excption與Error包結構,OOM你遇到過哪些狀況,SOF你遇到過哪些狀況
http://www.javashuo.com/article/p-kvoxtwyx-gt.html
Java(OOP)面向對象的三個特徵與含義
Override和Overload的含義去區別
override重寫 方法的參數個數及類型,以及返回值類型均不可發生變化,經常使用語接口實現類下重寫某個方法
overload重載,方法的入參個數及類型發生變化,返回值類型變化與否都可
Interface與abstract類的區別
Static?class?與non?static?class的區別
java多態的實現原理
foreach與正常for循環效率對比
Java?IO與NIO
java反射的做用於原理
泛型經常使用特色
解析XML的幾種方式的原理與特色:DOM、SAX
Java1.7與1.8,1.9,10 新特性
設計模式:單例、工廠、適配器、責任鏈、觀察者等等
JNI的使用
AOP是什麼
OOP是什麼
AOP與OOP的區別