從面試官角度告訴你們如何準備項目方面的描述

    以前寫了篇博文,你的簡歷能幫你爭取到面試機會嗎,反響不錯,也承蒙管理員擡愛,放在首頁,爲了答謝你們,在這篇博文裏,我來分享些如何準備和敘述項目經驗的技巧。html

    本文的內容是根據java web輕量級開發面試教程改編的。java

 

1 缺少相關項目經驗的補救措施

   在以前的你的簡歷能幫你爭取到面試機會嗎博文裏,已經給出過增長項目匹配度的技巧。其實你們在跳槽換時,遇到的最大問題可能不是技術方面的問題,而是缺少足夠的技能經驗。程序員

   你們必定遇到過以下的狀況,好比投了不少簡歷,但獲得的面試機會寥寥無幾,有些初級的程序員甚至再投簡歷也得不到面試機會。很大程度上,這問題出在「工做年限」和「項目匹配度上」。web

    工做年限方面,你們尚可寫上在校實習經驗,但若是你在簡歷上的項目描述(尤爲是最近一個項目)和目標公司的職位介紹不一致,那麼你獲得面試的機會很難,若是你再是非211,985學校,那麼就更難了。抱歉我這裏不是對這些學校有偏見,事實上很多通常學校裏畢業出來的學生能力也很強,但我這裏只是描述一下業內的狀況。面試

    好比某公司在招聘時,寫明瞭要有2年Spring MVC相關經驗,小李雖然也工做2年了,但作的主要是Java Core方面的,而小趙在作了C#.NET項目兩年後想轉到Java方向,他們在應聘這個崗位時,一樣都會遇到「沒有足夠的實際項目經驗」的困難。算法

    你們在遇到相似狀況時,強烈不建議你們弄虛做假地改寫簡歷,好比把2年Java Core經驗改寫成Spring MVC方面的。雖然這種修改未必能在背景調查時被發現,甚至某人若是能在面試時讓面試官感到他在Spring MVC方面達到了2年工做經驗的水準,這種修改未必能被發現,但在職場上畢竟要以誠信爲主,這種虛假簡歷一旦被發現,後果甚至比缺少經驗還嚴重。數據庫

    遇到這樣的問題,你們能夠作的是,挖掘以前項目和所應聘職位相匹配的技術要點,而不是僞造簡歷。安全

    挖掘點一,好比某項目的一些模塊是用C#作的,而一些和客戶交互的功能用到了Spring MVC,小張主要作的是C#模塊,在簡歷上他也以此描述爲主,但他也作過點Spring MVC,那麼遇到上述狀況,他就能夠在簡歷中寫上Spring MVC的經驗。多線程

    挖掘點二,有些公司規模比較小,因此一我的可能要作多方面事情,好比小王是以「測試」人員的身份進入的項目組,但後來項目進度比較緊,小王也被要求去開發Spring MVC了,這種狀況咱們也見了很多,這樣當小王想往Java方向轉時,也能夠在簡歷上加上這段經歷。架構

    除此以外,咱們還見過這樣的簡歷:候選人正式工做是作C#,但他在業餘時間跟着他們的項目經理用Spring MVC幹私活,這樣他好歹在簡歷上也能寫上Spring MVC等相關方面的經驗。

    但請你們注意,經過上述方式挖掘出來的項目經驗雖然能作到「實事求是」,但畢竟不能算「專職」;雖然也能提高得到面試機會的可能性,但面試時技術面試官必定會所以加大相關經驗(好比Spring MVC)的考覈力度。因此說你們不能簡單地在簡歷上加上相關經驗了事,面試前更得多作準備,好比多看面試題,或者深刻實踐一個Spring MVC的學習項目,這樣最後才能應聘成功。     

 

