如何爲Java面試準備項目經驗

1 提出問題

    應屆生朋友或Java程序員在找Java方面的工作時,一定會需要準備Java項目經驗,但事實上不少求職者,是沒有項目經驗,或者只具有開源社區等的學習項目經驗,這樣的話,就很有可能在面試時無法有效地證明自己在Java方面的能力。

    其實對一些有真實java開發經驗的程序員也存在類似問題,比如他們在日常工作中只是做增刪改查的活,而所應聘崗位需要具備分佈式組件等高階技能,那麼怎麼通過項目來證明相關技能的實踐技能呢?本文就將圍繞Java面試,講述準備項目經驗的問題。

2 對項目經驗的常見誤解

第一,混淆商業項目和學習項目。

    面試官關心的,只是商業項目經驗。有些公司在招聘時,還有java方面要3年經驗等條件,此時如果無法證明足量的商業項目經驗,不過面試的可能性很大。

    商業項目是指用來掙錢的項目,比如在軟件公司裏做的,或者跟朋友一起創業做的項目,或者是自己兼職幫人做的項目。與之對應的是學習項目,比如課程設計畢業設計項目,或者自己從github上拿下來跑通一個項目,當然培訓班給的項目也只能算學習項目。

    有些應屆生朋友,或者工作幾年想轉行的朋友,在簡歷上寫了多個學習項目,這樣的簡歷甚至沒面試機會。

第二,需要通過商業項目展示技術和亮點,而不是業務。

    很多求職者在面試中,會大談特談項目的業務邏輯,比如會詳細介紹流程,這些面試官不關心,因爲沒指望求職者入職後做同樣的項目。

    面試股而是希望通過項目,確認求職者是怎麼用spring boot和分佈式等技術,以及其他資深技術。

第三,認爲一定要運行通一個項目,才能當成是自己的項目。

    這種說法存在兩個問題,第一,運行通的項目只能算學習項目,面試時不能算,應當儘量把這種項目挖掘成商業項目。第二面試時一定不會要求當場演示項目,求職者只需通過項目場景證明自己熟練使用相關技術即可。

第四,除了本項目用到的技術外,面試時還能把值錢技術嫁接到當前項目。

    比如某人雖然有3年java開發經驗,由於在小公司,所以只用到了spring boot技術,而下份工作想應聘java高級開發,面試時需要準備分佈式組件等技術。

    此時大多數求職者的做法是,結合項目說spring boot,外帶通過背八股文來證明分佈式組件的能力。但這樣做就割裂了理論和應用,從而無法證明相關組件的項目實踐經驗,這樣的話,面試時分佈式組件這塊是無法達標的。

    正確的做法是,項目需求不變,比如原來做的是倉庫管理系統不變,同時去學redis,dubbo等技術,然後找個項目需求來證明自己用相關技術,甚至還可以以此來證明自己解決過實際問題。

這種準備項目經驗的做法跨級提升時,比如初級升高級,高級升架構時,尤爲重要,很多人其實就因爲這點沒做好而無法升級。

3 利用項目,全面展示能力

    也就是說,在面試時向面試官有效展示項目經驗,這和真實的項目開發是兩個方向,如果混爲一談,那麼只能以當前技能去參加面試,但面試時更可以通過如下的準備要點,展示出高於當前項目開發能力的水平。

    下面就講一下,如何在面試中充分利用項目,全面展示自己的能力。

要點1 儘量挖掘商業項目經驗。

    比如應屆生可以通過挖掘真實項目經驗,在簡歷上把項目寫成是實習項目,或者是幫老師乾的真實項目。

    如果是轉行,之前沒有在軟件公司裏幹過,那麼如果之前有和朋友一起創業做過java項目,或者自己幹過兼職,做過類似外包的java項目,那麼需要直接在簡歷裏體現出這點,從而讓面試官確認你這是商業項目。

    具體好辦,就在簡歷上額外說明下,這個項目是幫哪家公司做的,做了多久,同時別寫電商這種看上去就是學習的項目。項目名可以寫小些,比如是在小公司裏做的維護項目,比如超市管理系統,總之體現出這個項目能掙錢即可。

要點2 優先準備能證明是商業項目的說辭。

    我在面試時發現,不少求職者大談特談nacos,redis等組件在項目裏的用法,但項目一問,項目是從github上找的,或者是培訓班裏做的,那麼這個項目就會被認爲是學習項目,皮之不存毛將焉附,學習項目上附帶的技術,也不能被當成真正在項目裏用到的技術。

    更何況,比如某個職位需要2年java開發經驗,到後來你的項目被當成學習項目,那麼可能“項目開發年限”這個硬指標都達不到,後面就無需再面試了。這塊要準備?

  • 項目是在什麼公司裏做的,因爲公司裏做的一定的商業項目。

  • 項目組有多少人,幾個開發幾個測試?你做個哪些模塊?數據表用到哪些?這些是做了商業項目才能知道的細節。

  • 項目用到敏捷管理模式,用到git和maven等管理工具,這些工具學習項目未必會用。

  • 項目如何打包部署到linux上?除了開發以外,測試是怎麼做的?而測試和部署等要素學習項目是不具備了。

  • 當然,同時要準備項目裏用到的技術,比如redis,mysql,spring boot等。

    這裏切記,尤其是應屆生和中途轉行的求職者,一定要優先準備上述說辭,先在面試中把項目證明成商業項目,後面再講技術講亮點,而不能靠說項目業務來證明這是商業項目,再說一遍,面試官對之前項目的業務不關心,一定是得通過上文提到的各種細節來證明是商業項目。

