一個標準的面試流程中,肯定會在一面二面中問到你具體做過的項目,然后追問項目的細節。這類問題往往會通過下面形式來提問:
1. 發現你簡歷的一個項目,直接讓你介紹下這個項目
2. 讓你回憶下你做過的項目中,最值得分享(最大型/最困難/最能體現技術能力/最難忘)的
3. 如果讓你設計 xx 系統/項目,你會怎么著手干
這類跟項目相關的綜合性問題,既能體現候選人的技術水平、業務水平和架構能力,也能夠辨別候選人是不是真的做過項目,還能夠發現候選人的一些軟技能。
下面分享下,遇見這類問題應該怎樣回答。
## 怎樣介紹自己做過的一個項目
按照第 1 小節說的,簡歷當中的項目,你要精挑細選,既要體現技術難度,又要想好細節。具體要介紹一個項目(包括梳理一個項目),可以按照下面幾個階段來做。
### 1\. 介紹項目背景
這個項目為什么做,當初大的環境背景是什么?還是為了解決一個什么問題而設立的項目?背景是很重要的,如果不了解背景,一上來就聽一個結論性的項目,面試官可能對于項目的技術選型、技術難度會有理解偏差,甚至懷疑是否真的有過這樣的項目。
> 比如一上來就說:我們的項目采用了「backbone」來做框架,然后。。。而「backbone」已經是三四年前比較新鮮的技術,現在會有更好的選擇方案,如果不介紹項目的時間背景,面試官肯定一臉懵逼。
### 2\. 承擔角色
項目涉及的人員角色有哪些,自己在其中扮演的角色是什么?
這里候選往往人會自己給自己挖坑,比如把自己在項目中起到的作用夸大等。一般來說,面試官細節追問的時候,如果候選人能夠把細節或者技術方案等講明白、講清楚,不管他是真的做過還是跟別人做過,或者自己認真思考過,都能體現候選人的技術水平和技術視野。前提還是在你能夠兜得住的可控范圍之內做適當的「美化」。
### 3\. 最終的結果和收益
項目介紹過程中,應該介紹項目最終的結果和收益,比如項目最后經過多久的開發上線了,上線后的數據是怎樣的,是否達到預期,還是帶來了新的問題,遇見了問題自己后續又是怎樣補救的。
### 4\. 有始有終:項目總結和反思
有總結和反思,才會有進步。 項目做完了往往會有一些心得和體會,這時候應該跟面試官說出來。在梳理項目的總結和反思時,可以按照下面的列表來梳理:
* 收獲有哪些?
* 是否有做得不足的地方,怎么改進?
* 是否具有可遷移性?
比如,之前詳細介紹了某個項目,這個項目當時看來沒有什么問題,但是現在有更好的解決方案了,候選人就應該在這里提出來:現在看來,這個項目還有 xx 的問題,我可以通過 xx 的方式來解決。
再比如:做這個項目的時候,你做得比較出彩的地方,可以遷移到其他項目中直接使用,小到代碼片段,大到解決方案,總會有你值得總結和梳理的地方。
介紹完項目總結這部分,也可以引導面試官往自己擅長的領域思考。比如上面提到項目中的問題,可以往你擅長的方面引導,即使面試官沒有問到,你也介紹到了。
按照上面的四段體介紹項目,會讓面試官感覺候選人有清晰的思路,對整個項目也有理解和想法,還能夠總結反思項目的收益和問題,可謂「一箭三雕」。
## 沒有做過大型項目怎么辦
對于剛剛找工作的應屆生,或者面試官讓你進行一個大型項目的設計,候選人可能沒有類似的經驗。這時候不要用「我不會、沒做過」一句話就帶過。
如果是實在沒有項目可以說,那么可以提自己日常做的練手項目,或者看到一個解決方案的文章/書,提到的某個項目,抒發下自己的想法。
如果是對于面試官提出來需要你設計的項目/系統,可以按照下面幾步思考:
1. 有沒有遇見過類似的項目
2. 有沒有讀過類似解決方案的文章
3. 項目能不能拆解,拆解過程中能不能發現自己做過的項目可以用
4. 項目解決的問題是什么,這類問題有沒有更好的解決方案
總之,切記不要一句「不知道、沒做過」就放棄,每一次提問都是自己表現的機會。
## 項目細節和技術點的追問
介紹項目的過程中,面試官可能會追問技術細節,所以我們在準備面試的時候,應該盡量把技術細節梳理清楚,技術細節包括:
1. 技術選型方案:當時做技術選型所面臨的狀況
2. 技術解決方案:最終確定某種技術方案的原因,比如:選擇用 Vue 而沒有用 React 是為什么?
3. 項目數據和收益
4. 項目中最難的地方
5. 遇見的坑:如使用某種框架遇見哪些坑
一般來說,做技術選型的時候需要考慮下面幾個因素:
1. 時代:現在比較火的技術是什么,為什么火起來,解決了什么問題,能否用到我的項目中?
2. 團隊:個人或者團隊對某種技術的熟悉程度是怎樣的,學習成本又是怎樣的?
3. 業務需求:需求是怎樣的,能否套用現在的成熟解決方案/庫來快速解決?
4. 維護成本:一個解決方案的是否再能夠 cover 住的范圍之內?
在項目中遇見的數據和收益應該做好跟蹤,保證數據的真實性和可信性。另外,遇見的坑可能是面試官問得比較多的,尤其現在比較火的一些技術(Vue、React、webpack),一般團隊都在使用,所以一定要提前準備下。
## 小結
本小節介紹了面試中關于項目類問題的回答方法,介紹項目要使用四段體的方式,從背景、承擔角色、收益效果和總結反思四個部分來介紹項目。
準備這個面試環節的時候,利用筆者一直提倡的「思維導圖」法,好好回顧和梳理自己的項目。