大廠面試爲什麼需要了解JVM

如果你經常注意面試題,你會發現現在面試題多多少少會含有jvm相關的面試題,之前也把一些jvm面試題彙總了下:面試題系列一,那麼爲什麼現在面試需要了解或者問面試題呢?

主題

談談自己的理解,概括爲以下幾個方面:

  • 的確很重要。

  • 供大於求。

  • 面試風氣。

下面就針對這幾點談談。

隨着互聯網的發展,高併發高可用、快速響應成爲軟件的必須,而JVM與這些有着密切關聯。之前JVM系列好多都是一些由於STW影響到快速響應問題,忽然網站慢一下(抖動下)等問題,下面談談最近通過JVM排查到的高併發高可用問題。(在高可用高併發下面問題原因可能會很多,比如cpu異常高、磁盤IO高、SWAP空間等,有可能很多問題都是綜合性的問題)
在這裏插入圖片描述

以前在我的認知裏面,如果服務運行有問題,最簡單有效快速地辦法就是重啓,最近遇到了問題打破了我對該方法的認知。

某業務線最近集羣服務升級忽然上線上去不能提供服務,之後影響到整個集羣,查看當時服務器情況,負載、cpu、io、swap等都正常,查看日誌就是卡在最後一行不動了(也沒有發現OOM,等任何異常)。

如果是之前估計這個問題我也就排查不了了,現在排查問題多了一個維度JVM(的確有時候需要考慮的,並且現在很多監控工具都會考慮到JVM的),查看gcutil查看比例,發現from 100% eden 100% old 100%但是服務就是沒有OOM,執行任何都命令都非常緩慢了(更別談訪問請求了),查看具體gc日誌發現concurrent mode failure 並且時間很長,猜測就是一瞬間量把內存給用完了,導致from 100% eden 100% old 100%現象,最終不能提供服務,之後其他集羣節點也陸續出現了此類情況,重啓無效,現象一樣很快就from 100% eden 100% old 100% 不能提供服務,沒辦法,一直重啓直到都啓動好了可以正常提供服務。
在這裏插入圖片描述

留了一臺進行排查問題,執行jmap -histo pid無果,加-F也無果,後來執行jmap -dump:format=b,file=heap.bin pid (6G堆執行了3-4個小時左右)通過MAT分析查看,發現都是某個邏輯產生的數據,佔用了5G左右(char[]、String、Map、List等都與某個邏輯代碼有關)猜測是該問題(由於涉及到公司具體業務不方便截圖,只能大概說明下),很容易定位到代碼最後是由於併發沒有考慮好,邏輯寫的也有點問題導致的,進行修改處理,問題解決,出了JVM相關問題可以進行排查解決。//加入Java開發交流君樣:756584822一起吹水聊天

很能很多人認爲線上出現問題可以排查繼續解決問題的人牛逼,其實錯了,真正牛逼的人都是在問題產生前就解決了(需要意識裏面轉變和學習思考提高的地方)。


下面看個例子就明白了,是Charles告訴我的,我覺得放在這裏特別合適:

春秋戰國時期,有位神醫被尊爲“醫祖”,他就是“扁鵲”。一次,魏文王問扁鵲說:“你們家兄弟三人,都精於醫術,到底哪一位最好呢?”扁鵲答:“長兄最好,中兄次之,我最差。”文王又問:“那麼爲什麼你最出名呢?”扁鵲答:“長兄治病,是治病於病情發作之前,由於一般人不知道他事先能剷除病因,所以他的名氣無法傳出去;中兄治病,是治病於病情初起時,一般人以爲他只能治輕微的小病,所以他的名氣只及本鄉里;而我是治病於病情嚴重之時,一般人都看到我在經脈上穿針管放血,在皮膚上敷藥等大手術,所以以爲我的醫術高明,名氣因此響遍全國。”//加入Java開發交流君樣:756584822一起吹水聊天

如果能在編碼時候就考慮到JVM,做到面向JVM編程那就更牛逼了,如果能在上線前查閱到此類JVM問題或者是OOM問題以及一些其他問題那也就好了。

綜述:因此這些成爲必不可少的技能,所以面試需要了解,因爲公司可能會面臨該問題。

供大於求

現在不像以前了,以前會點html都好找工作,現在由於學習軟件的人越來越多,而且每年大學生都在畢業(而老一輩的也很少換工作)人只會越來越多,有個笑話,隨便在大街上扔硬幣砸到的那個可能就是搞軟件的,現在人員太多,公司爲了區分,會多添加維度,每多一個維度可能就會刷掉一批人,核心供大於求,所以我們也必須朝着這些大的方向努力,使得自己的競爭力比別人強。

面試風氣

簡單的問題都不好意思問,怕面試者鄙視面試公司問的問題。現在有一股妖風,不管啥公司都慢慢像阿里這樣的公司靠近,面試不問點jvm、併發、分佈式都不好意(雖然公司可能沒有用到,雖然可能僅僅CURD),老是覺得問問這些顯得逼格高點,不管處於什麼原因很多公司的確都在學習他們,都在問這些問題,那麼我們就朝着這些大的方向努力也是沒錯的,如果朝着這些方向努力就是他們需要的人才,那麼也就對了。

類似其他,比如高併發 鎖、分佈式、緩存等都可以考慮考慮這樣思考,你會有不一樣的收穫的。

image

最新2020整理收集的一些高頻面試題(都整理成文檔),有很多幹貨,包含mysql,netty,spring,線程,spring cloud、jvm、源碼、算法等詳細講解,也有詳細的學習規劃圖,面試題整理等,需要獲取這些內容的朋友請加Q君樣:756584822

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章