更新時間:2020-08-04 15:52:24 來源:動力節點 瀏覽2528次
接口與抽象類的區別?
一個類可以實現多個接口,但只能繼承最多一個抽象類
抽象類可以包含具體的方法;接口所有的方法都是抽象的(不管是否對接口聲明都是抽象的)(jdk1.7以前,jdk1.8開始新增功能接口中有default方法,有興趣自己研究)
抽象類可以聲明和使用字段;接口則不能,但是可以創建靜態的final常量
抽象類中的方法可以是public、protected、private或者默認的package;接口的方法都是public(不管是否聲明,接口都是公開的)
抽象類可以定義構造函數,接口不能。
接口被聲明為public,省略后,包外的類不能訪問接口
Java中的異常有哪幾類?分別怎么使用?
Throwable包含了錯誤(Error)和異常(Excetion兩類)
Exception又包含了運行時異常(RuntimeException,又叫非檢查異常)和非運行時異常(又叫檢查異常)(1)Error是程序無法處理了,如果OutOfMemoryError、OutOfMemoryError等等,這些異常發生時,java虛擬機一般會終止線程.
-(2)運行時異常都是RuntimeException類及其子類,如NullPointerException、IndexOutOfBoundsException等,這些異常是不檢查的異常,是在程序運行的時候可能會發生的,所以程序可以捕捉,也可以不捕捉.這些錯誤一般是由程序的邏輯錯誤引起的,程序應該從邏輯角度去盡量避免.
(3)檢查異常是運行時異常以外的異常,也是Exception及其子類,這些異常從程序的角度來說是必須經過捕捉檢查處理的,否則不能通過編譯.如IOException、SQLException等
常用的集合類有哪些?比如List如何排序?
常用的集合分為List(有序排放)、Map(以名和值一一對應的存放)、Set(既無序也沒名).在這三者之中其中List和Set是Collection接口的子接口,而Map不是Collection接口的子接口.
List常用有:ArrayList和LinkedList,Vecotr(線程安全)
Set常用有:TreeSet,HashSet元素不可重復,內部結構用HashMap,Key為Set的item值,value為一個固定的常量。java.util.Collections.newHashSetFromMap(),內部其實質還是通過ConcurrentHashMap實現線程安全的。
Map:TreeMap和LinkedHashMap,HashMap,HashTable(線程安全)
sort()方法排序的本質其實也是借助Comparable接口和Comparator接口的實現,一般有2種用法:
直接將需要排序的list作為參數傳入,此時list中的對象必須實現了Comparable接口,然后sort會按升序的形式對元素進行排序;
傳入list作為第一個參數,同時追加一個Comparator的實現類作為第二個參數,然后sort方法會根據Comparator接口的實現類的邏輯,按升序進行排序;
ArrayList和LinkedList內部的實現大致是怎樣的?他們之間的區別和優缺點?
Linkedlist集合的優勢:添加元素時可以指定位置,比ArrayList集合添加元素要快很多。
Linkedlist在get很慢,LinkedList在get任何一個位置的數據的時候,都會把前面的數據走一遍。盡量不使用,而使用foreach LinkedList的方式來直接取得數據。
這兩種方式各有優缺,為更好的使用可以將這兩者進行聯合使用,使用Linkedlist集合進行存儲和添加元素,使用Arraylist集合進行get獲取元素。
內存溢出是怎么回事?請舉一個例子?
內存溢出(out of memory)通俗理解就是內存不夠,在計算機程序中通俗的理解就是開辟的內存空間得不到釋放。
OOM有堆溢出,棧溢出,方法區溢出(主要是動態生成class的處理過多)
==和equals的區別?
==號在比較基本數據類型時比較的是值,而用==號比較兩個對象時比較的是兩個對象的地址值
Object類中equals()方法底層依賴的是==號,那么,在所有沒有重寫equals()方法的類中,調用equals()方法其實和使用==號的效果一樣,然而,Java提供的所有類中,絕大多數類都重寫了equals()方法,重寫后的equals()方法一般都是比較兩個對象的值
hashCode方法的作用?
hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用來在散列存儲結構中確定對象的存儲地址的;
如果兩個對象相同,就是適用于equals(Java.lang.Object)方法,那么這兩個對象的hashCode一定要相同;
如果對象的equals方法被重寫,那么對象的hashCode也盡量重寫,并且產生hashCode使用的對象,一定要和equals方法中使用的一致,否則就會違反上面提到的第2點;
兩個對象的hashCode相同,并不一定表示兩個對象就相同,也就是不一定適用于equals(java.lang.Object)方法,只能夠說明這兩個對象在散列存儲結構中,如Hashtable,他們“存放在同一個籃子里”。
以上就是動力節點java培訓機構的小編針對“2020年企業常用的高級java面試題及答案”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習