日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何面试程序员

發布時間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何面试程序员 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近被“Homebrew作者因為不會在白板上翻轉二叉樹而被谷歌面試拒絕”這事各種刷屏,知乎、Quora都是熱門問題,連LeetCode都專門增加了這道題。

說到面試這種事,一般網上討論的熱點都是如何去應對面試的方法技巧,很少有文章去講如何面試別人,而在工作幾年后,去面試別人很有可能變成日常工作的一部分,而大多數時候是沒有經過什么培訓就被趕鴨子上架了,只能是自己逐步摸索。所以一直想整理總結一下如何去面試程序員。

找什么樣的人

招聘的本質,就是需要找到適合團隊的人。所以在招聘面試前,首先要想清楚,團隊需要的是什么樣的人,對候選人需要有哪些基本要求。后面的面試,就是看候選人是不是滿足這些要求。

一般招開發人員,我的基本要求是:

  • 當前技能是不是滿足團隊要求
  • 是不是有較強的學習能力,在未來可以繼續成長
  • 是不是有很好的自我驅動力,不需要跟在屁股后面催著干活
  • 團隊協作,是不是能融入團隊

篩選簡歷

在明白自己要找什么樣的人,對候選人有什么樣的要求后,就可以根據這些要求來篩選簡歷。篩選簡歷是第一步,從簡歷上可以大致對候選人有個了解,并且過濾掉明顯不合適的候選人。在篩選簡歷時,我一般會重點關注這幾點:

  • 技術方向
    雖然理論上來說,技術思想都是相通的,但是真要做開發,差別還是有一些的,比如我是招.Net開發人員,一般不會考慮Java的。但這不是絕對的,如果學習能力強,這并不是太大的問題。

  • 項目經驗
    從簡歷上描述的項目經歷,可以大概看出求職者之前的開發方向,經驗水平,比如我要招大型網站開發人員,如果簡歷上的項目經歷都是辦公OA等企業開發項目經歷,那么基本上是不適合的。另外參與過的項目和擔任的角色也能側面反映開發者水平,同時項目經歷也是面試時提問的一個重要依據。

  • 工作經歷
    工作經歷一般指的是換過幾家公司,根據每一家公司呆過的時間長短和職位,能側面反映求職者的心態,如果工作變換頻繁,每次工作時間都很短,那么說明這個人可能比較浮躁;如果面試者在公司的職位一直是在上升,那么也能側面說明一些能力。

  • 開源項目
    有參加過開源項目絕對是重要的加分項,如果簡歷上有github賬號,必然要上去查看一下ta貢獻過的項目代碼,代碼風格質量,關注的項目是什么。

  • 薪資水平
    薪資是實力的一個側面反映,不一定準,但是可以作為篩選的一個可選依據。一個簡歷寫起來很牛的候選人,工資要求四五千,這就值得懷疑了。

  • 年齡
    年齡和所謂青春飯無關,首先要招聘的目標崗位哪個年齡段更有優勢,然后要看候選人的年齡和其工作經歷是不是匹配。如果說做了十年程序員,所有的項目經歷還只是做簡單的數據庫增刪查,所謂十年經驗也不過是一年經驗重復十次。

  • 筆試機試

    對于程序員的面試,一個最基本的要求就是要有基本的編程能力,筆試機試自然是最簡單直接的方式,可以簡單直接的甄別候選人的編程水平。

    筆試的話,一般只適合校園招聘這種一下子大量簡歷,又沒有條件上機測試,這種情況下只能用筆試快速篩選出來一部分,然后再安排面試或者機試。

    對于實際的工作中,不太可能用紙和筆寫代碼,所以上機測試是蠻好的方式,可以盡可能的模擬實際工作中的情況,完整的觀察候選人如何去編碼、調試、優化自己的代碼。在機試時有些注意事項:

  • 題目盡可能通用,不要太偏,時間和難度也要適中。例如可以考一些字符串操作的算法。
  • 應該讓候選人可以查詢幫助文檔,不要因為只是忘記了一個函數名字而導致無法繼續進行。而且合理的運用幫助文檔也是一種必備技能。但不應使用網絡搜索引擎,否則都能直接找到答案了。
  • 中間可以去給予必要的引導和提示。有時候候選人因為緊張和壓力而導致卡在一些地方不能繼續,這時候可以給予一些幫助,并觀察候選人在這過程中的表現。
  • 原來我在飛信Team的時候,我們剛開始面試必做的一道機試題就是做一道CSV文件解析的題目,那題滅人無數,肯定也有不少誤傷的,但是能順利做出來那道題的那撥人,編程功底都非常好,后來都是團隊的中流砥柱。

    還有像Thoughworks的面試,面試前先給你發機試題,完成后郵件發過去,根據代碼質量決定要不要面試。面試的時候,很重要的一環就是面試官和候選人一起,基于完成的代碼,完成升級版的需求。通過對需求的變更,觀察候選人的設計和應變能力,同時也通過公共編碼,觀察候選人的團隊協作能力如何。

    對筆試和機試的使用,需要合理的運用,因為這種方式很容易導致一部分候選人的反感和排斥。搞不好人家就會去發微博了:“我寫的Homebrew辣么多人在用,結果被你一道上機題給擋住了!”。

    面試

    面試環節對面試官的要求很高,需要在較短的時間內對于候選人有個相對客觀的了解,并有個明確的是否錄用的結果。關鍵就是要盡可能多了解候選人,并且判斷對方是不是團隊所需要的人。這些年來,我自己總結的一些面試方法:
    1. 尊重候選人,平等對待,盡可能讓候選人能真實展現其優點和缺點
    2. 盡量基于候選人做過的事情和熟悉的領域去提問,避免預設一些固定的問題去提問
    3. 對于候選人做過的事情去深入了解細節,從而推斷他做事的風格和態度
    4. 通過一些非技術問題去觀察候選人性格特點,看是否能融入團隊

    一般來說,我主要是通過這些問題和步驟。

  • 營造輕松的氛圍
    被面試的人一般多少是會有些緊張的,一個人在非常緊張的狀態下,是比較難正常發揮其真實水平,所以如果想要有好的面試效果,就要盡量在面試過程中營造一個相對輕松的環境,讓候選人可以真實的展現自己,從而更好的了解其真實的水平。

    在開場的時候,面試官可以先做自我介紹,介紹下公司和團隊,甚至可以聊聊天氣路況等話題,讓候選人盡快消除緊張感,進入角色。

    另外還有些小細節也是可以注意的,比如給候選人倒杯水,適當調整空調溫度,這些會人感覺更好一點。
  • 了解候選人的項目經歷
    雖然在簡歷上已經有寫項目經歷,但我一般還是會讓候選人自己再說一遍他做過的項目。一方面可以甄別簡歷的真假,一方面也可以通過他的介紹,了解他的陳述能力。通過他對項目描述的詳細程度甚至語速,可以大致了解他對于哪些項目是比較熟悉的。
  • 深入了解項目細節
    同樣是做一個項目,不同的人做的結果肯定是不一樣的。所以對于候選人做過的重點項目,需要對一些細節進行深入挖掘。比如項目的時間周期、參與人、其扮演的角色、項目的運行情況等。比如說候選人說是項目的架構師,那么可以讓ta在白板上簡單花一下項目的架構圖,并說明一下關鍵模塊的作用。通過對幾個項目細節的了解,可以知道其在項目中真實的角色是怎樣的,其大致的水平如何。
  • 對項目需求或環境做出變更
    需求變更或環境變更在項目中是常見的現象,一個優秀的程序員在設計程序的時候,往往會考慮到一些可能的變化,在需求發生或變化時能快速應對。舉例來說,如果某個候選人說自己設計開發過用戶管理系統,當前用戶量大約十萬的規模,那么我會讓他考慮下如果用戶量達到百萬甚至千萬的時候,他的設計要做哪些修改;如果對用戶資料進行擴展,需要做哪些修改。等等這些。在候選人回答這些問題的過程中,能很好的考察出其工作的態度,其技術能力和解決問題的能力。
  • 業余時間都喜歡做什么事情
    一個人在業余時間做的事情很能反映其學習能力和自驅力。學習能力,天賦是一方面,個人的努力也是必不可少,如果一個程序員業余時間不會再考慮其技術和工作相關的事情,那么他可能只會把編程當成一個普通的工作來做,很難做到優秀。在項目相關問題問完后,我一般會問問候選人都看過哪些書,平時上哪些網站,做些什么事情。如果有很好的閱讀習慣,參加過一些開源項目,都會是很好的加分項。
  • 為什么離開上一家公司
    一個員工離開公司,可能是公司的原因,也可能是候選人自己的問題。通過問一些“為什么離開上家公司”、“評價下以前的領導同事”、“覺得自己運氣怎么樣”等相關問題,可以看看候選人是否太過浮躁,是不是喜歡以自我為中心,是不是負能量過重。沒有人愿意和一個整天抱怨,斤斤計較的人一起共事。
  • 向候選人學習
    在面試時,總有機會遇到一些在某個領域比自己更優秀的人,面試就是個非常好的向別人學習的機會,這時候可以巧妙的把一些日常工作學習中遇到的問題,偽裝成面試題目去提問,也許可以得到一些意想不到的答案。
  • 有沒有什么問題需要問我的
    在面試結束的時候,一般都會以“有沒有問題問我的”這個經典問題結尾。面試本身是對等的,一方面是招聘方了解候選人,同時也應該給候選人機會去了解公司和團隊。另外也可以通過這個問題考察候選人對崗位是不是重視。但對于候選人提出的一些敏感話題還是要合理回避,可以讓他和HR溝通。
  • 其他
    其實面試并沒有什么固定的模式,每個人都可以根據自己的特點總結出自己面試的套路和習慣,甚至可以根據候選人的情況靈活做出調整。

    如果候選人明顯不合適,也建議不要太早結束,耐心的保證一個基本的面試時間,這是對候選人的基本尊重,也體現面試官的修養和公司形象。

    不建議當場給出面試結果,這可能會導致不必要的糾纏和沖突,可以后續由HR進行郵件或電話的通知。
  • 決策

    在面試結束后,需要有個明確的結果來表明是不是愿意錄用候選人。對于是否決定錄用,我一般會這么做:
    1. 列出候選人的優點缺點
    每個人都有優缺點,關鍵是看其優點是不是正好是我們所需要的,其缺點是不是我們所能接受的

  • 候選人在現有團隊中處于什么樣的位置,是不是滿足團隊需要,對公司有價值
    我們招人的目的是為了找到適合團隊的人,如果他不能給公司創造價值,不能勝任團隊要求,那么就沒必要招ta。

  • 是不是愿意和候選人一起共事,能不能融入團隊
    如果候選人通過面試順利入職,今后將會一起公司,所以一定要問自己的一個問題就是:“我是不是愿意和這個人一起共事”。如果答案是否定的,那么就不要再猶豫。

    順便提一下,在面試時,候選人的衛生習慣也最好要考慮一下。

  • 糾結就是不通過
    有時候,面試完了之后你就能很明確的知道這個人行還是不行,但是大多數時候,你會很糾結,覺得似乎有可取之處,團隊又很缺人,但又不是那么好。一般這種情況下,我的建議是:“糾結就是不通過"。只有保持一個相對較高的招聘標準才能保證團隊的整體水平。
  • 最后

    回頭說到Homebrew作者被Google拒絕這事,就我觀點來看,這事跟Google應該關系不大,還是作者自身有問題可能性比較大。在一個成熟的面試流程中不太會因為一個問題就否定掉候選人,多半還是有些其他原因在里面。

    要成為一個好的面試官,關鍵還是多面試多總結,尊重每一個候選人,用心最好每一次面試。

    拋磚引玉,歡迎大家一起分享。

    最后祝大家都招到合適的人!

    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的如何面试程序员的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。