2016年百度校招小結:我做技術面試官的一些思考

靖難發表於2015-11-17

來自「微信公眾號:靖難

一個多月前,作為技術面試官參加了百度 2016 年的校園招聘深圳站面試,主要目標學生是清華/北大/哈工大/中科院在本地的研究生院(實際上並沒有設限,有不少江西廣西福建的同學過來面試了),這裡和大家分享一點自己的思考。

我們一般有 3 輪技術面試,一面二面通常是由資深的工程師面試,三面一般是技術經理面試。我負責的是一面和二面,面試過程中除了給全公司層面的統一招聘人才,我們還隨時要準備物色合適的人加入自己的團隊。面試官會根據面試過程對每個候選人的程式設計能力/邏輯和思考能力進行評價,只有每一輪的面試官都給予通過,才有可能被錄用。

面試是一個雙向考察和選擇的過程,所以面試時我一直嘗試把這當成和候選人的一次溝通。面試的過程有大量的問題也是根據候選人自身的特點提出的,而不是遵循了某個題庫固定的題目。

整體感受是,大多數人真的很弱,你並不需要「非常努力」,就可以比大多數的人「優秀」。下面就大家關心的一些問題分開討論下。

教育背景

很多同學諮詢我時,有意無意地給自己貼上了「渣二本」「普通一本」「非 211」這樣的標籤,這都表面其內心還是非常介意自己的教育背景不好。我想你應該慶幸自己生在網際網路時代,這個時代的人和資源都暴露在網際網路中,你完全有機會用網際網路來證明自己的能力和曾經的努力。

我在面試時能明顯感覺到,一些好學校(比如中山大學/哈工大/清華北大/廈門大學/華科武大等)的學生,在基礎知識/表達/邏輯能力等都要更強一些。我想之所以有這樣的表現,是因為好學校的學生受過更好思維訓練,他們面對一個難題時往往知道怎麼去簡化和抽象問題,把問題撥出來分類或者分層討論,同時他們還會試圖把問題分解成不同的子問題逐個來討論。我就碰到過一個大學純玩票的中山大學的大四學生,對計算機基礎知識基本上一問三不知,但是分析問題時的思路和邏輯還是清晰的,而這種能力,是很多教育背景較差的學生缺乏的。因此我也建議屬於這種情況的同學,多進行一些思維訓練,學會如何系統地區分解和分析一個問題。

當然,非名校中,也不乏優秀的候選人。有個江西理工的大四學生,在他的部落格中我讀到了大量分析技術細節的文章,還有參加 mooc 上機器學習課程,github 中有他自己些的 key-value 資料庫和 webserver。通過討論,我確定他是真正學習過這些知識的人。還有一個深圳大學的學生,大學時代做過很多 app 和校園實用小工具,他總是試圖用技術去提高自己的工作和生活效率,是一個真正的極客而不是腦殘果粉。

實習和專案經驗

不少同學擔心他們大學沒有實習過,也沒有做過很多的專案,所以在找工作時會是很大的劣勢。 首先我不否認好的實習經驗和專案經歷,會是很大的加分項,但是如果你是一個學習優秀/熱愛獨立思考/科研達人,也可以收到同樣的效益。在我看來,最重要的問題在於你要「曾經努力做好過一件事情」,否則「Why you?」

既不擅長於學習和科研也沒有折騰過具體的技術,這樣的人才是大多數。所以,當你能做好一件事情,就是優勢。(當然,我更建議大學時代讀好書,搞好科研,而不是放棄學習去折騰具體的技術)

另外很多「爛校」的學生,總認為自己學校差所以沒有機會去大公司實習。實際上,你在微博/github/v2ex 之類的地方,可以勾搭到大量大公司的人,只要你能吸引到他們,完全可以找到一份不錯的實習。問題是你拿什麼來證明自己優秀?

熱愛,有激情

面試時,有不少人總是急於表達自己對技術對程式設計的熱情和喜歡,而我卻很難在這些人的人生經歷中,找到一件事可以支援他們的這個說法。你既然這麼喜歡計算機和程式設計,大學四年你幹嗎去了? 你確定不是因為找不到其他工作或者考不上公務員才來面試程式設計師的嗎?網際網路如此發達的今天,大學你有四年的時間去折騰,去證明你喜歡計算機,然而你沒做過任何這樣的事情,卻說自己熱愛,這反而會讓人對你的看法大打折扣。

大學時代不知道如何正確地學習很正常,但是如果你真喜歡一樣東西,你會做過一百種嘗試。哪怕是反覆地折騰安裝 linux 系統,嘗試各種不同的發行版本,也是一種證明。你可以去計算機系蹭課,可以去 mooc 上學習計算機的公開課,甚至你可以去考並沒有什麼卵用的計算機二三四級考試,也可以去交一個計算機系的男朋友女朋友。然而你「什麼都沒做過,憑什麼說愛」。

