本文主要分爲三個部分:java
建議初學者看視頻學習,不推薦看書。入門視頻選擇很是重要,最好是通俗易懂、深刻淺出的教學視頻。若是入門視頻選的很差,不知所云,容易產生厭倦心理:「從入門到放棄」。關於java書籍,前期的學習我的不推薦直接看書:書本較爲枯燥、不直觀、容易分心、可能堅持不下來。mysql
上面的基礎部分的學習主要是爲後階段打好基礎。javaEE是java開發學習路上舉足輕重的一員,那麼javaEE該如何學習呢?框架那麼多,該學哪些呢?從哪一個框架開始學習呢?從博主以及身邊同窗的面試來看,javaEE主要須要掌握如下幾個部分:servlet、jsp、hibernate、mybatis、springMvc、spring,有餘力的同窗能夠學習spring boot,它是輕量級的spring,互聯網公司使用較多,學完spring以後,學習spring boot就很簡單了。框架學習順序,在整理的資料中有寫。linux
servlet和jsp屬於基礎,高層框架都是創建在servlet和jsp的基礎之上,博主和身邊同窗建議學習。雖然如今項目中不多直接使用jsp和servlet,可是框架都是在這基礎之上進行了封裝,學習servlet和jsp能夠幫助你更好的理解框架,而不是隻會配置,調API,不知原理。另外,servlet在面試中問的不少,jsp面試問的少,可是後面作項目的時候你得會寫簡單的頁面啊,不然項目都搭不起來,會產生嚴重挫敗感。程序員
公衆號後臺對話框回覆 編程大禮包 有5T編程資源web
本身在裏面找一個,我推薦牛客網高級項目面試
首先最好是使用SSM框架的項目,SSH用的不太多,不推薦;算法
分佈式的項目最好是,不是也不要緊,大部分網絡上的項目都不是分佈式的;spring
最好不要找商城,由於商城已經爛大街 了。sql
數據庫最好mysql,另外面試時數據庫表設計也會是常問問題,你們學習的時候注意一下。數據庫
不少同窗問作項目怎麼才能避免只是跟着視頻敲了一遍代碼,好像什麼都沒學到的感受?
javaEE的挑戰在哪裏呢?在沒有分佈式、高併發場景下,項目顯得很「low」(大機率就是寫簡單的頁面,控制器查數據庫準備數據、頁面從域對象裏面取出數據填充、返回給瀏覽器),但初學者應該如何學習呢?
要回答這一點,首先明白麪試官問項目問的是什麼?以前頭條面試的時候,面試官提到一點:頭條爲何這麼喜歡問算法呢?「應屆生簡歷上的項目與生產環境相差很大,不太實用,因此咱們不太問項目,偏向算法、基礎的考察」。面試官其實很清楚你的疑問,可是他們仍是會問項目,面試官考察的究竟是什麼呢?考察的是你解決問題的能力。在面試中,項目中有的業務/問題可能你以前沒有想過,可是面試官卻給你假設了某個你以前沒考慮到的場景。你說我以前沒有考慮到這種狀況;面試官會說,沒有關係的,之前沒有想過也沒有關係,現場想一想怎麼解決。也就是面試官考察的是你解決問題的能力。
在大多數面試中,項目部分大多會延升到分佈式、高併發場合。由於用戶一多、數據量一多,問題就來了,簡單的業務在高併發,大數據的場景下瞬間就會產生不少問題。好比,新浪微博的分層評論/點贊如何實現、項目中的數據庫如何設計、好比說你的分佈式中的某一臺機器損壞了,怎麼解決服務不可用問題;再好比說淘寶天天訂單量不少,數據庫如何設計:分庫分表策略;好比說文件上傳時上傳期間斷網了,那麼你如何實現下次在上次的基礎之上繼續上傳,而不是所有從新上傳?好比說,360的開機戰勝百分之多少用戶,這又怎麼實現(360用戶確定不少,使用盡可能小的代價實現)。上面這些基本都是面試中的問題,說了這麼多,咱們在跟着視頻作項目的時候,究竟應該注意什麼?
你之因此會有上面「我僅僅是跟着視頻敲完了代碼」的感受(首先初學者有這種感受是很正常的),由於視頻的項目大多不是分佈式、沒有海量用戶、不用考慮容災問題。怎麼彌補這一點呢?在跟着視頻作項目的時候,視頻中的老師提出一個問題以後,你想一想解決思路,若是把場景延時到幾億的用戶呢?海量的數據呢?這些問題相當重要,而且你須要把這些問題記錄下來。
項目相關面試問題中必定會有:「你在作這個項目過程當中遇到哪些問題,你是怎麼解決的?」、「項目的亮點在哪裏?(和第一個問題同樣回答)」。面試不像考試,「亮點」不是說非得獨一無二,你能夠轉到你遇到了哪些問題,你是怎麼解決的,或者還沒解決的問題能夠問問面試官的意見,這樣在下次面試中,上一位面試官的解決方案就是你的了。
因此,項目這塊就是這樣經過面試不斷積累的過程,這也是爲何極力建議在實習招聘的時候投遞簡歷,不管你最終可不能夠去實習。由於這就是你「升級打怪」積累的過程,前期多投小公司,積累「升級打怪」的經驗。後期在面對BAT、TMD等一些大boss的時候你才能不虛,才能順利通關。上面說的在作項目時把場景延時到分佈式、併發場景,這很難,只是建議,不要因噎廢食,經過面試積累項目經驗,後面你會發現,不少公司針對你項目提的問題都差很少,最後你會發現原來你認爲「沒有什麼東西」的項目其實問題一大堆,這些問題的發現主要靠面試積累。最後強調一次,必定要把項目中遇到或者是你想到的問題記錄下來,必定要。另外,有同窗可能會說:「我在作項目的時候沒有遇到問題,或者沒有難點,那怎麼辦?」
首先,你再看一遍這篇文章;其次,沒有問題,咱們要學會創造問題。好比說:你知道java會有OOM,而且你知道OOM怎麼排查,你徹底能夠把OOM這個問題的排查過程認爲這就是你遇到的問題;再好比說,JDK7以及以前的HashMap在併發狀況下會發生死循環,若是你知道這個原理,也知道怎麼解決,這也能夠成爲你的debug的經歷;再好比說,linux自啓動問題,一個項目部署到linux上,確定要配置自啓動,若是你知道怎麼作,這又能夠是一個問題。上面這些例子只是但願你們明白:沒有問題能夠創造問題。固然,項目業務相關的問題或者開始你沒有考慮高併發,在考慮以後出現的問題等一些業務相關的問題可能會給面試官留下更好的印象,我只想傳達:「你作項目過程當中不可能沒有任何問題」。項目業務緊密相連的問題,其中一個問的比較多的問題是:若是其中某個業務在處理過程當中失敗了,你應該怎麼處理?
在web項目中通常用戶的行爲都會交由線程池處理,若是在處理某個業務的過程當中發生了異常,致使這個任務沒有處理完,這時你要怎麼處理?這裏這樣舉例的意思是:你們要隨機應變,要學會創造問題。只要你知道問題解決的方案,面試官怎麼可能知道你在作項目的時候究竟有沒有遇到過這個問題呢?問題來源於想象。
最後,注意積累項目問題,在每一場面試中,面試官會不斷提出問題,面試完後,下來找到這些問題的答案或者和同窗討論。這樣每次面試下來你的問題庫裏面又多了幾個高質量的問題。必定積累以後,面試會很順利~。不要擔憂面試官對你的項目提不出任何問題,若是是這樣,這大機率是面試官的能力問題。
總之,項目面試是一個積累過程,前期多投小公司的實習和秋招,爲後期「升級打怪」積累經驗。項目面試沒法一蹴而就,是一個積累的過程
出自:https://mp.weixin.qq.com/s/NT...
以爲文章不錯的歡迎關注個人WX公衆號: 程序員喬戈裏
我是 百度後臺開發工程師,哈工大計算機本碩,專一分享技術乾貨/編程資源/求職面試/成長感悟等,關注送3000G編程資源,免費下載CSDN資源。