從面試官的角度,聊聊java面試流程


    在這篇回答里,就講以我常規的面試流程為例,說下java方面大致會問什么問題,以及如何確認候選人達到招聘要求。

    先說面試前准備,可能有些面試官是拿到簡歷直接問,而且是在候選人自我介紹時再草草瀏覽簡歷,但我不是這樣。

    1 問招人的項目經理,這個崗位需要的技術什么,比如必須Spring boot,有數據庫調優經驗優先考慮,要有2到3年相關經驗等等。問清楚了,我就好在面試中組織自己的問題。

    2 瀏覽候選人的簡歷,找出不利點和加分項。

    不利點包括,候選人的學歷,非計算機相關專業,候選人的經歷看上去像培訓班經歷,或者項目看上去像自學的,或者最近半年不是做Java,或有超過3個月的未在職時間,或者頻繁跳槽。

    加分項包括,有獲獎經歷,或者像我一樣出過書,或者有大廠經歷,或者最近的項目技術和招聘的很匹配等等。

    這里說一下,哪怕在簡歷中發現再多的不利點,面試也會繼續,但這些不利點會寫在最后的面試結論中。

    3 最重要的是,整理候選人Java相關項目經驗和所用的技術。

    比如候選人用了spring boot,redis,kafka等技術,那么就划下來,面試時會問。

    面試前我大概會用5分鍾做上面所說的准備,這是必須的,是對招聘項目組負責,也是對候選人負責,在這個時間點上,候選人大概率是已經到會議室了。

 

    下面開始面試。

    1 首先是寒暄,比如要不要喝水,過來時方便嗎?這樣做的目的是讓候選人放松。

    2 然后進入到自我介紹階段,如果候選人沒有主動說出以前的項目和公司狀況,我會進一步提問。 

    候選人一般會說自己的年齡,工作經歷,之前所在的公司和掌握的技術。此時,如果候選人說的工作情況和簡歷上不符,那么我會重點問,以排查虛假簡歷。

    3 隨后進入到介紹項目的階段,這可以說是正式面試的開始。

    在這個過程中,我希望候選人用2,3分鍾,大致介紹之前項目的情況,用到的技術,涉及到的亮點。但不少候選人會大談特談項目的需求,而忽視項目用的技術和兩點鍾,那么我就會打斷,着重提問,這個項目中用到哪些技術?如果候選人簡歷上寫了還用到分布式組件實現高並發,我就會着重問些情況。問題的格式是,我看你簡歷上寫了用到xx技術,結合你的項目需求,說下使用這個技術的必要性。

    也就是說,通過項目介紹,我開始詢問候選人相應技術(當然是招聘所需技術)在項目中的使用情況,不會過多涉及到技術細節。

    如果候選人這個項目真做過,一般能說得上為什么要使用這個技術,比如項目並發量達到5000tps,所以要用nginx做分布式部署,因為支付模塊是異步的,所以用kafka做消息隊列等。但如果候選人項目是編的,那么大概率是只會說技術,沒法說為啥要用這個技術。由此能確認技術的項目經驗。

    4 然后大致問下項目的開發流程和上線流程,這塊如果候選人不知道怎么說,我也會引導。

    比如問,你們項目是github還是其它什么方式來管理代碼?用Maven還是gradle來管理項目?用(jenkins)什么來部署發布?測試工具是什么(比如junit或其他自動化測試工具)。這方面我只是詢問用什么,不會展開問怎么用。這樣問的目的一方面是考核候選人的項目開發能力,另一方面也是排查虛假項目。

    5 隨后是結合候選人在簡歷上寫的技術提問。這塊會按如下層次來問,比如我看到候選人寫了用Redis做緩存,我第一層會問,為什么要用?無非是數據庫壓力大所以要用。第二層問,怎么用?無非是用Jedis或RedisTemplate等組件,第三層問,結合一個需求告訴我怎么用?無非是,遇到xx緩存需求,設置鍵是什么,值是是什么。

    如果只是招個初級開發,那么問到這個程度就可以了。如果是應聘高級開發,那么我還會深入提問,比如你用到的Redis數據結構是什么?如何做持久化。如果是招資深開發或架構,那么我再問神深點,比如redis集群怎么搭,redis集群失效了怎么辦?redis怎么和數據就交互,有沒有遇到緩存穿透問題?

    候選人只要簡歷上寫到的值錢技術,比如kakfa,mycat等,我都會逐一詢問。這里請注意我的文法,不是簡單地問語法,而是結合項目問怎么用。同時,我也會經常去網上看些redis面試題,但我不會直接問,也是會讓候選人結合項目說下,相關技術(比如防穿透)怎么在你項目中實現。

    6 結合簡歷上項目以及技術提問這個階段,我心里會有期望,比如對初級開發的期望是會Spring boot增刪改查,對高級開發的期望是要有基本的分布式組件使用經驗等等。所以我不在乎候選人有多少問題沒回答上,但我在乎候選人的基本盤穩不穩固。

    比如面初級開發的時候,我結合項目提問,發現候選人能用Spring boot+JPA(外加其他組件其他注解)做增刪改查,其實候選人技術方面已經成功一半了。后面的技術問題哪怕你沒說好,只要別太差,一般能過。但如果候選人在基本盤技術方面可上可下,那么就得再通過后面的問題來確認能否過面試了。

    7 后面是我(面試官)自由發問,我一般會從Java核心,數據庫,(Spring Boot)框架,分布式組件方面問問題。這些問題網上都有,我就不一一展開說明了。

    我會把這些問題分為基礎,調優和高深三類。初級開發只要求回答出基礎問題。高級開發要求回答到調優程度,再高級些崗位需要知道高深類問題。畢竟不同級別的開發在工作中對應的職責不同。

    比如Java核心方面,final用法,treeset和hashSet差別等,這些能直接背到答案的,屬於基礎。Spring boot方面,常用的jpa注解或Spring boot方面注解以及Spring boot開發流程相關問題也屬於基礎問題。

    調優方面的問題好理解,比如你是怎么排查OOM問題的,你是怎么排查數據庫性能問題,再展開下數據庫索引,緩存等用法。

    高深方面包括底層源碼,比如ArrayList底層源碼。還包括解決實際問題的經驗,比如你是如何排查Redis超時問題的,是怎么排查kafka重發導致不冪等問題的。

 

    這里多啰嗦幾句。根據我面試的結果,大多數初級開發只能回答出基礎類問題,這雖然能達到要求,但通過背題或准備,初級開發也能回答出更高層次的問題,如果回答出了,這就是初級開發的加分項。

    但是不少高級開發甚至工作經驗在7年以上的資深開發,我看他們簡歷上項目經驗比較豐富,但依然說不好調優或比較高深的問題,這樣就很吃虧。畢竟面試官是通過面試來確認候選人的能力,你平時項目做得再好,面試說不好,你的能力一定會被低估。低估的后果就是過不了面試,或者是薪資被打折。

 

    同時,雖然我自認為我面試能力還行,但偶爾也會漏過一些會說但實際能力不達標的候選人,比如某個崗位是按4年經驗給工資的,某候選人經我面試時,能表現出這種能力,但進項目組以后,被發現只具備2年開發的能力。遇到這種情況,項目經理會私下和我說,但我不會有事,畢竟我面過以后,項目經理會再面一輪,招進來能力不符的,他也有責任。

    這里只展開面試官的角度記錄下我見到的情況,至於怎么提升面試經驗,大家可以看我相關文章,我有空也會多寫此類文章。

 

    面到這里其實我該問的問題都問好了。我已經結合了項目確認了候選人的技術,也從java核心,數據庫,框架和分布式組件等角度綜合確認了候選人的能力。但我自認為我還算比較為候選人考慮,所以我后面會給候選人一個自由發揮的機會。

   我會問兩個問題:

    1 你有哪些能幫助你應聘成功的亮點?

    2 你還有哪些技術亮點剛才沒有機會說明?同時再給幾個方向,比如比如oom調優,數據庫調優,分布式組件使用,底層源碼分析等。

 

    如果候選人能說出有具體的亮點或優勢,我會記錄在案。   

    如果是外企面試,我會考核英語能力,無非是,用英語自我介紹,介紹最熟悉的技術和最熟悉的項目。

   

    最后問些非技術的問題,比如期望工資,到崗時間。如果候選人在簡歷中有不利因素,比如頻繁跳槽,我會問下原因。這時我只是記,不會發表任何意見。

    當然還有例行公事的一問,我的問題問完了,你有什么問題?完事以后技術面試就結束了。

 

    此時一般會讓候選人等會,我會根據面試提問形成面試報告,面試報告一般分三部分。

    1 結合崗位需求,說明候選人在java核心,數據庫,框架和分布式組件等等方面的情況,是達標,勉強達標還是不達標。為了量化,一般還會給出例子,比如會寫這位候選人的能力和組里xx的能力很相似。

    2 列出加分項和不利點。前文也已經說過,加分項包括,能加班,年輕,有大廠經歷,有海外經歷,拿過獎,出過書或博客等能幫助候選人應聘成功的要點,不利點包括,最近頻繁跳槽,最近半年的項目背景技術和所需的不匹配,有長時間不在職等。

    需要強調的是,候選人如果在面試中表現出的一些不利因素也會記錄下來,比如說話太沖,回答問題條理性不強或性格方面不適合團隊協作等。

    3 第三部分就是結論,結論無非是,通過,不通過,可上可下有繼續面試價值,或者是,雖然本組不適合,但可以推薦給其他組面試。

    畢竟人家到現場來一次也不容易,所以如果通過,或者可上可下,或者哪怕有繼續面試的價值,項目經理一般都會再去面下。如果是可讓其他組面試,也會有其他面試官過去溝通。也就是說,如果你是到現場面試,在技術面試結束后,沒有繼續被面,那么面試結果可能就未必好。至於后面項目經理怎么面,就和技術面試無關了,就不再繼續展開了。

 

    也寫了這么多了,最后做個總結。

    1 本文以我做技術面試官為例,講述了一次面試的大概流程。其中沒有展開寫具體問哪些問題,因為這很容易查到,但寫了結合項目綜合考核候選人能力的問法。

    2 從文本里大家可以看到,其實面試能力和實際技術開發能力不是一回事,技術能力一般但面試能力強,照樣能過面試,反之亦然。

    3 本人既然知道如何考核候選人能力,那同樣也知道候選人高效准備面試的技巧,不過這和問題無關,所以就不再展開。感興趣的朋友可以看我其他文章。或者這個文章如果點擊量大,我也會再來更新一波。

    最后祝廣大朋友都順利通過面試,早日實現技能和薪資雙豐收。

 

 

這是我的公眾號,其中包含了大量面試文章,同時我自己出了多本Python和Java方面的書籍,會定期在公眾號里發書的電子版。請大家關注下我的公眾號,謝謝了。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM