2016年百度校招小結:我做技術面試官的一些思考
一個多月前,作為技術面試官參加了百度 2016 年的校園招聘深圳站面試,主要目標學生是清華/北大/哈工大/中科院在本地的研究生院(實際上并沒有設限,有不少江西廣西福建的同學過來面試了),這里和大家分享一點自己的思考。
我們一般有 3 輪技術面試,一面二面通常是由資深的工程師面試,三面一般是技術經(jīng)理面試。我負責的是一面和二面,面試過程中除了給全公司層面的統(tǒng)一招聘人才,我們還隨時 要準備物色合適的人加入自己的團隊。面試官會根據(jù)面試過程對每個候選人的編程能力/邏輯和思考能力進行評價,只有每一輪的面試官都給予通過,才有可能被錄 用。
面試是一個雙向考察和選擇的過程,所以面試時我一直嘗試把這當成和候選人的一次溝通。面試的過程有大量的問題也是根據(jù)候選人自身的特點提出的,而不是遵循了某個題庫固定的題目。
整體感受是,大多數(shù)人真的很弱,你并不需要「非常努力」,就可以比大多數(shù)的人「優(yōu)秀」。下面就大家關心的一些問題分開討論下。
教育背景
很多同學咨詢我時,有意無意地給自己貼上了「渣二本」「普通一本」「非 211」這樣的標簽,這都表面其內(nèi)心還是非常介意自己的教育背景不好。我想你應該慶幸自己生在互聯(lián)網(wǎng)時代,這個時代的人和資源都暴露在互聯(lián)網(wǎng)中,你完全有機會用互聯(lián)網(wǎng)來證明自己的能力和曾經(jīng)的努力。
我在面試時能明顯感覺到,一些好學校(比如中山大學/哈工大/清華北大/廈門大學/華科武大等)的學生,在基礎知識/表達/邏輯能力等都要更強一 些。我想之所以有這樣的表現(xiàn),是因為好學校的學生受過更好思維訓練,他們面對一個難題時往往知道怎么去簡化和抽象問題,把問題撥出來分類或者分層討論,同 時他們還會試圖把問題分解成不同的子問題逐個來討論。我就碰到過一個大學純玩票的中山大學的大四學生,對計算機基礎知識基本上一問三不知,但是分析問題時 的思路和邏輯還是清晰的,而這種能力,是很多教育背景較差的學生缺乏的。因此我也建議屬于這種情況的同學,多進行一些思維訓練,學會如何系統(tǒng)地區(qū)分解和分 析一個問題。
當然,非名校中,也不乏優(yōu)秀的候選人。有個江西理工的大四學生,在他的博客中我讀到了大量分析技術細節(jié)的文章,還有參加 mooc 上機器學習課程,github 中有他自己些的 key-value 數(shù)據(jù)庫和 webserver。通過討論,我確定他是真正學習過這些知識的人。還有一個深圳大學的學生,大學時代做過很多 app 和校園實用小工具,他總是試圖用技術去提高自己的工作和生活效率,是一個真正的極客而不是腦殘果粉。
實習和項目經(jīng)驗
不少同學擔心他們大學沒有實習過,也沒有做過很多的項目,所以在找工作時會是很大的劣勢。 首先我不否認好的實習經(jīng)驗和項目經(jīng)歷,會是很大的加分項,但是如果你是一個學習優(yōu)秀/熱愛獨立思考/科研達人,也可以收到同樣的效益。在我看來,最重要的 問題在于你要「曾經(jīng)努力做好過一件事情」,否則「Why you?」
既不擅長于學習和科研也沒有折騰過具體的技術,這樣的人才是大多數(shù)。所以,當你能做好一件事情,就是優(yōu)勢。(當然,我更建議大學時代讀好書,搞好科研,而不是放棄學習去折騰具體的技術)
另外很多「爛?!沟膶W生,總認為自己學校差所以沒有機會去大公司實習。實際上,你在微博/github/v2ex 之類的地方,可以勾搭到大量大公司的人,只要你能吸引到他們,完全可以找到一份不錯的實習。問題是你拿什么來證明自己優(yōu)秀?
熱愛,有激情
面試時,有不少人總是急于表達自己對技術對編程的熱情和喜歡,而我卻很難在這些人的人生經(jīng)歷中,找到一件事可以支持他們的這個說法。你既然這么喜歡計算機和編程,大學四年你干嗎去了? 你確定不是因為找不到其他工作或者考不上公務員才來面試程序員的嗎?互聯(lián)網(wǎng)如此發(fā)達的今天,大學你有四年的時間去折騰,去證明你喜歡計算機,然而你沒做過任何這樣的事情,卻說自己熱愛,這反而會讓人對你的看法大打折扣。
大學時代不知道如何正確地學習很正常,但是如果你真喜歡一樣東西,你會做過一百種嘗試。哪怕是反復地折騰安裝 linux 系統(tǒng),嘗試各種不同的發(fā)行版本,也是一種證明。你可以去計算機系蹭課,可以去 mooc 上學習計算機的公開課,甚至你可以去考并沒有什么卵用的計算機二三四級考試,也可以去交一個計算機系的男朋友女朋友。然而你「什么都沒做過,憑什么說 愛」。
有一個候選人本科是武漢大學某個偏門工科專業(yè)的,大學時代因為喜歡編程買了樹莓派寫代碼,還去華科修了計算機科學的第二學位,為了進一步學習他考研 去了中科研研究計算機視覺,讀研期間又自己用 C++ 實現(xiàn)了視覺領域的大量算法來提高自己的編程能力。這樣的經(jīng)歷是非常吸引人的!這個同學的算法和數(shù)據(jù)結構底子比較一般(或者只是沒有刷過題),但是學習能 力,分析問題的能力很強,我能明確感受到他面對一個自己不熟悉的算法題時,逐步分析歸納試著去解決問題的過程。這樣的同學太討人喜歡了?。ㄋ亩婷嬖嚬?給出了比我更高的評價!)
說了這么多,其實我想說的就一點,每個人都要有自己的優(yōu)勢和核心競爭力。這個核心競爭力可以是牛校(清北復交浙南大科大等),當然,如果你只有牛校 光環(huán),并沒有什么卵用,因為你競爭的對象是自己的同學,而不是大專畢業(yè)生;也可以是很強的算法設計能力,但是參加 ICPC 拿過大獎的同學那么多,你刷題刷的過來嗎?;還可以是學習成績好,因為成績好的同學往往在工作中表現(xiàn)出很高的執(zhí)行力和快速交付能力(這也是為什么很多投行 和咨詢公司對候選人的學校和成績有很高的要求);愛造輪子折騰開源;實習經(jīng)歷(BAT,google,MS 等實習過),學術強人(頂會 paper); 數(shù)學好(奧賽金牌)等等。
如果你啥都沒有,只能跟大多數(shù)人一樣,人云亦云,刷算法題看面筋,臨時抱佛腳,指望著互聯(lián)網(wǎng)泡沫更大一點,這樣 bar 就能更低一點,這樣就誰都能進入 BAT 分一杯羹。
可是,在這個阿貓阿狗都能拿到年薪 20 萬 offer 的泡沫時代,這樣的你就沒有一點焦慮?
最近這段時間,每天從知乎和 QQ 上會收到大量的 offer 求比較咨詢,其中 BAT 20 萬的 offer 司空見慣,30 萬的 special 也見怪不怪,40 萬(今日頭條等給的 special offer)的也常有出現(xiàn),作為老人只能感嘆這個互聯(lián)網(wǎng)時代的瘋狂。
我不是一個可以講大道理的「人生贏家」或者「長者」,只是你們經(jīng)歷著的事情,3 年前我也經(jīng)歷過,offer 越多越煩惱,尤其是沒有殺手級 offer 時天天都只能糾結困擾。然而回頭一想,有時候真的是自己想得太多了而已。所以,今天也談談我對校招 offer 選擇的一些不成熟的微小的看法,也歡迎大家把我批判一番。
選擇你當前最需要的東西
我當然更欣賞勇于去追求自己的夢想的你。當有一個好的 offer 時,哪怕是要去帝都這樣的城市,你也毅然前往。不過我也從來不認為現(xiàn)在的一個 offer 選擇會成為你未來走向人生巔峰的障礙。阿里巴巴上市的時候,許多技術圈朋友感嘆自己當年沒有選擇去淘寶,否則現(xiàn)在也走向財務自由了。而我覺得,即便你當初 選擇了淘寶,中間也有一萬個理由離開。我們決定不了自己的運氣。
生活和工作平衡,同時加上較高的收入,這是最理想的工作狀態(tài)。平衡生活往往需要在一個你喜歡的城市里,如果你介意去北京,那么還是留在上海/廣州 /杭州/深圳吧,留在一個有你親人基友同學的地方,在一個你更愿意長期發(fā)展的地方。當?shù)赜虺蔀槟惝斍霸V求中一個重要因素時,就可以縮小你的選擇空間。有個 同學說他想找個浙大的女朋友,我說那肯定去網(wǎng)易/阿里/蘑菇街這些公司啊,可是他又糾結說他想學技術,我只能問他難道阿里的技術不夠?qū)W么?
薪水當然是最重要的,沒有人不喜歡錢。許多連C輪都沒走到,愉快地燒著 VC 錢的公司,大方地給應屆生開出了遠高于 BAT 的薪水,讓人很難不動心??墒钱斚履阏娴挠心敲葱枰X嗎?如果答案是肯定的,那很簡單,選錢最多的一個!如果你并沒有什么經(jīng)濟負擔,一個月多 5K 少 5K 本質(zhì)上沒有影響到你的生活,那么,一定要跟那種花幾百萬請王寶強孫紅雷田亮過來說一句廣告詞的創(chuàng)業(yè)公司說不!
這里順道分享個案例:某同學收到某不靠譜創(chuàng)業(yè)公司開出的 18K 的 offer,百度開出的 14K 的 offer。表面上看來百度的錢少好多,但是實際上該創(chuàng)業(yè)公司的社保公積金都按最低標準繳納,比如公積金每個月總共才兩三百塊,但是百度每月給你繳納的公 積金公司那份就有差不多 2000,同時你的醫(yī)保和養(yǎng)老金也會多出幾千塊,另外公司還給你買了商業(yè)醫(yī)保,這么一算,你覺得如何呢?
做自己最擅長和有興趣做的事情
許多游戲公司給應屆生開出了遠高于預期的薪水,似乎讓人很難拒絕。然而游戲是一個特殊工種,游戲的天性就是要短平快賺錢,所以你永遠都是在沖爆款, 你永遠都在做下一個游戲!同時,這種經(jīng)驗沒法讓你體驗到持續(xù)的增長和積累,而這種應對高速增長的流量和業(yè)務規(guī)模,不斷改進架構和基礎設施的能力在大型互聯(lián) 網(wǎng)項目中又是必備的。
所以,除非你真的熱愛游戲和游戲開發(fā),否則一般不建議去游戲公司。(當然,如果你優(yōu)先級更高的訴求是去廣州,但是又沒有其他選擇比如微信,那么另當別論)
許多同學有「后臺開發(fā)工程師」的 offer,又有「Data Scientist」這么高大上 title 的 offer。還有些有「前端開發(fā)」或「運維」offer 的同學話語間卻透露出一點對相應領域鄙視的神情,和那些認為「匯編」和「底層」就是更牛逼的人是一樣一樣的。
「算法」「機器學習」這些聽上去更高大上,我也有不少這類 offer,但是我依然選擇做「基礎架構」這個方向,而不是「算法」,因為我的熱情和興趣都在這上面,我相信這樣可以做得更好。等我做得足夠好的時候,我才可能會去做一些新鮮的嘗試。
我一直覺得只要保持開放和持續(xù)學習的心態(tài),做哪個領域都不會有問題,塔尖的人永遠是稀缺的。實踐中,想要招一個優(yōu)秀的「前端」和「運維」,是非常難得事情,因為真的很缺。所以如果你擅長前端或運維相關的技術,又有足夠的興趣,請不要頭腦發(fā)熱去搞「大數(shù)據(jù)」和「機器學習」。
哪個技術/編程語言有前途?
還有些同學說我對后臺編程有興趣的,只是我不知道學哪個好,接下來他又會問現(xiàn)在 C++ 還有市場嗎?PHP 和 Python 到底哪一個好? 是不是以后的趨勢是 Go?Java 的薪水是不是沒有 C++ 高? 就這么一糾結,半年就過去了,再那么一糾結,轉(zhuǎn)眼就要畢業(yè)找工作了他們還是沒想明白這個問題。對于這個問題,舉個例子說明我的觀點:微軟的工程師一直是國 內(nèi)外互聯(lián)網(wǎng)公司搶奪的重要人才資源池,但是實際工作中大多數(shù)微軟 FTE 工作都使用 C# 在 windows 平臺編程,而且很多都是在從事傳統(tǒng)的軟件開發(fā),那么,為什么會這么搶手?
我身邊優(yōu)秀的工程師們,都是有自己擅長且無法被輕易替代的技術,同時又保持著對新技術探索的熱情。我自己主要編程語言是C++,但是對 Python 和 Go 的熟悉程度也可以輕易地開始獨立做一個項目,對 openstack 和 docker 等等也都有研究過。我也嘗試過用 PHP 和 Python 寫過網(wǎng)頁小游戲的后臺,我試著用這些開發(fā)一些工具來便捷自己的生活。當然,我并不是說我優(yōu)秀,我只是說我真的喜歡技術,愿意去探索,并有信心未來不輕易地 被淘汰。
當然,軟件工程師的核心價值應該是實現(xiàn)想法和解決問題,而不是編碼員。
一定要去 BAT 嗎?
很多人形容大牛都是「BAT X 年工作經(jīng)驗」這樣的論調(diào),給人一種似乎只要去 BAT 熬上多少年就可以變成大牛一樣。
我的看法一直是「BAT 有很多大牛,但是大牛并不是因為去了 BAT 而成為的大?!?,這跟好的教育背景是一樣的,我們不應該把「錦上添花」當成了「點石成金」。
我不止一次探究過身邊高T的大牛或其它公司資深工程師的經(jīng)歷,發(fā)現(xiàn)這些人有個共同的特點,就是都是伴隨著優(yōu)秀的項目/團隊一起成長起來的。有一個高 速增長的業(yè)務挑戰(zhàn),不斷地出現(xiàn)難題,不斷地從坑里面走過來,這樣的經(jīng)驗,才是最有價值的!如果你有一個機會去一個業(yè)務快速增長并尊重工程師的創(chuàng)業(yè)公司,絕 對是比去 BAT 做螺絲釘更好的機會!(比如近年的美團、小米、滴滴打車、宜信大數(shù)據(jù)中心、今日頭條等)
大公司很多部門通常有一個毛病,就是業(yè)務過于成熟,所以一切都追求穩(wěn)定,即便是急需要改進的東西,也沒有人敢去碰坑。你極有可能就是在這樣的環(huán)境中,你是一顆勤勞的螺絲釘,隨時可以拔掉或者替換。而你根本不用幻想,基于現(xiàn)有的資源,給你機會去創(chuàng)造并擦出新的火花。
當然,一切歸根結底最重要的因素還是看人。
通常,心態(tài)開放并積極學習的人,運氣都不會太壞。