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