java招聘職位描述,附學習筆記+面試整理+進階書籍

面:為什么要使用雙親委派機制去加載類?

答:避免多份同樣字節碼的加載,浪費內存。

類的加載方式

  • 隱式加載:new
  • 顯示加載:loadClass、forName等

類的裝載過程如下圖:

面:loadClass和forName的區別?

  • Class.forName得到的class是已經初始化完成了的 (MySQL加載驅動時,需要調用靜態代碼塊完成一些操作)
  • ClassLoader.loadClass得到的class是還沒有鏈接的。(用于Spring IoC中的延遲加載機制)

Java內存模型

JVM內存模型——JDK8如下圖所示:

  • 線程私有:程序計數器、虛擬機棧、本地方法棧
  • 線程共享:MetaSpace、Java堆

程序計數器(PC)

  • 當前線程所執行的字節碼行號指示器(邏輯)
  • 通過改變計數器的值來選取下一條需要執行的字節碼指令
  • 和線程是一對一的關系即“線程私有”
  • 對Java方法計數,如果是Native方法則計數器的值為Undefined
  • 不會發生內存泄漏

Java虛擬機棧(Stack)

  • Java方法執行的內存模型
  • 包含多個棧幀(一個棧幀包括局部變量表、操作棧、動態鏈接、返回地址等,方法的調用即對于棧幀從虛擬機Stack中入棧到出棧的過程)
  • 當線程請求的棧深度超過最大值,會拋出 StackOverflowError 異常;
  • 棧進行動態擴展時如果無法申請到足夠內存,會拋出 OutOfMemoryError 異常。

本地方法棧

與虛擬機棧相似,主要作用于標注了native的方法。

元空間(MetaSpace)

用于存放已被加載的類信息、常量、靜態變量。

面:談談元空間(MetaSpace)和永久代(PermGen)的區別?

  • 均是方法區(JVM的一種規范)的實現
  • JDK8后元空間替代了永久代
  • 元空間使用本地內存,而永久代使用的是jvm內存,這解決了空間不足的問題。

面:MetaSpace相比PermGen的優勢?

  • 字符串常量池(JDK1.7開始移動到Java堆中)存在與永久代中,容易出現性能問題和內存溢出
  • 類的方法的信息大小難以確定,給永久代的大小的指定帶來了困難
  • 永久代會為GC帶來不必要的復雜性
  • 方便HotSpot與其他JVM如Jrockit的集成(因為永久代是HotSpot獨有的)

Java堆(Heap)

  • 是對象實例的分配區域
  • GC管理的主要區域

面:說說JVM三大性能調優參數-Xms、-Xmx、-Xss的含義?

java -Xms128m -Xmx128m -Xss256k -jar xxx.jar

  • -Xss:規定了每個線程虛擬機棧(堆棧)的大小
  • -Xms:堆的初始值
  • -Xmx:堆能達到的最大值

一般將-Xms與-Xmx設置為同樣的數值,避免堆擴容時發生的內存抖動,影響程序的穩定性。

內存分配策略

  • 靜態存儲:編譯時確定每個數據目標在運行時的存儲空間需求
  • 棧式存儲:數據區需求在編譯時未知,在運行時模塊入口前確定
  • 堆式存儲:編譯時或運行時模塊入口都無法確定需求,需要動態分配

面:談談Java內存模型中堆和棧的區別與聯系?

  • 聯系:引用對象、數組時,棧里定義變量來保存堆中目標的首地址
  • 管理方式:棧自動釋放,堆需要GC
  • 空間大小:一般棧比堆小
  • 碎片相關:棧產生的內存碎片遠小于堆
  • 分配方式:棧支持靜態和動態分配,而堆僅支持動態分配
  • 效率:棧的效率比堆高(棧只有入棧與出棧)

面:請解釋下JDK6和JDK6+下intern()方法的區別?

  • JDK6:當調用intern方法時,如果字符串常量池先前已創建出該字符串對象,則返回池中的該字符串的引用。否則將此字符串對象添加到字符串常量池中,并且返回該字符串對象的引用。
  • JDK6+:當調用intern方法時,如果字符串常量池先前已創建出該字符串對象,則返回池中該字符串的引用。否則,如果該字符串對象已經存在與Java堆中,則將堆中對此對象的引用添加到字符串常量池中,并且返回該引用;如果堆中不存在該對象,則在字符串常量池中創建該字符串并返回其引用。