2 面試前請準備項目描述的說辭 

    當你們獲得面試機會時,其實能大體猜出這個公司技術面試問題的大體範圍:技術面試的問題必定會圍繞「招聘崗位」的要求,這彷佛是廢話,但不多有人會照此準備面試,至少我面試的人裏,我會發現很多人一點準備也沒有。

    具體而言,技術面試的問題會集中在三個方面,第一會確認候選人的項目經歷,第二會針對性地問些技術問題,第三才會問些算法和邏輯方面的問題。而這三方面的問題大可能是經過候選人敘述的項目經驗來展開的。

    不過我發現很多候選人會大量準備一些算法和邏輯方面的問題,對項目方面的問題每每很不重視,這就有些本末倒置了。

    在面試環節,第一個問題通常是「介紹本身」,或「介紹下最近的(或最拿手的)項目」,而後面試官通常會以此爲切入點提問。

    這樣作除了能讓候選人放鬆下來從而能很好地進入到面試狀態,還有以下兩個目的,第一,面試官能以此確認候選人在簡歷上寫的項目經驗是不是真實的,第二,會根據候選人提到的技術點針對性地問問題。也就是說,候選人能夠經過敘述項目,必定程度地引導後面面試官的提問。

    具體而言,你們能夠從以下幾個方面有條理地詳細敘述一個具體的項目。

    第一,介紹項目的背景,好比客戶是誰,是要幹什麼的,分哪些模塊,大體的工期是多少。這部分你們其實已經寫在簡歷裏了,這裏就簡要敘述下,無需詳細,由於面試官不會過多關注這個項目的需求,而是關注你是如何在這個項目用到和本崗位相關的技術的。

    第二,介紹你作的模塊裏用到了哪些技術?以及有哪些亮點,這裏須要說起的技術和亮點最好要和職位要求相一致。並且,面試官有可能會問你提到的技術的細節,也就是說,你寧肯只講你很是熟悉的技術,而別提你不熟悉的技術。具體地,在介紹完項目背景後,你們能夠採用以下的樣式來介紹在這個項目裏用到的技術。

    在這個項目裏,咱們用到了Spring MVC,具體而言,用到了攔截器和AOP組件,在數據庫層面,咱們用到Oracle,其中最多的數據表裏大概有2千萬條數據,因此我在項目裏還作了SQL調優的工做。在代碼裏,咱們還用到了諸如ArrayList和HashMap等的集合對象。這個項目對內存有必定的要求,因此我還作了些內存調優的工做。

    第三,能夠介紹下這個項目的開發方式,以及在項目管理方面用到的軟件,好比能夠這樣說:

    這個項目咱們採用了敏捷開發的方式(點到爲止便可,若是面試官感興趣,會繼續提問),在項目管理方面,咱們用Maven來管理項目,用Git作版本管理,用Junit來作單元測試,用Jira來作bug管理,在代碼上線前,咱們還會用Sonar來掃描代碼,若是發現一些可改進點,好比Junit覆蓋率不高,咱們會及時改正。

    你們會發現,這些話在簡歷中都有,但面試官未必能注意這些細節,因此在面試時,你們仍是有必要口頭說下。並且,這裏你們是在介紹項目,因此說出各個關鍵點便可,不必偏離這個主題去詳細介紹敏捷開發以及各類項目管理軟件的細節。

    咱們這裏是拿Spring MVC的項目舉例,若是你們要介紹其餘類型的項目,也能夠根據以下兩個要點來準備(由於重要,因此這兩個要點咱們已經重複屢次了,因此請你們務必重視)。

    第一,儘量多地提到職位描述裏給出的技能點,而且在此基礎上,適當地介紹些在這個項目裏你能拿得出手的並且別人未必有的亮點。

    第二,在介紹時,點到爲止便可,由於此時是在介紹項目,因此若是過於展開的話會喧賓奪主,從而偏離「介紹項目」這個主題,從而會給面試官留下「敘述條理不清晰」的不良印象。

 

3 回答問題時儘可能結合你的項目實際

    當面試官聽完你們按上述兩點準備好的項目敘述後,或多或少地會受到影響,根據你們提到的技術點深刻地提些問題。好比會問,在大家的項目裏Spring的攔截器是怎麼用的,或者是,大家是怎麼作SQL調優的

    在提出問題後,面試官指望獲得的結果是,首先候選人得知道相關技術點的用法,再進一步,候選人在實際項目裏還用過。因此,你們在回答時,能夠結合項目的實際,並且還能夠順勢展現本身的其它亮點,經過下面的兩個實例,咱們來看下具體的回答方式。

    實例一,面試官提問,Spring的攔截器是怎麼用的。

    在咱們的保證金項目裏,咱們是經過Spring來攔截掉一些非法請求,好比在訂單撮合成交時,發送的請求必定會包含些安全驗證信息,這些請求在被請求前,會通過攔截器。具體而言,咱們是經過繼承HandlerInterceptorAdapter類來實現攔截器,並在其中的preHandle方法裏添加了驗證安全信息的邏輯,同時,咱們還在配置文件引入了攔截器的相關配置。

    在說完Spring攔截器以後,你們還能夠順勢說些其它相關的亮點,好比:除了攔截器以外,咱們還用到了Spring裏的聲明式事務,這樣咱們就能分離數據庫操做業務和事務處理業務,從而能用比較小的代價來更改業務的事務屬性。

    這樣一來,候選人就能清晰地讓面試官感覺到確實在項目裏用到攔截器,並且還有可能有很大機率把接下來的問題引入到聲明式事務方面。

    實例二,面試官提問,你是否重寫過hashcode方法。

    咱們知道,當咱們在HashMap裏放入自定義類型的對象時,須要在這個對象裏重寫equals和hashcode方法,不然在調用HashMap對象的get和 containsKey方法時,可能會獲得意料以外的結果。這部分的內容咱們在描述集合內容時詳細提到過。因此咱們能夠這樣回答。

    在項目裏,咱們用了HashMap對象來存放鍵值對類型的對象,其中「鍵「是用戶對象,值是這位用戶的訂單列表,因此咱們就須要在用戶對象的class裏,重寫hashcode和equals方法,不然會出錯。

    隨後能夠舉個不重寫hashcode方法會致使的問題,以後能夠結合項目的實際進一步展現本身對HashMap對象的理解。好比能夠這樣說,因爲在HashMap裏,放入的數據和它的「存儲位置」是經過hash算法相關聯的,因此它的get方法的效率至關高,好比在咱們的項目裏,咱們在HashMap裏存了將近20萬條鍵值對數據,但它的get效率基本上是一槍命中。

    從上述兩個實例中,你們能夠體會下「如何結合項目實際」,其實也就是說下這個技術點解決實際需求的大體步驟。一樣地,你們在「順勢擴展」相關技能點時,提到便可,不用再結合項目展開具體的用法,若是面試官感興趣天然會接着問。畢竟這是「借其它問題」的擴展,若是展開過分也會致使喧賓奪主,從而給面試官留下「思惟不清晰」的不良印象。    

 

