天天看點

基礎知識漫談(6-2) 作為面試官的一點心得

上一篇關于面試的談得太多,招聘隻好另起一章。

以目前的現狀來看,優秀的畢業生會先被知名的大企業刷過一輪,那麼,相對不知名的企業招聘負責人要如何找到适合自己公司的技術人才呢?詢問過一些畢業生之後,我總結了如下經驗。

一場招聘會上公司林林總總,面試者要了解你公司,隻有他晃過去的那幾秒鐘,一張意義鮮明的海報,就特别重要。

很多海報自己設計得漂亮,公司介紹得高大上,願景理念口号特别響。有用嗎?産品們常說的一個道理,做得好是0,符合使用者需求才是1。

那麼,面試者的需求是什麼?下面列一些關心的點,順序與關注度相關:

a、提供的崗位有哪些

來看看幾個例子,文案一:

基礎知識漫談(6-2) 作為面試官的一點心得
基礎知識漫談(6-2) 作為面試官的一點心得

View Code

再來看看文案二:

基礎知識漫談(6-2) 作為面試官的一點心得
基礎知識漫談(6-2) 作為面試官的一點心得

這兩份出自本公司同一場地不同期的招聘會,相隔時間不過月餘,後面這份文案的招聘效果,就要好一些。

招聘會上的面試者時間是很有限的,你寫得再長,對方也隻會提取招聘文案裡的關鍵字,此其一,如果有個面試者停留下來認真閱讀你的文案了,太過精細的内容會吓阻他過來面試,就算這上面的每一個要求他都能滿足。

由上,我們可以推論得出,其實,文案二也不夠好,好的職位要求文案隻需要關鍵字!

比如:

我們需要:JAVA開發 前端開發 大資料工程師 .Net開發

如果希望加上特定的限制,就應該使用特定的關鍵字,真要考核也不是靠文案排查,最終還是面試官的事情。擔心這樣表述很模糊麼?想想這個問題,如果一個Java開發者不懂其内涵的基本職責,他通過面試的機率也不高吧?

b、福利待遇有哪些

對薪資有底氣的,就放上工資,有年終獎績效獎的,就放上績效獎。

住宿補助,電腦補助,交通補助,電話補助,用餐補助有什麼寫上什麼。對于老員工來說,補助在工資裡幾乎無法覺察,而且,很多補助是你有我有大家有,那有什麼寫上來的必要呢?

可是,這些錢對畢業生來說,很重要,而且人人都不寫,就你寫了,這就是優勢。

就我個人經驗,福利裡最吸引人的,是包食宿。畢竟一線城市房租貴。

c、公司行業和規模

這方面就沒什麼好說的,有一說一,唯有一點要注意:不要灌輸情懷!

真情懷不是靠說的,說出來的情懷就是又累又沒錢給你。

這對于隻是看海報來了解公司的面試人來說,是個負面印象,最好杜絕。

很多人都經曆過一些奇葩面試官吧?當自己作為面試官的時候,請意識到對面的這個人以後可能是你的同僚。不裝逼,防雷劈。

下面提供一套面試的方法論(主要應用在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沒有這種功能,讓你來寫這個,會如何寫?”

依賴注入并不是什麼黑科技,了解反射了解面向對象的程式員,都能答出個一二三四。

總結

公司和員工是雙向選擇關系,應聘者大可不必把自己放到“求”職的低位,面試官也請勿趾高氣揚。

不管招聘還是應聘,無非就是了解自己和對方的需求,然後展現優勢,而已。