最后

文章中涉及到的知識點我都已經整理成了資料,錄制了視頻供大家下載學習,免費分享,誠意滿滿,希望可以幫助在這個行業發展的朋友,在論壇博客等地方少花些時間找資料,把有限的時間,真正花在學習上,所以我把這些資料,分享出來。相信對于已經工作和遇到技術瓶頸的朋友們,在這份資料中一定都有你需要的內容。

資料免費獲取方式:點擊這里免費領取Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并發等架構技術資料

取方式:點擊這里免費領取Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并發等架構技術資料](https://gitee.com/vip204888/java-p7)**

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/385676.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/385676.shtml
英文地址,請注明出處:http://en.pswp.cn/news/385676.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

94. 二叉樹的中序遍歷

給定一個二叉樹,返回它的中序 遍歷。 示例: 輸入: [1,null,2,3] 1 \ 2 / 3 輸出: [1,3,2] 進階: 遞歸算法很簡單,你可以通過迭代算法完成嗎? 來源:力扣(LeetCode) 鏈接:http…

判斷兩個結構體是否相等

一、判斷兩個結構體是否相等 判斷兩個結構體是否相等:重載操作符""不能用函數memcpy來判斷兩個結構體是否相等:memcmp函數是逐個字節進行比較的,而struct存在字節對齊,字節對齊時補的字節內容是隨機的,會產生…

java攔截器和過濾器,2021最新版!

正文 現在市面上的算法資料也五花八門,種類繁多,小編也整理了一份不同于市面且有意思的算法資料,不能說多全面,但是是小編花了很長時間整理歸納出來的,自我感覺還行。分享給同事及群里反響都不錯,所以小編…

java排列組合算法優缺點,一招徹底弄懂!

一. 為什么使用spring cloud alibaba 很多人可能會問,有了spring cloud這個微服務的框架,為什么又要使用spring cloud alibaba這個框架了? 最重要的原因在于spring cloud中的幾乎所有的組件都使用Netflix公司的產品,然后在其基礎…

001 出錯處理

函數strerror() 1.1 函數原型 char *strerror(int errnum)分析&#xff1a;此函數將errnum&#xff08;它通常就說errno值&#xff09;映射為一個出錯信息字符串&#xff0c;并返回錯誤此字符串 。 1.2 代碼清單 #include <stdio.h> #include <string.h> #inclu…

java接口作用和好處,持續更新大廠面試筆試題

業界常用的服務注冊與發現組件對比 了解服務注冊與發現的基本原理后&#xff0c;如果你要在項目中使用服務注冊與發現組件&#xff0c;當面對眾多的開源組件該如何進行技術選型&#xff1f; 在互聯網公司里&#xff0c;有研發實力的大公司一般會選擇自研或者基于開源組件進行…

第七章 進程環境 | 001 命令形參、gcc與g++的使用

命令形參 命令行參數是使用main()函數參數來處理的&#xff0c;其中&#xff0c;argc是指傳入參數的個數&#xff0c;argv[]是一個指針數組&#xff0c;指向傳遞給程序的每個參數。 應當指出的是&#xff0c; argv[0]存儲程序的名稱&#xff0c;argv[1]是一個指向第一個命令行…

java接口實例化對象和類實例化對象,附贈課程+題庫

面試整體事項 簡歷要準備好&#xff0c;聯系方式一定要正確清晰醒目&#xff0c;項目經歷按照時間倒序闡述&#xff0c;注意描述自己在項目中承擔的職責&#xff0c;簡歷的模板盡量選擇簡潔的&#xff0c;畢竟程序員大部分還是喜歡簡單明了的。推薦boss直聘&#xff0c;我覺得…

java接口開發規范,干貨滿滿

第一個模塊&#xff1a;數據庫 1.1 騰訊數據庫面試問題 解釋ACID四大特性 原子性的底層實現 數據庫宕機后恢復的過程 如何保證事務的ACID特性 MySQL日志類型 這5個題目相對來說是比較普遍的&#xff0c;這里我就不一一給出答案了&#xff0c;給大家看下我的那個數據庫學…

001 makefile的使用

標題 標題 當我們有多個源程序時&#xff0c;用gcc每個都編譯&#xff0c;這樣我們沒有修改過的源文件也得重新編譯一次&#xff0c;很麻煩&#xff0c;這時候寫makefile就派上了用場&#xff0c;可以大大的提高我們的編碼和調試速度。( 注意&#xff1a;頭文件并不參加鏈接和…

java接口的修飾符可以為,附架構師必備技術詳解

第一章 MySQL入門與初步 1.1 MYSQL 簡介 1.2 關系數據庫管理系統 1.3 MYSQL 使用的 SQL 語言 1.4 MYSQL 數據處理 第二章 MySQL的安裝 2.1 MYSQL 系統的安裝布局 2.2 安裝 MYSQL 系統的分發 2.3 安裝后期的的設置與測試 2.4 系統的升級 2.5 在同一臺機器上運行多個 MYSQL 服務…

ALSA【一】

ALSA是Advanced Linux Sound Architecture 的縮寫&#xff0c;目前已經成為了linux的主流音頻體系結構。 在內核設備驅動層&#xff0c;ALSA提供了alsa-driver&#xff0c;同時在應用層&#xff0c;ALSA為我們提供了alsa-lib&#xff0c;應用程序只要調用alsa-lib提供的API&…

java接口的定義與實現,學習路線+知識點梳理

Spring框架自誕生以來一直備受開發者青睞&#xff0c;有人親切的稱之為&#xff1a;Spring 全家桶。Spring更是避免了重復造輪子的工作并跟隨著互聯網行業的發展做出不斷的更新&#xff0c;很多研發人員把spring看作心目中最好的Java項目&#xff0c;沒有之一。 **可以毫不夸張…

第3章 文件IO | 001 文件描述符

概述 在Linux系統中一切皆可以看成是文件&#xff0c;文件又可分為&#xff1a;普通文件、目錄文件、鏈接文件和設備文件。文件描述符&#xff08;file descriptor&#xff09;是內核為了高效管理已被打開的文件所創建的索引&#xff0c;其是一個非負整數&#xff08;通常是小整…

java提取圖片中的文字,深入分析

第一個暴擊&#xff1a;Spring 上一份Spring的手繪思維腦圖&#xff08;就像是個知識大綱總結&#xff09;&#xff0c;預覽一下Spring的知識點&#xff0c;心里有個譜。不過這邊我是采用的截圖方式&#xff0c;為了把全部的內容都截取出來&#xff0c;所以整個就比較小&#…

Leetcode | 513. Find Bottom Left Tree Value

題目&#xff1a;翻轉二叉樹 方法①&#xff1a;深度優先遍歷(鏈接) /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ cla…

java基礎入門傳智播客答案,GitHub已標星16k

選擇 在現在這個浮躁而又拜金的社會&#xff0c;我相信很多人做技術并非出于熱愛&#xff0c;只是被互聯網的高薪吸引&#xff0c;畢竟技術崗位非常枯燥&#xff0c;不僅要面對奇奇怪怪的需求&#xff0c;還要不停的充實自己避免被淘汰。所以想要吃好技術這碗飯并不容易。 我…

563. 二叉樹的坡度

給定一個二叉樹&#xff0c;計算整個樹的坡度。 一個樹的節點的坡度定義即為&#xff0c;該節點左子樹的結點之和和右子樹結點之和的差的絕對值。空結點的的坡度是0。 整個樹的坡度就是其所有節點的坡度之和。 示例: 輸入: 1/ \2 3 輸出: 1 解釋: 結點的坡度 2 : 0 …

java基礎入門第二版二手,細節爆炸

一面&#xff1a;70分鐘 突擊電話面試 正思考著項目功能模塊&#xff0c;阿里面試官打來了電話&#xff0c;開始了阿里一面。 阿里面試官自我介紹&#xff0c;介紹了5分鐘左右&#xff0c;部門的情況&#xff0c;主要的業務 提問開始 會哪些操作系統 Linux會一點說一下操作指…

進程通訊:管道

管道&#xff0c;通常指無名管道&#xff0c;是 UNIX 系統IPC最古老的形式。 1、特點&#xff1a; 它是半雙工的&#xff08;即數據只能在一個方向上流動&#xff09;&#xff0c;具有固定的讀端和寫端。它只能用于具有親緣關系的進程之間的通信&#xff08;也是父子進程或者兄…