如何學習JavaEE,項目又該如何做?

如何學習JavaEE,項目又該如何做?

本文主要分爲三個部分:

  • 如何學習java基礎

  • 如何學習javaEE

  • 你關心的項目問題

01 java基礎學習

建議初學者看視頻學習,不推薦看書。入門視頻選擇非常重要,最好是通俗易懂、深入淺出的教學視頻。如果入門視頻選的不好,不知所云,容易產生厭倦心理:“從入門到放棄”。關於java書籍,前期的學習個人不推薦直接看書:書本較爲枯燥、不直觀、容易分心、可能堅持不下來。

02 javaEE入門學習

上面的基礎部分的學習主要是爲後階段打好基礎。javaEE是java開發學習路上舉足輕重的一員,那麼javaEE該如何學習呢?框架那麼多,該學哪些呢?從哪個框架開始學習呢?從博主以及身邊同學的面試來看,javaEE主要需要掌握以下幾個部分:servlet、jsp、hibernate、mybatis、springMvc、spring,有餘力的同學可以學習spring boot,它是輕量級的spring,互聯網公司使用較多,學完spring之後,學習spring boot就很簡單了。框架學習順序,在整理的資料中有寫。

servlet和jsp屬於基礎,高層框架都是建立在servlet和jsp的基礎之上,博主和身邊同學建議學習。雖然現在項目中很少直接使用jsp和servlet,但是框架都是在這基礎之上進行了封裝,學習servlet和jsp可以幫助你更好的理解框架,而不是隻會配置,調API,不知原理。另外,servlet在面試中問的很多,jsp面試問的少,但是後面做項目的時候你得會寫簡單的頁面啊,否則項目都搭不起來,會產生嚴重挫敗感。

03 你關心的項目問題

怎麼找項目呢?

公衆號後臺對話框回覆 編程大禮包 有5T編程資源

自己在裏面找一個,我推薦牛客網高級項目

怎麼選項目?

首先最好是使用SSM框架的項目,SSH用的不太多,不推薦;

分佈式的項目最好是,不是也沒關係,大部分網絡上的項目都不是分佈式的;

最好不要找商城,因爲商城已經爛大街 了。

數據庫最好mysql,另外面試時數據庫表設計也會是常問問題,大家學習的時候注意一下。

怎麼做項目?

很多同學問做項目怎麼才能避免只是跟着視頻敲了一遍代碼,好像什麼都沒學到的感覺?

javaEE的挑戰在哪裏呢?在沒有分佈式、高併發場景下,項目顯得很“low”(大概率就是寫簡單的頁面,控制器查數據庫準備數據、頁面從域對象裏面取出數據填充、返回給瀏覽器),但初學者應該如何學習呢?

要回答這一點,首先明白面試官問項目問的是什麼?之前頭條面試的時候,面試官提到一點:頭條爲什麼這麼喜歡問算法呢?“應屆生簡歷上的項目與生產環境相差很大,不太實用,所以我們不太問項目,偏向算法、基礎的考察”。面試官其實很清楚你的疑問,但是他們還是會問項目,面試官考察的到底是什麼呢?考察的是你解決問題的能力。在面試中,項目中有的業務/問題可能你之前沒有想過,但是面試官卻給你假設了某個你之前沒考慮到的場景。你說我之前沒有考慮到這種情況;面試官會說,沒有關係的,以前沒有想過也沒有關係,現場想想怎麼解決。也就是面試官考察的是你解決問題的能力。

在大多數面試中,項目部分大多會延升到分佈式、高併發場合。因爲用戶一多、數據量一多,問題就來了,簡單的業務在高併發,大數據的場景下瞬間就會產生很多問題。比如,新浪微博的分層評論/點贊如何實現、項目中的數據庫如何設計、比如說你的分佈式中的某一臺機器損壞了,怎麼解決服務不可用問題;再比如說淘寶每天訂單量很多,數據庫如何設計:分庫分表策略;比如說文件上傳時上傳期間斷網了,那麼你如何實現下次在上次的基礎之上繼續上傳,而不是全部重新上傳?比如說,360的開機打敗百分之多少用戶,這又怎麼實現(360用戶肯定很多,使用盡量小的代價實現)。上面這些基本都是面試中的問題,說了這麼多,我們在跟着視頻做項目的時候,究竟應該注意什麼?

