1. 程式人生 > >在做技術面試官時,我是這樣甄別大忽悠的——如果面試時你有這樣的表現,估計懸

在做技術面試官時,我是這樣甄別大忽悠的——如果面試時你有這樣的表現,估計懸

 記得我剛做技術面試官的時候,還比較單純,別人說什麼就信什麼。這本來也沒多大的錯,雖然有些候選人會誇張自己的技能,但畢竟大多數候選人都是比較誠實的,相信絕大多數的技術面試官也像我這樣,會以君子之心度人的。

    但我面試了一陣後,有專案經理向我反映,經我手面試通過的一些候選人有存在實際技能與簡歷上描述不符的情況,比如簡歷上寫的是熟悉Linux操作,但實際也就會幾個命令,又如簡歷上寫的是熟悉Spring Cloud,也有實際專案經驗,但後來發現他其實沒做過Spring Cloud的實際專案,簡歷上的專案是從網上下載的。   

    專案經理還說,像我還算好,經我面試進來的人好歹只是能力上的問題,而且能力的偏差尚在可以接受的範圍,像有些面試官甚至會讓一些無法正常和別人溝通溝通,幹活偷奸耍滑得過且過等的刺頭通過面試。

    於是我對面試別人的方法和技巧做了總結,在這方面也和其它資深面試官做了溝通。在本文裡,不僅會講到如何甄別一個人真實能力的方法,還會在此基礎上對大家提些面試方面的建議。

 

1 從候選人的談吐和溝通表現方面,看他是否適合這個崗位


    其實,我從接到候選人這一刻起,面試就開始了。在面試過程中,團隊協作能力和溝通表達能力甚至比技能還重要,如果候選人出現如下的情況,我是一定要在評估報告裡寫上對候選人非常不利的評價。

    1 候選人遲到,且沒主動說明,或非常輕飄地把遲到歸結成客觀原因。

     如果候選人預期會遲到,應當事先打個電話來說明,比如確實是因為交通等因素,這不會成為扣分因素。或者在遲到後,主動說明原因並表示歉意,這也沒什麼。

    但如果候選人遲到,但就當沒事人一樣大大咧咧地直接來面試,我就會寫上,“候選人遲到且沒說明,沒時間觀念”。或者候選人雖然有說明,但一口把遲到原因歸結成交通等客觀原因,同時不表達歉意的,那對不起了,我估計就得寫上“候選人沒擔當,平時工作中有可能會推卸責任”。

    2 候選人談吐舉止不穩重

    說通俗點就給人感覺輕飄飄,比如說話很隨意,得理不讓人,或者在交流時隨意打斷別人,或者交流時自說自話引導話題,或者交流時抖腿等。這類人有可能會和組內成員溝通有問題,所以情況嚴重的,甚至會無視技術亮點直接排除。不過話說回來,候選人的面試時間估計也就半小時,在這半小時裡,裝得職業化些穩重些,這應該不難吧。

    3 過於以自我為中心

    比如候選人目中無人或者說話很“虧”(太自我),比如經過多次深入發問後會不耐煩,或者大談特談自己的優勢,或者太“作”。其實有時候,候選人的能力比面試官確實要強,資歷也要比面試官豐富,但哪怕在這樣的場景下,也得做到從語氣和舉止上尊重面試官,哪怕面試官反覆問到同一個問題,或者問的問題在你看來很簡單,你也得態度好地認真回答。 

