用商城維護類項目,講下應屆生如何在面試中介紹項目,如何準備面試

    本人之前寫的面試系列文,一直是針對技術和麪試技巧,所以在本文裏,就將結合具體的商城維護項目,給出介紹項目經驗的做法。

    1 面試前的準備要點

    1 運行通本項目,尤其地,瞭解用JPA訪問數據庫,以及用Eureka等組件管理項目的做法。

    2 背若干配置參數,比如JPA訪問數據庫是如何做配置,面試中要以此證明自己做過。

    3 瞭解項目敏捷開發的模式,因爲你是要把這個項目介紹成商業項目,而不是學習項目。

    4  看如下項目管理方式:用Maven + Git管理代碼,用Maven+jenkins打包部署,用junit作單元測試,以此進一步證明這是商業項目。       

    準備這些技能的目的是,想辦法把這個項目當商業項目來介紹,因爲大多數畢業生只做過學習項目,沒有在公司裏幹過,你只要證明出你有,哪怕是三個月半年,這就是優勢。而在學習項目裏,不會接觸到敏捷開發和項目管理軟件,當你準備好上述第3第4點後,你就能證明你做過商業項目。

    2 進入面試環節,首先是自我介紹

    您好,我叫xx,目前雖然沒有在公司幹過,但大三大四的時候,幫老師做過實習項目,加起來有半年時間(強調你做過商業項目,這很有優勢),在實習過程中,有做過一個社區超市的維護項目(別說商城項目,因爲一聽就是學習項目,但如果是小型維護項目,還比較可信些),這個項目是用敏捷開發方式來管理,在其中用到了Spring Boot框架,用JPA連接數據庫,前端用過VUE+jquery框架,用Maven+Git管理代碼,用jenkins打包,用junit作單元測試,在其中我不僅寫代碼,還參與過線上問題排查工作,還解決過因沒寫hashcode方法而導致的問題。(這裏別詳細說業務細節,因爲面試官不關心,你就說這個項目裏你用過什麼技術,同時更要強調你有分析解決實際問題的能力)

    說明:在自我介紹環境,首先要展示你的項目經驗以及技能,同時證明這個項目是商業項目,所以其他的,比如業務需求等,不用展開。同時,面試前一定要準備,不僅要準備自我介紹的說辭,更要準備你提到的技術,其實這些不難,哪怕是應屆畢業生,網上查下也能說出來。

    3 然後一定是介紹項目,面試官會讓你介紹最近做過的項目

    你在自我介紹階段,已經概要性說出你掌握的技能,以及項目經驗,這裏就要結合項目經歷,達到如下的目的。

    1 進一步證實你的項目是商業項目,而不是學習項目。

    2 結合項目說明關鍵技術,比如JPA和Eureka等用法,否則這些技能只能算學習項目。

    3 展示你有分析問題和解決問題的能力。

    4 同時說明,你在項目裏不僅參與過編碼,更參與過測試、業務分析等工作。

    5 展示自己的責任心,肯加班,肯學習。

    同時切記,你別在這階段犯如下的錯誤,因爲這些錯誤非常普遍。

    1  再次強調,要通過說項目開發模式和用過的項目管理軟件,說明這是商業項目,就在公司裏能掙錢的項目,別說成學習項目,很多候選人項目會默認按學習項目來介紹,這雖然聊勝於無,但無法證明相關技術在實際項目裏用過,相反,你一旦說成了半年商業項目經驗,那麼你就有代差優勢。  

    2 要結合項目說技術,但別大談特談業務需求,比如說訂單管理模塊怎麼做,因爲面試官不關心這個。

    3 過於突出項目規模和用到的新技術,忽略基礎技能。對於應屆生而言,其實能證明有增刪改查的經驗,那就足夠了。證明有分佈式等值錢經驗,也要先講好基礎技能。我見過不少候選人,大談特談項目的規模和複雜度,結果說半天是學習項目而不是商業項目,也見過不少人準備了redis和kafka等分佈式技能,但jpa增刪改查,以及java集合等技術,說得一塌糊塗,這就屬於南轅北轍了。

    如下給出具體的說辭。

    這個項目是超市維護項目,是我在大三暑假階段幫實驗室老師做的,這是個外面公司接的維護項目,我做了3個月,結果拿到了1萬塊錢。(證實是商業項目,非學習項目)

    這個項目採了目前流行的微服務架構方案。我們選擇的是以SpringCloud爲核心的,基於Rest風格的微服務架構。在這個項目裏,我用到了Spring Cloud全家桶做後臺,具體採用了Eureka做服務治理,用Ribbon做負載均衡,用Zuul做網關,用JPA連接MySQL數據庫,用RabbitMQ(消息隊列)來發送短信,做後臺時還用到了Java的集合,異常處理等技術,前端用Vue+Nuxt技術。

    這個項目採用的是敏捷開發模式,我們每天有站會討論進度,每兩週一個開發週期,在其中討論哪些要做,並在此基礎上排任務,週期結束會release,在開發過程中,我不僅寫代碼,還參與過商品模塊的需求討論,也做過單元和集成測試。(說明你幹過的活,並用項目管理方式進一步證實是商業項目)

    在做這個項目的過程中,我在解決技術問題的時候,看過HashMap和ArrayList快速失效的底層源碼,也通過建索引調優過數據庫性能,也通過看日誌解決過線上問題。(拋出亮點,等面試官來問)

    這個項目有時候進度會比較緊,我會主動加班開發,並排查線上問題,遇到一些我沒接觸過的技術,比如Zuul,我會主動查資料,並通過問別人等方式,保證進度保證質量地完成任務。(說明你的責任心,肯加班,肯學習)

    說這個項目前,你該準備的技術要點

    1 你提到過的Eureka,Ribbon,Zuul等技術,事先通過跑通程序理解下。同時要準備如下細節,zuul過濾器,ribbon配置文件,eureka註冊方式,jpa一對一一對多等,如果可以,再到網上搜些spring cloud面試題,或者系統看基本spring boot和spring cloud的書。

    2 就看HashMap的底層源碼,尤其結合hashcode和equal方法看,看快速失效的源碼,這體現在,集合不能一邊迭代一邊修改。應屆生很少有人會通過代碼講技術,你講清楚了就是優勢,而且這些不難。

    3 看下索引,尤其是索引背後的b+樹數據結構,瞭解下索引的用法,以及索引的缺點。

    4 由於項目是部署在linux上,所以你看下linux裏打開文件,以及在文件裏用關鍵字查信息的命令,後面說分析問題和解決問題時要用到。

    5 看下Java核心,尤其是集合,異常處理,多線程等的面試題。

    4 後面是面試官提問

    面試官一般會根據你在項目介紹時拋出的亮點提問,這時你要結合項目需求說明。

    問題1:談下你們項目裏是怎麼用到微服務的?

    我們是把個業務需求以微服務的方式切割成若干個功能要帶你,比如商品微服務,文件上傳微服務等,各微服務模塊間用restful的方式相互調用。在項目裏,是把這些微服務模塊註冊到Eureka上,同時用zuul做網關來管理。

    問題2:說下Spring Cloud裏 實現增刪改查的流程?

    可能未必是這樣問,但面試官一定會考覈候選人基本的增刪改查能力。對此你可以按如下的方面來準備。

    1 在控制器裏,用@RestController註解標識,用@RequestMapping來映射請求。

    2 用@Service註解標識業務層,業務層裏用@Autowired的方式引入Repo類。

    3 Repo類裏,就用JPA提供的基本方法,對於一些複雜的請求,就用@Query加原生SQL的方式來查詢。

    4 用@Entity和@Table註解標識POJO類。

    5 可以的話,講下用@Transactional做事務,同時可以準備事務隔離級別和事務傳播機制這兩個值錢要點。

    6 前端用ThyMeleaf模板,後端會用ModelAndView向前端傳數據。

    以上技術點用一個業務流程穿起來,比如對於下訂單的業務功能,我們首先會在控制器層裏用@RequestMapping映射到該請求,隨後會把該請求提交到業務層和Repo層,最終通過Repo層加入到數據庫裏,對於這個請求,我們會在業務層用@transactional註解來用事務管理。當訂單成功插入後,會通過ModelAndView向前端ThyMeleaf模板發送成功信息,並展示到前臺。

    問題3:你提到了你看過源碼?你詳細說明下。

    你就結合源碼,主要說下hashcode等

    問題4:你項目裏是怎麼用索引的?

    在這個項目的業務流水錶裏,數據規模比較大,有十萬規模,而項目裏經常要根據業務流水號來查詢,所以我們就對這個字段建了索引。建好索引後,我們會非常小心,以免索引用不到,比如如果對該字段進行左值查詢,或者用isnull判斷,就用不到索引了。同時,我看過索引的數據結構是b*樹。如果後面面試官允許,你可以邊畫邊講。

    問題5:你提到你用過junit做過單元測試,你是怎麼做的?

    在寫單元測試前,我會了解業務需求,尤其是邊緣輸入會導致的問題,然後就寫各種case,具體的,會用@Test註解來標識數據,同時我還會用mockit等方式來mock數據。尤其在遇到for,if等條件時,我會確保所有的分支和各邊緣條件和異常情況都測到。

    (這是重點)在測試過程中,我發現過不少問題,哪怕這些問題不是我造成的,我會第一時間分析,遇到需要協調的,我會第一時間和相關人員溝通處理。

    問題6:你是怎麼解決線上問題的?

    在短信微服務模塊,我們是對接阿里雲平臺,用RabbitMQ(消息隊列) 實現異步的短信發送,但有時候會發現,短信發不出去,通過看linux日誌(用vi打開,ps命令搜索),根據異常提示,發現是對同一個手機號發送消息限制一分鐘之後纔可以再發送驗證,然後修改代碼就解決問題了。

    這裏面試官不在乎你發現什麼問題,在乎你如何通過看日誌發現問題,以及發現問題後你要主動解決,而不是推諉。

    5 接下來是面試官自由發問

    這塊就太多了,雖然多,但網上有太多的準備題和答案,我這裏就給些連接,大家自己看吧。

    https://www.cnblogs.com/java1024/p/7685400.html

    https://www.cnblogs.com/marsitman/p/9539369.html

    但請注意,一定得圍繞Java核心,數據庫和框架方面準備,而且在準備時,優先準備項目介紹以及項目裏提到的技術。

    6 總結

    先總結下應屆生準備面試的要點。

    1 多挖掘商業項目經驗。   

    2 運行通你要介紹的項目,並瞭解其中的技術要點。 

    3  準備本文給出的面試說辭。   

    4  隨後再是刷各種面試題和算法題。

    再總結下在面試中介紹項目的要點。

    1 通過本文給出的各種手段,把項目介紹成商業項目。   

    2 介紹項目時注重技術,別偏重業務。   

    3 拋出亮點,等面試官發問   

    4 回答技術問題時,圍繞業務需求,以此證實在項目裏用過。

    要知道,有商業項目經驗的應屆生少之又少,而有商業項目經驗的應屆生往往還不知道如何把項目說成商業項目,所以如果你按本文給出的方法,在面試中向面試官證明你有商業項目,這種優勢可能是決定性的。這還不算,如果你按本文給出的方式準備技術問題,以及亮點說辭,你還能在證實商業項目的基礎上,向面試官展示你紮實的功底。

    這樣你哪怕當下基礎一般,但按本文給出方法準備一段時間後,你就能成功應聘。最後祝大家前程似錦。

   請大家關注我的公衆號:一起進步,一起掙錢,在本公衆號裏,會有更多精彩文章。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章