大家好,我是若川。持續組織了8個月源碼共讀活動,感興趣的可以點此加我微信 ruochuan12?參與,每周大家一起學習200行左右的源碼,共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》?包含20余篇源碼文章。歷史面試系列
本文作者是一名小廠前端 Leader。
說起面試,其實我自己面試的經驗不多,而且我對八股文也不算通,算法更是短板。但是好在面過不少人,在篩選候選人上,也算是有自己的一點點經驗。
在我看來,面試的唯一目的就是招人,一定是因為團隊缺人需要補充,你才會放下手頭的工作花時間去篩簡歷,約面試。那么作為面試官,這個時候就一定要告訴自己:
面試是為了尋找合適的人,而不是為了難倒候選人。
我見過不少互相刁難的面試,其實這個是最沒有意義的,雙方都浪費了時間還沒達到目的。當你確定了你的目的是尋找合適的候選人,那么接著再問自己一個問題:
我需要找一個什么樣的人?
如果你需要人做基礎頁面排版,薪資一般,那么就不要要求對方 “掌握數據結構和算法”。如果你需要圖形化方面的伙伴,就不要要求人家 “精通 webpack 優化”。多多益善當然好,但是強制設置偏離需求的標準,那就不要怪招不到人了。
小廠不同于大廠,沒有雪片般的簡歷,招人本來就困難。你只能放低各種硬性的無關的標準,抓大放小,然后通過面試聊天去挖掘有實力的人。
什么樣的情況需要什么樣的人,下面我舉例。
短期需求
假設公司業務發展,來了好多項目,前端人手不夠了。這個時候我們需要擴充人員來迅速推進業務開發。此時團隊需要的是這類人:
2-3年經驗,熟悉 Vue 全家桶,項目經驗豐富,實戰經驗豐富
一句話,就是能干活。
選擇候選人,工作經驗 是至關重要的參考標準,這里為什么要求 2-3 年?
如果少于2年,可能是實習生或剛入行不久的新手,他們一般不能快速的接手業務并進入開發流程,需要有了解項目的同事帶領一段時間。而我們項目緊急需要推進,新人短期不能上手,老人還要分出精力來帶新人,這樣就會拖延進度。
如果大于3年,比如你剛好碰到一個 3-4 年的候選人,面下來比較滿意,我覺的也沒問題,后續還能重點培養。但是如果超過 4 年的話,你就需要考慮的一件事:成本。
如果你的需求 2-3 年的候選人能滿足,那你怎么說服老板花更多的錢呢?
攻堅需求
假設公司業務發展,前端要接觸一些復雜領域,比如音視頻,跨端,自動化等。而反觀我們團隊,大家都沒接觸過,并且也沒有足夠的能力做這些技術攻關。這個時候,我們就需要那些深度與廣度兼具的大牛了:
3-5 年經驗,掌握前端主流框架,掌握前端工程化,有較豐富的 Node.js 經驗,對音視頻,流媒體,直播點播原理了解并有實踐經驗。
尋找這一類人目標很明確,就是借助對方的已有經驗或者技術攻堅能力,幫助團隊快速打開陌生領域,更高效的讓項目落地。
這個時候我們需要候選人有獨當一面的能力,團隊沒有經驗,需要你沖到前面開拓。這種情況下面試或聊天就不能總盯著八股文了,多交流實戰經驗,這樣雙方都會覺得溝通是有價值的。
獨當一面且有攻堅能力,一般我會選 4 年左右的人。而且是否真正有能力,我們光看經驗還不好說,必須通過面試,用基于實踐的問題來挖掘能力,通過對方的表現來做判斷。
長遠需求
假如目前項目穩定,未來一年半年有新的業務方向,還需要人手,這個時候,我們就可以考慮一些實習生和兩年內經驗的小伙伴們了。
本科以上學歷,1 年左右經驗,前端基礎扎實。
這類候選人的經驗比較少,可以在學歷上設置一些門檻。確實對于經驗不具備參考價值的同學來說,學歷和專業幾乎就是你的評估標準。
因為短期沒有項目緊逼,所以我們有時間去培養上述的這類新人,為團隊注入新鮮血液。一個團隊中,老人有老人的優勢,新人也有新人的好處。
新人一般年輕,會為團隊帶來活力,并且做事有時候會比一些老人積極主動。同時呢在新人和老人“學”與“帶”的過程中,可以促進團隊分享交流,互相磨合,這也是必不可少的。
不過要注意,這一類經驗不足的候選人,需要在試用期內做好考核。因為有些新人可能缺少主動思考,也遇到過包裝簡歷這種,這時候就要在試用期內及時評估候選人的能力,看是否適合團隊。
招一個候選人,越厲害越好嗎?
以前我這么想過,拋開成本不談,當然招過來的人越厲害越好啊。
但是后來我發現,事實并不是這樣的。
首先,一個人的經驗能力與他的配合程度幾乎是成反比的。以上面說的情況一為例,你有了技術方案,需要招一波人進來快速推進,你希望這些人執行力強,指哪打哪,干就完了。
但是一個4-5年的程序員,他一定會有自己的思考,做東西不會拿來就做,腦子里會有“優化思維”。比如他拿到任務,覺得代碼不合理不規范,忍不住就想要先優化。他會思考為什么要這樣做?換一種思路能不能實現?換一種方案是不是代碼更少?
這種思維沒有問題,并且非常難得。只不過在項目推進的過程中,比起優化,快速執行的優先級顯然更高。這個時候你就會發現,反而是那些無條件執行命令的“兵”,協作起來更順利,更容易帶領他們將項目快速推進。
所以呢,招聘候選人絕不是越有經驗越好,越厲害越好,適合比經驗和能力更重要。你要從團隊協作和組成的角度去看整體缺乏哪些能力,而不是專注于某一個人。
因此在招人之前一定要想明白,我招他來要做什么?然后再去尋找適合的人。
本科生一定比大專生好嗎?
我面試過的候選人里,本科生和大專生五五分吧(專升本暫時算是大專生)。總體看下來我發現這兩波人還是有比較明顯的區別。
以相同的經驗(如3年)為前提,如果你問一些原理性的東西,也就是我們說的八股文,本科生答的相對比較好,這方面大專生就不會那么全面。
原因的話可能是本科生有計算機基礎,或者應試能力比較強,準備比較充分,總之我的感覺是本科生在理論概念和言語表述方面確實比較突出。
不過呢從簡歷來看,本科生的技能清單中 Vue/React/性能優化
居多。再看大專生,我常常會看到一些驚喜,如 nodejs/linux/flutter
,很顯然他們的接觸面更廣,嘗試的東西比較多,細問起來的確是做過不少實踐。
這個也是有跡可循,我聽到最多的講述是因為學歷不好,所以只能在項目上面下功夫,盡可能的多接觸多實踐,深挖技術,我為這類的大專小伙伴們點贊。
在4年左右這個階段,我還是比較喜歡項目經驗豐富,有攻關能力和主動探索能力的人。
拋除學歷和算法,如何評估候選人的真實能力?
眾所周知,大廠面試篩選,首先看學歷,其次考算法,這是職場進階的兩道門檻。
但是有學歷,懂算法的人,工程能力和編碼能力就一定強嗎?其實未必。只不過大廠領頭,小菜跟風,社區里大廠面試八股文的博客大受歡迎,可是真正的如何考驗一個候選人的能力,反而很少有人分享。
比如我司是一個小公司,面試基本不看學歷,因為人不好招,你再設置條條框框那就更難了。當然了算法也不問,最多問點八股文,然后就是項目經歷,做過什么,解決過什么問題。
不看學歷,算法,八股文也不多,那么 項目經驗 就成了考核的重中之重。如何從候選人的項目經驗中問出真實水平,這里分享一下我的個人小技巧。
當我拿到一份簡歷,我會先找這哥們最擅長的是什么。甚至當對方簡單介紹完自己的項目,我會直接問他:你最擅長的是什么?
在我看來,一個有經驗的前端,寫寫vue頁面,排個版,做個狀態管理,絕大多數都沒有問題。但是一個人最擅長什么,一方面能體現出他的經驗和沉淀,另一方面能體現出對這個領域喜歡,感興趣,鉆研了,所以才擅長。
當我得知對方最擅長的是什么,那么就可以沿著這條線往深了問。比如對方說我擅長性能優化,那么我就接著三連問:
1. 為什么要做性能優化?
2. 怎么做性能優化?是否了解過其他方案?
3. 現有方案有什么問題?有沒有改進思路?
第一問是為什么,這個非常關鍵。當你使用一項技術,一定是為了解決某個問題。如果你不清楚為了解決什么問題,只是因為別人在做所以我也做,那么很難理解這項技術的精髓。
第二問是怎么做,這是個選擇項。一個問題會有許多個解決方案,當你選擇某一個,一定是經過調研和對比,發現了它的優勢,所以才會選擇它。這個如果說不出來,那么當你遇到問題需要找解決方案的時候,你可能很難找到最優解。
第三問是改進思路,這是考復盤能力。當你做完一個功能,可能并不完美,或者只是解決了當前的問題。善于思考的人會復盤,我這個功能還有什么不完善的?未來有哪些隱患?然后在后來的某個時間處理掉它。
如果你完成了任務就扔到一邊,沒有更多思考,那么長遠來看,你完成工作的質量偏低,評估風險的能力也會低。
上面的三個問題,綜合下來就是挖掘對方 解決問題的能力,或者是做事的思維。因為你問的是最擅長的嘛,所以也不會因為正好碰到了對方的短板而漏掉合適的候選人。
還有一個必問問題:
4. 聊聊你遇到過最困難的幾個問題,最后怎么解決的?
這個話題非常好,聊最困難的問題,幾乎可以看出對方的技術深度。然后越困難的問題解決過程可能越刁鉆,你們可以聊嘗試過哪些方案,這些可以幫你判斷對方的思考能力和實踐能力。
并且這個話題也能體現出一個人在團隊里承擔什么樣的角色,如果這個人加入你的團隊,那么他多半也會是這樣的角色。
大概就講這么多吧,個人理解偏多,也許并不普適,歡迎留言區討論。
·················?若川簡介?·················
你好,我是若川,畢業于江西高校。現在是一名前端開發“工程師”。寫有《學習源碼整體架構系列》20余篇,在知乎、掘金收獲超百萬閱讀。
從2014年起,每年都會寫一篇年度總結,已經堅持寫了8年,點擊查看年度總結。
同時,最近組織了源碼共讀活動,幫助3000+前端人學會看源碼。公眾號愿景:幫助5年內前端人走向前列。
掃碼加我微信 ruochuan02、拉你進源碼共讀群
今日話題
略。分享、收藏、點贊、在看我的文章就是對我最大的支持~