面試時如何介紹自己的專案經驗
轉載自 面試時如何介紹自己的專案經驗
在面試時,經過寒暄後,一般面試官會讓介紹專案經驗 。常見的問法是,說下你最近的(或最拿得出手的)一個專案。
根據我們的面試經驗,發現有不少候選人對此沒準備,說起來磕磕巴巴,甚至有人說出專案經驗從時間段或技術等方面和簡歷上的不匹配,這樣就會造成如下的後果。
1 第一印象就不好了,至少會感覺該候選人表述能力不強。
2 一般來說,面試官會根據候選人介紹的專案背景來提問題,假設面試時會問10個問題,那麼至少有5個問題會根據候選人所介紹的專案背景來問,候選人如果沒說好,那麼就沒法很好地引導後繼問題了,就相當於把提問權完全交給面試官了。
面試時7份靠能力,3份靠技能,而剛開始時的介紹專案又是技能中的重中之重,所以本文將從“介紹”和“引導”兩大層面告訴大家如何準備面試時的專案介紹。
好了,如下是正文內容。
面試官是人,不是神,拿到你的簡歷的時候,是沒法核實你的專案細節的(一般公司會到錄用後,用背景調查的方式來核實)。更何況,你做的專案是以月為單位算的,而面試官最多用30分鐘來從你的簡歷上了解你的專案經驗,所以你對專案的熟悉程度要遠遠超過面試官,所以你一點也不用緊張。
如果你的工作經驗比面試官還豐富的話,甚至還可以控制整個面試流程(筆者在面試方面成精後也經常幹這種事情,大家一定也能行)。
你 |
面試官 |
|
對你以前的專案和技能 |
很瞭解 |
只能聽你說,只能根據你說的內容做出判斷 |
在面試過程中的職責 |
在很短的時間內防守成功即可 |
如果找不出漏洞,就只能算你以前做過 |
準備時間 |
面試前你有充足的時間準備 |
一般在面試前用30分鐘閱讀你的簡歷 |
溝通過程 |
你可以出錯,但別出關鍵性的錯誤 |
不會太為難你,除非你太差 |
技巧 | 你有足夠的技巧,也可以從網上找到足夠多的面試題 |
其實就問些通用的有規律的問題 |
既然面試官無法瞭解你的底細,那麼他們怎麼來驗證你的專案經驗和技術?下面總結了一些常用的提問方式。
提問方式 |
目的 |
讓你描述工作經驗和專案(極有可能是最近的),看看你說的是否和簡歷上一致 |
看你是否真的做過這些專案 |
看你簡歷上專案裡用到的技術,比如框架、資料庫,然後針對這些技術提些基本問題 |
還是驗證你是否做過專案,同時看你是否瞭解這些技術,為進一步提問做準備 |
針對某個專案,不斷深入地問一些技術上的問題,或者從不同側面問一些技術實現,看你前後回答裡面是否有矛盾 |
深入核實你的專案細節 |
針對某技術,問些專案裡一定會遇到的問題,比如候選人說做過資料庫,那麼就會問索引方面的問題 |
通過這類問題,核實候選人是否真的有過專案經驗(或者還僅僅是學習經驗) |
一般來說,在面試前,大家應當準備專案描述的說辭,自信些,因為這部分你說了算,流利些,因為你經過充分準備後,可以知道你要說些什麼。而且這些是你實際的專案經驗(不是學習經驗,也不是培訓經驗),那麼一旦讓面試官感覺你都說不上來,那麼可信度就很低了。
不少人是拘泥於“專案裡做了什麼業務,以及程式碼實現的細節”,這就相當於把後繼提問權直接交給面試官。下表列出了一些不好的回答方式。
回答方式 |
後果 |
我在XX軟體公司做了XX入口網站專案,這個專案做到了XX功能,具體是XX和XX模組,各模組做了XX功能,客戶是XX,最後這個專案掙了XX錢 |
直接打斷,因為業務需求我不需要了解,我會直接問他專案裡的技術 |
(需要招聘一個Java後端開發,會Spring MVC) 最近一個專案我是用C#(或其他非Java技術)實現的,實現了……或者我最近做的不是開發,而是測試……或者我最近的專案沒有用到Spring MVC |
提問,你最近用到SSH技術的專案是什麼時候,然後在評語上寫:最近XX時間沒接觸過SSH |
在畢業設計的時候(或者在讀書的時候,在學習的時候,在XX培訓學校,在XX實訓課程中),…… |
直接打斷,提問你這個是否是商業專案,如果不是,你有沒有其他的商業經驗。如果沒商業專案經驗,除非是校招,否則就直接結束面試 |
描述專案時,一些關鍵要素(比如公司、時間、所用技術等)和簡歷上的不匹配 |
我們會深究這個不一致的情況,如果是簡歷造假,那麼可能直接中斷面試,如果真的是筆誤,那麼就需要提供合理的解釋 |
在避免上述不好的回答的同時,大家可以按下表所給出的要素準備專案介紹。如果可以,也請大家準備一下用英語描述。其實剛畢業的學生,或者工作經驗較少的人,英語能力都差不多,但你說了,這就是質的進步。
要素 |
樣式 |
控制在1分鐘裡面,講出專案基本情況,比如專案名稱,背景,給哪個客戶做,完成了基本的事情,做了多久,專案規模多大,用到哪些技術,資料庫用什麼,然後酌情簡單說一下模組。重點突出背景,技術,資料庫和其他和技術有關的資訊。 |
我在XX公司做了XX外匯保證金交易平臺,客戶是XX銀行,主要完成了掛盤,實盤成交,保證金槓桿成交等功能,資料庫是Oracle,前臺用到JS等技術,後臺用到Java的SSH,幾個人做了X個月。不需要詳細描述各功能模組,不需要說太多和業務有關但和技術無關的。如果面試官感興趣,等他問。 |
要主動說出你做了哪些事情,這部分的描述一定需要和你的技術背景一致。 |
我做了外匯實盤交易系統,掛單成交系統,XXX模組,做了X個月 |
描述你在專案裡的角色 |
我主要是做了開發,但在開發前,我在專案經理的帶領下參與了業務調研,資料庫設計等工作,後期我參與了測試和部署工作。 |
可以描述用到的技術細節,特別是你用到的技術細節,這部分尤其要注意,你說出口的,一定要知道,因為面試官後面就根據這個問的。 你如果做了5個模組,寧可只說你能熟練說上口的2個。 |
用到了Java裡面的集合,JDBC,…等技術,用到了Spring MVC等框架,用技術連線資料庫。 |
這部分你風險自己承擔,如果可以,不露聲色說出一些熱門的要素,比如Linux,大資料,大訪問壓力等。但一旦你說了,面試官就會直接問細節。 |
這個系統裡,部署在Linux上,每天要處理的資料量是XX,要求是在4小時,1G記憶體是的情況下處理完5千萬條資料。平均訪客是每分鐘XXX。 |
面試前,你一定要準備,一定要有自信,但也要避免如下的一些情況。
要避免的情況 |
正確的做法 |
原因 |
回答很簡單。問什麼答什麼,往往就用一句話回答 |
把你知道的都說出來,重點突出你知道的思想,框架 |
問:你SSH用過嗎? 答:用過。 問:在什麼專案裡用到? 答:一個保險專案 問:你做了哪方面的事情? 答:開發 我直接不問了 |
說得太流利 |
適當停頓,邊思考邊說 |
讓面試官感覺你在背準備的東西,這樣後面問題就很難 |
專案介紹時什麼都說, |
就說些剛才讓準備的一些,而且要有邏輯地說 |
會讓面試官感覺你思路太亂 |
別太多介紹技術細節,就說你熟悉的技術 |
技術面點到為止,等面試官來問 |
你說到的所有技術要點,都可能會被深問。面試官一般會有自己的面試節奏,如果你在介紹時就太多說技術細節,很有可能被打斷,從而沒法說出你準備好的亮點。 |
在專案介紹的時候(當然包括後繼的面試),面試官其實很想要聽一些關鍵點,只要你說出來,而且回答相關問題比較好,這絕對是加分項。我在面試別人的時候,一旦這些關鍵點得到確認,我是絕對會在評語上加上一筆的。
下面列些面試官愛聽的關鍵點和對應的說辭。
關鍵點 |
說辭 |
能考慮到程式碼的擴充套件性,有參與框架設計的意識 |
我的專案XX保險專案,用到SSH技術,資料庫是Oracle,(這個是鋪墊),開發的時候,我會先和專案經理一起設計框架,並參與了框架的構建,連線資料庫的時候,我們用到了DAO,這樣做的理由是,把SQL語句封裝到DAO層,一旦要擴充套件功能模組,就可以不用做太多的改動。 |
有調優意識,能通過監控發現問題點,然後解決 |
在開發階段,我就注意到記憶體的效能問題和SQL執行的時間問題,在壓力測試階段,我會通過xx工具來監控記憶體和資料庫,發現待提升的程式碼點,然後通過查資料來優化。最後等專案上線後,我們會部署監控系統,一旦發現記憶體和資料庫問題,我們會第一時間解決。 |
動手能力很強,肯幹活,會的東西比較多,團隊合作精神比較好 |
在專案裡,我不僅要做開發的工作,而且需要自己測試,需要自己根據一些日誌的輸出到資料庫或Java端去debug,當我開好一個模組時,需要自己部署到Linux上測試。 或者,一旦遇到問題,如果是業務方面的,我會及時和專案經理溝通,如果是技術方面的,我會自己查資料,如果是測試方面的,我會及時和測試的人溝通。 |
責任心比較強,能適應大壓力的環境 |
被問“你如果在專案裡遇到問題怎麼辦?” 回答:遇到問題我先查資料,如果實在沒法解決,不會拖,會及時問相關的人,即使加班,也會在規定的時間內解決。 |
有主見,能不斷探索新的知識 |
在專案裡,我會在保證進度的前提下和專案經理說我的想法,提出我的解決方案。在開發過程中,我會先思考一下,用一種比較好的方式,比如效率最高的方法實現。 另外你要找機會說出:平時我會不斷看一些新技術(比如大資料Hadoop),會不斷深入瞭解一些框架和技術的實現底層。 |
我去面試人家的時候,往往會特別提問:你專案裡有什麼亮點?或者你作為應聘者,有什麼其他加分項能幫你成功應聘到這個崗位。即使這樣問,還有些人直接說沒有。
我這樣問已經是處於角色錯位了,作為面試者,應當主動說出,而不是等著問,但請注意,說的時候要有技巧,找機會說,通常是找一些開放性的問題說。之前發過的《如何在一分鐘內搞定面試官?》你可以參考一下。
比如:在這個專案裡用到了什麼技術?你除了說一些基本的技術,比如Spring MVC,Hibernate,還有資料庫方面的常規技術時,還得說,用到了Java記憶體管理,這樣能減少對虛擬機器記憶體的壓力,或者說用到了大資料處理技術等。也就是說,得找一切機會說出你拿得出手的而且當前也非常熱門的技術。之前發過的《史上最全 69 道 Spring 面試題和答案》你必須都得清楚。
或者找個相關的問題做擴充套件性說明,比如被問到:你有沒有用到過一對多和多對多?你除了說基本知識點以外,還可以說,一般我還會根據需求適當地設定cascade和inverse關鍵字,隨後通過一個實際的案例來說明合理設計對你專案的幫助,這樣就能延伸性地說明你的技能了。相反如果你不說,面試話一定會認為你只會簡單的一對一和一對多操作。
面試的時候,如果候選人回答問題很簡單,有一說一,不會擴充套件,或者用非常吝嗇的語句來回答我的問題,那麼我一般會給機會讓他們深入講述(但我不敢保證不是每個面試官都會深入提問),如果回答再簡潔,那麼也會很吝嗇地給出好的評語。
記住:面試官不是你的親戚,面試官很忙,能挖掘出你的亮點的面試官很少,而說出你的亮點是你的義務。
我在面試別人過程中,根據不同的情況一般會給出如下的評語。
1 回答很簡答,但回答裡能證明出他對框架等技術確實是做過,我會在評語裡些“對框架了解一般,不知道一些深層次的知識(我都問了多次了你都回答很簡答,那麼對不起了,我只能這麼寫,或許你確實技術很強,那也沒辦法,誰讓你不肯說呢?)”,同時會加一句“表達能力很一般,溝通能力不強”,這樣即使他通過技術面試,後面的面試他也會很吃力。
2 回答很簡單,通過回答我沒法驗證他是在專案裡做過這個技術,還是僅僅在平時學習中學過這個技術。我就會寫“在簡歷中說用過XX技術,但對某些細節說不上來,沒法看出在專案裡用到這個技術”,如果這個技術是職務必需點,那麼他通過面試的可能性就非常小。
3 回答很簡單,而且只通過嗯啊之類的虛詞回答,經過提醒還這樣,我會敷衍幾句結束面試,直接寫“技術很薄弱,沒法通過面試”。
4 雖然通過回答能很好地展示自己的技能,但邏輯調理不清晰,那麼我會讓他通過技術面試,但會寫上“技能很好,但表達能力一般(或有待提高),請後繼面試經理斟酌”。這樣通過後繼綜合面試的機會就一般了,畢竟綜合面試會著重考察表達能力交往能力等非技術因素。之前發過的《史上最全 Java 多執行緒面試題及答案》你可以參考一下。
不管怎樣,一旦回答簡單,不主動說出你的擅長點,或沒有條理很清楚地說出你的亮點,就算我讓你通過面試,也不會寫上“框架細節瞭解比較深,資料庫應用比較熟練”等之類的好評語,你即使通過技術和後面的綜合面試,工資也是比較低的。
面試過程中有些方面你是絕對不能出錯,所以你在準備過程中需要尤其注意如下的因素。下面列了些會導致你直接出局的錯誤回答。
錯誤型別 |
導致的後果 |
前後矛盾,後面的回答無法證明你的專案描述,比如一開始說用到了Spring MVC,後面沒法說出最基本的實現,比如不知道Spring有哪些類,或者沒法說出專案的細節。 |
我會懷疑這個專案的真實性,我就會進一步問:資料庫用什麼,資料量多少?多少人做了多少時間,一旦再出現明顯漏洞,比如一個小專案用到非常多的時間,那麼就不僅僅是技術問題,而是在面試過程中企圖“矇混過關”的性質了。 |
專案裡一定會用到的基本概念性問題都回答不上,Spring的依賴注入概念是什麼,怎麼用的,或者Hibernate的一對多怎麼實現 |
一旦被我發現概念不知道,我就會通過更多問題確認,如果被我確認很弱,這就相當嚴重,因為技術能力差和技術沒用過是兩個截然不同的狀況,技術沒用過會導致直接出局。 |
面試時說出的工作經驗和簡歷上的不一致 |
我會直接懷疑簡歷是編的,我會讓候選人解釋,即使是說簡歷寫錯了,我也會問比較深入的問題來核實他的技能和能力。 |
簡歷上的技能描述和回答出來的明顯不一致,比如明明是隻會簡單的Linux,但吹得天花亂墜 |
我會通過一些比較深的問題核實其他技能,找出其他方面吹噓的水分。 所以建議,你可以適當誇張,但別過分,比如你在專案裡沒搭建框架但平時學習時搭建過,你可以寫“XX專案的框架是你搭建的”,但你不能說你是一個架構師,非常瞭解專案的底層。 |
讓面試官感覺你不穩定,很浮躁,比如說話不莊重,或者面試時打扮非常不正規,就穿背心來。 |
即使你技術再好,這個會可能導致你直接出局。 我對油嘴滑舌的候選人一般會直接寫上不好的評語,這樣很難過後面專案經理的面試。 我還遇到一個人,簡歷上工作是半年一換,我問他為什麼經常換,他直接說是待遇問題,這個人我是直接Fail掉。 |
明說不能加班,不能出差 |
其實雖然有這一問,但公司裡未必真的會加班會出差。但 聽到這類回答,說明這個人不能承受大壓力的工作,或者責任心不強,大多數公司是不會要這種人的。 |
在做專案介紹的時候,你可以穿插說出一些你的亮點,但請記得,不論在介紹專案還是在回答問題,你當前的職責不是說明亮點而是介紹專案,一旦你詳細說,可能會讓面試官感覺你跑題了。
所以這時你可以一筆帶過,比如你可以說,“我們的專案對資料要求比較大,忙的時候平均每小時要處理幾十萬條資料”,這樣就可以把面試官引入“大資料”的方向。
你在面試前可以根據職位的需求,準備好這種“一筆帶過”的話。比如這個職位的需求點是Spring MVC框架,大資料高併發,要有資料庫調優經驗,那麼介紹以往專案時,你就最好突出這些方面你的實際技能。
再給大家舉個例子,比如Java虛擬機器記憶體管理和資料庫優化是絕大多數專案都要遇到的兩大問題,大家都可以在敘述專案經驗時說,在這個專案裡,我們需要考慮記憶體因素,因為我們的程式碼只允許在2G記憶體環境中執行,而且對資料庫效能要求比較高,所以我們經常要監控優化記憶體和資料庫裡的SQL語句。這樣當面試官深入提問時,就能丟擲自己準備好的虛擬機器記憶體優化和資料庫優化方面的說辭。之前發過的《史上最全 40 道 Dubbo 面試題及答案,看完碾壓面試官!》你可以參考一下。
實在不行,你也可以說“我除了做開發,也做了瞭解需求,測試和部署的工作,因為這個專案人手比較少,壓力比較大”,這樣你也能展示你有過獨擋一面的經歷。
我在面試過程中,一旦聽到有亮點,就會等到他說好當前問題後,順口去問,一般技術面試最多辦半小時,你把時間用在回答準備好的問題點上的時候,被問其他問題的時間就會少了。
我面試的時候,也會遇到些有準備的人,其實如果你真的想應聘的話,一定要事先準備,這點我能理解,甚至贊同,你只要別露出太明顯的痕跡,我不會寫上“似乎有準備,沒法考察真實技能”這種話,更何況未必每個面試官都能感覺出你準備過。 但你不能憑著有準備而太強勢,畢竟面試是面試官主導的。
我遇到個別面試的人,他們說話太多,一般會主動擴充套件,比如我問他資料庫用什麼,他不僅回答資料庫是什麼,自己做了什麼,甚至順便會把大資料處理技術都說出來。
其實過猶不及,我就會重點考察你說的每個細節,因為我懷疑你說的都是你從網上看的,而不是你專案中用到的,我甚至會直接威脅:“你先和我說實話這個技術你真在專案裡用到,我後面會重點考察,一旦被認為你專案裡沒做,這個性質就是矇混過關了”,往往這些人會主動坦白。
不過話說回來,他如果僅僅說,資料量比較大,但點到為止,不繼續說後面的話,我就會深入去問,他自然有機會表達。同時請注意,一般在面試過程中,一旦你亮出加分點,但面試官沒接嘴,這個加分點可能就不是專案必備的,也不是他所關注的,當前你就可以別再說了,或者等到你提問題的時候再說。
到這裡,我們已經給出了介紹專案的一些技巧。這些技巧都是從 java web輕量級開發面試教程從摘錄的。
兩句話,第一,面試前一定要準備,第二,本文給出是的方法,不是教條,大家可以按本文給出的方向結合自己的專案背景做準備,而不是死記硬背本文給出的一些說辭。
當大家介紹好專案背景後,面試才剛剛開始,哪怕你說得再好,哪怕你把問題引導到你準備的範圍裡,這也得應付Java Web(比如Spring MVC,ORM等)、Java Core(多執行緒、集合、JDBC等)和資料庫等方面的問題。
那麼本文的價值體現在哪呢?如果引導不好,你根本沒機會展示自己的能力。這就是本文給出的方法價值所在。說句自誇的話,本文給出的一些方法和說辭不是拍腦袋想出來的,而是從面試上百個候選人的經歷中抽取出來的,其中有不少血淚,也有不少人成功的途徑,關注微信公眾號Java技術棧,將呈現更多幹貨,這篇文章多少對大家(尤其是經驗不滿3年的初級程式設計師)有幫助。