Java知識分享網 - 輕松學習從此開始!????

Java知識分享網

Java1234官方群25:java1234官方群25
Java1234官方群25:838462530
     

GIT視頻教程(結合github,碼云)免費領取

SpringBoot打造全棧在線教育平臺實戰課程

SpringBoot打造企業級進銷存

Java1234 VIP課程

領取微信掃碼登錄Java實現視頻教程

Java1234至尊VIP(特價活動)

京東Java中級筆試面試題 PDF 下載


分享到:
時間:2020-08-11 10:41來源:http://www.248787.tw 作者:小鋒  侵權舉報
京東Java中級筆試面試題 PDF 下載
失效鏈接處理
京東Java中級筆試面試題  PDF 下載


本站整理下載:
提取碼:c10a 
 
 
相關截圖:
 
主要內容:


1、哪些情況下的對象會被垃圾回收機制處理掉? 利用可達性分析算法,虛擬機會將一些對象定義為 GC Roots,從 GC Roots 出發沿著引用鏈 向下尋找,如果某個對象不能通過 GC Roots 尋找到,虛擬機就認為該對象可以被回收掉。 1.1 哪些對象可以被看做是 GC Roots 呢? 1)虛擬機棧(棧幀中的本地變量表)中引用的對象; 2)方法區中的類靜態屬性引用的對象,常量引用的對象; 3)本地方法棧中 JNI(Native 方法)引用的對象; 1.2 對象不可達,一定會被垃圾收集器回收么? 即使不可達,對象也不一定會被垃圾收集器回收,1)先判斷對象是否有必要執行 finalize() 方法,對象必須重寫 finalize()方法且沒有被運行過。2)若有必要執行,會把對象放到一個 隊列中,JVM 會開一個線程去回收它們,這是對象最后一次可以逃逸清理的機會。 2、講一下常見編碼方式? 編碼的意義:計算機中存儲的最小單元是一個字節即 8bit,所能表示的字符范圍是 255 個, 而人類要表示的符號太多,無法用一個字節來完全表示,固需要將符號編碼,將各種語言翻 譯成計算機能懂的語言。 1)ASCII 碼:總共 128 個,用一個字節的低 7 位表示,0?31 控制字符如換回車刪除等;32~126 是打印字符,可通過鍵盤輸入并顯示出來; 2)ISO-8859-1,用來擴展 ASCII 編碼,256 個字符,涵蓋了大多數西歐語言字符。 3)GB2312:雙字節編碼,總編碼范圍是 A1-A7,A1-A9 是符號區,包含 682 個字符,B0-B7 是 漢字區,包含 6763 個漢字; 4)GBK 為了擴展 GB2312,加入了更多的漢字,編碼范圍是 8140~FEFE,有 23940 個碼位,能 表示 21003 個漢字。 5)UTF-16: ISO 試圖想創建一個全新的超語言字典,世界上所有語言都可通過這本字典 Unicode 來相互翻譯,而 UTF-16 定義了 Unicode 字符在計算機中存取方法,用兩個字節來表 示 Unicode 轉化格式。不論什么字符都可用兩字節表示,即 16bit,固叫 UTF-16。 6)UTF-8:UTF-16 統一采用兩字節表示一個字符,但有些字符只用一個字節就可表示,浪 費存儲空間,而 UTF-8 采用一種變長技術,每個編碼區域有不同的字碼長度。 不同類型的 字 符 可 以 由 1~6 個 字 節 組 成。
3、utf-8 編碼中的中文占幾個字節;int 型幾個字節? utf-8 是一種變長編碼技術,utf-8 編碼中的中文占用的字節不確定,可能 2 個、3 個、4 個, int 型占 4 個字節。 4、靜態代理和動態代理的區別,什么場景使用? 代理是一種常用的設計模式,目的是:為其他對象提供一個代理以控制對某個對象的訪問, 將兩個類的關系解耦。代理類和委托類都要實現相同的接口,因為代理真正調用的是委托類 的方法。 區別: 1)靜態代理:由程序員創建或是由特定工具生成,在代碼編譯時就確定了被代理的類是哪 一個是靜態代理。靜態代理通常只代理一個類; 2)動態代理:在代碼運行期間,運用反射機制動態創建生成。動態代理代理的是一個接口 下的多個實現類; 實現步驟:a.實現 InvocationHandler 接口創建自己的調用處理器;b.給 Proxy 類提供 ClassLoader 和代理接口類型數組創建動態代理類;c.利用反射機制得到動態代理類的構造函 數;d.利用動態代理類的構造函數創建動態代理類對象; 使用場景:Retrofit 中直接調用接口的方法;Spring 的 AOP 機制; 5、Java 的異常體系 Java 中 Throwable 是所有異常和錯誤的超類,兩個直接子類是 Error(錯誤)和 Exception(異 常): 1)Error 是程序無法處理的錯誤,由 JVM 產生和拋出,如 OOM、ThreadDeath 等。這些異常 發生時,JVM 一般會選擇終止程序。 2)Exception 是程序本身可以處理的異常,又分為運行時異常(RuntimeException)(也叫 Checked Eception) 和 非 運 行 時 異 常 ( 不 檢 查 異 常 Unchecked Exception) 。 運 行 時 異 常 有 NullPointerException\IndexOutOfBoundsException 等,這些異常一般是由程序邏輯錯誤引起 的,應盡可能避免。非運行時異常有 IOException\SQLException\FileNotFoundException 以及 由用戶自定義的 Exception 異常等。 6、談談你對解析與分派的認識。 解析指方法在運行前,即編譯期間就可知的,有一個確定的版本,運行期間也不會改變。解 析是靜態的,在類加載的解析階段就可將符號引用轉變成直接引用。 分派可分為靜態分派和動態分派,重載屬于靜態分派,覆蓋屬于動態分派。靜態分派是指在 重載時通過參數的靜態類型而非實際類型作為判斷依據,在編譯階段,編譯器可根據參數的 靜態類型決定使用哪一個重載版本。動態分派則需要根據實際類型來調用相應的方法。 7、修改對象 A 的 equals 方法的簽名,那么使用 HashMap 存放這個對象實例的時候,會調
用哪個 equals 方法? 會調用對象的 equals 方法,如果對象的 equals 方法沒有被重寫,equals 方法和==都是比較 棧內局部變量表中指向堆內存地址值是否相等。 8、Java 中實現多態的機制是什么? 多態是指程序中定義的引用變量所指向的具體類型和通過該引用變量發出的方法調用在編 譯時不確定,在運行期間才確定,一個引用變量到底會指向哪個類的實例。這樣就可以不用 修改源程序,就可以讓引用變量綁定到各種不同的類實現上。Java 實現多態有三個必要條件: 繼承、重定、向上轉型,在多態中需要將子類的引用賦值給父類對象,只有這樣該引用才能 夠具備調用父類方法和子類的方法。 9、如何將一個 Java 對象序列化到文件里? ObjectOutputStream.writeObject()負責將指定的流寫入,ObjectInputStream.readObject()從指 定流讀取序列化數據。 //寫入


 

------分隔線----------------------------
鋒哥公眾號


鋒哥微信


關注公眾號
【Java資料站】
回復 666
獲取 
66套java
從菜雞到大神
項目實戰課程
体育彩票开奖时间