2 如何在簡歷上歸納可疑點(這會在面試時著重問)


    其實大多數IT技術人員都是老員工了,而且平時哪怕有缺點,在面試時也會盡量隱瞞,所以我在面試過程中,在上述第1方面淘汰掉的候選人雖然有,但不多。在大多數情況下,候選人會在簡歷上有所誇張,甚至作假,下面來看些具體的情況。

    1 候選人把不是相關的經驗寫成相關的經驗

    比如候選人雖然有3年工作經驗,但前兩年是做測試的,第三年才做java。但在簡歷中,他把3年經驗都寫成Java相關的。

    這樣的話,他前兩年的java經驗看上去會非常像學習專案,而非商業專案。而且,他在簡歷上所寫掌握的技能,一定很膚淺,沒法看到有工作3年的程度。

    2 候選人的專案描述看上去像畢業設計或課程設計   

    真實公司裡的專案,多少會用到當前比較熱門的技術,比如Java專案裡可能會用到Redis或Dubbo等元件,而且公司一般不會做個明顯沒商業前景的專案。

    所以如果我在簡歷中看到有候選人寫,xx教務系統,xx財務系統或人事系統之類的,(它們一般和網上能下載到的案例名很相似),這就很明顯是課程設計的專案,因為這類系統都有現成成熟的,公司一般不會開發。或者是xx電商系統,除非是某公司虧錢推廣自己的產品,否則一般不會自行開發,這類專案我也會在面試時著重甄別。

    3 在專案中提到的技術都是過時的,而且出現明顯會虧本或應用場景明顯不符合的技術.

    比如還在用Struts MVC,或者明明流量比較大需要分散式部署的系統,在專案裡還僅僅用到Spring MVC,沒有用到Redis等分散式元件。又如,一個明明工期比較短而且訪問量不大的維護專案,還大量用到了Spring Cloud等成本比較高的技術。

    4 在某個時間點,某培訓學校有大批學生畢業時,我就經常會看到不少簡歷裡的專案描述很相似,這往往是培訓學校裡的學習專案,而不是商業專案。

    我會認可該候選人在培訓學校裡的學習經歷,但畢竟學習專案的含金量要比商業專案裡要小,所以我會把這部分的專案經驗排除在實際的相關技術年限之外。    

    5 簡歷上的專案經驗裡,描述某個技術的文字和上下文非常不匹配,感覺像是後來加上去的,這類技術我就要詳細問些細節,因為有可能候選人其實沒在專案裡做過,而是隻有學習經驗,但拼接在現有的專案裡。

 

 

3 如何從發問中判斷候選人對技術的掌握程度


    在我面試前,我一般會通讀候選人的簡歷,在發現有第2部分所述的可疑點的時候,會通過如下的問題來確認。

    1 針對候選人的相關技術年限,比如java 3年,我會預先給候選人劃定個應該達到的程度,比如得熟悉虛擬機器熟悉多執行緒等,然後在面試時,就圍繞這個尺度來問,一般來說,能甄別出誇大相關技術年限的情況。

    2 如果候選人在簡歷中出現類似學習專案,我就會問些在專案裡一定會用到的技能,比如專案如何通過ant等工具打包,如何通過jenkins等來打包和部署,或者問專案的細節,比如多少個人做了多久?客戶是誰?然後再提出自己的質疑:這個產品市面上有現成的,為什麼你們公司還要掏錢再開發?如果候選人想用學習專案來冒充商業專案經驗,這些細節一定答不上來。

    3 如果我看到候選人簡歷上的某些專案裡,出現了比較突兀的技術,那麼我就會盯著這個技術問,比如明明用單個Oracle實際即可完成的專案候選人說用了叢集,那我就會首先核實叢集的配置細節,然後再問,為什麼要用叢集?這時候,候選人往往只能尷尬地說,這是由專案經理安排的,他也說不上。

    除了上述情況之外,如果候選人在簡歷中寫了一些比較熱門的技術,或者是亮點,我就會對此深入提問,如果問題也回答非常好,那絕對是個加分項,反之就還不如不寫了。

    比如,某候選人在簡歷上寫,掌握資料庫效能調優的技能,也在專案裡用過,那麼我就問怎麼用的,採用了哪些技術,用的前後大概能提升多少效能。也有候選人能很好地回答上,比如說用執行計劃看效能耗在哪方面,然後對應地改,或者分庫分表,或者用with等語法改善SQL語句,這就能證明他確實掌握這塊技術。但有些候選人只能停留在建索引的層次,那麼這就不能說是熟悉資料庫調優了。

    又如,有些候選人在簡歷上寫,在某某專案裡用到了Kafka做訊息中介軟體,這也是個亮點,這時我就會問,kakfa如何做訊息持久,如何實現訊息分組等問題,總之只要做過kafka,一定能知道。這時就有些候選人說不上了,再一細問是隻配置過,沒用過。也有些候選人只會泛泛而談,沒法結合專案說,這樣的話,只能證明候選人有理論經驗,而沒在實際專案裡用過。

 

