黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 職業指南 Java中高級面試題,開發模擬練習

Java中高級面試題,開發模擬練習

更新時間:2023-01-12 15:11:18 來源:動力節點 瀏覽1554次

1.Redis為什么這么快?

  1. Redis是單線程的,避免了多線程的上下文切換和并發控制開銷;
  2. Redis大部分操作時基于內存,讀寫數據不需要磁盤I/O,所以速度非常快;
  3. Redis采用了I/O多路復用機制,提高了網絡I/O并發性;
  4. Redis提供高效的數據結構,如跳躍表、哈希表等;

2.Java 虛擬機架構 (JVM Architecture)

在我看來,不管學習什么樣的知識或技術,首先要做的就是從全局上去認識它,這樣才能避免盲人摸象,事倍功半的情況發生。既然要學習 JVM,就要先了解它的整體架構,于是我畫了個 JVM 架構圖來幫助大家認識它。

java中高級面試題

對 JVM 還不太了解的同學第一次看到這張花里胡哨的圖肯定會一臉懵逼,不用怕,其實我們只需要重點理解并掌握其中一部分 (同時也是面試重點) 就好了,比如運行時數據區、垃圾收集器、內存分配策略和類加載機制等,類文件結構也可以學習一下,其他的稍作了解即可。既然本篇文章是要帶領大家認識 JVM 架構的,那就先把圖中各個部分都介紹一下吧 (注:本文只做介紹,讓各位先對 JVM 有個整體的認識,后續會做深入探討)。

3.Class 文件 (字節碼文件)

Java 之所以號稱“一次編寫,處處運行”,就是得益于虛擬機和 Class 文件 (注:CLass 文件、字節碼文件和類文件是一個意思) 的組合機制。程序員并不需要自己去適配不同的操作系統,大家都知道我們平時編寫的 java 代碼在編譯成 Class 文件后才能執行,而 Class 文件可以在任何操作系統上的 JVM 上執行,這樣就做到了“平臺無關性”。下面是一個最簡單的 HelloWorld 程序及其對應的 Class 文件。

java中高級面試題

HelloWorld 程序及其編譯后的 Class 文件

得益于 Class 文件,JVM 還可以做到“語言無關性”,也就是說不只有 Java 程序可以運行于 JVM 之上,很多其他語言例如最近在安卓開發者中大火的 Kotlin 語言,還有 Scala、Groovy 等語言也都是基于 JVM 平臺的,這些語言的代碼都可以編譯成 Class 文件,然后在 JVM 上運行。

java中高級面試題

JVM提供的平臺無關性和語言無關性

4.類加載器子系統 (ClassLoader Subsystem)

要執行 Class 文件就需要先將其加載進內存,這一工作正是由類加載器 (ClassLoader) 完成的,系統為我們提供了三種類加載器,分別是啟動類加載器 (Bootstrap ClassLoader)、擴展類加載器 (Extension ClassLoader) 和應用程序類加載器 (Application ClassLoader),如果有必要,我們也可以加入自定義的類加載器。類加載過程如下:

java中高級面試題

類加載過程

類加載過程分為加載、連接和初始化三個階段,其中的連接階段又分為驗證、準備和解析三個階段 (詳細的類加載機制在后續文章中進行介紹)。

5. Java 虛擬機運行時數據區 (JVM Runtime Data Area)

這部分內容較多,放在本文第二部分單獨進行介紹。

 執行引擎 (Execution Engine)

字節碼被加載進運行時數據區后,執行引擎會進行讀取并執行,執行引擎主要包含以下模塊:

解釋器 (Interpreter):相信大家很久以前就聽過“計算機只認識0和1”這句話,時至今日,計算機依然只認識0和1,所以任何編程語言的代碼最終都要轉化成機器碼 (二進制代碼)才能執行,Java 也不例外,而解釋器的工作正是將編譯得到的字節碼再轉化成機器碼,然后才能執行。正因為如此,Java 才被稱為解釋型語言,也正是因為邊解釋邊執行的特點,Java 程序在執行時才會慢于 C++ 之類的編譯型語言。

即時編譯器 ,為了彌補解釋執行帶來的速度劣勢,JVM 引入了即時編譯器,它的作用就是把熱點代碼,比如重復調用的方法和循環代碼等,編譯成機器碼并存放在 code cache 中,這樣之后再用到這些代碼就不用重新解釋執行了,可以提高程序運行效率。

垃圾收集器 (Garbage Collector):Java 程序員可以不用手動釋放內存,全是垃圾收集器的功勞,這也是 JVM 中尤其重要的內容,后續會有多篇文章對其進行介紹。

本地庫接口 (JNI,Java Native Interface)

如果你經常看 JDK 源碼的話,一定會注意到 native 這個關鍵詞,被它修飾的方法是沒有方法體的,是因為它調用了計算機本地的方法庫 (通常是 C 或 C++ 代碼)。JDK 源碼中有很多類的方法,特別是一些需要操作計算機硬件的方法,都調用了本地方法庫,畢竟與硬件打交道還是用 C 和 C++ 更方便,比如下面這些方法:

// 例一:這是 Thread 類中的 currentThread 方法,用于獲取當前正在執行的線程
public static native Thread currentThread();

// 例二:這是 FileInputStream 類中 open0 方法,用于打開指定文件
private native void open0(String name) throws FileNotFoundException;

以上就是“Java中高級面試題,開發模擬練習”,你能回答上來嗎?如果想要了解更多的Java面試題相關內容,可以關注動力節點Java官網。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 欧美大黄 | 美女大黄网站 | www.五月| 日韩中文字幕免费观看 | 第一福利在线导航 | 日本黄色二级片 | 伊人网伊人 | 亚洲狠狠婷婷综合久久久图片 | 亚洲精品香蕉婷婷在线观看 | 99免费视频观看 | 成年人在线播放视频 | 日韩在线视频一区二区三区 | 国产久爱青草视频在线观看 | 成人无遮挡免费网站视频在线观看 | 激情五月综合网 | 中文字幕在线视频不卡 | 日本三级唾液浓厚在线观看 | 无遮挡一级毛片 | 草草草视频 | 亚洲国产成人综合精品2020 | 欧美高清免费一级在线 | 一区二区不卡在线观看 | 一级毛片无遮挡免费全部 | 欧美黑人性猛交╳xx╳动态图 | 国产成人手机在线 | 九九视频在线观看 | 日本高清二区 | 国产精品第三页 | 欧美成人精品高清在线观看 | 国产在线精品一区二区三区 | 欧美国产成人一区二区三区 | 午夜视频在线网站 | 欧美精品第一区 | 麻豆导航 | 一级毛片在线完整免费观看 | 老司机日日摸夜夜摸精品影院 | 伊人再现 | 亚洲综合一二三区 | 91精品视频在线观看免费 | 国产自愉怕一区二区三区 | 成人啪精品视频免费网站 |