京东Java面试题、笔试题(含答案)
其他互聯網大廠面試題
1:阿里巴巴Java面試題
2:阿里云Java面試題-實習生崗
3:騰訊Java面試題-高級
4:字節跳動Java面試題
5:字節跳動Java面試題-大數據方向
6:百度Java面試題
7:螞蟻金服Java面試題-中級
8:螞蟻金服Java面試題-高級
9:京東Java面試題-中級
10:拼多多Java面試題-電商部
11:商湯科技Java面試題
12:中軟國際Java面試題-初級
13:唯品會Java面試題
14:攜程Java面試題-高級
15:軟通動力Java面試題
下載鏈接:全部大廠面試題及答案PDF
1、哪些情況下的對象會被垃圾回收機制處理掉?
利用可達性分析算法,虛擬機會將一些對象定義為 GC Roots,從 GC Roots 出發沿著引用鏈向下尋找,如果某個對象不能通過 GC Roots 尋找到,虛擬機就認為該對象可以被回收掉。
2、哪些對象可以被看做是 GC Roots 呢?
1)虛擬機棧(棧幀中的本地變量表)中引用的對象;
2)方法區中的類靜態屬性引用的對象,常量引用的對象;
3)本地方法棧中 JNI(Native 方法)引用的對象;
3、對象不可達,一定會被垃圾收集器回收么?
即使不可達,對象也不一定會被垃圾收集器回收,1)先判斷對象是否有必要執行 finalize() 方法,對象必須重寫 finalize()方法且沒有被運行過。2)若有必要執行,會把對象放到一個隊列中,JVM 會開一個線程去回收它們,這是對象最后一次可以逃逸清理的機會。
4、講一下常見編碼方式?
編碼的意義:計算機中存儲的最小單元是一個字節即 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 個 字 節 組成。
5、utf-8 編碼中的中文占幾個字節;int 型幾個字節?
utf-8 是一種變長編碼技術,utf-8 編碼中的中文占用的字節不確定,可能 2 個、3 個、4 個,
int 型占 4 個字節。
6、靜態代理和動態代理的區別,什么場景使用?
代理是一種常用的設計模式,目的是:為其他對象提供一個代理以控制對某個對象的訪問, 將兩個類的關系解耦。代理類和委托類都要實現相同的接口,因為代理真正調用的是委托類的方法。
區別:
1)靜態代理:由程序員創建或是由特定工具生成,在代碼編譯時就確定了被代理的類是哪一個是靜態代理。靜態代理通常只代理一個類;
2)動態代理:在代碼運行期間,運用反射機制動態創建生成。動態代理代理的是一個接口下的多個實現類;
實現步驟:
a. 實現 InvocationHandler 接口創建自己的調用處理器;
b. 給 Proxy 類提供ClassLoader 和代理接口類型數組創建動態代理類;
c.利用反射機制得到動態代理類的構造函數;d.利用動態代理類的構造函數創建動態代理類對象;
使用場景:Retrofit 中直接調用接口的方法;Spring 的 AOP 機制;
7、Java 的異常體系
Java 中 Throwable 是所有異常和錯誤的超類,兩個直接子類是 Error(錯誤)和 Exception(異常):
1)Error 是程序無法處理的錯誤,由 JVM 產生和拋出,如 OOM、ThreadDeath 等。這些異常發生時,JVM 一般會選擇終止程序。
2)Exception 是程序本身可以處理的異常,又分為運行時異常(RuntimeException)(也叫Checked Eception) 和 非 運 行 時 異 常 ( 不 檢 查 異 常 Unchecked Exception) 。 運 行 時異 常 有 NullPointerException\IndexOutOfBoundsException 等,這些異常一般是由程序邏輯錯誤引起的,應盡可能避免。非運行時異常有IOException\SQLException\FileNotFoundException 以及由用戶自定義的 Exception 異常等。
8、談談你對解析與分派的認識。
解析指方法在運行前,即編譯期間就可知的,有一個確定的版本,運行期間也不會改變。解 析是靜態的,在類加載的解析階段就可將符號引用轉變成直接引用。
分派可分為靜態分派和動態分派,重載屬于靜態分派,覆蓋屬于動態分派。靜態分派是指在 重載時通過參數的靜態類型而非實際類型作為判斷依據,在編譯階段,編譯器可根據參數的 靜態類型決定使用哪一個重載版本。動態分派則需要根據實際類型來調用相應的方法。
9、修改對象 A 的 equals 方法的簽名,那么使用 HashMap 存放這個對象實例的時候,會調用哪個 equals 方法?
會調用對象的 equals 方法,如果對象的 equals 方法沒有被重寫,equals 方法和==都是比較棧內局部變量表中指向堆內存地址值是否相等。
10、Java 中實現多態的機制是什么?
11、如何將一個 Java 對象序列化到文件里?
12、說說你對 Java 反射的理解
13、說說你對 Java 注解的理解
14、說一下泛型原理,并舉例說明
15、Java 中 String 的了解
16、String 為什么要設計成不可變的?
下載鏈接:博主已將以上這些大廠面試題整理成了一個面試手冊,是PDF版的
總結
以上是生活随笔為你收集整理的京东Java面试题、笔试题(含答案)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用C语言实现死亡之ping
- 下一篇: java美元兑换,(Java实现) 美元