一個多月前,作為技術面試官參加了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做螺絲釘更好的機會!(比如近年的美團、小米、滴滴打車、宜信大資料中心、今日頭條等)
大公司很多部門通常有一個毛病,就是業務過于成熟,是以一切都追求穩定,即便是急需要改進的東西,也沒有人敢去碰坑。你極有可能就是在這樣的環境中,你是一顆勤勞的螺絲釘,随時可以拔掉或者替換。而你根本不用幻想,基于現有的資源,給你機會去創造并擦出新的火花。
當然,一切歸根結底最重要的因素還是看人。
通常,心态開放并積極學習的人,運氣都不會太壞。
當我說到上述觀點時,經常有人問我為什麼不去創業公司。其實主要原因是深圳還沒有一個打動我的創業公司,北京确實有很多,但是這還不是我目前的核心訴求,我在現在的崗位上還可以得到很大的曆練,更何況我的家人都在這裡,不過未來會怎麼樣,誰知道呢。
看來,僅僅會IOS是不夠來,前台背景各種知識都要了解。