用商城維護類項目,講下應屆生如何在面試中介紹項目,如何準備面試
本人之前寫的面試系列文,一直是針對技術和面試技巧,所以在本文里,就將結合具體的商城維護項目,給出介紹項目經驗的做法。
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 接下來是面試官自由發問
這塊就太多了,雖然多,但網上有太多的準備題和答案,我這裡就給些連接,大家自己看吧。
//www.cnblogs.com/java1024/p/7685400.html
//www.cnblogs.com/marsitman/p/9539369.html
但請注意,一定得圍繞Java核心,資料庫和框架方面準備,而且在準備時,優先準備項目介紹以及項目里提到的技術。
6 總結
先總結下應屆生準備面試的要點。
1 多挖掘商業項目經驗。
2 運行通你要介紹的項目,並了解其中的技術要點。
3 準備本文給出的面試說辭。
4 隨後再是刷各種面試題和演算法題。
再總結下在面試中介紹項目的要點。
1 通過本文給出的各種手段,把項目介紹成商業項目。
2 介紹項目時注重技術,別偏重業務。
3 拋出亮點,等面試官發問
4 回答技術問題時,圍繞業務需求,以此證實在項目里用過。
要知道,有商業項目經驗的應屆生少之又少,而有商業項目經驗的應屆生往往還不知道如何把項目說成商業項目,所以如果你按本文給出的方法,在面試中向面試官證明你有商業項目,這種優勢可能是決定性的。這還不算,如果你按本文給出的方式準備技術問題,以及亮點說辭,你還能在證實商業項目的基礎上,向面試官展示你紮實的功底。
這樣你哪怕當下基礎一般,但按本文給出方法準備一段時間後,你就能成功應聘。最後祝大家前程似錦。
請大家關注我的公眾號:一起進步,一起掙錢,在本公眾號里,會有更多精彩文章。