當下不少Java初學者也知道求職時項目的重要程度,但在簡歷上寫項目和準備面試項目時,真有可能走彎路,這樣的話,加重學習負擔還是小事,還真有可能導致無法入職。
1 對于在校生和應屆生來說,你去跑通個學習項目,甚至包裝個項目,其實問題不大,因為對于在校生來說,商業項目經驗不是必要條件,不過你求職時,證明自己在公司里實習過,或者能證明幫老師干過能掙錢的項目,這能提升求職的成功率。
2 但對于要以社招身份求職的人來說,商業項目是必選項。比如有人畢業后考研,或者畢業離開學校以后想通過培訓班或自學入行,對這些想找Java工作的人來說,第一要在簡歷上證明自己做過商業項目,否則很難拿面試機會,第二要在面試中證明商業項目的真實性,否則都沒資格背面試題。
不過當下,不少Java初學者準備面試項目的方式,可以說是錯誤的。
1 有人打算把跑通的學習項目寫在簡歷上,甚至打算在面試中以此來展示能力,還有人甚至恨不得在面試現場當場去演示學習項目,但這頂多只能證明自己用過項目綜合學習過技術。
再進一步,不少人還煞有介事地收集項目,比如不跑通電商、金融、物流或支付等項目,都不敢去找工作,或者有些人在投簡歷和面試碰壁以后,歸因于項目里包含的技術太簡單,于是再去準備含微服務以及各種分布式組件的項目,但實際上,對方公司,其實更關心求職者是否做過商業項目。
2 有人自己感覺沒做過商業項目,也知道學習項目和商業項目的差別,但補救措施是“借項目”,比如管認識的人去要項目說明書,對這些人來說,最好能到朋友的公司里,現場跑一遍人家的商業項目,在熟悉業務細節后,以此來作為自己的商業項目。
但事實上,在不演示項目的前提下,面試時用嘴是很難說項目的業務流程,而面試中一般不會有項目演示的環節,再進一步說,一些真正的商業項目,是無法在自己電腦上運行起來的,比如有項目是用Oracle,而且是分布式部署,用到docker+k8s。或者哪怕是一些技術相對簡單的項目,也會包含一些組件或包,要在自己電腦上搭建商業項目的運行環境,其實也不大現實。
而實際上,一方面面試官僅會通過項目細節確認求職者是否做過真實項目,另一方面,面試官更會確認技術在項目里的使用情況。即如果求職者打算去了解商業項目業務細節,從打算以此證明商業真實性,這條路走不通。
3 這些求職者往往跑通過一些學習項目,但會憑主觀臆斷,想象著把分布式鎖,微服務等一些所謂的”資深“技術嵌入到學習項目里,以此希望證明自己用過”資深“技術,從而能過面試。這種做法其實效率很不高。
比如你是想說你做的是學習項目,只要是學習項目,那在其中用的技術,哪怕再資深,面試官只能認為你在這方面只是會簡單的接口調用。但如果你打算把這個學習項目說成是商業項目,這反而更誤事,因為不少初級開發想象中的技術使用場景,其實是錯誤的,比如真實項目不大會用Redis+lua做分布式鎖,甚至都不大會用分布式鎖。
4 更有甚者,有些求職者會把一些根本沒開發價值的項目寫到簡歷上當成是商業項目。比如你寫個外賣或電商,好歹也算有行業背景。但有些求職者寫的是博客系統或留言系統或交友平臺。這些項目在有經驗面試官的眼里,甚至都不會繼續往下看,因為沒有商業開發價值,所以基本上是學習項目,而且其中包含的技術太簡單。
本文不是教大家無中生有地包裝項目,畢竟求職得憑誠信,但如果你確實做過商業項目,你就得在簡歷和面試中掌握足夠的技能,別讓面試官誤認為你這僅僅是學習項目。
先說下,面試官一般怎么確認這是學習項目還商業項目?不大可能讓當場演示,只是憑嘴問。
1 如果你在簡歷上寫明這個項目的網址或APP名,那面試官真可能現場打開去驗證,但這種情況下,基本能驗證這個項目不真實。因為網址或app看到的一般是前端頁面,而java做的是后端接口,真正的后端調用,是無法用前端效果去演示的,你現場又不可能演示用postman調用接口。
相反如果求職者說,這個項目是xx系統,客戶是電信或某公司或某事業單位的部門,已經安裝在客戶的服務器上,是內部系統,從外網無法訪問,面試官基本會信,因為很多情況就這樣。如果求職者說,我最近做的項目,我離職時還沒上線,這時面試官會警惕,因為求職者此時屬于不打自招,在面試官無法確認是否上線的前提下,主動心虛說這沒上線,意味著這個項目有可能是包裝的。
2 項目角度面試官會從公司背景、客戶、項目業務背景、項目開發細節和是否上線等情況,確認項目的真實性。
具體會問,這個項目你是在什么公司里做的?如果你說是跟著老師做或和朋友一起創業,這勉強能說得過,但如果你說是自己做的,這段時間不在公司,那么這屬于學習項目。或者會問,客戶是誰,是否上線?一般商業項目,哪怕安裝在客戶內部服務器,外面看不到,而且初級開發沒參與上線的過程,也不知道上線細節,但項目為了掙錢,一般總會上線。
至于業務細節,面試官一般會問,這個項目包含哪些模塊,你做過哪些模塊,用過哪些數據表,數據表的數據量是多少?這里請大家記住,面試官不是你之前項目的具體使用者,不會詳細問流程,比如你做的是客戶數據插入,面試官不會問,你第一步如何檢查數據,第二步如何傳遞數據,第三步插入到什么數據表等細節。
3 技術角度,面試官會問,你在項目里用過哪些技術,做過哪些事情。對在校生或初級開發來說,面試官的期望是,用spring boot做過增刪改查的開發,用mybatis連過數據庫,用過基本的事務,日志和單元測試等基本功能,做過基本的測試,解決過基本的技術問題。當然最好是在項目里解決過數據庫或OOM問題,用過微服務等資深技術。
這塊,如果求職者還說,用過redis或微服務,面試官也會問,你項目里是怎么用redis和微服務的,這塊如果求職者只是在學習項目里用過,或者是想把學習項目里得到的經驗嵌入到真實項目,一般回答的內容和真實項目的場景嚴重不同。比如會說用過redis+lua的分布式鎖,但大多數真實項目其實不會用到分布式鎖。
4 會問項目里解決過的實際問題,或者就著求職者說用過的技術,問技術細節。這塊如果求職者的項目是包裝的,那么基本上說不上解決過哪些問題,或者說出來的業務細節聽上去像錯了。
除了上文提到的分布式鎖以外,一些零項目經驗的求職者還會說,項目里用過分布式事務,但事實上連分布式事務和單機版事務的差別也搞不清楚。或者會說,項目沒有高并發,但依然會用微服務和分庫分表或其它分布式組件。
上文的敘述其實和“準備項目”的方法無關,但一些初學者看了,一定能知道,其實自己準備Java項目的方法,真可能是自欺欺人,在此基礎上,大家也就更能理解下文提到的準備Java項目的方法。
1 結合公司場景,尤其是小公司場景,證明這是用于掙錢以及能夠掙錢的項目。
首先你的項目一定是在公司里做的,比如大四實習了3個月,那么你需要在簡歷上說明,這3個月在什么公司,做了什么項目。或者退而求其次,這個項目是幫實驗室老師做的,也是掙錢的項目。相反,如果做這個項目的時間段沒有公司背景,那么大概率會被認為是學習項目。
同時,小公司所做項目的特點是,工期短,一般不會超過半年,不會自研,也不會做大公司的競品。比如不會自研個電商平臺,也不會做個外賣系統,原因好理解,哪怕做出來,功能再完善,也沒法和大公司的競爭。所以在小公司里做的項目,真可能是xx管理系統。這里為了說明這個確實是商業項目,可以說明下這個項目的客戶。
多說一句,比如在小公司里做的倉庫管理系統,賣給了當地某公司,這是可行的,或者說,做了某政府部門的社區管理系統,同時說清楚,在哪里上線,這也可信,畢竟有些小公司能接到此類項目。但如果說,某小公司做了健康管理平臺或留言系統,這種項目是沒客戶要買,所以掙不到錢。
2 說清楚項目組人數,開發細節和已經上線等細節。
比如你說,在項目里用過Maven, Git,技術上用過postman發請求做測試,這些組件和工具一般學習項目是用不到的,甚至有些培訓班在講課時也未必用到,但真實項目大概率會用到。
具體你說出,我們項目組是6個人,1個項目經理,1個前端,剩下的是后端開發,用Maven管項目,用git管代碼,用postman發請求測試后端接口,我參與了xx等模塊,開發了5個月,當然再進一步,你更可以說,這個項目開發完成后,是項目經理到客戶現場去上線。那么對方公司聽下來,就認為你掌握了這些只有商業項目里有的技術,能進一步確信你做過真實項目。
3 業務方面,通過“對數據表的增刪改查”來證明。
很多Java初學者不知道說明項目業務的方法,其實這真可以說是“會者不難”。比如你做的是一個政府的社區信息管理平臺,已經在某個社區上線,你就可以說,在這個項目里,你做過了信息管理模塊、辦理業務的明細模塊,社區工作人員管理模塊等業務模塊,這些業務模塊一聽就屬于這個系統,當然你不能說,這個系統里還包含了商品展示模塊,因為這個模塊從業務角度,不大可能屬于“社區信息管理系統”。
而對于每個模塊,你只需要說,其中是對數據表的增刪改查,比如業務明細模塊是對業務明細表的增刪改查,你做的是后端,是用spring boot的控制器+service+repo,根據前端發來的請求url以及參數,對數據表進行操作并返回數據。
至于具體的業務細節,比如參數如何檢查,請求如何處理,發生異常時如何返回數據,這些面試官不關心,你真不用講,也不用準備。說句不該說的話,比如有人通過若依等系統跑通一個項目,然后用這個辦法說業務流程,同時為這個項目準備一個公司場景,雖然這種做法不提倡,但面試官真很難發現,或者說也不想發現。
4 通過技術的使用細節,有取有舍準備面試說辭。
這塊建議是分層次準備,第一個層次是準備日志、事務、junit、swagger、AOP和Mybatis的細節說辭,第二個層次是在第一個層次的基礎上,外加redis和kafka等分布式組件的說辭,第三個層次是在此基礎上,再外加微服務方面的說辭。
比如Java項目經驗不多,自認為Java基礎也一般,這里應該通過第一個層次,至少先證明自己的商業項目經驗,并以此證明自己會用Spring boot框架做增刪改查,這樣就有一定的概率面試成,而且面成的概率遠大于讓面試官感覺你只做過學習項目。但如果相反,你連商業項目經驗和基本的spring boot做增刪改查的說辭都沒準備好,在此基礎上就去卷微服務和分布式組件,那么面試官真會認為,你連基本增刪改查也不會。
而準備技術使用細節的做法是,通過接口和參數說明,比如你如何證明你用過junit?就說用過@test注解,用AssertEquals方法對比數據,其實就可以了。如何證明用過AOP?用過@Pointcut注解,同時用@Aspect注解,再說下業務場景,是把哪兩個業務通過AOP整合到一起。
需要說明的是,如果能力一般,項目經驗也不多,別去準備高并發技能,因為大概率準備不好。這里高并發的技能包括Redis+lua的限流或秒殺或分布式鎖等,還是這句話,一層層準備,先準備基本的增刪改查,準備好以后再準備分布式或微服務組件,這樣其實對應屆生來說,真就可以了。
5 解決實際問題的方法一般是,看日志解決。
比如你被問到,解決過哪些實際問題,你如果不會說數據庫索引調優等高級問題,你真可以說,用postman發請求,發現問題,然后看日志,根據異常信息,排查過空指針或參數不對的問題。
通過上述方法,你大概率能證明項目的真實性,看到這里,不少初學者會發現,其實面試準備項目的方法和你自己原先想象的不同,而且也簡單,畢竟這是從面試的角度來證明,而不是從學習的角度來證明。
當然具體操作的時候還有很多細節,相關內容本人也有如下的文章,這里就不再重復講述了。
java零項目經驗,找工作前該如何準備項目?面試時又該怎么說?-CSDN博客文章瀏覽閱讀828次,點贊23次,收藏12次。本人在做Java技術面試官的時候,發現了一種不怎么好的傾向:不少求職者,尤其是Java初級開發的求職者,會認為面試準備就是背八股文和準備算法,這本身沒錯,面試前也該充分準備這方面的問題,但更要準備項目。1 在校招階段,由于大多數應屆生是沒有商業項目經驗的,所以對校招面試官來說,只能退而求其次,通過學習項目、八股文和算法題來選人,但話說回來,校招過程中如果能展示商業項目經驗,一定能對其它競爭者形成碾壓性的優勢。https://blog.csdn.net/sxeric/article/details/138585808?spm=1001.2014.3001.5501說說真實Java項目的開發流程,以及面試前的項目準備說辭 - 知乎介紹項目是必不可少的Java面試環節,求職者需要借此證明自己真實Java項目的經驗,如果再做的好的話,需要借此展開自己的亮點說辭。 不過之前如果只有學習項目經驗,比如是自己跑通一個項目,或者是在培訓班里通過…
https://zhuanlan.zhihu.com/p/574240101計算機專業畢業的你,是如何提前準備找工作的? - 知乎其它方面不說,就說java方面,技術層面,可以簡單歸納成,跑通spring boot學習項目+準備項目說辭=過面試…
https://www.zhihu.com/question/376509250/answer/3346701471