阿里巴巴java研發工程師面試經歷分享
本人近期經歷了阿里巴巴的面試,也接觸了不同的面試官,說實話不同的面試官的面試風格是很不相同的,接下來就把自己在面試中被問到的題目描述一下:
首先,一面。經過多次面試後總結到所有的面試開頭都會讓你進行一個簡單的自我介紹。我認為這個自我介紹大家一定要精心準備一下,在自我介紹的過程中要向面試官講明自己的優勢,引導面試官去問一些你認為自己掌握的比較好的東西。一面中面試官首先問了一下我的專案相關的東西,首先會讓你簡單說一下,然後會問一些他們比較感興趣的一些技術,由於我的專案裡面寫到了使用多執行緒的技術,而且這是面試Java工程師最常被問到的東西,面試官就問了多執行緒的實現方式,並且出了一道題目,問現在阿里要給一千萬個使用者發郵件,你覺得應該如何採用多執行緒的方式實現。並且問道了java虛擬機器是如何實現執行緒池對各個執行緒的管理的,需要儲存執行緒的哪些資訊。
接著,就問了一些java基礎知識,大都是一些在網上就經常看到的,例如hashmap和hashtable的區別,內部是如何儲存的。並問了一道題目,hashtable由於同步控制,用多執行緒進行處理的時候效率沒有那麼高,該如何提高效率,這個就是應該從內部儲存結構上考慮,因為是陣列+連結串列的形式,因此,可以在雜湊到相應的連結串列後再進行同步控制,提高效率。以及hashcode的實現機制,還有一些執行緒安全和不安全的執行緒集合的問題。接著就問了演算法的支援。(1)如何找到一個二叉樹中距離最遠的兩個節點。(2)如何判斷兩個連結串列是否相交。這個問題就是將這兩個連結串列相連,判斷是否有環,即可解決。(3)當只給你一個節點,它指向單鏈表中的任意一個點,不知道單鏈表的頭和尾節點,只利用這個節點,如何刪除這個節點。可以直接將這個節點與後一個節點進行交換值,然後刪除後一個節點即可。最後 ,面試官問了我的職業規劃。
然後是二面,在二面中,面試官上來就說估計在半小時以內面試就可以結束,依然很專注java的基礎知識、多執行緒、資料結構與演算法等方面。問了java堆的分割槽,以及GC機制,多執行緒的知識,java中過載與重寫的區別,其中還問了char和bype基本資料型別一般在什麼情況下使用等。然後問了快速排序和堆排序的區別,還問了別的不太記得了,最後對我的整個面試進行了反饋,好吧,這個時候我就知道自己要跪了,就這樣就結束了。
整體來說面試官還是很重視你的基礎知識的掌握程度。在基礎知識上,不能只是瞭解,還是知道內部的實現機制,甚至熟記於心。有些面試官會很重視你的實踐的,比如說你在做專案的過程中如何調優的以及java中那幾個監視器的使用。面試官的問題很廣泛,自己在面試的過程中總會覺得自己準備的不夠充分,總而言之就是自己能力還是不行,還是有很大的提升空間。
希望自己的分享對接下來找工作的同學有幫助哈!