工作十年整,面過的人加起來也得有一個加強營的陣容,其中應屆生居多,也有幾個十年工作經驗的老鳥。面試中,有人談笑風生,有人惴惴不安,人生百態不過匆匆一瞥。今天我就當一回老司機,以C++面試為例,和大家分享一下自己的心得。
面試者想象的面試場景
“出門左轉富士康”,這樣的預約方式過於粗放,措辭還是要精簡得體,畢竟是雙方的第一印象兼顧公司形象。一定要留下你的聯系方式和稱呼,否則人家到公司前台一臉懵逼不知找誰,也增大了其他團隊劫胡的風險。另外,我個人會強調准時,我對准時的定義是[+5,-1],單位分鍾。如果早到30min,out,遲到且不提前通知,out,遲到但找到一個理由,斬候決。
某團隊的校招方式
如果簡歷寫的牛逼,我會花一小時准備,了解一下我不懂他很懂且我很感興趣的部分,目的是保證交流效率。這里說明一下,面試官多少也有心理障礙,怕丟面子之類的。我是這樣克服的:面試的目的不是問別人不會的,而是找到別人擅長的。就當參加一場講座,你是主持人兼提問者,人家還是上門服務,放下姿態,權當不恥下問了。
作為開場白,簡介一下面試官情況,目的有兩個,讓他對我們有個了解,面試時有的放矢,其次是暖場。然后開始自我介紹,這時我會掃一下簡歷:個人信息,技能和項目經歷,興趣愛好和英語水平,做標記。
面試猿看顏值的正確姿勢
自我介紹中,有一些人支支吾吾連話都說不清,無怪乎緊張和二逼兩類。前一種你就得隨和一點,讓他聊一些最近面試的遭遇,家庭和故鄉等內容,緩解情緒,畢竟人都來了。后一種情況也分牛逼或傻逼兩類,只能拼操作,是友是敵一看便知。多數人的自我介紹都較為普通,我會留意和簡歷內容是否一致,如果簡歷中你感興趣的部分他卻沒有講,則適當提醒。還有一類很會講故事的人,太會帶節奏了,我表示壓力很大。一見如故,相見恨晚的感覺有沒有,這時候一定要用涼水洗把臉,看看簡歷里面標記的地方,他的回答是否可行,編程是一門手藝,眼高手低要不得。
技術環節是我最關注的部分,基本功是頓悟不出來的,最能體現一個人嚴於律己的學習態度。針對C++,我最愛的兩個問題是字節大小和快捷鍵。“char/int/float/double各占幾個字節?”這問題不能再簡單吧,你可知道,這個問題至多20%的人能全部回答正確。如果回答不滿意,我會再詳細問一下編碼常用的快捷鍵,間接了解他的編碼量。有一次,一個工作將近十年的C++開發人員,類型大小說錯了大半,快捷鍵也說不上來一兩個,我就問他,你現在主要是帶團隊,負責技術預研和提供思路呢,還是自己親自寫代碼。大哥聽完我的問題差點發飆,直接扔給我一句”當然自己寫了“。
技術崗位,我們強調的是動手能力
字節大小只是序曲,最近幾年涌現出一些培訓班出來的機器人,問題還沒講完 ,他那兒就開始Rap:32位,64位,指針,字節對齊,大小端,float和double的精度,我看着他,目光所到之處已是滿屏的666,可咱又不能怪人家知道的太多,那就刷一波魚丸唄?這時候你要記住,機器和人的差別是機器不會出錯。你問問他犯過類似的錯嗎,為什么字節要對齊,為什么字節對齊會提高性能,浮點型為什么會有精度損失。這些都是C++的基本功,相比答案,回答的過程更能體現他的理解深度。
如果回答都很滿意,則可以基於這個話題深入了解。微觀來看,指針&內存,數據結構,如果他對STL有研究,內存管理,性能優化,二叉樹,哈希表,或許會扯到具體的算法,術業有專攻;宏觀來看,引用,臨時變量,生命周期,NRV優化,靜態庫和動態庫,用過哪些開源庫,也是各有所長。這個時候,C++已經不是他的短板了。另外,他回答不上來的問題,我一般會以關鍵點的形式快速告訴他找到答案的方法。如果他講到的技術我不懂,我會讓他詳細講,並復述一遍我對此的理解和關鍵點,看是否正確,如果有必要,會讓他推薦一些書籍。我只問自己知道答案的問題,如果他提到的內容我不明白的,我會問到滿意為止。
回答“面向對象”時正確的高度
“談談你對面向對象的認識?”通常,99%的人都會講封裝繼承多態,或者再說一說虛函數,虛函數表這些語法層面的理解,個人覺得語法只是思想的外在規范,但真要從思想上體會到這些抽象設計的緣由,並不好表達。好比張無忌學太極,張三豐不是問記住了多少,而是問他忘記了多少。后來我就不再問這類問題了,你不問不代表隊友不問。有一天的早上,我看到《C++沉思錄》才如夢初醒,總結了幾個我自己滿意的答案:模塊化,基於狀態的管理和分而治之。大道至簡。
項目和產品經歷,這個環節我就松懈了,聽聽別人的問題查缺補漏,看看他能否把一個項目流程說清楚,把握技術關鍵點,在團隊中承擔的角色,遇到問題的解決思路。我會問他使用的瀏覽器和搜索引擎,我的最佳答案是Chrome+Google。
一個出色的程序員往往精通好幾門語言
反之,我更關心他的個人規划,興趣,學習能力,特別是英語水平。最近看了哪些書,給我推薦一本。還有一個問題,我從來沒有問過,如果下次遇到合適的人,我會問“有什么觀點是大多數人認同的,而你持相反意見的?”這是彼得·蒂爾的問題,不知道你會怎么回答?
最后環節是回答他的問題,通常也就3min以內。有些人會問待遇,加班,產品,團隊,入職后是否有人來指導,讓你對他們的學習給出一些建議和推薦的書籍,有問題總比沒有問題好。當然,有一次那人的問題實在太多了,一個接一個,我只好說這是最后一個問題。
文章的最后談一下想法,個人並不認可面試這種一錘子買賣的行為,特別是應屆生,如果他基本功不扎實,但學習能力很強,這種人很難通過面試鑒定出來,而這部分是面試中的主力。所以,放松條件,讓大四的學生來實習,寬進嚴出,雙方都有利可圖。
以上是個人面試的一個不客觀體會,純屬虛構,如有雷同,歡迎追究法律責任。最后推廣一下本人的公眾號:LET