經(jīng)歷100多場(chǎng)面試之后,一位面試官給軟件工程師的建議
大數(shù)據(jù)文摘出品
來(lái)源:medium
編譯:Fisher
有這么件事,相當(dāng)棘手,給人壓力,有點(diǎn)像希臘神話里赫拉克勒斯面對(duì)的12項(xiàng)艱巨考驗(yàn)——通過(guò)考驗(yàn)就能成為英雄,可是又有點(diǎn)像馬戲團(tuán)里的動(dòng)物跳圈圈,沒(méi)啥意思,這個(gè)事就是面試。人人都討厭面試,但它是我們職業(yè)生涯不可避開(kāi)的一部分。
當(dāng)作者帶著幾分天真,第一次勇敢地參加技術(shù)面試時(shí),沒(méi)過(guò)多久,他就覺(jué)得要在兩三個(gè)小時(shí)之內(nèi)判斷一個(gè)軟件工程師的能力,準(zhǔn)確程度跟中世紀(jì)的刑偵手段也差不多。
但是,他一直好奇,怎么才能像桌子對(duì)面的面試官一樣,了解一個(gè)工程師是否適合某個(gè)崗位。過(guò)去幾年里,作者作為面試官經(jīng)歷了100多場(chǎng)軟件工程技術(shù)面試,雖然各家公司有各自流程,面試者往往會(huì)掉入一些共性的坑。如何避坑?下面是他的誠(chéng)實(shí)建議。
好的軟件工程師?
“成功之路與失敗之路幾近相同。”
– Colin R. Davis
何謂“好的軟件工程師”,并沒(méi)有唯一的定義。它與崗位的需求有關(guān),與公司的多元性和成熟度有關(guān)。一家初創(chuàng)公司無(wú)疑是要盡快讓產(chǎn)品進(jìn)入市場(chǎng),而一家更成熟的公司,在客戶群增長(zhǎng)之后,可能需要面對(duì)的是尺度和架構(gòu)上的挑戰(zhàn)。在理解業(yè)務(wù)的同時(shí)構(gòu)建產(chǎn)品,這跟解決復(fù)雜的技術(shù)挑戰(zhàn)不是一回事。一個(gè)細(xì)節(jié)完美主義的工程師和一個(gè)快速迭代的工程師也是不同的。你需要知道公司在找什么人,然后把自己的行為和話語(yǔ)框定在公司的思路里。不要做一張通吃的簡(jiǎn)歷,要根據(jù)實(shí)際情況進(jìn)行調(diào)整。如果你必須做一個(gè)自我推銷(某種程度上,你總是要做一個(gè)自我推銷的,不管是否正式),你要展示你將能成為這個(gè)公司的有用之才。你應(yīng)該了解一個(gè)崗位為何不可或缺,并問(wèn)問(wèn)自己這點(diǎn)能否激勵(lì)你,如果能,就接受它。你應(yīng)該弄清楚在這家公司的語(yǔ)境下“好”是怎么定義的,然后來(lái)展示你的知識(shí)、經(jīng)驗(yàn)和態(tài)度確實(shí)符合這個(gè)定義。
提前做功課
“在準(zhǔn)備工作上的失敗,已經(jīng)為失敗做了準(zhǔn)備。”
- Benjamin Franklin
去面試卻對(duì)公司一無(wú)所知,就好像去約會(huì)卻只談?wù)撃阕约海桓艺f(shuō)你就沒(méi)戲了,但是人家對(duì)你印象肯定不會(huì)太好。下點(diǎn)功夫了解公司業(yè)務(wù),公司的宗旨、使命、戰(zhàn)略和成績(jī)。作者表示自己不會(huì)因?yàn)槊嬖囌邔?duì)此一無(wú)所知就把他掛掉,但這點(diǎn)反映出他的動(dòng)機(jī)不足。這也是HR評(píng)估面試者的一個(gè)標(biāo)準(zhǔn)依據(jù)。在業(yè)務(wù)目標(biāo)之外,如果公司有技術(shù)博客那一定要查看,了解他們的技術(shù)棧。面試者并不經(jīng)常表現(xiàn)出對(duì)公司的足夠興趣,但如果他們這么做,就是脫穎而出的絕佳方式。
具有批判性思維
“受過(guò)教育的頭腦的一個(gè)標(biāo)志是,能夠?qū)徱曇粋€(gè)想法而非徑直接受它。”
- Aristotle
在職業(yè)生涯中作者曾遇到過(guò)杰出的技術(shù)專家,這些人個(gè)性都不一樣,但至少有一點(diǎn)是他們共同具備的:他們是那種挑戰(zhàn)現(xiàn)狀,使工藝和技術(shù)得到改進(jìn)的人。很多應(yīng)聘者在被問(wèn)到是否有問(wèn)題時(shí),都說(shuō)沒(méi)有要問(wèn)的。不去提問(wèn)等于是浪費(fèi)機(jī)會(huì),應(yīng)該抓住這個(gè)時(shí)機(jī),問(wèn)一下公司做出的技術(shù)決策和面臨的挑戰(zhàn),討論一下各項(xiàng)技術(shù)的利弊。
例如:
他們是否在考慮轉(zhuǎn)向HTTP/3了?
他們是否正在轉(zhuǎn)向事件驅(qū)動(dòng)的微服務(wù)架構(gòu)?他們?cè)谑褂檬裁礃拥南⒋恚繛槭裁床皇褂?Kafka來(lái)替代RabbitMQ?
他們使用的是什么數(shù)據(jù)庫(kù)技術(shù)?用例是什么?在該用例中,ElasticSearch是否是SQL的良好替代品?
等等。對(duì)技術(shù)決策的問(wèn)詢將表明,你不僅了解這些技術(shù)、可以論證何時(shí)該使用這些技術(shù),而且可以批判性地思考,并且你很在乎改進(jìn)你工作中所用的應(yīng)用程序。
技術(shù)挑戰(zhàn)
再多的實(shí)驗(yàn)也不能證明我就是對(duì)的,但只要一個(gè)實(shí)驗(yàn)就能證明我是錯(cuò)的。
- Albert Einstein
當(dāng)前的技術(shù)面試不近人情,存在著相當(dāng)直接的不公,足以令人震驚。大多數(shù)面試?yán)锒加懈?jì)算機(jī)科學(xué)基礎(chǔ)相關(guān)的算法問(wèn)題,比如圖搜索或排序算法。作者聽(tīng)說(shuō)過(guò)一個(gè)傳聞,一個(gè)應(yīng)聘者被要求以最小的資源來(lái)實(shí)現(xiàn)一個(gè)tree transversal算法,所以當(dāng)他得到這份工作時(shí),首先要做的是調(diào)試一個(gè)十年前的單片機(jī)。經(jīng)歷過(guò)應(yīng)聘者和面試官的雙重角色之后,作者覺(jué)得這種自命不凡的試圖美化我們工作復(fù)雜性的做法令人沮喪。這樣的挑戰(zhàn)很可能會(huì)讓對(duì)這些概念已經(jīng)因長(zhǎng)久不用而生疏的高級(jí)開(kāi)發(fā)人員望而卻步,盡管他們可能在這個(gè)崗位上擁有極豐富的經(jīng)驗(yàn)。
作者同意這類練習(xí)并非完全無(wú)用;快速解決小問(wèn)題的能力與解決跨度數(shù)天的復(fù)雜問(wèn)題的能力是相關(guān)的,但兩者有本質(zhì)區(qū)別。面試過(guò)程應(yīng)該盡可能地反映日常工作的實(shí)際情況。他覺(jué)得有些方式比刁鉆的算法問(wèn)題要合適得多,比如在真實(shí)的應(yīng)用程序上尋找和修補(bǔ)bug,結(jié)對(duì)編程,或者實(shí)現(xiàn)一個(gè)自動(dòng)化測(cè)試。對(duì)于這類場(chǎng)景,面試者一定要對(duì)公司選擇的編程語(yǔ)言能得心應(yīng)手,不要害怕提問(wèn),以理解任務(wù)的全貌。
不過(guò),在大多數(shù)面試?yán)铮愣紩?huì)面對(duì)一些算法或數(shù)據(jù)結(jié)構(gòu)的問(wèn)題,這個(gè)沒(méi)辦法繞過(guò),你得有良好的計(jì)算機(jī)科學(xué)基礎(chǔ)知識(shí)。像《Cracking the coding interview》這本書(shū)、Leetcode或者Pramp等等都是不錯(cuò)的參考資源。
無(wú)論碰到哪種問(wèn)題,一定要把你的思路大聲說(shuō)出來(lái)。通常情況下,問(wèn)題都是層層疊加的,只要你能出色地解決剩下的問(wèn)題,哪怕是中間有一步失敗了也沒(méi)關(guān)系。如果你卡住了,面試官會(huì)幫助你。對(duì)面試官來(lái)說(shuō),關(guān)鍵是看應(yīng)聘者能否在經(jīng)歷一個(gè)不熟悉的題目后恢復(fù)狀態(tài),做好接下來(lái)的題目。另外,有經(jīng)驗(yàn)的面試官可能會(huì)在你解題吃力的時(shí)候,由提問(wèn)題改為教你怎么做,不要把這種改變理解為失敗,這種情境變化有助于大多數(shù)人跳出解題中的困境。
面試官這么做是為了幫助你,并在幫助的同時(shí)評(píng)估你,而不是一上來(lái)就評(píng)判你。把他看成一個(gè)正在指導(dǎo)你解決問(wèn)題的老同事,跟他討論解決問(wèn)題的不同方案和其間權(quán)衡,這將展示你對(duì)問(wèn)題的了解程度。
別灰心
成功就是爬起來(lái)的次數(shù)比跌倒的次數(shù)多了一次。
- Oliver Goldsmith
作者曾經(jīng)見(jiàn)過(guò)一個(gè)應(yīng)聘者,在面試的時(shí)候很是戰(zhàn)戰(zhàn)兢兢,缺乏信心。盡管他缺乏自信,總是懷疑自己,但他問(wèn)題解決得很好,所以還是被錄用了。但是安頓下來(lái)之后,在日常工作中他非常自信,能夠引領(lǐng)討論,在技術(shù)課題上指導(dǎo)團(tuán)隊(duì)。后來(lái)作者問(wèn)他,怎么在面試的時(shí)候心態(tài)這么差?他解釋說(shuō),他有過(guò)一連串災(zāi)難性的面試,當(dāng)時(shí)面對(duì)可能的被拒,心態(tài)不是太好。被拒是面試的一部分,不要讓它掌控你。
用幾個(gè)小時(shí)來(lái)評(píng)估與軟件工程師相關(guān)的全部各項(xiàng)能力,本來(lái)就不可能。所以每個(gè)面試都會(huì)選擇公司關(guān)心的能力,用盡可能好的方式來(lái)評(píng)估。面試官選的可能是你擅長(zhǎng)的,也可能不是。
?
糟糕的雇員對(duì)公司來(lái)說(shuō)是棘手的,尤其是他們所在團(tuán)隊(duì)的士氣會(huì)受影響,同時(shí)人力成本也很高。再加上很多公司沒(méi)有一個(gè)標(biāo)準(zhǔn)化的流程(重要的是比較候選人,所以每個(gè)面試官應(yīng)該給出同樣的題目,同時(shí)應(yīng)該有一個(gè)規(guī)定流程,每個(gè)面試官都走這個(gè)流程),你會(huì)遇到相當(dāng)比例的假否定。也就是說(shuō),面試結(jié)果不好,并不意味著你很差。而是意味著你所表現(xiàn)的能力在那個(gè)特定時(shí)間里、特定流程下不是最好的。
作者稱,如果自己面試失敗了,然后讀到或聽(tīng)到上面的話,肯定也覺(jué)得這都是扯淡。在生活中,他一直試圖成為一名拳手。有一些時(shí)候,他輸?shù)奶啵粋€(gè)總輸?shù)娜郑淦淞烤褪莻€(gè)沙袋。然而,有時(shí)你必須找到內(nèi)在的力量,把自己從躺倒的廢墟中拖出來(lái)。站起來(lái),舉起手來(lái),再打一次,不要讓失敗掌控你。
激情關(guān)乎一切
“工作會(huì)填充你生活中的一大部分,要想讓自己真正滿意,唯一的方式就是去做你認(rèn)為偉大的工作。要做偉大的工作,唯一的方式就是熱愛(ài)你所做的事情。如果你還沒(méi)找到,那就繼續(xù)找,別停下。跟隨自己的本心,在找到的那一刻,你會(huì)知道自己找到了。”
- Steve Jobs
當(dāng)我們?cè)谌粘I?/span>活的困惑和混亂中前進(jìn)時(shí),我們渴求那些清晰的時(shí)刻:在挑戰(zhàn)或任務(wù)當(dāng)中達(dá)到完全的忘我,時(shí)間彎曲,現(xiàn)實(shí)消隱。在這些非凡的超越時(shí)刻,好像整個(gè)一生都會(huì)在不經(jīng)意間流逝。這就是編程對(duì)我們?cè)S多人所具有的意義,那是刻在我們內(nèi)心深處的永恒而堅(jiān)定的激情。同樣的激情,也是成功的秘訣。
作者見(jiàn)過(guò)一些應(yīng)聘者在面試過(guò)程中表現(xiàn)出色,但被錄用之后卻表現(xiàn)平平。他們并不差,他們有天賦,也懂行,但他們的表現(xiàn)只是平平。有時(shí)候,你擅長(zhǎng)的事情并不是你真正喜愛(ài)的,但唯有激情才會(huì)促使你成功。要評(píng)價(jià)一個(gè)軟件工程師是否有激情并不容易。但如果他問(wèn)你做過(guò)什么業(yè)余項(xiàng)目,或者你做過(guò)的最好的項(xiàng)目是什么,你可能會(huì)熱烈地討論若干項(xiàng)目,花上整整一個(gè)下午。不管你的項(xiàng)目是一個(gè)百萬(wàn)用戶級(jí)的平臺(tái),還是一個(gè)勉強(qiáng)運(yùn)行的業(yè)余項(xiàng)目,這都不重要。一個(gè)充滿激情的程序員會(huì)熱情洋溢地描述他用到的每一個(gè)方案,完成的每一次挑戰(zhàn),甚至是每一次搞砸和失敗,帶著喜悅和懷念。然后,任何一個(gè)面試官都會(huì)知道,對(duì)面的人和他一樣,是一個(gè)對(duì)寫(xiě)代碼充滿無(wú)可救藥的激情的程序員,同道中人。
這是一種非常真實(shí)的反應(yīng),你幾乎可以從他們的眼睛和肢體語(yǔ)言中看出來(lái)。要么充滿激情,要么沒(méi)有。如果你屬于前者,一定要談那些打動(dòng)你的項(xiàng)目,這將區(qū)別一場(chǎng)平淡的面試和一場(chǎng)出色的面試。
結(jié)束語(yǔ)
作者一直覺(jué)得,作為應(yīng)聘者的壓力就是知道自己需要得到這份工作,需要證明自己足夠優(yōu)秀。面試官的角色并不是完全沒(méi)有壓力,面試官要確定有充分理由認(rèn)可或者拒絕一個(gè)人。這樣,做的決定才經(jīng)得起審核。對(duì)他來(lái)說(shuō),一直如此,對(duì)得起我的良心。
大多數(shù)面試官都要在某些時(shí)候被別人面試,所以他們是通情達(dá)理的。作者希望從面試官的角度幫到大家,真誠(chéng)地希望這些建議能助你獲得心儀的工作。
?
相關(guān)報(bào)道:
實(shí)習(xí)/全職編輯記者招聘ing
加入我們,親身體驗(yàn)一家專業(yè)科技媒體采寫(xiě)的每個(gè)細(xì)節(jié),在最有前景的行業(yè),和一群遍布全球最優(yōu)秀的人一起成長(zhǎng)。坐標(biāo)北京·清華東門,在大數(shù)據(jù)文摘主頁(yè)對(duì)話頁(yè)回復(fù)“招聘”了解詳情。簡(jiǎn)歷請(qǐng)直接發(fā)送至[email protected]


