面試官如何提問程式設計師
面試是個技術活,其本質上是一次溝通的過程。那麼呢?下面是小編給大家整理的,供大家參閱!
第一:德行
對於一個程式設計師候選人來說的話,如何評判一個候選人的德行呢?我覺得有以下幾點:
眼神
注意觀察候選人眼神是否飄忽不定,是否總是不敢直視你的眼睛,或者回答問題的時候總是往左右兩邊瞟。一般來說,眼神是一個人性格的直觀表現之一,如果眼神不夠沉穩堅定,說明此人不踏實,心境飄忽,很有可能不誠信比如愛撒謊,不誠實,不講信用等等。
身體語言
如果一個候選人在跟你聊的過程中,整個人吊兒郎當,身體左搖右晃,一會二郎腿,一會把腳放到大腿上別懷疑,我真遇到過,那麼說明此人一定不沉穩,性格輕佻浮躁,最好謹慎考慮。相反,如果候選人坐姿規矩,談話間體態得體,自然,不緊張,不做作,那麼該候選人應該比較有家教,個人習慣很好,性格比較穩定。
溝通
在跟候選人對話時,注意對方的語氣語調。如果候選人語速平緩,吐字鏗鏘,說明此人準備比較充分,不急躁。當遇到一些一時回答不上的問題時,能夠保持冷靜,集中精神思考,如果實在不會,沒有打算糊弄過關或者顧左右而言他,而是直接答覆不知道,那麼就說明該面試人性格比較沉穩,而且比較誠實,不滑頭。甚至你可以故意說錯一些細節,看看對方以何種方法給予糾正或者不糾正。你也可以直接故意用錯誤去質疑對方正確的表述,看看對方的反映,如果對方一下就被點燃了一樣蹦起來,或者總打斷你說話,說明對方性格比較急躁,這是程式設計師的大忌。當然此招能少用盡量少用,而且一次足矣,如果老這樣,會讓候選人覺得面試官不行,而心生鄙視。
細節
最常見的就是對方電話來了,看對方的反應,一般來說候選人會選擇直接掛掉,或者任由電話震動。如果對方當著你的面,直接接起了電話,說明對方在為人處事方面肯能有些欠缺,起碼不是很懂禮貌,或者根本不大重視這場面試。另外,一般來說前臺會給面試者打一杯水,等到面試結束,或者有需要中途更換面試場所例如換會議室等等,如果對方隨手拿起水杯而不是留在原地,說明該候選人素質比較高的,而且心應該比較細。
第二:技術
技術排第二不是說技術不重要,作為一個程式設計師崗位,技術當然是非常重要的。很多企業喜歡讓程式設計師做卷子作為首面的內容。我認為這是不妥當的,是面試官在偷懶的表現。不是說做卷子不能反映問題,只是這種方式太死板,並不能真正過濾掉不合格的面試者。比如,我其實沒有什麼技術能力,但是我面試前背了很多書,那麼做卷子這一關我有可能可以過,到真正面試的時候才會被拒。所以,做卷子只能過濾那些真正沒有技術,而且沒有背書的面試者。但是,即便是直接面試,面試官真的碰到這樣的面試者,又花的了幾分鐘就可以判斷出來再拒絕呢?所以,我建議,不要做卷子,直接面試,並且分成以下幾個內容來考察面試者。
過往經驗
可以讓候選人介紹最近一個專案,並且描述自己的工作內容。首先看看候選人是否能夠說得清楚這個專案,比如有哪些模組,每個模組有哪些功能,實現了一個什麼業務邏輯,自己負責的這一塊的詳細業務邏輯又是怎樣的,等等,如果連這些都說不清楚,那麼基本上可以判斷候選人在撒謊。瞭解了專案之後,可以通過候選人負責的內容進行深入技術提問,比如候選人說使用了MVC4,那麼就可以就MVC4的相關知識進行提問;候選人說使用了多執行緒,那麼就多執行緒相關的知識進行提問,但是注意要由淺入深,不要一上來就問一些很難很深的問題。一般來說如果候選人沒有撒謊,那麼應該來說還是可以回答一些不太難的問題的。
基礎知識
一定要考察候選人的基礎知識。很多候選人在說起自己做過的專案的時候眉飛色舞,一套一套的,甚至滿嘴都掛著一些熱門的詞彙,比如大資料,高併發,雲端計算,等等。但是一問基礎知識就傻眼,最簡單的值型別引用型別都不知道有什麼本質區別。很多候選人都會辯稱,自己會程式設計,能夠實現業務邏輯,為什麼還要去背那些概念性的東西,殊不知,那些他們認為沒有的概念性的東西,正是我們構築大廈的根基所在。舉個例子,我造一所房子,地基打了10米,你造一所同樣的房子,沒有地基。我們都造好以後,在風和日麗的時候,看上去一模一樣,你會笑話我,“看,我們一樣,但是我比你不知道省了多少工序“,但是你要知道,並不是每天都會風和日麗,總會遇到狂風暴雨,等到考驗真正來臨的時候,誰的房子更不容易傾塌呢?
分類考察
在面試候選人的時候,最好是分類進行考察,每個類別準備5個問題左右,並且由淺入深。比如基礎知識5道題,我一般會問:值型別引用型別什麼區別?建構函式什麼特點,合適被呼叫?string和StringBuilder什麼區別?子類被例項化的時候會呼叫父類的建構函式嗎?介面和類有什麼使用場景上的區別?問完了基礎知識,一般會問C#的相關知識,然後是資料庫相關知識,然後是框架的知識,例如MVC的知識,最後問一些Web前端相關的,例如ajax,Jquery,JS等等。一般來說我不會考察演算法,資料結構相關的內容,更不會讓候選人寫一個“二分查詢法”,或者“單例模式”的程式碼,什麼道理呢?因為我招程式設計師還是以實際應用為主,而且.net裡面已經封裝了很多演算法,知道如何使用即可,對於原理性注意,是原理,不是基礎的東西,如果自己能花時間去了解去掌握更好,如果不太瞭解,但是能夠熟練應用封裝好的東西就行。畢竟頂尖的網際網路公司就那麼幾個,一般的公司招聘真的沒必要搞那麼高大上,兩個字,務實!。
第三:身體狀況及其他原因
為什麼把身體狀況單獨拎出來說呢?因為之前招過一個不錯的程式設計師,但是其身體極其瘦弱,臉色也比較蒼白,但是我還是把他招進來了,並且分配了相對重要的工作,但是該蒼白弟來了之後沒幾天,就舊疾復發我也不知道入職體檢是怎麼做的,需要住院了,好在他也比較nice,也沒算工資,就直接離職了。所以面試官在招聘時,一定要注意候選人身體狀態,如果有明顯的身體狀態問題或者不正常,千萬要慎重考慮。另外,需要考慮的還有下面的因素:
候選人是否準備創業
有些候選人因為首次創業失敗,需要找個地方打工解決一下生活問題,一旦緩過勁來,就會離職重新創業。說實話,我是不太願意招此類程式設計師的,太不穩定。
之前換工作太頻繁
一般我認為,正常情況下,IT行業換工作頻率在2年一次以上是比較正常的,當然後寫不正常情況另當別論,例如公司倒閉老闆跑路,例如被收購後辭退,等等。但是,如果正常情況下,連續3分以上工作的更換頻率在1年以下,那麼這種候選人需要謹慎對待。
其他
比如提一些無理要求的,期望薪水過高的,完全不尊重人的,等等,這些候選人都要謹慎考慮。
總結
洋洋灑灑又寫了這麼多,希望對各位面試官有些幫助。在考查候選人時,一定要檢視候選人的德行,如果候選人德行不好,最後會讓負責人非常頭疼親身經歷。目前我的團隊中開發17人,16人是我親自招的,不說有多優秀多頂尖,但是絕對是一支戰鬥力極強的隊伍,高效,專業,穩定從去年6月建團隊到現在只走了4人,其中老團隊成員2人,一人回家,一人被以前同事挖走。新團隊成員2人,一人上文提到的蒼白弟身體抱恙離職,一人因為對公司有意見主動離職。所以,千萬不要光盯著候選人技術能力,要從各方面綜合去考察一個候選人,這樣才能找到你真正需要的人才。