4 候選人該如何準備簡歷


    1 千萬別在學歷年齡等關鍵因素造假,在入職時會提交學歷證身份證等,這類造假很容易看出。

    2 我知道有些候選人如果照直寫,估計連面試的機會都沒,這裡只能說,比如你把前幾年的測試經驗寫成java開發經驗,你就得後果自負的,假設你是3年測試加2年java,但你寫成了5年java,面試官在無法查證的情況下,是按5年經驗來問的,你就的自行承擔風險了。

    3 在寫簡歷時,一定得了解市場上對你這個工作年限所必備的技能,如果不知道,自己去看招聘廣告上你這個年限的職位要求,再不清楚的話,自己通過面試去試錯。

    如果你的簡歷給面試官的感覺是,達不到你這個工作年限,那麼面試的機會就很少。這裡倒也不是讓大家不切實際地寫,而是請大家得挖掘自己的專案經驗,其實有很多技能,你用過,但沒注意,所以沒往簡歷上寫。比如資料庫調優,你一定改寫過SQL,也或多或少用過執行計劃檢視效能,這類容易忽視的但非常值錢的經驗得寫上。

    4 寫簡歷時,一定得準備些亮點,比如精通linux,能在linux上部署程式或檢視日誌,或者用過些分散式中介軟體,又如有過大資料的經驗等等,這類經驗,最好結合實際專案寫,比如在xx專案的xx模組裡,我用到了訊息中介軟體RabbitMQ,它是怎麼部署的,如何發訊息等,然後,你得事先準備好針對該技術的相關問題。

    5 在寫簡歷上的專案時,可以一筆帶過客戶方是誰,用了多久,這樣就能顯出這個專案是商業專案,而不是學習專案,尤其這個專案看上去很像學習專案。

    在準備簡歷方面,我根據我的一些經驗,總結出了一本書,Java Web輕量級開發面試教程,尤其在最後一章,寫了如何準備簡歷和麵試,自認為還算詳細,大家感興趣的話可以看下。 

 

 

5 候選人該如何準備面試技術問題


    1 針對你工作過的公司以及專案經驗,你得非常清楚,說的時候別和簡歷上不一致,比如具體某個專案的時間段以及用到的技術框架,用到的資料庫等,畢竟這個是你做過的,你再說錯就有些說不過去了,如果說錯,面試官會懷疑你簡歷的真實性。 

    2 針對你簡歷上提到的技術框架,尤其是亮點,你一定得逐一準備,首先,你得講清楚這個技術是如何在專案裡用到的(結合專案的例項講解技術,可以講些配置引數的細節),其次,你可以到網上看下這個技術的相關描述,加深對這個技術的理解。比如nginx,你可以瞭解配置反向代理的細節,以及如何在其中寫lua指令碼,最後,你可以說下對這個技術的理解,比如引入這個技術後,對你的專案有什麼幫助,或者在使用這個技術時,你遇到過哪些坑,然後是怎麼逐一解決的。

    3 然後可以刷題,刷題的時候,最好能結合底層程式碼來說,比如你被問到Spring裡的IOC,你可以事先閱讀些底層程式碼,在面試時通過紙筆向面試官講述,這樣面試官就會認為對這個技術很精通(你都深入底層程式碼去看了,怎麼可能不精通)。

    4 在簡歷上你可以寫一些亮點,然後在面試前準備說辭, 在我另一本書Java核心技術及面試指南里,我寫了關於虛擬機器和設計模式方面的準備說辭,並在最後一章給出了丟擲這些說辭的技巧,自己感覺,也是我面試別人和自己面試的經驗之談。

    5 最好了解下你平時用到的專案打包部署測試等的工具,比如用ant打包,用jenkins部署,用Sonar做程式碼質量管理,用哪種技術做效能壓測等,這類技術一旦你說出來,那麼第一能向面試官證明這個專案是商業專案,另外,還能證明除了程式碼開發之外,你還有專案實施部署的相關經驗。

 

6 版權說明,總結和求推薦


     本文歡迎轉載,轉載前請和本人說下,請全文轉載並用連結的方式指明原出處。

     本人自認為,上述經驗是根據面試了大量技術人員總結而來,對大家多少有些幫助,雖然有些泛,但裡面不乏可以實施的改進點。如果大家在面試方面想了解哪個細節,請和我說,我會在後繼博文裡介紹。

作者:hsm_computer

原文連結:https://www.cnblogs.com/JavaArchitect/p/9704011.html