1.List a = new ArrayList()和ArrayList a = new ArrayList()的區(qū)別禁添?
第一種定義苗沧,是很好的面向接口編程的習(xí)慣忌怎。
比如你有這么一個(gè)方法供別人調(diào)用:
public List getXXXList(){
List list = new ArrayList();
…
return list;
}
現(xiàn)在是new ArrayList()憔足,如果萬一以后要改成new LinkedList的話,這個(gè)方法的返回類型就不需要去改變酪耕,并且調(diào)用這個(gè)方法的所有類都不需要修改导梆,這樣就降低了修改程序的成本和風(fēng)險(xiǎn),提高了程序的可復(fù)用性,這就是面向接口編程的好處问潭。
Java的多態(tài)猿诸,List只是定義了很多接口,而對(duì)于這些接口狡忙,有各種各樣的不同實(shí)現(xiàn)方法梳虽,ArrayList和LinkedList中的實(shí)現(xiàn)方法就各有不同,會(huì)具備各自的特性和特有方法灾茁。當(dāng)你僅僅使用List的通用接口方法時(shí)窜觉,定義成List是非常好的習(xí)慣。
如果寫共通類共通方法的話北专,建議少用特性禀挫,多面向接口。
2.數(shù)據(jù)插入拓颓、數(shù)據(jù)刪除语婴、數(shù)據(jù)更新、數(shù)據(jù)查詢ArrayList和LinkedList的對(duì)比
數(shù)據(jù)插入時(shí):LinkedList
數(shù)據(jù)刪除時(shí):LinkedList
數(shù)據(jù)更新時(shí):ArrayList —— LinkedList地址不一樣驶睦,查詢慢
數(shù)據(jù)查詢時(shí):ArrayList
3.靜態(tài)嵌套類和內(nèi)部類的不同
4.動(dòng)態(tài)代理和靜態(tài)代理的區(qū)別
5.Java的類加載器的種類有哪些砰左?
參考好文 https://www.ibm.com/developerworks/cn/java/j-lo-classloader/#minor1.1
6.類什么時(shí)候被初始化
7.Java類加載器體系之ClassLoader雙親委托機(jī)制
參考 https://blog.csdn.net/javazejian/article/details/73413292
8.描述一下JVM加載class
9.獲得一個(gè)類對(duì)象有哪些方式
方法1:類型.class,例如:String.class
方法2:對(duì)象.getClass()场航,例如:"hello".getClass()
方法3:Class.forName()缠导,例如:Class.forName("java.lang.String")
10.wait()和sleep()的區(qū)別
sleep來自Thread類,wait來著Object類
調(diào)用sleep()方法的過程中溉痢,線程不會(huì)釋放對(duì)象鎖僻造。而調(diào)用wait方法線程會(huì)釋放對(duì)象鎖
sleep睡眠后不讓出系統(tǒng)資源,wait讓出系統(tǒng)資源其他線程可以占用CPU
sleep(milliseconds)需要指定一個(gè)睡眠時(shí)間孩饼,時(shí)間一到會(huì)自動(dòng)喚醒