1. 程式人生 > >如何面試一名程式設計師?

如何面試一名程式設計師?

STAR 面試法中“STAR”是 SITUATION(背景)、TASK(任務)、ACTION(行動)和 RESULT(結果)四個英文字母的首字母組合。在招聘面試中,僅僅通過應聘者的簡歷無法全面瞭解應聘者的知識、經驗、技能的掌握程度及其工作風格、性格特點等方面的情況。而使用 STAR 技巧則可以對應聘者做出全面而客觀的評價。

  1. 瞭解背景(SITUATION),通過不斷提問與工作業績有關的背景問題,可以全面瞭解該應聘者取得優秀業績的前提,從而獲知所取得的業績有多少是與應聘者個人有關,多少是和市場的狀況、行業的特點有關。
  2. 瞭解任務(TASK),每項任務的具體內容是什麼樣的。通過這些可以瞭解應聘者的工作經歷和經驗,以確定他所從事的工作與獲得的經驗是否適合所空缺的職位。
  3. 瞭解行動(ACTION),即瞭解他是如何完成工作的,都採取了哪些行動,所採取的行動是如何幫助他完成工作的。通過這些,可以進一步瞭解他的工作方式、思維方式和行為方式。
  4. 關注結果(RESULT),每項任務在採取了行動之後的結果是什麼,是好還是不好,好是因為什麼,不好又是因為什麼。

  通過 STAR 式發問的四個步驟,一步步將應聘者的陳述引向深入,一步步挖掘出應聘者潛在的資訊,通過應聘者過去的經歷來預測其是否勝任目標職位。所以,確保應聘者提供的事件資訊真實有效,就成了追問的另一目的。要通過得到更多、更詳細的資訊,來保證應聘者回答的真實性,因為所得到的結果越具體,說明事件越真實,做出的評價也就越準確。

  面試其實說白了就是根據一個人之前的經歷,來判斷出後續這人會做得怎樣,如果你之前從沒做成過一件事情,憑什麼讓別人相信你之後能做成呢?因此無論哪裡的面試都會問你之前做過的專案。需要注意的是兩個平庸的專案不如做了一個好專案。針對 STAR 面試法設計的問題:

  1. 你做過最滿意的專案是什麼?可以是多人協助開發一個產品,也可以是自己個人做過的業餘應用。
  2. 專案背景是什麼?為什麼要做這件事情?
  3. 你在專案中處於什麼樣的角色,起到了什麼方面的作用?
  4. 在專案中遇到什麼技術問題?具體是如何解決的?
  5. 此專案最終達到什麼效果?
  6. 如果再做這個專案,你會在哪些方面進行改善?

  除了 STAR 面試外,還需要對面試者的技能及其他內容做深入瞭解。比如技術相關問題,探測面試者基礎知識的掌握程度及技術深度和廣度的瞭解。技術相關問題:

  1. 描述一個你遇到過的技術問題,你是如何解決的?有沒有遇到過很不常見的問題?比如在網上根本搜不到解決方法的?
  2. 是否有設計過通用的元件?你會提供什麼介面?呼叫過程是怎樣的?可能會遇到什麼細節問題?
  3. 你最擅長的技術是什麼?你覺得你在這個技術上的水平到什麼程度了?你覺得最高級別應該是怎樣的?
  4. 在製作一個 Web 應用或 Web 站點的過程中,你是如何考慮他的 UI、安全性、高效能、SEO、可維護性以及技術因素的?
  5. 你最熟悉哪一套版本控制系統?

  除此之外,還需要問一些非技術相關問題:

  1. 如果你參與到一個專案中,發現他們使用 Tab 來縮排程式碼,但是你喜歡空格,你會怎麼做?
  2. 在之前做過的專案中,有沒有什麼功能或改進點是由你提出來的?是否有參與和改進其它開源專案?
  3. 編寫程式碼的哪些方面能夠使你興奮或感興趣?做什麼方面的事情最讓你有成就感?需求設計?規劃?具體開發?
  4. 你在昨天/本週學到了什麼?接下來半年你打算學習什麼?如果今年你打算熟練掌握一項新技術,那會是什麼?
  5. 後續想做什麼?3 年後你希望自己是什麼水平?