免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
java面試題 --- 基礎

前段時間給大家發(fā)過一份 java 面試題的思維導圖,接下來我會用通俗、簡潔、易記的話將其整理成一系列的文章,加深自己印象的同時,也希望能助大家跳槽成功!


1. 說說 java 的基本數(shù)據(jù)類型以及所占的字節(jié)數(shù)。

  • byte、short、int、long,1、2、4、8;boolean、char、float、double,1、2、4、8。

2. 談談你對接口和抽象類的理解。

  • 抽象類是對一組事務的共同點進行提取,比如貓和狗,對它們的共同點進行提取,抽象成一個動物類;
  • 接口是對一組行為的規(guī)范,實現(xiàn)接口就必須實現(xiàn)接口里面定義的方法,比如 List 接口規(guī)范了它有 add、remove 等方法,那么 List 的實現(xiàn)類就必須按照它的規(guī)范去實現(xiàn) add、remove 等方法。

3. 各權限修飾符有什么區(qū)別?

  • public 修飾的任一地方都可以訪問;
  • protect 修飾的同一包下的以及它的子類可以訪問;
  • 不寫(default),只有同一包下的可以訪問;
  • private 修飾的只有當前類以及當前類的內部類能訪問。

4. switch 可以作用在哪些類型上?

  • byte、short、int、char、String、enum

5. 什么是內部類?優(yōu)點是什么?

  • 寫在一個類里面的類,叫做內部類。優(yōu)點是對外部不可見,有很好的封裝性,而且可以訪問私有變量。

6. 什么是 java 的多態(tài)?

  • 多態(tài)就是要到運行時才能確定類型,體現(xiàn)為重載和重寫。

7. 為什么重寫了 equals 方法就要重寫 hashCode 方法?

  • 因為有個規(guī)定,兩個對象相等那么 hashCode 值就得相同,而 hashCode 值本來是根據(jù)對象在內存中的地址值計算出來的,對象不同那么 hashCode 一定不會相同,所以如果重寫了 equals 方法,就一定得重寫 hashCode 方法。

8. 類的初始化順序你知道嗎?

  • 加載的先后順序是:父類靜態(tài)成員變量、父類靜態(tài)代碼塊、子類靜態(tài)變量、子類靜態(tài)代碼塊、父類非靜態(tài)變量、父類非靜態(tài)代碼塊、父類構造函數(shù)、子類非靜態(tài)變量、子類非靜態(tài)代碼塊、子類構造函數(shù)。

9. String、StringBuffer 和 StringBuilder有什么不同?

  • String 用 final 修飾了,是不可變的,重新賦值會指向新的對象,因為 final 修飾,所以線程安全;
  • JVM 中有個字符串常量池,jdk1.7 之前這個常量池在方法區(qū),也就是永久代,jdk1.7 及之后字符串常量池在堆內存中;
  • new 一個 String 對象的時候,會在堆內存中生成對象,同時把這個對象放到字符串常量池中;
  • 直接賦值 String 的時候,首先會看字符串常量池中有沒有,有就直接拿來用,沒有就先往常量池放一份再拿來用;
  • 用加號拼接字符串,如果是兩個常量拼接,編譯期就直接拼接好,然后放到常量池中,如果有變量拼接,那就會調用 StringBuilder 的 append 方法在堆中生成新對象,但是這個并不會放到常量池中;
  • 它有個 intern 方法,jdk1.7 以前,會把該方法的調用者放到常量池中,jdk1.7 及之后,會把調用者的引用放到常量池中。
  • StringBuffer 是線程安全的、可變的,效率較低;
  • StringBuilder 線程不安全、可變,效率較高。

10. Math.round(11.5) 和 Math.round(-11.5) 的結果分別是什么?

  • 12 和 -11,四舍五入是操作數(shù)加上 0.5 然后向下取整。

11. float f = 3.4、short s = 1, s = s + 1、s += 1 是否正確?

  • float f = 3.4 是錯誤的,浮點型默認是 double,double 類型的用 float 接收屬于向下轉型,需要強轉;
  • short s = 1 是錯誤的,整型默認是 int,int 類型用 short 接收也是向下轉型,要強轉;
  • s = s + 1還是錯誤的,需要強轉;s += 1 是正確的,+= 隱含了強轉。

12. 假如 Integer i1 = 150,Integer i2 = 150,那么 i1 和 i2 是否相等?

  • Integer 有個緩沖池,-128~127這個范圍內的直接從緩沖池取出,超過這個范圍會在堆中生成新對象,所以 i1 和 i2 不相等。

13. 與(&)、或(|)、異或(^) 操作符你知道嗎?

  • 與,都為 1 時結果才為 1;
  • 或,有 1 時結果就為 1;
  • 異或,一個為 0 一個為 1 時結果才是 1。

14. java 反射怎么理解?

  • 在運行過程中可以獲取任意一類的任意屬性和方法,可以調用任意一類的屬性和方法,這種動態(tài)獲取信息動態(tài)調用對象的機制叫反射。

15. 反射有幾種方式?

  • 反射有三種方式,一種是通過對象調用 getClass() 方法;
  • 一種是用 Class.forName("className") 方法;
  • 還有一種是直接 對象.class 。

16. 反射有什么優(yōu)缺點?

  • 優(yōu)點是可以動態(tài)判斷類型,動態(tài)加載類,提高代碼的靈活性;
  • 缺點是反射需要經(jīng)過一系列的 JVM 操作,性能不太好。

17. 反射的應用場景有哪些?

  • 比如 JDBC 加載數(shù)據(jù)庫驅動、動態(tài)代理、Spring xml 方式加載 bean。

18. java 中的異常體系你知道嗎?

  • 最頂層的抽象類是 Throwable,它有兩個子類,Error 和 Exception;
  • Error 是虛擬機無法處理的系統(tǒng)錯誤,比如棧內存溢出 StackOverflowError、內存溢出 OutOfMemoryError;
  • Exception 是異常,分為編譯期異常和運行時異常;
  • 編譯期異常就是程序必須處理的,不處理你的開發(fā)工具就會有錯誤提示的,比如 IOException、ClassNotFoundException;
  • 運行時異常就是要等程序運行時才會發(fā)生的異常,比如 NullPointerException、IndexOutOfBoundsException、ConcurrentModificationException 等。

19. 異??梢栽趺刺幚??

  • 拋出(Throw)、捕獲(try catch)、聲明(Throws)。

20. 你知道 finally 嗎?

  • finally,配合 try catch 使用,try 中寫要捕獲異常的代碼, catch 中寫捕獲到異常后的操作,finally 中寫一定要執(zhí)行的代碼,比如關閉資源、釋放連接等。

21. finally 中的代碼一定會執(zhí)行嗎?

  • 在程序發(fā)生異常之前或 try 中的代碼塊正常執(zhí)行完之前,調用了 System.exist(),finally 中代碼不會執(zhí)行;
  • 程序所在線程死亡,finally 中的代碼不會執(zhí)行。

22. 在 try 或 catch 中調用了 return,finally 還會執(zhí)行嗎?

  • 會,且在 return 之前執(zhí)行。

掃描二維碼

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Java基礎知識面試題大集合
Java 基礎知識面試題大集合
Java基礎知識面試題(2020最新版)
java中的修飾符static與靜態(tài)方法final的用法
編寫高質量代碼改善Java程序的151個建議
關于Java基礎你不得不會的34個問題
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服