有一個候選人本科是武漢大學某個偏門工科專業的,大學時代因為喜歡程式設計買了樹莓派寫程式碼,還去華科修了電腦科學的第二學位,為了進一步學習他考研去了中科研研究計算機視覺,讀研期間又自己用 C++ 實現了視覺領域的大量演算法來提高自己的程式設計能力。這樣的經歷是非常吸引人的!這個同學的演算法和資料結構底子比較一般(或者只是沒有刷過題),但是學習能力,分析問題的能力很強,我能明確感受到他面對一個自己不熟悉的演算法題時,逐步分析歸納試著去解決問題的過程。這樣的同學太討人喜歡了!(他的二面面試官給出了比我更高的評價!)

說了這麼多,其實我想說的就一點,每個人都要有自己的優勢和核心競爭力。這個核心競爭力可以是牛校(清北復交浙南大科大等),當然,如果你只有牛校光環,並沒有什麼卵用,因為你競爭的物件是自己的同學,而不是大專畢業生;也可以是很強的演算法設計能力,但是參加 ICPC 拿過大獎的同學那麼多,你刷題刷的過來嗎?;還可以是學習成績好,因為成績好的同學往往在工作中表現出很高的執行力和快速交付能力(這也是為什麼很多投行和諮詢公司對候選人的學校和成績有很高的要求);愛造輪子折騰開源;實習經歷(BAT,google,MS 等實習過),學術強人(頂會 paper); 數學好(奧賽金牌)等等。

如果你啥都沒有,只能跟大多數人一樣,人云亦云,刷演算法題看麵筋,臨時抱佛腳,指望著網際網路泡沫更大一點,這樣 bar 就能更低一點,這樣就誰都能進入 BAT 分一杯羹。

可是,在這個阿貓阿狗都能拿到年薪 20 萬 offer 的泡沫時代,這樣的你就沒有一點焦慮?

最近這段時間,每天從知乎和 QQ 上會收到大量的 offer 求比較諮詢,其中 BAT 20 萬的 offer 司空見慣,30 萬的 special 也見怪不怪,40 萬(今日頭條等給的 special offer)的也常有出現,作為老人只能感嘆這個網際網路時代的瘋狂。

我不是一個可以講大道理的「人生贏家」或者「長者」,只是你們經歷著的事情,3 年前我也經歷過,offer 越多越煩惱,尤其是沒有殺手級 offer 時天天都只能糾結困擾。然而回頭一想,有時候真的是自己想得太多了而已。所以,今天也談談我對校招 offer 選擇的一些不成熟的微小的看法,也歡迎大家把我批判一番。

選擇你當前最需要的東西

我當然更欣賞勇於去追求自己的夢想的你。當有一個好的 offer 時,哪怕是要去帝都這樣的城市,你也毅然前往。不過我也從來不認為現在的一個 offer 選擇會成為你未來走向人生巔峰的障礙。阿里巴巴上市的時候,許多技術圈朋友感嘆自己當年沒有選擇去淘寶,否則現在也走向財務自由了。而我覺得,即便你當初選擇了淘寶,中間也有一萬個理由離開。我們決定不了自己的運氣。

生活和工作平衡,同時加上較高的收入,這是最理想的工作狀態。平衡生活往往需要在一個你喜歡的城市裡,如果你介意去北京,那麼還是留在上海/廣州/杭州/深圳吧,留在一個有你親人基友同學的地方,在一個你更願意長期發展的地方。當地域成為你當前訴求中一個重要因素時,就可以縮小你的選擇空間。有個同學說他想找個浙大的女朋友,我說那肯定去網易/阿里/蘑菇街這些公司啊,可是他又糾結說他想學技術,我只能問他難道阿里的技術不夠學麼?

薪水當然是最重要的,沒有人不喜歡錢。許多連C輪都沒走到,愉快地燒著 VC 錢的公司,大方地給應屆生開出了遠高於 BAT 的薪水,讓人很難不動心。可是當下你真的有那麼需要錢嗎?如果答案是肯定的,那很簡單,選錢最多的一個!如果你並沒有什麼經濟負擔,一個月多 5K 少 5K 本質上沒有影響到你的生活,那麼,一定要跟那種花幾百萬請王寶強孫紅雷田亮過來說一句廣告詞的創業公司說不!

這裡順道分享個案例:某同學收到某不靠譜創業公司開出的 18K 的 offer,百度開出的 14K 的 offer。表面上看來百度的錢少好多,但是實際上該創業公司的社保公積金都按最低標準繳納,比如公積金每個月總共才兩三百塊,但是百度每月給你繳納的公積金公司那份就有差不多 2000,同時你的醫保和養老金也會多出幾千塊,另外公司還給你買了商業醫保,這麼一算,你覺得如何呢?

