精選11道Java技術面試題並有答案(包含部分阿里和華為的面試題)

2020-12-17 CSDN

JVM的類加載機制是什麼?有哪些實現方式?

類加載機制:

類的加載指的是將類的.class文件中的二進位數據讀入到內存中,將其放在運行時數據區的方法去內,然後在堆區創建一個java.lang.Class對象,用來封裝在方法區內的數據結構。類的加載最終是在堆區內的Class對象,Class對象封裝了類在方法區內的數據結構,並且向Java程式設計師提供了訪問方法區內的數據結構的接口。

類加載有三種方式:

1)命令行啟動應用時候由JVM初始化加載

2)通過Class.forName()方法動態加載

3)通過ClassLoader.loadClass()方法動態加載

JVM的常見垃圾回收算法?

1)標記-清楚算法:前後線標記處所有需要回收的對象,在標記完成後統一回收有被標記的對象。

2)複製算法:將可用內存按容量劃分為大小相等的兩塊,每次只使用其中的一塊。當一塊內存用完了,將其存在另外一塊上面,然後再把已使用過的內存空間一次清理掉。

3)標記-整理算法:標記過程與「標記-清除」算法一樣,但後續步驟不是直接對可回收對象進行清理,而是讓所一端移動,然後直接清理掉端邊界以外的內存。

4)分代收集算法:一般是把Java堆分為新生代和老年代,根據各個年代的特點採用最適當的收集算法。新生代都發現有大批對象死去,選用複製算法。老年代中因為對象存活率高,必須使用「標記-清理」或「標記-整理」算法來進行回收。

JVM調優的常見命令行工具有哪些?JVM常見的調優參數有哪些?

(1)JVM調優的常見命令工具包括:

1)jps命令用於查詢正在運行的JVM進程,

2)jstat可以實時顯示本地或遠程JVM進程中類裝載、內存、垃圾收集、JIT編譯等數據

3)jinfo用於查詢當前運行這的JVM屬性和參數的值。

4)jmap用於顯示當前Java堆和永久代的詳細信息

5)jhat用於分析使用jmap生成的dump文件,是JDK自帶的工具

6)jstack用於生成當前JVM的所有線程快照,線程快照是虛擬機每一條線程正在執行的方法,目的是定位線程出現長時間停頓的原因。

(2)JVM常見的調優參數包括:

-Xmx

指定java程序的最大堆內存, 使用java -Xmx5000M -version判斷當前系統能分配的最大堆內存

-Xms

指定最小堆內存, 通常設置成跟最大堆內存一樣,減少GC

-Xmn

設置年輕代大小。整個堆大小=年輕代大小 + 年老代大小。所以增大年輕代後,將會減小年老代大小。此值對系統性能影響較大,Sun官方推薦配置為整個堆的3/8。

-Xss

指定線程的最大棧空間, 此參數決定了java函數調用的深度, 值越大調用深度越深, 若值太小則容易出棧溢出錯誤(StackOverflowError)

-XX:PermSize

指定方法區(永久區)的初始值,默認是物理內存的1/64, 在Java8永久區移除, 代之的是元數據區, 由-XX:MetaspaceSize指定

-XX:MaxPermSize

指定方法區的最大值, 默認是物理內存的1/4, 在java8中由-XX:MaxMetaspaceSize指定元數據區的大小

-XX:NewRatio=n

年老代與年輕代的比值,-XX:NewRatio=2, 表示年老代與年輕代的比值為2:1

-XX:SurvivorRatio=n

Eden區與Survivor區的大小比值,-XX:SurvivorRatio=8表示Eden區與Survivor區的大小比值是8:1:1,因為Survivor區有兩個(from, to)

ConcurrentHashMap加鎖機制是什麼,詳細說一下?

HashTable容器在競爭激烈的並發環境下表現出效率低下的原因,是因為所有訪問HashTable的線程都必須競爭同一把鎖,那假如容器裡有多把鎖,每一把鎖用於鎖容器其中一部分數據,那麼當多線程訪問容器裡不同數據段的數據時,線程間就不會存在鎖競爭,從而可以有效的提高並發訪問效率,這就是ConcurrentHashMap所使用的鎖分段技術,首先將數據分成一段一段的存儲,然後給每一段數據配一把鎖,當一個線程佔用鎖訪問其中一個段數據的時候,其他段的數據也能被其他線程訪問。

