前言
又到一年金九銀十之際。
Java作為目前用戶最多,使用范圍最廣的軟件開發技術之一。
Java的技術體系主要由支撐Java程序運行的虛擬機,提供各開發領域接口支持的Java,Java編程語言及許多第三方Jvav框架構成。
其中,以Java的虛擬器為今天的著重點
以下是我整理收藏的一些JVM大廠面試經典問題與相應答案,希望可以給看文的朋友一些幫助
由于篇幅過長,請耐心往下看,文末提供小編收藏已久的JVM面試寶典!
京東一面涼經
- object的方法,7大方法
- synchronized方法講解
- synchronized方法實現原理
- volatile關鍵字的原理
- 鎖的分類
- 偏向鎖講解
- NoClassDefFoundError和ClassNotFoundException的區別
- 追問,ClassNotFoundException是不是只發生在編譯時,運行時可不可以
- 類加載機 制
- redis過期策略及內存淘汰機制
- mysql的索引種類4種
- Innodb和myIsam的區別
- Innodb的索引結構
- B+樹的優缺點
- 海量數據的索引有什么影響
- 選擇聯合索引還是多索引,最左前綴的規則
- CAP理論的關系
- 見過哪些系統,保證兩個犧牲一個的
- 一致性Hash
算法題:
給一個正數N,求這個N的所有的因子分解;
N = 12;
Ans = {12},{6,2},{3,4},{3,2,2}
解法:遞歸
京東二面涼經
- 自我介紹+項目
- 項目中的異步怎么做的?具體說說
- 用戶密碼的安全性怎么保證的?
- mybatis底層怎么實現的?(不會)
- tcp中擁塞控制和流量控制有什么區別?
- 流量控制具體怎么控制的?
- 擁塞控制具體的算法怎么樣的?
- Java中的鎖有用到哪些?
- 說說syn、re和cas的區別?
- cas具體怎么現實的?
- 進程和線程的區別?具體講下什么情況下是多進程,什么情況下是多線程?
- java中的map有哪些?各個簡單介紹下
- hashmap的底層數據結構是怎么樣的?
- 有沒有map是按key的值排序的?底層怎么現實的?
- 類的加載流程?具體每一步做了什么?
- Spring Bean 的作用域。
兩道算法題
1、有序二維數組找target,找到返回坐標,找不到返回[-1, -1];
2、樹的根節點到葉子節點的所有路徑和。
失敗乃成功之母
以上就是第一次京東面試的全部內容了,一面二面是接著面的,時長2個小時,經歷下來,就一個感受:京東的面試太硬核了,就是會一直問到底,看你到底掌握到什么程度,如果掌握的不深刻很容易就被問出來了。二面完之后就讓粉絲回家了,PASS的也是很含蓄了。
但是你以為這樣就結束了?當然沒有!
據我所知京東跳動投遞簡歷是有三個月的鎖定時間
,所以這次失敗了不代表沒有下次。
然后就總結了經驗并為下次面試作準備并開始了三個月的閉關之旅。
1. 惡補JAVA并發底層的知識,尤其是synchronized,volatile和hashmap的
2. 刷算法題,需要詳細復習下數據結構與算法的知識
3. 了解高并發下的問題解決方案與性能調優
4. 閱讀是spring框架的源碼,提升自己的競爭優勢
重整旗鼓再戰京東
這次面試官果然上來就直接問:看你6月份也來面過京東但沒有通過,你覺得你現在的優勢在哪里呢??
回答:因為上次來貴公司面試沒有準備充分,同時在之后認識到自己有些技術方面確實明顯不足,所以回去經過系統的學習,我覺得這次能夠勝任這份工作!
然后面試官看著他笑了笑(應該是欣賞的意思吧),然后第二次面試就正式開始了!
因為第二次面試與第一次相差不大,第二次面試內容通過知識點的分類給大家分享出來。
JVM
- 什么樣的垃圾才被回收?
- 如何利用JFR和JMC監控Java程序?
- 解釋下Java虛擬機內存模型
- JVM垃圾收集機制
- 什么樣的對象會進入老年代
- 講一下OOM與調優
MySQL
- 說說自己對于 MySQL 常見的兩種存儲引擎:MyISAM與InnoDB的理解?
- 數據庫索引了解嗎?
- 為什么索引能提高查詢速度?
- Mysql如何為表字段添加索引?
- 對于大表的常見優化手段說一下?
spring
可能是簡歷上專門寫了閱讀過源碼,所以這次問spring的比較多
- Spring 框架中都用到了哪些設計模式?
- Spring事務的實現方式和實現原理
- Bean Factory和ApplicationContext有什么區別?
- 什么是Spring中的依賴注入?
- IOC(依賴注入)有哪些不同類型?
- 解釋Spring Bean的生命周期?
- 有哪些重要的bean生命周期方法?你能重寫它們嗎?
分布式
- 為什么要用 redis緩存?
- 為什么要用 redis 而不用 map/guava 做緩存?
- redis 和 memcached 的區別?
- redis 常見數據結構以及使用場景分析?(String,Hash,List,Set,Sorted Set)
- redis 設置過期時間。
- redis 內存淘汰機制(MySQL里有2000w數據,Redis中只存20w的數據,如何保證Redis中的數據都是熱點數據?)
- redis 持久化機制(怎么保證 redis 掛掉之后再重啟數據可以進行恢復)?
- redis 事務。
- 緩存雪崩和緩存穿透問題解決方案。
- 如何解決 Redis 的并發競爭 Key 問題。
- 如何保證緩存與數據庫雙寫時的數據一致性?
- 什么是消息隊列?為什么要用消息隊列?
第二次面試總結
第二次去京東面試因為準備的時間比較長,所以面試問題基本都在意料之中,最終也成功拿下了京東的offer,可喜可賀!
Java面試核心知識點筆記
其中囊括了JVM、鎖、并發、Java反射、Spring原理、微服務、Zookeeper、數據庫、數據結構等大量知識點。
Java中高級面試高頻考點整理
更多Java進階知識筆記文檔分享,這些對于面試還是學習來說都是一份不錯的學習資料
有需要的朋友可以戳這里即可免費領取
最后還分享Java進階學習及面試必備的視頻教學
ps://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB)**
[外鏈圖片轉存中…(img-PRu7koT8-1624011203716)]
最后還分享Java進階學習及面試必備的視頻教學
[外鏈圖片轉存中…(img-EUmpmeht-1624011203717)]