java基礎面試-2020

1、IO的執行狀態

  • 硬盤——>內核
  • 內核——>用戶進程

2、BIO、NIO、AIO區別

  • BIO:同步阻塞IO;NIO:同步非阻塞IO;AIO:異步非阻塞IO
  • BIO:JDK1.4之前就有;NIO:JDK1.4出的;AIO:JDK1.7出的
  • BIO:兩階段都阻塞,面向channel通道;NIO:第一階段不阻塞,第二階段阻塞,面向緩衝區;AIO:兩階段都不阻塞

3、BIO、NIO、AIO適用場景

  • BIO:適用於連接數目較小,並且一次發送大數據的場景,這種方式對服務器資源要求較高,併發侷限於應用中
  • NIO:適用於連接數目多且連接比較短(輕操作)的架構,併發侷限於應用中。比如聊天服務器
  • AIO:適用於連接數目多且連接比較長(重操作)的架構。比如相冊服務器

4、Exception和Error的區別

  • Exception和Error都繼承自Throwable,在Java中只有Throwable類型的實例纔可以被拋出或捕獲
  • Exception是程序正常運行中才可以預料的意外情況,可以捕獲並處理
  • Error指正常情況下不太可能出現的情況,絕大部分的Error或導致程序崩潰,處於非正常的不可恢復狀態,是程序中不應該捕獲的嚴重問題,如:OOM

5、運行時異常和一般異常的區別

  • 運行時異常(受檢查異常):在編譯時被強制檢查的異常,在方法生命中聲明的異常
  • 一般異常(不受檢查異常):不受檢查異常是在編碼中可以避免的邏輯錯誤,根據需求來判斷如何處理,不需要在編譯期強制要求

6、實現線程的幾種方式

  • 繼承Thread類,重寫run方法
  • 實現Runnable接口,重寫run方法。可以避免由於Java的單繼承特性而帶來的侷限,適合多個線程類處理同一資源的情況
  • 實現Callable接口,重寫call方法,有返回值,允許拋出異常
  • 使用線程池,減少創建線程的時間,重複利用線程池中線程,降低資源消耗,可有返回值
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章