G1收集器簡介?以及它的內存劃分怎麼樣的?

(1)簡介:

Garbage-First(G1,垃圾優先)收集器是服務類型的收集器,目標是多處理器機器、大內存機器。它高度符合垃圾收集暫停時間的目標,同時實現高吞吐量。Oracle JDK 7 update 4 以及更新發布版完全支持G1垃圾收集器

(2)G1的內存劃分方式:

它是將堆內存被劃分為多個大小相等的 heap 區,每個heap區都是邏輯上連續的一段內存(virtual memory). 其中一部分區域被當成老一代收集器相同的角色(eden, survivor, old), 但每個角色的區域個數都不是固定的。這在內存使用上提供了更多的靈活性

在重寫equals方法時,需要遵循哪些約定,具體介紹一下?

重寫equals方法時需要遵循通用約定:自反性、對稱性、傳遞性、一致性.、非空性

1)自反性

對於任何非null的引用值x,x.equals(x)必須返回true。—這一點基本上不會有啥問題

2)對稱性

對於任何非null的引用值x和y,若且唯若x.equals(y)為true時,y.equals(x)也為true。

3)傳遞性

對於任何非null的引用值x、y、z。如果x.equals(y)==true,y.equals(z)==true,那麼x.equals(z)==true。

4) 一致性

對於任何非null的引用值x和y,只要equals的比較操作在對象所用的信息沒有被修改,那麼多次調用x.eqals(y)就會一致性地返回true,或者一致性的返回false。

5)非空性

所有比較的對象都不能為空。

Synchronized優化後的鎖機制簡單介紹一下,包括自旋鎖、偏向鎖、輕量級鎖、重量級鎖?

自旋鎖:

線程自旋說白了就是讓cup在做無用功,比如:可以執行幾次for循環,可以執行幾條空的彙編指令,目的是佔著CPU不放,等待獲取鎖的機會。如果旋的時間過長會影響整體性能,時間過短又達不到延遲阻塞的目的。

偏向鎖

偏向鎖就是一旦線程第一次獲得了監視對象,之後讓監視對象「偏向」這個線程,之後的多次調用則可以避免CAS操作,

說白了就是置個變量,如果發現為true則無需再走各種加鎖/解鎖流程。

輕量級鎖:

輕量級鎖是由偏向所升級來的,偏向鎖運行在一個線程進入同步塊的情況下,當第二個線程加入鎖爭用的時候,偏向鎖就會升級為輕量級鎖;

重量級鎖

重量鎖在JVM中又叫對象監視器(Monitor),它很像C中的Mutex,除了具備Mutex(0|1)互斥的功能,它還負責實現了Semaphore(信號量)的功能,也就是說它至少包含一個競爭鎖的隊列,和一個信號阻塞隊列(wait隊列),前者負責做互斥,後一個用於做線程同步。

偏向鎖、輕量級鎖、重量級鎖的對比:

精選11道Java技術面試題並有答案(包含部分阿里和華為的面試題)

Redis和Memcache區別對比?如何選擇這兩個技術?

區別:

1) Redis和Memcache都是將數據存放在內存中,都是內存資料庫。不過memcache還可用於緩存其他東西,例如圖片、視頻等等。

2)Redis不僅僅支持簡單的k/v類型的數據,同時還提供list,set,hash等數據結構的存儲。

3)虛擬內存–Redis當物理內存用完時,可以將一些很久沒用到的value 交換到磁碟

4)過期策略–memcache在set時就指定,例如set key1 0 0 8,即永不過期。Redis可以通過例如expire 設定,例如expire name 10

5)分布式–設定memcache集群,利用magent做一主多從;redis可以做一主多從。都可以一主一從

6)存儲數據安全–memcache掛掉後,數據沒了;redis可以定期保存到磁碟(持久化)

7)災難恢復–memcache掛掉後,數據不可恢復; redis數據丟失後可以通過aof恢復

8)Redis支持數據的備份,即master-slave模式的數據備份。

選型:

若是簡單的存取key-value這樣的數據用memcache好一些