4 面試前必定得準備些亮點,敘述項目時找機會拋出

    在下表裏,咱們概括了些能夠在Java核心(Java Core)方面展現的亮點。事實上,咱們不可能列出全部的亮點,這裏只是給出些案例,你們能夠據此擴展。

技術方面

能夠說的亮點

Java集合對象

1 能根據項目的需求選用合適的集合對象,好比知道ArrayList和LinkedList的差別,並能合理選用。

2 能在合適的場合選用WeakHashMap。

3 能夠適當講一些集合的JDK底層實現代碼。

異常處理方面

能在finally從句裏寫釋放資源的代碼

JDBC方面

1 能經過PreparedStatement的預處理方法來防止SQL注入。

2 能經過批處理來提高操做性能。

3 能經過實例講述事務隔離級別的含義

多線程方面

1 會使用線程池

2 能經過鎖或信號量等手段正確地處理多線程併發時的數據一致性。

    在下表裏,咱們列了些在數據庫方面能夠準備的亮點。

技術方面

能夠說的亮點

建表

建表時須要根據項目的數據狀況,考慮是採用三範式或是反範式。

SQL調優

1 能夠經過查看日誌等方式看哪些SQL須要調優。

2 能夠經過執行計劃查看SQL的所消耗的代價,並據此調優。

3 能夠經過建索引,建分區等手段來優化SQL性能。

事務

1 能夠說下JDBC或Spring裏是如何管理事務的。

2 能夠說下Spring裏的聲明式事務的作法和優勢。

3 能夠舉例說明事務隔離級別和事務傳播機制的用法。

分佈式數據庫

1 能夠經過水平或豎直等方式的方式來拆分數據庫,從而減輕對單表訪問所須要的代價。

2 能夠經過集羣等方式來承擔對數據庫的過量的訪問請求。

NoSQL和Hadoop

這兩個自己就是個亮點,若是你們用過,能夠結合項目來講明。

    在下表裏,咱們概括了web這方面你們能夠準備的亮點。

技術方面

能夠說的亮點

Spring MVC架構

1 能夠說下Spring的IOC和AOP是如何優化項目結構的。

2 能夠說下攔截器等Spring組件對項目的幫助。

ORM,好比Hibernte或Mybatis

使用這種ORM技術時,如何優化訪問和操做數據庫的性能。

Spring和Mybatis等的整合

能夠講下整合框架的細節,並能夠舉例說明整合後的框架能很好地適應需求的變動。

    此外,你們還能夠在Linux使用技能以及項目管理軟件的使用經驗方面展現本身的亮點。這裏請注意,必定找合適的機會「順帶」地說,若是沒機會寧肯別說,更不能仗着有所準備就直接自說自話地說。不然的話,反倒可能會獲得「表達能力不清晰」或「敘述條理混亂」等的不良評價。

 

5 結語(求以後的文章內容)

    一樣,若是這篇文章反響不錯,我會繼續寫文章告訴你們如何在面試前作準備,以便能更好地經過面試。

    若是你們感受個人文章有哪裏能夠改進,請留言告訴我,同時也能夠「反對」我,若是感受對你們的面試有所幫助,也請幫忙推薦一下。

    另外,你們若是還想了解面試方面的其它哪些知識點,也請留言告訴我,我就會準備這方面的文章了。

相關文章
相關標籤/搜索