前言
我去華為面試了,很遺憾,結(jié)果不盡如人意,但也不是毫無(wú)收獲。我把它當(dāng)作一個(gè)故事講一遍,希望能博得您茶余飯后一笑,如果除此之外你還有所收獲,那更令我欣慰。雖然看上去洋洋灑灑一大篇,但其實(shí)心中感慨萬(wàn)千,這點(diǎn)東西都不能盡述胸中塊壘之萬(wàn)一。不多說(shuō)了,且行且珍惜吧!
1.英雄帖
故事起因是這樣的:某天晚上(晚上噢!),本人在街上閑逛,吃著臭豆腐看美女。突然屁股兜里一熱,手機(jī)響了。
“您好,這里華為人事部,我是人事經(jīng)理xxx,請(qǐng)問(wèn)您現(xiàn)在方便接聽(tīng)電話嗎?”
。。。此處省略一萬(wàn)字。
值得一提的有以下幾點(diǎn):
1.是電話里的聲音非常好聽(tīng),耳測(cè)是播音系的。
2.接完電話后臭豆腐涼了,心卻熱了。
3.電話中說(shuō)給我兩天時(shí)間讓我準(zhǔn)備一下面試。其實(shí)無(wú)形中給了我巨大的壓力,據(jù)我的經(jīng)驗(yàn),極少有公司會(huì)說(shuō)給你多少天讓你準(zhǔn)備一下面試,通常的情況是問(wèn)你哪天方便過(guò)來(lái)面試一下。但是華為就這么做了,這里體現(xiàn)了華為技術(shù)上的心理優(yōu)勢(shì)。(是的,你不好好準(zhǔn)備會(huì)來(lái)這里丟人的噢?。?/p>
2.磨刀霍霍
其實(shí)在準(zhǔn)備過(guò)程中就已經(jīng)開(kāi)始了內(nèi)心的煎熬,該怎么準(zhǔn)備?準(zhǔn)備什么?前端知識(shí)體現(xiàn)異常龐雜,如果沒(méi)有一定的策略,你將深陷知識(shí)的海洋中無(wú)法自拔。最后導(dǎo)致經(jīng)脈逆轉(zhuǎn),真氣倒流,走火入魔,別說(shuō)去面試了,你可能自己就先打敗了自己。像華為這樣的技術(shù)型公司,比技術(shù)深度,比技術(shù)廣度,你都沒(méi)有任何優(yōu)勢(shì)。經(jīng)過(guò)一番深思熟慮后本人決定采用押題法。本人只押一道題:排序算法。一般的的技術(shù)型公司筆試通常會(huì)有這樣一道題(不分前端后端):數(shù)組[3,2,5,8,9,7,1,4],手寫(xiě)該數(shù)組的排序算法,至少寫(xiě)一種。至少寫(xiě)一種的言外之意是越多越好。本人就賭這道題。千萬(wàn)不要小看這道題,在這里我不多說(shuō),后面我還會(huì)詳細(xì)談到。本人在準(zhǔn)備過(guò)程中詳細(xì)地了解5種基本的排序算法,并反復(fù)地打磨推敲,達(dá)到了用時(shí)10分鐘快速準(zhǔn)確地手寫(xiě)5種排序算法的程度。你沒(méi)聽(tīng)錯(cuò),是用筆寫(xiě)在紙上。有了這個(gè)準(zhǔn)備后,我們想象一面筆試的情景:你粗略瀏覽一遍題目,發(fā)現(xiàn)有好幾頁(yè)呢,你在倒數(shù)第二或第三題發(fā)現(xiàn)了它,你發(fā)現(xiàn)該題留給你的答題空間不夠,于是你在答題區(qū)寫(xiě)下:詳情見(jiàn)背面。然后你花10分鐘在背面寫(xiě)下滿滿一頁(yè)。其他題你大概做了個(gè)七七八八,說(shuō)不上好也說(shuō)不上壞,和別人比大概也沒(méi)什么優(yōu)勢(shì)。那么在面試官看來(lái),可能你整體的得分不高,但你仍然是最特殊的那一個(gè)。得分高的未必能在10鐘內(nèi)寫(xiě)出5種排序算法,而算法通常是技術(shù)型公司比較看重的。我個(gè)人認(rèn)為我的策略是可以的。如果給你兩天時(shí)間去準(zhǔn)備,你要如何去準(zhǔn)備呢?可能你想著如何去準(zhǔn)備就想了一天。如果您有什么想法或建議,可以在評(píng)論區(qū)討論,集思廣益。
3.刀光劍影
華為東莞區(qū)在松山湖,別說(shuō)在松山湖具體幾號(hào),那里都是華為的地盤(pán),大體分為華為ABCDEF等各區(qū)。我去的具體是哪個(gè)區(qū)我也不清除,是華為的妹子給我定位導(dǎo)航一路過(guò)去的。
華為的內(nèi)部有一尊關(guān)公,供著燃燒的香和新鮮的水果。說(shuō)不清楚是因?yàn)榕d奮還是緊張,總之我情緒高昂,以致于差點(diǎn)一頭撞在了關(guān)公的刀上。關(guān)公的刀嚇了我一跳,后來(lái)的事實(shí)證明這是事情不會(huì)盡如人意的某種先兆。
我跟給我導(dǎo)航定位的妹子說(shuō)我到了,妹子回復(fù)說(shuō)先去前臺(tái)填張表。前臺(tái)妹子讓我坐在關(guān)公對(duì)面填,那個(gè)位置說(shuō)實(shí)在的如果不是她說(shuō)還真不敢坐,因?yàn)榭雌饋?lái)像老板坐的。填完后妹子讓我等著,我就這樣和關(guān)公面對(duì)面坐了半個(gè)小時(shí)。
走廊深處出來(lái)一對(duì)男女,都非常地年輕,男的大概二十幾歲,女的看上去還不到二十歲。男的手里拿了一份A4紙打印地文件,我認(rèn)為是筆試題,事實(shí)上不是。他們來(lái)到大廳,四處張望了一下。我起身招手,男的問(wèn):“你是面試前端的?”。我說(shuō):“是的”?!澳沁@邊請(qǐng)”,還是比較客氣的。
各種曲徑回廊,來(lái)到一個(gè)假山旁邊。男的說(shuō):“這里比較安靜,就在這里吧”。
各自落座。
“是從哪過(guò)來(lái)的?”
“虎門(mén)”
“虎門(mén)啊,那挺遠(yuǎn)的啊,坐車(chē)多久?”
“兩個(gè)半小時(shí),還好,不算很遠(yuǎn)”
“行,先自我介紹下吧”
“。。。此處省略一萬(wàn)字”。
這兩個(gè)年輕的面孔微笑地看著我,讓我感到莫名緊張。事后回想起來(lái),仍然讓我感慨萬(wàn)千,他們的微笑種有一種技術(shù)的心理優(yōu)勢(shì),或者說(shuō)那是一種氣場(chǎng)吧??傊?,人家悠然自得,你已方寸大亂。我只希望他趕緊把筆試題給我,我要大顯身手一番。
“說(shuō)說(shuō)你們項(xiàng)目的前后端分離方案吧”
“前端主要負(fù)責(zé)html,通過(guò)ajax請(qǐng)求后端數(shù)據(jù),請(qǐng)求到數(shù)據(jù)后進(jìn)行頁(yè)面渲染,最后呈現(xiàn)給用戶”
“能不能具體一點(diǎn)?”
“此處省略N字”。主要是我對(duì)這個(gè)問(wèn)題毫無(wú)準(zhǔn)備,邏輯混亂,自己根本不知道該講啥。
“說(shuō)說(shuō)前后端通信吧,你們是怎么做的?”
“通過(guò)axious發(fā)送請(qǐng)求”
“你對(duì)后端了解嗎?”
“了解,我會(huì)寫(xiě)java”
“不過(guò)你好像對(duì)后端數(shù)據(jù)接口的定義不太熟悉,我剛才問(wèn)的前后端通信,你只回答了前端”
“呃,是的,那個(gè)我沒(méi)參與”。
這里我認(rèn)為是一個(gè)戲劇性的轉(zhuǎn)折點(diǎn),因?yàn)槲腋杏X(jué)他開(kāi)始討厭我了,他已經(jīng)從心里pass掉我了,接下來(lái)的面試他只是驗(yàn)證他心中對(duì)我的判斷。因?yàn)椴还芩崾裁磫?wèn)題,我怎么回答,他都要從中挑刺。接下來(lái)的面試非常艱難。旁邊的妹子還沒(méi)有說(shuō)過(guò)一句話。之后他采取了咄咄逼人的姿態(tài),我也采取了自衛(wèi)的姿態(tài)。大家要注意,面試一旦陷入這種境地,你技術(shù)再厲害也沒(méi)用,因?yàn)閺哪撤N意義上說(shuō),你們?cè)谛睦砩弦呀?jīng)形成一種敵對(duì)關(guān)系,不再存在合作的可能性。你唯一能做的就是盡量體面地離開(kāi),不要被他羞辱。之后各有來(lái)回,總體上是他占據(jù)優(yōu)勢(shì),沒(méi)有辦法,這里是他的主場(chǎng),他有隨時(shí)切換話題的優(yōu)勢(shì),對(duì)于不想深入的話題,他可以輕易帶過(guò)。不過(guò)他還是被我抓住了非常明顯的漏洞,就是在響應(yīng)式和自適應(yīng)以及媒體查詢(xún)的時(shí)候,他對(duì)這些概念分得不太清,或許他認(rèn)為這根本就是一回事,都是為了做屏幕適配。我抓住這一點(diǎn)予以反擊,完全推翻他的結(jié)論,他臉都?xì)饧t了,不過(guò)因?yàn)槊米釉趫?chǎng),還得在面上裝的紳士客氣。自然,他又切換話題了,否則,我?guī)缀跄艹晒Ψ礆⑺?/p>
。。。此處省略一萬(wàn)字。真的沒(méi)什么好說(shuō)的。
“jsonp的原理是什么?”
“通過(guò)手動(dòng)創(chuàng)建script元素,利用script.src的跨域特性進(jìn)行數(shù)據(jù)請(qǐng)求”
“為什么會(huì)有跨域的限制?”
“因?yàn)橥床呗浴?/p>
“什么是同源策略?解決了什么問(wèn)題?”
“同源策略是指用戶的cookie只能被相同域名下的網(wǎng)頁(yè)訪問(wèn),禁止其他域名訪問(wèn)。為了保護(hù)用戶的數(shù)據(jù)安全”
他沒(méi)有再問(wèn),因?yàn)槊米邮疽馑灰獑?wèn)了。他們眼神交流了一番,然后說(shuō)差不多了。問(wèn)我有什么想問(wèn)的。我簡(jiǎn)單問(wèn)了下公司的上下班時(shí)間。他們讓我回到關(guān)公身邊稍作等待。
4.峰回路轉(zhuǎn)
那個(gè)男的進(jìn)去了,妹子沒(méi)有離開(kāi),此時(shí)和我一起坐在關(guān)公身邊。
她也不說(shuō)話。我對(duì)于面試過(guò)程如此艱難而耿耿于懷,內(nèi)心不能平靜。那個(gè)男的進(jìn)去了好久都沒(méi)有出來(lái)。我左看右看,百無(wú)聊賴(lài)。我一看她也坐在這里,我是無(wú)法忍受和妹子相對(duì)而坐卻相顧無(wú)言的。
“你是他的助理嗎?”
我覺(jué)得像華為這樣的大廠,技術(shù)做到一定級(jí)別,配個(gè)助理也是正常的。而且她和他一起面試,卻又不說(shuō)話,很像是一個(gè)助理。
“我是做前端開(kāi)發(fā)的”她笑著說(shuō)。
我一下就來(lái)了興趣。我注意到她皮膚白皙,長(zhǎng)得挺好看。
“你是做前端開(kāi)發(fā)的?”
“是的,這邊的前端都是我負(fù)責(zé)”
“那剛才面試我的那位是?”
“噢,他是我的下屬,我不太擅長(zhǎng)面試,他比較擅長(zhǎng),是我安排他給你面試的”
“噢,是這樣啊”
之后男的和另一個(gè)女的出來(lái)了,那是人事。他們簡(jiǎn)短交流了一下,美女前端和男的進(jìn)去了,人事留下來(lái),我起身準(zhǔn)備離開(kāi)。
人事送我到門(mén)口。
“怎么樣?面試還順利嗎?”她看起來(lái)挺友善。
“還可以,討論得挺激烈”
“激烈是吧,不錯(cuò),說(shuō)明互動(dòng)不錯(cuò),面試最怕冷場(chǎng),激烈是好事”
“你說(shuō)得對(duì)”
我都不知道該說(shuō)啥。
“好吧,一路注意安全,我們會(huì)經(jīng)過(guò)一輪審核,如果通過(guò)會(huì)在一周時(shí)間內(nèi)通知你復(fù)試”
“好的,謝謝”
后語(yǔ)
整個(gè)面試過(guò)程差不多是這樣,前后大概20分鐘。是一次失敗的面試。
總結(jié)起教訓(xùn)來(lái),有以下幾點(diǎn),供大家參考:
-1.不要去太遠(yuǎn)的地方去面試。
超過(guò)兩個(gè)小時(shí),就不要去了。因?yàn)樽?chē)太遠(yuǎn),人到了以后已經(jīng)是累得個(gè)七葷八素了,面試時(shí)的精面貌非常重要,而且你的臨場(chǎng)反應(yīng)能力也會(huì)因?yàn)槟愕钠v而大幅下降。通常都不會(huì)有好的結(jié)果。
我那天早上7點(diǎn)半出門(mén),匆匆吃了個(gè)炒粉,那個(gè)炒粉炒的太咸,我為了趕時(shí)間也沒(méi)和老板理論,匆匆吃完就走了。趕上公交車(chē)已經(jīng)是8點(diǎn)。途中轉(zhuǎn)了3次公交,因?yàn)槌捶鄣脑?,口渴得不行。?lái)到松山湖已經(jīng)10:30,遲到了半個(gè)小時(shí)。松山湖雖然到處是湖水,卻沒(méi)有一個(gè)賣(mài)礦泉水的地方??梢哉f(shuō)我趕到那里時(shí),狀態(tài)是非常差的(雖然我技術(shù)非常的牛,嘿嘿)。
-2.要和面試官建立良性互動(dòng)。
這個(gè)沒(méi)有辦法,因?yàn)橹鲃?dòng)權(quán)不在你手里,如果面試官不主動(dòng)釋放良性的善意,你再怎么釋放善意都是沒(méi)有用的。除非你能做到滴水不漏,讓他無(wú)可挑剔,即便如此也還要看他心情,他完全可以認(rèn)為你這人不太好溝通而拒絕你。我認(rèn)為失敗的面試?yán)?,面試官的提?wèn)有一多半是沒(méi)有必要問(wèn)的,之所以問(wèn)是因?yàn)樗呷枘悖M(jìn)一步驗(yàn)證他心里的你不行的判斷。對(duì)于這種情況,沒(méi)有任何辦法,只能硬頂硬地干。
-3.面試前要放空自己。
我在面試前天晚上還在背算法,搞到將近12點(diǎn)才上床睡覺(jué),躺在床上還在默默念叨著剛才的算法。這無(wú)形種給我增加了壓力,具體是幾點(diǎn)睡著的我都不清楚總之那天我睡得非常少。事后回想起來(lái),我認(rèn)為正確的做法是,面試前一天晚上什么都不要做,早早睡覺(jué),養(yǎng)好精神,給第二天的自己一個(gè)元?dú)鉂M滿的開(kāi)始。
-4.很遺憾沒(méi)有那個(gè)前端妹子的微信
真的很遺憾,這種緣分就這么錯(cuò)過(guò)了。當(dāng)然我不確定如果時(shí)光倒流,是否真的有勇氣主動(dòng)要她微信。人家是真正的大佬,那個(gè)咄咄逼人的家伙僅僅是她手下的小嘍啰,所謂圣人無(wú)相,高手總是那些看起來(lái)不像高手的人。這讓我想起《天龍八部》開(kāi)頭的情景:鏡湖莊比劍。無(wú)量劍和逍遙派的兩名大漢比劍,兩派互為世仇,不共戴天。梁上卻有一名少女吃吃冷笑,兩名大漢大漢怒了,叫囂著要把少女抓住教訓(xùn)一番。沒(méi)想到少女自己跳下來(lái),三下兩下把兩名大漢都打倒了。眾人一時(shí)都驚呆了。那個(gè)少女叫鐘靈。我和那位咄咄逼人的面試官上演的那場(chǎng)狗咬狗式的面試,正像無(wú)量劍和逍遙派的兩名大漢比劍,而鐘靈卻在旁邊冷眼相看。當(dāng)然我不確定她是否真的還年輕,也許只是看起來(lái)年輕,也許她已經(jīng)三十好幾四十好幾了,也許她是幾個(gè)孩子的媽了。誰(shuí)知道呢?
前文有提到手寫(xiě)排序算法。這個(gè)真的非常重要。微軟曾經(jīng)一面的面試題:手寫(xiě)二分查找排序算法。大家注意,整個(gè)一面就這一道題,寫(xiě)出來(lái)就過(guò),寫(xiě)不出來(lái)就滾蛋。這道題的面試通過(guò)率為5%,低得讓面試官都非常驚訝,于是面試官把這道題拿到內(nèi)部去給員工進(jìn)行測(cè)驗(yàn),通過(guò)率也僅為25%。提到手寫(xiě)算法,就不得不提一下軟件之神--高德納。比爾蓋茨就是他粉絲。這個(gè)人在計(jì)算機(jī)領(lǐng)域的地方就相當(dāng)于籃球界的喬丹,科學(xué)界的愛(ài)因斯坦。這個(gè)人有一個(gè)非常獨(dú)特的習(xí)慣,就是喜歡在紙上寫(xiě)代碼。他曾經(jīng)說(shuō)過(guò)“我寫(xiě)出來(lái)的代碼,都是在腦子里運(yùn)行了好幾遍的,因此我寫(xiě)出來(lái)的代碼沒(méi)有bug”。他做出來(lái)一款Tex軟件,并向全世界宣布將以二的N次方懸賞那些找到他的軟件bug的人,找到第一個(gè)的懸賞2美元,找到第二個(gè)的懸賞4美元,依次遞增,30多年過(guò)去,一共找出來(lái)15個(gè)bug。紙上寫(xiě)代碼要求你對(duì)代碼有更深入的理解,對(duì)流程有更精確的控制,你必須像機(jī)器一樣思考,對(duì)各種邊界條件要了然于胸。你是否能理解為什么微軟會(huì)提出這么一道面試題呢?高德納年輕時(shí)寫(xiě)過(guò)一本書(shū)《計(jì)算機(jī)編程藝術(shù)》,他一口氣就寫(xiě)了三千多頁(yè),編輯去催稿時(shí),他說(shuō)還只是寫(xiě)了個(gè)開(kāi)頭,編輯認(rèn)為可以做些刪減,于是請(qǐng)技術(shù)專(zhuān)家鑒定一下,鑒定的結(jié)果是最好一字不差地出版。這套書(shū)一共七本,微軟創(chuàng)業(yè)早期的招人標(biāo)準(zhǔn)就是讀過(guò)《計(jì)算機(jī)編程藝術(shù)》其中一本,因?yàn)楸葼柹w茨自己就只讀過(guò)一本,因?yàn)樵偻伦x就看不下去了。這套書(shū)相當(dāng)于計(jì)算機(jī)領(lǐng)域的相對(duì)論,可以在網(wǎng)上買(mǎi)到英文版,沒(méi)有中文版,因?yàn)闆](méi)有中國(guó)人看得懂。有興趣地可以買(mǎi)來(lái)看一下,價(jià)格不便宜,當(dāng)然一般都是看不懂的,不過(guò)也可以把它當(dāng)作軟件行業(yè)的圣經(jīng),每天早晚三炷香地供著,保佑自己代碼隨便敲,bug全沒(méi)了。
好了,就到這里吧,希望你有所收獲。我將在下一篇文章里描述如何快速準(zhǔn)確地在10分鐘里手寫(xiě)5種排序算法。敬請(qǐng)期待。。。