若是要支持數據持久化,多數據類型(如集合、散列之類的),用列表類型做隊列之類的高級應用,就用redis

Redis的持久化機制是什麼?各自的優缺點?

redis提供兩種持久化機制RDB和AOF機制。

1)RDB持久化方式:

是指用數據集快照的方式記錄redis資料庫的所有鍵值對。

優點:

1.只有一個文件dump.rdb,方便持久化。

2.容災性好,一個文件可以保存到安全的磁碟。

3.性能最大化,fork子進程來完成寫操作,讓主進程繼續處理命令,所以是IO最大化。

4.相對於數據集大時,比AOF的啟動效率更高。

缺點:

1.數據安全性低。

2)AOF持久化方式:

是指所有的命令行記錄以redis命令請求協議的格式保存為aof文件。

1.數據安全,aof持久化可以配置appendfsync屬性,有always,每進行一次命令操作就記錄到aof文件中一次。

2.通過append模式寫文件,即使中途伺服器宕機,可以通過redis-check-aof工具解決數據一致性問題。

3.AOF機制的rewrite模式。

1.文件會比RDB形式的文件大。

2.數據集大的時候,比rdb啟動效率低。

Mysql的資料庫表鎖、行鎖、頁級鎖?

表級,直接鎖定整張表,在你鎖定期間,其它進程無法對該表進行寫操作。如果你是寫鎖,則其它進程則讀也不允許

行級,,僅對指定的記錄進行加鎖,這樣其它進程還是可以對同一個表中的其它記錄進行操作。

頁級,表級鎖速度快,但衝突多,行級衝突少,但速度慢。所以取了折衷的頁級,一次鎖定相鄰的一組記錄。

資料庫的四大特徵,資料庫的隔離級別?

資料庫的四大特徵:

(1)原子性(Atomicity)

原子性是指事務包含的所有操作要麼全部成功,要麼全部失敗回滾。

(2)一致性(Consistency)

一個事務執行之前和執行之後都必須處於一致性狀態。

(3)隔離性(Isolation)

隔離性是當多個用戶並發訪問資料庫時,比如操作同一張表時,資料庫為每一個用戶開啟的事務,不能被其他事務的操作所幹擾,多個並發事務之間要相互隔離。

4)持久性(Durability)

持久性是指一個事務一旦被提交了,那麼對資料庫中的數據的改變就是永久性的。

資料庫的隔離級別:

1)Serializable (串行化):可避免髒讀、不可重複讀、幻讀的發生。2)Repeatable read (可重複讀):可避免髒讀、不可重複讀的發生。3)Read committed (讀已提交):可避免髒讀的發生。4)Read uncommitted (讀未提交):最低級別,任何情況都無法保證。

如果你正在找工作或者剛剛學校出來的程式設計師,又或者已經工作但是經常覺得難點很多,覺得自己java方面學的不夠精想要繼續學習的,想轉行怕學不會的,可以加Q3300863615 了解諮詢java繼續學習。更有免費視頻等你來領取。

加我Q有以下幾個要求,不達標的勿擾:

1、大學學習的是Java相關專業,畢業後面試受挫,找不到對口工作可以

2、在公司待久了,現在過得很安逸,但跳槽時面試碰壁。需要在短時間內進修、跳槽拿高薪的

3、參加過線下培訓後,知識點掌握不夠深刻,就業困難,想繼續深造

4、已經在Java相關部門上班的在職人員,對自身職業規劃不清晰,混日子的

5、有一定的C語言基礎,接觸過java開發,想轉行的

小號勿擾,不喜勿加