做自己最擅長和有興趣做的事情

許多遊戲公司給應屆生開出了遠高於預期的薪水,似乎讓人很難拒絕。然而遊戲是一個特殊工種,遊戲的天性就是要短平快賺錢,所以你永遠都是在衝爆款,你永遠都在做下一個遊戲!同時,這種經驗沒法讓你體驗到持續的增長和積累,而這種應對高速增長的流量和業務規模,不斷改進架構和基礎設施的能力在大型網際網路專案中又是必備的。

所以,除非你真的熱愛遊戲和遊戲開發,否則一般不建議去遊戲公司。(當然,如果你優先順序更高的訴求是去廣州,但是又沒有其他選擇比如微信,那麼另當別論)

許多同學有「後臺開發工程師」的 offer,又有「Data Scientist」這麼高大上 title 的 offer。還有些有「前端開發」或「運維」offer 的同學話語間卻透露出一點對相應領域鄙視的神情,和那些認為「彙編」和「底層」就是更牛逼的人是一樣一樣的。

「演算法」「機器學習」這些聽上去更高大上,我也有不少這類 offer,但是我依然選擇做「基礎架構」這個方向,而不是「演算法」,因為我的熱情和興趣都在這上面,我相信這樣可以做得更好。等我做得足夠好的時候,我才可能會去做一些新鮮的嘗試。

我一直覺得只要保持開放和持續學習的心態,做哪個領域都不會有問題,塔尖的人永遠是稀缺的。實踐中,想要招一個優秀的「前端」和「運維」,是非常難得事情,因為真的很缺。所以如果你擅長前端或運維相關的技術,又有足夠的興趣,請不要頭腦發熱去搞「大資料」和「機器學習」。

哪個技術/程式語言有前途?

還有些同學說我對後臺程式設計有興趣的,只是我不知道學哪個好,接下來他又會問現在 C++ 還有市場嗎?PHP 和 Python 到底哪一個好? 是不是以後的趨勢是 Go?Java 的薪水是不是沒有 C++ 高? 就這麼一糾結,半年就過去了,再那麼一糾結,轉眼就要畢業找工作了他們還是沒想明白這個問題。對於這個問題,舉個例子說明我的觀點:微軟的工程師一直是國內外網際網路公司搶奪的重要人才資源池,但是實際工作中大多數微軟 FTE 工作都使用 C# 在 windows 平臺程式設計,而且很多都是在從事傳統的軟體開發,那麼,為什麼會這麼搶手?

我身邊優秀的工程師們,都是有自己擅長且無法被輕易替代的技術,同時又保持著對新技術探索的熱情。我自己主要程式語言是C++,但是對 Python 和 Go 的熟悉程度也可以輕易地開始獨立做一個專案,對 openstack 和 docker 等等也都有研究過。我也嘗試過用 PHP 和 Python 寫過網頁小遊戲的後臺,我試著用這些開發一些工具來便捷自己的生活。當然,我並不是說我優秀,我只是說我真的喜歡技術,願意去探索,並有信心未來不輕易地被淘汰。

當然,軟體工程師的核心價值應該是實現想法和解決問題,而不是編碼員。

一定要去 BAT 嗎?

很多人形容大牛都是「BAT X 年工作經驗」這樣的論調,給人一種似乎只要去 BAT 熬上多少年就可以變成大牛一樣。

我的看法一直是「BAT 有很多大牛,但是大牛並不是因為去了 BAT 而成為的大牛」,這跟好的教育背景是一樣的,我們不應該把「錦上添花」當成了「點石成金」。

我不止一次探究過身邊高T的大牛或其它公司資深工程師的經歷,發現這些人有個共同的特點,就是都是伴隨著優秀的專案/團隊一起成長起來的。有一個高速增長的業務挑戰,不斷地出現難題,不斷地從坑裡面走過來,這樣的經驗,才是最有價值的!如果你有一個機會去一個業務快速增長並尊重工程師的創業公司,絕對是比去 BAT 做螺絲釘更好的機會!(比如近年的美團、小米、滴滴叫車、宜信大資料中心、今日頭條等)

大公司很多部門通常有一個毛病,就是業務過於成熟,所以一切都追求穩定,即便是急需要改進的東西,也沒有人敢去碰坑。你極有可能就是在這樣的環境中,你是一顆勤勞的螺絲釘,隨時可以拔掉或者替換。而你根本不用幻想,基於現有的資源,給你機會去創造並擦出新的火花。

當然,一切歸根結底最重要的因素還是看人。

通常,心態開放並積極學習的人,運氣都不會太壞。

相關文章