要點3 再結合項目說技術,優先準備基本面技術。

    其實要證明是商業項目這不難,準備好以後,這些話可能1,2分鐘就能說好,在此基礎上再展示自己在項目裏用到的技術,原因很簡單,只有在項目裏用到的技術才能算有實踐經驗。

    這裏準備技術時,優先要準備基本面,即用spring boot做增刪改查的技能,再具體點講,可以通過項目裏的一個業務,比如商品查詢,說下spring boot+jpa的一個流程。

    這裏說得極端一點,如果某應屆生事實上沒有任何商業項目經驗,但跑通一個spring boot的流程,同時包裝出一個商業項目。此時只要商業項目的細節能說清楚,也能結合一個流程講清楚spring boot開發,甚至都不要跑通某個spring boot項目,這照樣能證明自己的商業項目開發經驗。

    當然這種做法不提倡,但反過來講,某人雖然跑通某個github上找到的spring boot項目,也理解了其中相關技術,但忽視學習項目和商業項目的差別,那麼留個面試官的印象只能是做過學習項目,沒商業項目的經驗,這樣過面試的難度甚至會高於前者包裝簡歷的求職者。

要點4 爲每個值錢技術,找個項目業務的落腳點。

    在準備好商業方面的相關說辭後,需要用其中的需求點和業務點來說明技術的使用情況,這裏的值錢技術包括用索引或緩存進行數據庫調優,JVM方面的OOM問題排查,用dubbo,kafka等組件解決高併發問題,或者是限流熔斷等高併發措施。

    這方面怎麼準備呢?以redis緩存爲例,哪怕你項目裏沒用過Redis,也可以爲redis找個業務落腳點,比如查詢庫存信息太頻繁影響性能,所以用redis緩存。然後第一層說業務,即用redis裏的list等數據結構緩存庫存信息,第二層說用法,你項目裏怎麼配redis,用到哪些api,第三層說解決過的問題,即解決過redis緩存穿透等問題,如果可以,再準備些redis集羣和底層數據結構等說辭。

    類似的,面試前可以準備的java方面的亮點太多,分佈式組件,微服務,雲開發等都可以準備。甚至你都可以找個人家分析排查解決的問題,比如是OOM問題的經歷,然後掛靠在你的業務項目上,把人家的業務遷移到你項目中,這樣也能展示你的能力。

    當然這裏要注意,當你說好相關技術,比如redis後,面試官一定會問Redis本身的問題,比如底層數據結構等,這方面你就可以通過背redis等方面的八股文來準備這方面的細節問題。

要點5 如果可以,準備些項目部署或運維方面的說辭。

    這塊包括,如何用maven打spring boot包,然後部署到linux再啓動的流程,也包括如何在linux上搭建mysql和redis集羣,以及搭建nginx ,redis或dubbo等分佈式組件或集羣的經驗。

    這塊是加分項,但這部分的部署和運維方面的技能,甚至去面試架構師都能用到,更何況僅僅去面試java高級開發或初級開發。

而且,應屆生或轉行做java的程序員,就用“用Maven打包spring boot項目”和“到linux上部署運行spring boot項目”的說辭,能很好地證明自己的項目是商業項目,因爲學習項目不會做這些。

4 會者不難

    上述準備java項目的動作難嗎?不難。

    1 沒有要求運行通java項目,僅僅要求掌握spring boot開發流程,或相關技術的使用技巧。

    2 準備商業項目的細節,這方面想周全就行,未必要費很多時間,可能頂多用2,3天參詳就行了。

    3 歸納總結值錢技術,併爲相關值錢技術準備個業務落腳點,這塊可能就是針對的點多些,但每個技術或解決過的問題準備起來,可以參考現有資料或人家的解決方法。

    4 準備好了,頂多再通過若干場面試檢驗說辭即可,當然儘量去參加小公司的面試去檢驗說辭。

5 盤點準備好項目說辭的收益

    如果按本文說給出的方法準備,能得到哪些收益呢?

    1 能證明是商業項目,從而至少能得到面試機會,相反如果簡歷上只列出學習項目或乾脆不列項目,估計連面試的機會都沒。

    2 其實面試中大多數求職者只是結合項目說技術,但你不僅能結合項目說技術,而且還能全面展示亮點和解決過的問題,雖然你真正的項目開發經驗可能未必比人家強,但你在面試中的表現一定優於人家。

    3 能結合項目證明分佈式組件或微服務組件等值錢技術的項目開發經驗,從而能有效地實現職級跨越,比如能高效從初級開發升級到高級開發,高效從高級開發升級到架構。

    但說到底,上述準備要點由於是直接面向面試,所以拋棄了很多無效動作,比如去調通項目,去準備項目業務方面的說辭,所以操作起來反而比較高效,可能整個準備流程頂多需要2個月,甚至更短,也就是說,本文多少能幫助到各位想找工作的Java程序員朋友。

    最後祝廣大程序員朋友都能找到心儀的工作,同時在技能和薪資方面實現雙豐收,也請大家多多點讚我的文章。

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