相關焦點

  • 100多道經典的JAVA面試題及答案解析(8)
    100多道經典的JAVA面試題及答案解析(8) 本文我們將要討論Java面試中的各種不同類型的面試題,它們可以讓僱主測試應聘者的Java和通用的面向對象編程的能力。
  • 數據結構java面試題及答案
    解決數組問題的關鍵是,你要對數組這種數據結構有一個深刻的認識,同時還要了解基本的程序流程如循環、遞歸以及基本的操作符。下面是一些經常問到和數組相關的面試題,你可以拿來練習:1、在一個給定的從1到100的整型數組中,如何快速找到缺失的數字?2、如何找到一個給定的整型數組中的重複數字?
  • 阿里P5-P8前端工程師技術要求有哪些?(附面試題)
    >阿里P5—P8前端工程師技術要求。並給大家分享一份阿里在職面試官總結的內部面試資料《阿里巴巴前端開發面試題集》累計226頁高清PDF(文末領取),內容包含了比較詳細的解題思路,希望對大家的求職備戰有幫助
  • 2019下半年教師資格證面試題及解析各學科匯總(精選)
    2019下半年教師資格證面試題及解析各學科匯總(精選)如下:2019下半年教師資格證面試時間:2020年1月4--7日(具體時間請以當地教資公告為準),為方便廣大考生備考教師資格面試,中公教師考試網特此整理了2019下半年教師資格證面試試題及解析(精選),藍色字體為已更新。
  • JAVA面試題及答案一百道(SE篇上)——老面試官的經驗之談
    上篇請看這裡-->JAVA面試題及答案一百道(SE篇上)——老面試官的經驗之談本文的面試題裡有部分關於設計模式的題目,但是阿偉要在這裡提醒各位一句話,找工作時面試官的水平可以清晰地反映出這個公司的水平,如果你的面試官抓住設計模式死摳死問,想讓你一成不變的把網上的面試答案背下來
  • 阿里螞蟻金服Java程式設計師面試的11個問題,你會幾個呢?
    比如阿里巴巴java面經、小米java面經、網易java面經等,吸引了大多數的程式設計師們的圍觀。在分享螞蟻金服Java程式設計師面經前,不妨來看下Java程式設計師面試時要注意3大要點:0、重視基礎在面試之前,有必要將基礎的知識點重新過一遍,比如並發優缺點、內存可見性、鎖、同步、線程池框架等。
  • 2019 最新 200 道 Java 面試題
    ,也為了更好的勝任技術經理的職位,在面試的這件事上,我做了大量的「功課」,首先我研究了幾乎所有大廠的面試題,還和負責招聘工作的幾個朋友,詳細的探討了 Java 面試所要涉及的知識點,於是就有了今天大家看到的這 200 多道面試題。
  • 無領導小組討論面試題及答案_廣東省公務員面試真題
    無領導小組討論面試題及答案_廣東省公務員面試真題由廣東公務員考試網考試快訊欄目由提供,更多關於廣東公務員無領導小組面試,廣東公務員考試快訊的內容,請關注廣東公務員考試頻道/廣東公務員考試網!
  • Java高級工程師面試題及答案匯總,助你面試成功
    今年,網際網路行業加速發展,阿里、騰訊、抖音、快手等大廠加快了人才招聘的節奏。這裡根據自身的實際經歷,整理了一份面試這些大廠的常問點清單,希望能幫助到大家查漏補缺,攻克面試難關。本篇Java編程面試題文章匯總了大量經典的Java程式設計師面試題以及答案,包含Java語言常見面試題、Java工程師高級面試題及一些大廠Java開發面試寶典、面試經驗技巧等,應屆生、實習生可參考學習!涵蓋不少大廠必考點、高頻點和漲薪點,也是開發人日常項目中經常遇到的踩坑點,需要的同學可以文末 免費 領取(2021最全面試題+詳實答案)。
  • 無領導小組討論面試題答案_廣東面試模擬題
    無領導小組討論面試題答案_廣東面試模擬題由廣東公務員考試網考試快訊欄目由提供,更多關於廣東省考無領導小組面試,廣東公務員考試快訊的內容,請關注廣東公務員考試頻道/廣東公務員考試網!
  • 500道Java 必備面試題答案(過後即刪)
    本專欄每篇文章大致分為兩個部分:Java 核心點介紹 + 相關面試題詳解,這兩部分內容相輔相成,前面的核心知識點介紹讓後面的面試題更容易理解,後面的面試題加深了讀者對於 Java 核心點的掌握。如此一來,讓你所學及所用,不僅能夠應付面試,更能學習到更多有價值的 Java 技術點,讓你在面試中和工作中都能展示的更加出色。
  • 一道值得深思的公務員面試題
    「某市圖書館實行對所有讀者開放,有乞丐和拾荒者也進了圖書館,引起一些讀者的不滿。對此,圖書館館長表示,我無權拒絕他們入內讀書,但你有選擇離開的權利。對此,你怎麼看?」這是江蘇省2011年的一道公務員面試題。據說這道題來源於生活,有真人版。我認為這道題出得很有水平,因為需要回答這個問題的不僅僅是考生,而是整個社會。
  • 2017復旦附中中考自主招生面試題及答案參考
    2017復旦附中中考自主招生面試題及答案參考!由於上海重點高中自主招生面試題一般不對外公開,所以只能根據往屆考生的回憶進行面試題整理,僅供大家參考。   復旦附中:抽籤圍繞三個關鍵詞說一段話(兩分鐘)我抽到的是「立春、資源、邏輯」(什麼東西啊~~~)給十分鐘時間準備,三個人一批的。
  • 2020年軍隊文職面試:臨床類崗位面試題及解析
    2020年軍隊文職熱門崗位(臨床類)崗位面試題及解析 為了更好的做好幹休所老幹部這個工作,你有什麼建議?   【參考解析】   幹休所的老幹部為我國的建設與發展做出了巨大的貢獻,所以幹休所的環境建設和醫療診治都應該予以重視,給老幹部家的感覺,使老幹部更加有歸屬感。作為幹休所的工作文員首先要熟悉關於離休退休幹部工作的方針、政策和法規制度,為老幹部提供良好的工作和生活秩序。
  • 無領導小組面試題及答案_廣東公務員考試時間2020延遲
    無領導小組面試題及答案_廣東公務員考試時間2020延遲由廣東公務員考試網考試快訊欄目由提供,更多關於廣東公務員無領導面試,廣東公務員考試快訊的內容,請關注廣東公務員考試頻道/廣東公務員考試網!   廣東省考資審公告陸續公布中,許多地市資審公告已經發布。
  • 護理軍隊文職人員面試題-中華人民解放軍隊人才網
    覆審材料有哪些?   8.相應資格證書(如執業醫師資格證心理諮詢師證等)   9.面試意向書(A4紙列印或手寫)   格式為:本人xxx,身份證號xxxxx,崗位代碼xxxx,願意參加貴單位XXX崗位的面試.承諾人:XXXX 2020年10月X日)   10.應屆畢業生攜帶<全國普通高等學校本專科(畢業生就業報到證>(派遣證)   11
  • 2020年上半年四川省考公務員面試題的特點
    現就四川省考公務員面試題的特點,簡介如下:一、「材料+結構化」題本卷面結構提供800字左右的「小人物小事情」材料;考生根據材料內容,結合三道題的提問作答。四、面試難度考生在考場上要審題、閱讀800字左右的材料、思考如何作答5分鐘,作答三道題10分鐘。對於大多數參加面試的考生而言,要想面試成績達到82分以上的目標,其難度相當大!只有潛心、儘早「備戰」面試,才能爭奪省考面試最佳成績!有面試培訓需求的考生,私信我。
  • 2020國考面試題_鐵路公安面試題(8月28日)
    2020國考面試題_鐵路公安面試題(8月28日)由北京人事考試網提供:更多關於國考,公務員考試,公務員,國家公務員的內容請關注國家公務員考試網/北京公務員考試網!或關注北京華圖微信公眾號(bjhuatu),國家公務員考試培訓諮詢電話:400-010-1568。
  • Java程式設計師集合框架面試題
    Java集合框架是最常被問到的Java面試問題,要理解Java技術強大特性就有必要掌握集合框架。這裡有一些實用問題,常在核心Java面試中問到。1、什麼是Java集合APIJava集合框架API是用來表示和操作集合的統一框架,它包含接口、實現類、以及幫助程式設計師完成一些編程的算法。
  • 阿里P10、騰訊T4、華為18,網際網路公司薪資、股權揭秘
    一、BAT、頭條、華為職級薪資報告 以 BAT 為代表的網際網路公司,其職級規則已經成為整個行業的標杆,不管是 BAT 系的創業公司,還是成長中的各型企業,都在參照 BAT 的職級規範給公司員工評定級別、職稱、薪資等。比如阿里的技術序列是 P 系列,騰訊、百度的技術序列是 T 系列,而華為則是數字系列。