1. 程式人生 > >阿里巴巴天貓事業部java大資料方向電話面試總結201805

阿里巴巴天貓事業部java大資料方向電話面試總結201805

內容簡介:阿里巴巴天貓事業部java大資料方向電話面試,總結交流的主要問題和自己的體驗,希望給自己和大家共勉。

第一印象:面試老師是非常守時的人,約定八點面試,就是八點準時給你面試,如果有急事,也會八點準時通知,說現在有點事,半個小時後再面試,說八點半然後也是準時的八點半,很贊。

主要交流的問題:

1)自我介紹:省略

2)專業問題:下面開始具體介紹。

問題一:jvm是什麼,怎麼樣和一個初學者將清楚jvm是什麼?

回答:jvm是java虛擬機器,是負責執行程式的,jvm本身不是誇平臺的,但是對於開發者而言是誇平臺的,因為sun公司在jvm幫我們考慮了誇平臺。對於java開發者而言,無需關心。

問題二:JVM載入類的過程主要有哪些?具體是怎麼載入的呢,以及深入問答

回答:jvm會把類載入到虛擬機器,然後記憶體會劃分為:本地方法區,靜態方法區,堆,棧。和我們開發者有關係的是靜態方法區和堆和棧,靜態方法區就是載入的類和一些靜態成員。棧是載入一些方法和基本資料型別的變數等,堆是儲存物件的

老師:具體的載入是哪個類呢?載入主要分為哪些模組來載入?具體的載入過程是什麼?

答案:類載入時使用classLoader類來載入,其下面分為幾個子模組分別是:

bootstrapt classloader //載入jdk的核心包:rt.jar

extentions classLoader //載入擴充套件jar包

app  classLoader //載入專案引用的class檔案

customs classLader//載入的自定義class檔案,例如tomcate等容器會自定義jvm載入類的方式。把類以tomcate的自定義方式載入到tomcate的jvm中。

以上:載入順序是從上到下,檢查順序是從下到上

老師:如果這個不是很瞭解的話,那麼在啟動tomcat經常會出現問題,例如,一個類,在不同的包名下面,那麼出問題了這麼排查是什麼問題呢?這麼發現問題出在哪裡,class衝突了這麼辦?

老師:什麼情況下會出現 NoClassDefFound 問題,和class not founded的區別是什麼

答案:class類是沒有找到jar包引起的,一個類引用了另外一個類,結果這個類的jar包沒有被jvm載入,就會報錯class not founded問題,noClassDefFound的一般是編譯失敗吧,有這個類檔案,也載入了,但是該類中有錯誤引起的問題。

另外,noClassDefFound是一個錯誤,classnotfound是一個異常,錯誤和異常是不一樣的,異常可以捕捉然後做處理 可以由開發者控制,錯誤不行。
還有一個導致ClassNotFoundException的原因就是:當一個類已經某個類載入器載入到記憶體中了,此時另一個類載入器又嘗試著動態地從同一個包中載入這個類。【親身經歷:由於備份了一個class檔案A_bak.class,但是裡面的包名類名不變,把新的class拿過來A.class,會重複載入類,就會報該錯】

 

 
noClassDefFound錯誤:ClassLoader例項載入類的時找不到類的定義。要查詢的類在編譯的時候是存在的,執行的時候new卻找不到了。NoClassDefFoundError是有JVM引起的,所以不應該嘗試捕捉這個錯誤。
問題三:hadoop記憶體溢位問題是否有遇到過?怎麼解決的能否分享一下?
回答:有遇到過,有2中處理方式,第一種:資料沒有傾斜,分佈很均勻,但是jvm配置的記憶體配置的比較小,此時就需要調整jvm的記憶體大小配置即可。第二種:由於資料傾斜問題導致記憶體溢位,需要儘量的資料重新切分,讓資料儘量均勻來解決此問題,這種情況會比較多見。

老師:記憶體調整大小,具體的依據是什麼?比如一臺虛擬機器,記憶體就是6G,分配給tomcat的jvm最大記憶體應該是多少?

回答:jvm記憶體分配不能分配所有的記憶體,因為要考慮到 垃圾回收器,其垃圾回收時有新生代和老年代之分,回收時會複製一份資料到記憶體中,然後這部分是會佔用記憶體,所以是需要安裝一定的比例來劃分記憶體空間的。

問題四:集合LIST中,執行緒安全的是哪個?為什麼是執行緒安全的呢?

回答:Vector類是LIST中的執行緒安全的類,裡面的程式碼是通過同步程式碼塊的方式來保證執行緒安全的,一般使的很少。

問題五:spring用過嗎?

回答:spring是分層框架,我們目前是自己搭建分層框架來實現功能的擴充套件:包括:dao層,service層,controller層等,spring用的比較少,主要是前臺開發框架使用的比較多,篇後臺的使用的少。很久之前使用過,最近的專案沒有使用到。


總結:大概和老師交流了半個小時,印象深刻的問題主要包括以上幾個方面,問的確實是比較基礎,但是,老師會根據你的回答,一步一步展開深入的問下去,老師一般都是很有技術水平的。以上電話面試總結完畢,增加底層jvm的研究和原理性學習,同時提高表達能力。