你之所以會有上面“我僅僅是跟着視頻敲完了代碼”的感覺(首先初學者有這種感覺是很正常的),因爲視頻的項目大多不是分佈式、沒有海量用戶、不用考慮容災問題。怎麼彌補這一點呢?在跟着視頻做項目的時候,視頻中的老師提出一個問題之後,你想想解決思路,如果把場景延時到幾億的用戶呢?海量的數據呢?這些問題至關重要,並且你需要把這些問題記錄下來。

項目相關面試問題中一定會有:“你在做這個項目過程中遇到哪些問題,你是怎麼解決的?”、“項目的亮點在哪裏?(和第一個問題一樣回答)”。面試不像考試,“亮點”不是說非得獨一無二,你可以轉到你遇到了哪些問題,你是怎麼解決的,或者還沒解決的問題可以問問面試官的意見,這樣在下次面試中,上一位面試官的解決方案就是你的了。

所以,項目這塊就是這樣通過面試不斷積累的過程,這也是爲什麼極力建議在實習招聘的時候投遞簡歷,無論你最終可不可以去實習。因爲這就是你“升級打怪”積累的過程,前期多投小公司,積累“升級打怪”的經驗。後期在面對BAT、TMD等一些大boss的時候你才能不虛,才能順利通關。上面說的在做項目時把場景延時到分佈式、併發場景,這很難,只是建議,不要因噎廢食,通過面試積累項目經驗,後面你會發現,很多公司針對你項目提的問題都差不多,最後你會發現原來你認爲“沒有什麼東西”的項目其實問題一大堆,這些問題的發現主要靠面試積累。最後強調一次,一定要把項目中遇到或者是你想到的問題記錄下來,一定要。另外,有同學可能會說:“我在做項目的時候沒有遇到問題,或者沒有難點,那怎麼辦?”

首先,你再看一遍這篇文章;其次,沒有問題,我們要學會創造問題。比如說:你知道java會有OOM,並且你知道OOM怎麼排查,你完全可以把OOM這個問題的排查過程認爲這就是你遇到的問題;再比如說,JDK7以及之前的HashMap在併發情況下會發生死循環,如果你知道這個原理,也知道怎麼解決,這也可以成爲你的debug的經歷;再比如說,linux自啓動問題,一個項目部署到linux上,肯定要配置自啓動,如果你知道怎麼做,這又可以是一個問題。上面這些例子只是希望大家明白:沒有問題可以創造問題。當然,項目業務相關的問題或者開始你沒有考慮高併發,在考慮之後出現的問題等一些業務相關的問題可能會給面試官留下更好的印象,我只想傳達:“你做項目過程中不可能沒有任何問題”。項目業務緊密相連的問題,其中一個問的比較多的問題是:如果其中某個業務在處理過程中失敗了,你應該怎麼處理?

在web項目中一般用戶的行爲都會交由線程池處理,如果在處理某個業務的過程中發生了異常,導致這個任務沒有處理完,這時你要怎麼處理?這裏這樣舉例的意思是:大家要隨機應變,要學會創造問題。只要你知道問題解決的方案,面試官怎麼可能知道你在做項目的時候究竟有沒有遇到過這個問題呢?問題來源於想象。

最後,注意積累項目問題,在每一場面試中,面試官會不斷提出問題,面試完後,下來找到這些問題的答案或者和同學討論。這樣每次面試下來你的問題庫裏面又多了幾個高質量的問題。一定積累之後,面試會很順利~。不要擔心面試官對你的項目提不出任何問題,如果是這樣,這大概率是面試官的能力問題。

總之,項目面試是一個積累過程,前期多投小公司的實習和秋招,爲後期“升級打怪”積累經驗。項目面試無法一蹴而就,是一個積累的過程

出自:https://mp.weixin.qq.com/s/NTIeugUarpagY1Z_xBq97A

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