您好,登錄后才能下訂單哦!
這篇文章主要介紹了十五個關于java面試知識點,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
1、Java文件經過JVM編譯成字節碼文件,即.class文件,將字節碼文件在不同的操作系統中運行時,操作系統再將字節碼文件編譯成機器碼文件。這就是Java跨平臺
2、首先明確一點,java 的 GC 回收是完全自動的,沒有提供相關 api 手動回收,所有的內存分配和回收權限都在 jvm,在開發人員手里沒有絕對的強制垃圾回收的方法,不過可以這樣去做:
1)對于不再引用的對象,及時把它的引用賦為 null。 obj = null;
2)如果內存確實很緊張,調用 System.gc () 方法來建議垃圾回收器開始回收垃圾,通知 GC 運行,但是 Java 語言規范并不保證 GC 一定會執行。
3、java 基本類型的默認值和取值范圍
整數類型 byte(1 個字節)short(2 個字節)int(4 個字節)long(8 個字節)
字符類型 char(2 個字節)
浮點類型 float(4 個字節)double(8 個字節)
4、常見字符的ASCII碼值如下:空格的ASCII碼值為32;數字0到9的ASCII碼值分別為48到57;大寫字母“A”到“Z”的ASCII碼值分別為65到90;小寫字母“a”到“z”的ASCII碼值分別為97到到122。
5、Java 標識符有如下命名規則:
1)由 26 個英文字母大小寫,數字:0-9 符號:_ $ ¥ 組成
2)標識符應以字母、_ 、$ 開頭。
3)標識符不能是關鍵字。
6、抽象類和接口
1)關于抽象類
JDK 1.8 以前,抽象類的方法默認訪問權限為 protected
JDK 1.8 時,抽象類的方法默認訪問權限變為 default
2)關于接口
JDK 1.8 以前,接口中的方法必須是 public 的
JDK 1.8 時,接口中的方法可以是 public 的,也可以是 default 的
JDK 1.9 時,接口中的方法可以是 private 的
7、裝箱和拆箱
基本數據類型轉化成包裝類是裝箱 (如: int --> Integer)。
包裝類轉化成基本數據類型就是拆箱 (如:Integer --> int)。
包裝類就是引用類型,基本數據類型就是值類型。
通過 裝箱 和 拆箱 操作,能夠在值類型和引用類型中架起一做橋梁。換言之,可以輕松的實現值類型與引用類型的互相轉換,裝箱和拆箱能夠統一考察系統,任何類型的值最終都可以按照對象進行處理。
8、序列化和反序列化
Java 在序列化時不會實例化 static 變量和 transient 修飾的變量,因為 static 代表類的成員,transient 代表對象的臨時數據,被聲明這兩種類型的數據成員不能被序列化
9、Java有兩種傳遞方式,值傳遞和引用傳遞。基本類型和以string str = “aaa”;這種方式創建的都是值傳遞,對象創建和數組都是引用傳遞,所以在函數的判斷形參需要特別注意。
10、Java垃圾回收機制
垃圾回收主要針對的是堆區的回收,因為棧區的內存是隨著線程而釋放的。堆區分為三個區:年輕代(Young Generation)、年老代(Old Generation)、永久代(Permanent Generation,也就是方法區)。
1)年輕代:對象被創建時(new)的對象通常被放在 Young(除了一些占據內存比較大的對象), 經過一定的 Minor GC(針對年輕代的內存回收)還活著的對象會被移動到年老代(一些具體的移動細節省略)。
2)年老代:就是上述年輕代移動過來的和一些比較大的對象。Major GC (FullGC) 是針對年老代的回收。
3)永久代:存儲的是 final 常量,static 變量,常量池。
11、包引用
import java.util.* ;
能訪問java/util目錄下的所有類,不能訪問java/util子目錄下的所有類
12、構造函數不能被繼承,構造方法只能被顯式或隱式的調用。(有參和無參均是這樣)
13、文件分為文本文件和二進制文件,計算機只認識二進制,所以實際上都是二進制的不同解釋方式。文本文件是以不同編碼格式顯示的字符,例如 Ascii、Unicode 等,window 中文本文件的后綴名有 “.txt”,".log", 各種編程語言的源碼文件等;二進制文件就是用文本文檔打開是看不懂亂碼,只要能用文本打開的文件都可以算是文本文件,只是顯示的結果不是你想要的,二進制文件只有用特殊的應用才能讀懂的文件,例如 “.png”,".bmp" 等,計算機中大部分的文件還是二進制文件
14、try 只適合處理運行時異常,try+catch 適合處理運行時異常 + 普通異常。也就是說,如果你只用 try 去處理普通異常卻不加以 catch 處理,編譯是通不過的,因為編譯器硬性規定,普通異常如果選擇捕獲,則必須用 catch 顯示聲明以便進一步處理。而運行時異常在編譯時沒有如此規定,所以 catch 可以省略,你加上 catch 編譯器也覺得無可厚非。
15、管道
對于管道,有下面這幾種類型:
①普通管道(PIPE):通常有兩種限制,一是單工,即只能單向傳輸;二是血緣,即常用于父子進程間(或有血緣關系的進程間)。
②流管道(s_pipe):去除了上述的第一種限制,實現了雙向傳輸。
③命名管道(name_pipe):去除了上述的第二種限制,實現了無血緣關系的不同進程間通信。
要求是對于不同的服務器之間的通信,是要要求全雙工形式的,而管道只能是半雙工,雖然可以雙向,但是同一時間只能有一個方向傳輸,全雙工和半雙工的區別可以如下圖示理解:
感謝你能夠認真閱讀完這篇文章,希望小編分享十五個關于java面試知識點內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。