1. 程式人生 > >三年Java程式設計師面試實戰

三年Java程式設計師面試實戰

出於一些原因近期做了一次工作變動,在職交接近一個半月時間大概面試了十五家公司,並且得到了自己比較滿意的offer,最後基本上無縫銜接了新工作。總體來說,雖然準備的很充分,但面試期間還是暴露了許多問題,所以做下總結,供大家和自己以後參考,主要分四部分講述:

簡歷方面,格式內容包括七個板塊,個人簡介,求職意向,工作經歷,專案經歷,技能描述,學歷背景,自我評價。如果自己或公司沒有其他特殊要求,這些一般就夠了,具體格式不再贅述。總結幾個要素:

1.個人簡介名字大寫,內容需要詳實,一是可以給人留下映像,二是減少不必要的與面試官交換個人資訊的時間。準備一份好的口頭自我介紹是很有必要的,畢竟準備一次能用很久,時間花在上面很實用,面外企英文版的最好也提前準備下。

2.簡歷上不要寫上期望薪資,能夠根據面試情況變化是最好的,如果寫上建議高於自身期望,詳細參考錨點效應。

3.簡歷要簡潔,最好不要超過兩頁。專案經歷要突出重點(可以具體到某次解決線上問題,某次優化效率提升),兩到三個為宜,不重要的可以放在工作經歷中一筆帶過。這樣有個好處,即面試官根據專案問的問題就會很集中,在你的預料之中,如果你的專案誇誇其談寫了很多,那面試官發揮起來,你就容易被帶著走。

4.很多人不重視個人評價欄目,我的技巧是評價最後中帶上自己的部落格,個人專案,因為在尾部還是很容易被看到並當做加分項的。

面試流程,其實每個公司大同小異,電話面試,筆試,技術面(可能兩面),Hr面,部門經理面,可能不同公司有稍微做調整。這裡需要強調兩點:

1.電話面試,很多大公司都會有電話面試,有些朋友接到面試不管當前情況如何,環境如何都會爭取這個機會,而我想說的是,如果身邊環境尚可接了也就接了,但是如果身處鬧市,或者下班回家地鐵上訊號不好,或者自己完全沒有準備,建議直接回復面試官目前不合適,改約其他時間,這麼做好處一是沒有環境影響,二是自己有心理準備。

2.抓住機會問問題,如果對技術有追求一定要向技術官問清楚專案所使用技術,問開發人員上下班時間。向HR問清楚公司的薪酬福利體系,決定自己開價。向管理層問清楚專案目前所處的階段,以及規劃方向。

面試題概覽,基本上彙總了這次面試中遇到的所有問題,中間也有一些是自己當時沒有答上來的,這裡只做羅列,具體答案大家可以自行百度:

1.簡述下ArrayList和LinkedList的底層實現,其效能優劣在哪裡?

2.簡述下HashMap的底層實現,對比下HashMap和HashTable的異同,原始碼上分析這些異同?

3.ConcurrentHashMap效率為什麼比HashTable高?

4.常用的鎖有哪幾種?ReentrantLock可重入鎖是怎麼實現的?簡述下死鎖的造成與解決/避免。

5.比較下Synchronize和ReentrantLock。

6.Volatile關鍵字能否保證併發安全。

7.考察常用的設計模式(集中考察工廠,單例,觀察者,策略模式)

8.考察常用的類庫,工具類。

9.執行緒池有幾種型別?執行緒池的構造參有哪幾個?數執行緒池的意義和原理是什麼?

10.考察JVM,垃圾回收機制(GC和Full GC區別),類載入機制。

11.考察JVM常用命令,CPU飆升怎麼辦,記憶體異常增高怎麼辦?

12.資料庫的鎖有哪幾種?

13.資料庫事務的傳播機制。

14.資料庫事物的隔離級別,以及分別解決什麼問題?

15.簡述下Spring中Bean的生命週期,Spring是如何解決迴圈依賴的?AOP相關考察。

16.MyBatis相關考察(這個我忘卻了 :-D)

17.為什麼使用Redis,為什麼Redis很快?

18.為什麼使用訊息佇列,訊息佇列可以解決什麼問題?

19.考察微服務框架(這個因為我在之前工作中沒有用過,面試時候直接回沒有使用過)

20.降級和熔斷的區別,分別在什麼情況下使用?

以下是一些開放性問題:

22.設計一張表來裝樹形結構(多叉樹),要求能根據父節點很快找到他的子節點。(考察NoSql)

23.兩個整型陣列中求唯一一個不同的整數。(考察溢位和異或操作)

24.快速求證一個數是不是2的N次方。(考察快取和位移操作)

25.一億整型數中求前一百大的整數。(考察記憶體分析和分而治之)

26.秒殺系統的設計。(百度上很多分析)

其他,主要是一些面試後的個人看法和玄學了:

1.很多在職的同學覺得請假面試麻煩,其實現在很多公司都有安排晚上面試和週末面試專場的,提前溝通好就行了,請假的話一天面試三家應該不是問題。

2.投遞公司的順序建議,首先是一兩家公司預熱一下,然後比較心儀的很有把握的公司,然後才是非常心儀的公司,最後是選擇 性的面試。安排這個順序主要是,雖然可能你業務很厲害,但是進入面試狀態時需要一個過程的,面試預熱很有必要,這裡順便強調下面試提前準備,比如看下面試題,複習下技術書籍都很有必要的。提前選擇比較心儀的很有把握的公司,主要是為了拿到offer,一是做自我價值驗證,二是心中有底氣。

3.調整好心態,其實有些offer是帶有運氣成分的,畢竟對於有些體量公司來說,面試常有,編制不常有,所以拿不到offer也不要氣餒。

最後,祝所有大家在面試中過關斬將,拿到心儀offer。