1、面試答案之java基礎

JAVA 基礎  

1、JAVA 中的幾種基本數據類型是什麼,各自佔用多少字節。

答案:8位:Byte(字節型);  16位:short(短整型)、char(字符型);  32位:int(整型)、float(單精度型/浮點型);    64位:long(長整型)、double(雙精度型);    最後一個:boolean(布爾類型   


2、String 類能被繼承嗎,爲什麼。   

答案:不可以,因爲String類有final修飾符,而final修飾的類是不能被繼承的,實現細節不允許改變。

public final class String implements java.io.Serializable, Comparable<String>, CharSequence {}

3、String,Stringbuffer,StringBuilder 的區別。 

答案:String是字符串常量、StringBuffer 是字符串變量(線程安全)、StringBuilder是字符串變量(非線程安全)

String面試總結:https://blog.csdn.net/bingxuesiyang/article/details/89920445


4、ArrayList 和 LinkedList 有什麼區別。  

答案:https://www.cnblogs.com/Jacck/p/8034900.html


5、講講類的實例化順序,比如父類靜態數據,構造函數,字段,子類靜態數據,構造函數,字段,當 new 的時候,他們的執行順序。    

答案:父類靜態成員變量>父類靜態代碼塊>子類靜態成員變量>子類靜態代碼塊>父類普通成員變量>父類普通代碼塊>父類構造函數>子類普通成員變量>子類普通代碼塊>子類構造函數


6、用過哪些 Map 類,都有什麼區別,HashMap 是線程安全的嗎,併發下使用的 Map 是什麼,他們內部原理分別是什麼,比如存儲方式,hashcode,擴容,默認容量等。    

答案:https://blog.csdn.net/bingxuesiyang/article/details/89146742  主要是HashMap與currentHashMap的對比


7、JAVA8 的 ConcurrentHashMap 爲什麼放棄了分段鎖,有什麼問題嗎,如果你來設計,你如何設計。    

答案:https://blog.csdn.net/bingxuesiyang/article/details/89146742  主要是HashMap與currentHashMap的對比有沒有有順序的


8、有沒有有順序的 Map 實現類,如果有,他們是怎麼保證有序的。 

答案:https://www.cnblogs.com/chen-lhx/p/8432422.html 

TreeMap和LinkedHashMap是有序的。 TreeMap默認是升序的,定製化排序使用Comparator。


9、抽象類和接口的區別,類可以繼承多個類麼,接口可以繼承多個接口麼,類可以實現多個接口麼。    

答案:類用class關鍵字修飾,接口用interface關鍵字修飾。

類只可以單繼承但是可以多級繼承,類可以實現多個接口。接口可以多繼承,一個接口可以繼承多個其他接口。


10、繼承和聚合的區別在哪。  

答案:https://blog.csdn.net/qq_31655965/article/details/54645220


11、IO 模型有哪些,講講你理解的 nio,他和 bio,aio 的區別是啥,談談 reactor 模型。    

答案:https://blog.csdn.net/bingxuesiyang/article/details/89883093 IO 模型 

答案:https://blog.csdn.net/bingxuesiyang/article/details/89888664 Linux的五種IO模型


12、反射的原理,反射創建類實例的三種方式是什麼。

答案:https://blog.csdn.net/qq_35415600/article/details/70199995


13、反射中,Class.forName 和 ClassLoader 區別。    

答案:https://blog.csdn.net/bingxuesiyang/article/details/89946315

Class.forName("com.test.mytest.ClassForName");會初始化類

ClassLoader.getSystemClassLoader().loadClass("com.test.mytest.ClassForName");不會初始化類


14、描述動態代理的幾種實現方式,分別說出相應的優缺點 、動態代理與 cglib 實現的區別、爲什麼 CGlib 方式可以對接口實現代理。

答案:1、https://blog.csdn.net/nimqbiyq/article/details/81166893  

           2、https://blog.csdn.net/riemann_/article/details/86849078   

           3、https://www.cnblogs.com/PerkinsZhu/p/6549211.html 


15、final 的用途。

答案:

  •  被final修飾的類不可以被繼承,final類中的所有成員方法都會被隱式地指定爲final方法。
  •  被final修飾的方法不可以被重寫
  •  被final修飾的變量不可以被改變,不可變的是變量的引用,引用指向對象的內容是可以變的。

16、寫出三種單例模式實現。

懶漢式單例,餓漢式單例,雙重檢查等 

答案:https://blog.csdn.net/bingxuesiyang/article/details/88620263


17、如何在父類中爲子類自動完成所有的 hashcode 和 equals 實現?這麼做有何優劣。    

答案:https://java-min.iteye.com/blog/1416727


18、請結合 OO 設計理念,談談訪問修飾符 public、private、protected、default 在應用設計中的作用。

答案:

public: Java語言中訪問限制最寬的修飾符,一般稱之爲“公共的”。被其修飾的類、屬性以及方法不 
     僅可以跨類訪問,而且允許跨包(package)訪問。 

protect: 介於public 和 private 之間的一種訪問修飾符,一般稱之爲“保護形”。被其修飾的類、 
     屬性以及方法只能被類本身的方法及子類訪問,即使子類在不同的包中也可以訪問。

default:即不加任何訪問修飾符,通常稱爲“默認訪問模式“。該模式下,只允許在同一個包中進行訪 
     問。

private: Java語言中對訪問權限限制的最窄的修飾符,一般稱之爲“私有的”。被其修飾的類、屬性以 
     及方法只能被該類的對象訪問,其子類不能訪問,更不能允許跨包訪問。 


19、深拷貝和淺拷貝區別。  

答案:https://blog.csdn.net/tounaobun/article/details/8491392

淺拷貝:拷貝的是引用,兩個引用指向內存中同一個對象。深拷貝拷貝的是對象,會在內存中新建一個對象,兩個引用分別指向不同的對象。


20、數組和鏈表數據結構描述,各自的時間複雜度。    

答案:https://blog.csdn.net/bingxuesiyang/article/details/90023989


21、error 和 exception 的區別,CheckedException,RuntimeException 的區別,請列出 5 個運行時異常, error 和 exception 的區別

答案: https://blog.csdn.net/woshixuye/article/details/8230407


22、在自己的代碼中,如果創建一個 java.lang.String 類,這個類是否可以被類加載器加載?爲什麼。     

答案:https://blog.csdn.net/bingxuesiyang/article/details/90033405 類與類加載器

https://blog.csdn.net/bingxuesiyang/article/details/90036983 雙親委派模型


23、說一說你對 java.lang.Object 對象中 hashCode 和 equals 方法的理解。在什麼場景下需要重新實現這兩個方法。    

答案:https://blog.csdn.net/bingxuesiyang/article/details/90041772


24、在 jdk1.5 中,引入了泛型,泛型的存在是用來解決什麼問題。   

答案:https://www.cnblogs.com/wuqinglong/p/9456193.html


 25、這樣的 a.hashcode() 有什麼用,與 a.equals(b)有什麼關係。

答案:https://blog.csdn.net/bingxuesiyang/article/details/90041772  


26、有沒有可能 2 個不相等的對象有相同的 hashcode。

答案:有可能,只不過概率比較低,取決於hashcode的算法實現。   


27、Java 中的 HashSet 內部是如何工作的。

 答案:http://www.importnew.com/19208.html 內部主要通過HashMap實現  


28、什麼是序列化,怎麼序列化,爲什麼序列化,反序列化會遇到什麼問題,如何解決。

答案:https://blog.csdn.net/bingxuesiyang/article/details/90080587    https://blog.csdn.net/riemann_/article/details/87835260 

序列化時,如果沒有聲明serialVersionUID,在反序列化之前如果修改了類的屬性,就會發生“java.io.InvalidClassException”錯誤,如果序列化時聲明瞭serialVersionUID,那麼反序列化時,即使修改了類的屬性也可以反序列化成功,只不過如果是修改原來的屬性,或者新增屬性,反序列化後修改的或新增的屬性爲null,因爲匹配不上原來序列化的屬性了。


29、java8 的新特性。

答案:   https://www.csdn.net/gather_4a/Ntzacg4sMDgtZWR1.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章