基礎知識漫談(6-2) 作為面試官的一點心得
上一篇關于面試的談得太多,招聘只好另起一章。
以當前的現狀來看,優秀的畢業生會先被知名的大企業刷過一輪,那么,相對不知名的企業招聘負責人要如何找到適合自己公司的技術人才呢?詢問過一些畢業生之后,我總結了如下經驗。
1. 招聘會上的招聘材料的準備
一場招聘會上公司林林總總,面試者要了解你公司,只有他晃過去的那幾秒鐘,一張意義鮮明的海報,就特別重要。
很多海報自己設計得漂亮,公司介紹得高大上,愿景理念口號特別響。有用嗎?產品們常說的一個道理,做得好是0,符合用戶需求才是1。
那么,面試者的需求是什么?下面列一些關心的點,順序與關注度相關:
a、提供的崗位有哪些
來看看幾個例子,文案一:
Java工程師
必須條件
【必需條件】
(1)清晰的邏輯,深厚的編程功底,熟悉設計模式,掌握Java及其相關技術
(2)對技術研究感興趣,有較強的學習能力
(3)熟練的英文閱讀能力,以便迅速掌握最新技術
(4) 熟悉Java 多線程及網絡編程
(5)能夠適應中短期出差;
【優先條件】
(1)java 后臺服務開發經驗
(2)熟悉Eclipse插件體系
(3)擅長JVM之上的其他語言(如Scala,Groovy以及BeanShell等)
(4)學習研究過大量開源軟件的源碼和架構
(5)豐富的報表開發經驗
(6)熟悉Linux/Unix操作系統
(7)有工作流引擎相關的經驗
(8)有金融行業或者較大項目設計開發經驗
再來看看文案二:
Java軟件工程師
熟悉掌握Java語言及面向對象思想,熟悉運用各種設計模式
初始崗位:運行平臺開發工程師 、圖形化開發工具 IDE 工程師 ,技術支持工程師
這兩份出自本公司同一場地不同期的招聘會,相隔時間不過月余,后面這份文案的招聘效果,就要好一些。
招聘會上的面試者時間是很有限的,你寫得再長,對方也只會提取招聘文案里的關鍵字,此其一,如果有個面試者停留下來認真閱讀你的文案了,太過精細的內容會嚇阻他過來面試,就算這上面的每一個要求他都能滿足。
由上,我們可以推論得出,其實,文案二也不夠好,好的職位要求文案只需要關鍵字!
比如:
我們需要:JAVA開發 前端開發 大數據工程師 .Net開發
如果希望加上特定的限制,就應該使用特定的關鍵字,真要考核也不是靠文案排查,最終還是面試官的事情。擔心這樣表述很模糊么?想想這個問題,如果一個Java開發者不懂其內涵的基本職責,他通過面試的概率也不高吧?
b、福利待遇有哪些
對薪資有底氣的,就放上工資,有年終獎績效獎的,就放上績效獎。
住宿補助,電腦補助,交通補助,電話補助,用餐補助有什么寫上什么。對于老員工來說,補助在工資里幾乎無法覺察,而且,很多補助是你有我有大家有,那有什么寫上來的必要呢?
可是,這些錢對畢業生來說,很重要,而且人人都不寫,就你寫了,這就是優勢。
就我個人經驗,福利里最吸引人的,是包食宿。畢竟一線城市房租貴。
c、公司行業和規模
這方面就沒什么好說的,有一說一,唯有一點要注意:不要灌輸情懷!
真情懷不是靠說的,說出來的情懷就是又累又沒錢給你。
這對于只是看海報來了解公司的面試人來說,是個負面印象,最好杜絕。
2. 一些面試的小小經驗
很多人都經歷過一些奇葩面試官吧?當自己作為面試官的時候,請意識到對面的這個人以后可能是你的同事。不裝逼,防雷劈。
下面提供一套面試的方法論(主要應用在3年以下經驗的招聘),基本能把面試時間控制在5~30分鐘,而且,自采用這套方法以來,沒有失誤過。
一般而言,面試的過程是筆試(可省略)->機試->技術面->人事面。
第一個前提,每一個步驟都要發揮它應有的價值,比如筆試,就應當劃分一個嚴格的分數線,針對招聘目標區分檔次。
第二個前提,你和面試者的時間都很寶貴,為了照顧對方的面子而進行下一輪面試其實是傷害,雙方都很尷尬的,有這個時間不如提供職業咨詢和建議。
在筆試和機試部分,達不到要求的,可以考慮按分數直接謝絕,如果擔心誤傷(畢竟有些筆試題出題意圖就很詭異),可以考慮把分數線降低。
技術面部分,請確定你的招聘目標,是專研技術的研究者?還是走上市場的現場實施?對于不同的面試者,不要提出和你要求無關的問題。
如何篩選問題?對外包面試人提問spring的aop實現原理,就不太合適,因為你不需要他去研究spring,而應當偏重在問題解決上,比如JVM每隔幾天就會因為內存溢出掛掉,要要從哪里入手解決。我會把我的問題劃分為三個方面:
基礎類,框架原理類,框架應用類。
假如面試的是研發人員,基礎類和原理類就屬于必查,實踐類就屬于加分項。
基礎類問題:
每個類型都可以繼續往下細分,這里以基礎類作為講解,我會提三個問題:
1、什么是面向對象
2、說一個你最熟悉的數據結構
3、說一個你最熟悉的算法
第一題是必須題,后面兩道都是用于加分。
很簡單?說一個事實,在我兩省十多所大學四年的面試經驗中,這三道題能過濾掉八成的畢業生。來看我怎么提問的:
問題一:
該問題的難度以“吃方法”分野。
之前基本是考察語法和封裝性,以及對基本概念的重視程度。在提示之后依然沒有意識到自己錯誤的,堅決不用。
吃方法屬于進階題,看著很簡單,對于很多程序員來說就是直覺性就明白的問題吧?其實,這是需要多種能力的:
a、貓吃老鼠,要能理解貓是一個類,吃是一個方法,老鼠是一個類,作為吃的參數;
b、貓吃魚同理,吃老鼠和吃魚這兩個行為,本質上來說,都是吃食物
c、食物是單獨是個接口,老鼠和魚都是它的實現類。
看,面向對象分析理解,抽象能力,繼承和多態的應用,接口和類的理解,具備所有這些,才能快速準確的做好這個吃方法。
問題二:
說一個最熟悉的數據結構,又或者,簡單一點,說一下LinkedList和ArrayList的區別。相信很多面試者都遇到過這道看上去很蠢的題,網上有很多答案,他們說的基本都沒錯,但是,按這些答案來回答,不會給出很高的評價。
這樣提問:為什么LinkedList查詢會比ArrayList慢?又或者,如果java沒有提供LinkedList,你要如何實現出來?
這里考驗的能力有兩個,兩者有其一,都可以打出高分。
1、對于需求的理解能力
2、閱讀源碼的興趣和能力
鏈表的定義是“表由一系列結點(鏈表中每一個元素稱為結點)組成,每個結點包括兩個部分:一個是存儲數據元素的數據域,另一個是存儲下一個結點地址的指針域”。
把這一段話當成需求,那么,名詞有:表、結點、數據域、指針域。
同時又能得出它們的包含關系,表里有多個結點,結點里有數據域和指針域兩個部分。
完成了這一部分分析,自然就能設計出對應的LinkedList類。查詢為什么會慢呢?查詢對應的是get方法,get(i)自然是要從頭結點的指針域迭代i次,取出對應結點數據域,這個迭代過程導致了慢。
無論是通過自行分析還是閱讀過源碼懂得這個道理的,都說明具備一定能力或潛力。
問題三:
說一個最熟悉的算法?
其實這里考驗的是多個層級:
1、是否有認真準備面試
2、數理邏輯水準
3、算法水準
拿最常見的排序算法說事。
能說出任意排序算法原理,說明至少有認真對待面試。
能說出快排、桶排、堆排等復雜一點的排序算法,并且能指出得到最差和最優結果的輸入,這一部分,需要面試者能在腦中模擬算法運行,根據算法本身的原理,來解釋為什么快和慢。
有認真學習過算法,理解時間復雜度本身是什么概念。
舉個例子,一個算法的平均時間復雜度是O(1),另一個是O(n),真正執行的時候,前者會比后者快嗎?
答案是不一定,因為我壓根沒提輸入是什么。
如果不能理解O(n)描述的是趨勢,那么,對算法的理解就還未入門。
又比如,如何計算一個歸并算法,比如T(n)=T(n/2)+n/2的時間復雜度。這一方面考驗了算法,一方面又考驗了在校時的學習能力。
框架原理和應用類問題:
面試官需要明白,框架問題回答不上來,并不說明對方比你差。
每個人的專精方向是不一樣的,框架這種事,也就是個工具學習和經驗的問題。用業務相關問題問同行的老鳥,能夠理解,來問畢業生和新手,問并不使用該框架的老鳥,就很莫名其妙。
對于這種情況應該如何考察呢?
框架不一樣,思想有相同。
1、詢問對方最熟悉的框架
2、詢問框架使用中遇到的最困難的問題
3、有沒有閱讀過框架源碼,解釋一下框架某部分功能的實現原理
對于自己最熟悉的框架的了解程度,能說明面試者的真實水準。
有些新手使用框架的時間都很短,那么,可以換個方式出題,比如:“你知道spring的依賴注入吧?假設spring沒有這種功能,讓你來寫這個,會如何寫?”
依賴注入并不是什么黑科技,了解反射理解面向對象的程序員,都能答出個一二三四。
總結
公司和員工是雙向選擇關系,應聘者大可不必把自己放到“求”職的低位,面試官也請勿趾高氣揚。
不管招聘還是應聘,無非就是了解自己和對方的需求,然后展現優勢,而已。


浙公網安備 33010602011771號