
最近我看到不少在校的同學在學java,而且,在我最近舉辦的一次直播活動中,也有不少在校生同學來提問,java該怎么學,
對于那些已經作業的同學,哪怕才作業不久,畢竟也能從專案實踐里總結和探索java的學習途徑和相關方法,但在校生同學由于沒機會接觸實際專案,在學習內容、進階途徑和學成標準這些方面都是兩眼一抹黑,而大學里的內容可能偏重于理論,講述的技術往往也和軟體公司里常用的技術不匹配,
這就導致了很多上心的在校生,雖然很努力,但到畢業時,才發現自己起早貪黑學成的技能并不能幫他們找到作業,在本文里,就將結合我面試實習生和畢業生的標準,專門給在校生這個群體一些學習Java方面的建議,
這里整理了一份 Java的核心知識點 和300多個重點面試題,
需要的朋友可以點擊:這個!點這個,暗號:csdn,

一、明確目標,先說下公司面試應屆生的標準
我最近可能都在大公司,到畢業季,會到一些學校去校招,校招的標準描述起來很簡單:Java方面能干活,或者能經短期幫帶后能干活,具體標準如下,
-
Web框架方面,需要以全堆疊的形式,了解SSM,或Spring Boot或Spring Cloud從前端到后端的基本語法,至少能在專案經理短期幫助下,能照著別人的例子寫代碼,應屆生候選人只要能講清楚相關框架的語法點和流程即可,最多再附帶說明下mybatis等組件的用法,至于redis,dubbo,根本沒要求,
-
資料庫方面,能會基本的增刪改查即可,外帶一些基本概念,比如事務怎么處理,JDBC里批處理怎么處理,
-
Java語法(也就是核心方面),其實如果能講清楚SSM等Web框架技能,這塊只要刷題就能過,比如就問些ArrayList和LinkedList的差別,以及多執行緒等的概念,
-
人看上去聽話,想法少,學習能力強,責任心強,不是刺頭,這塊其實大多數人都可以達標,
以上不要求有商業專案經驗,當然如果有,絕對是加分項,而且這還是大公司的面試應屆生的標準,至于一些小公司,或者是一些外包公司,有時候能招到人就阿彌陀佛了(至于有些能力比較強的一本的應屆生愿不愿意去還難說),有些在招收應屆生的時候,不少小公司甚至在“專案經驗”方面沒要求,哪怕沒學習專案經驗也不要緊,只會問些網上比較大路的面試題,能說上來即可,
二、面試中大多數應屆生的實際表現
從面試官角度來看,招收應屆生的標準其實是很低的,對應的,在招初級開發時,多少都需要有商業專案經驗,從這個角度來看,應屆生最好在校期間就找到作業,畢業后兩三個月找不到作業問題還不怎么大,但如果半年后再找不到作業,那么到時候被面試的標準就高于“應屆生”的標準了,
這里我無意貶低應屆生的水平,畢竟我們都是從這個階段過來的,但從面試情況來看,至少有將近一半的應屆生達不到標準,下面列些具體的表現,
-
沒有框架開發的經驗,這里最低要求是能自行搭建個SSM專案,但不少同學根本沒有,
-
資料庫方面,就知道理論上的增刪改查,甚至不會在MySQL, Oracle和SQL Server平臺上運行過SQL陳述句,
-
Java核心方面,掌握了一大堆專案里一定不會用的,比如Swing之類的界面編程技術,但該掌握的多執行緒集合等,一些常用的概念也不清楚,
論動手能力,有些同學甚至沒有在Eclipse等IDE上運行通Java代碼,或者出了基本的語法錯誤不知道如何自行解決,至于沒有debug除錯經驗的,就更加見怪不怪了,而在代碼里需要加必要的try…catch例外處理陳述句,這就更加鳳毛麟角了,
在一些一本大學里,理論和實際操作能力較差的同學雖然不多,但也有,就更別提其它大學和大專了,我也和一些大學老師打過交道,也看過一些大學里用的Java和資料庫等編程方面的教材,再結合諸多應屆生在面試時的表現,我的感受是,或許大學階段更會培養學生的理論素養,但大學生朋友在讀大學階段,一定要提升實際的編程能力,包含但不限于(SSM)框架的編程能力,資料庫實際操作能力和Java核心部分代碼的開發和除錯能力 ,
三、哪些大學里學到的知識點面試大概率不問(根本不用太費精力看的技術有哪些)
前幾天我看到篇大學生朋友寫的文章,或許很多大學生朋友也知道上進,平時也在不斷看各種資料,但可能苦于方法不當,可能有些大學老師也沒真在公司里干過,也沒法給出合適的學習建議,所以導致最終畢業找作業時,能力沒達到基本的期望要求,
我最近接觸到不少大學生朋友,發現他們努力正在學的知識,面試時未必會問,也就是說,這些點白學了,之前已經提到了面試的標準,這里就將結合具體的知識點,列出面試時需要掌握的最低技能標準,除此之外,大概率不會問的,
-
Java核心方面,集合,多執行緒,例外處理,IO,JDBC,面向物件技能,大概率會問到,其它的沒提到的,比如圖形化界面,NIO,Socket網路編程,甚至Applet之類的,不會問到,
-
資料庫方面,會寫增刪改查的SQL陳述句,知道存盤程序之類的概念,會通過索引優化查詢條件,會建表,會些諸如子查詢,group by,having,表關聯查詢等基本SQL技能,這里請注意,至少得用過一種商業化資料庫,
-
框架方面,需要有Spring+Spring MVC+mybatis框架的實際操作能力(不是商業專案開發能力),至于有Spring Boot或Spring Cloud,那更好了,
-
綜合技能方面,能知道基本的資料結構知識(線性表外帶排序外帶一些樹的技能),基本的作業系統知識(一般僅限于執行緒行程概念),基本網路通訊知識(一般僅限于網路通訊模型和tcp udp協議),但這僅僅是“需要知道”而已,
大家其實也可以通過看各種職位描述和招聘需求,看下哪些技能實際上是不會問的,對于這些知識,就不用學,從而把精力用到學實際Java相關技能上,
這里需要說明,在大學階段學的很多知識,不能說沒用,比如網路通訊里的tcp底層通訊細節,這些技能或者要等到作業5年后升級到高級開發或架構師的時候才會用到,而且以高級開發視角觀察需要掌握的通訊協議細節知識,絕對要比大學階段要復雜,
換句話說,很多技能,在大學階段也就“需要了解有這事”,以在大學階段的經歷,再多用時間學,估計也無法達到“實際專案的需求”,而且等到有實際專案經驗時,再學這類技能也就是一兩周的事情,兩廂一對比,結論就很明確了:在校階段應該更多積累實際開發能力,因為更得靠這個找作業,
四、用一個月的時間了解Java核心部分的內容
通過上文,大家大致可以了解到畢業時找作業的目標,如果再不了解,可以實際看下招聘要求,甚至直接多去參加招聘會和面試,總之優先考察實際的開發能力,具體在Java核心部分,該如何高效學習呢?
-
在電腦上裝jdk,eclipse,別用editplus之類的工具,最好再用eclipse的自動編譯功能,這方面,其實是鍛煉自己的動手搭建環境的能力,作業后,開發是一方面,搭建環境的能力同樣重要,
-
剛開始,一定得去找兩三本Java入門書,先通過運行現有代碼,理解代碼的含義,別光看書不運行,開始階段,也多運行別人的代碼,別自己敲代碼,這里建議直接找書,因為相比一些視頻教材,畢竟書上的知識很系統,而且能正式出版的書一般沒代碼問題,能直接運行,不建議自己敲代碼,是因為自己敲代碼時,多少會遇到問題,遇到問題后延誤學習進度是小,因為一直得不到解決從而影響學習信心,甚至終止學習了,事情就大了,
-
如果找到兩三本Java入門書,一般其中涵蓋的知識系統大多很相似,大家可以先運行一遍所有代碼,這樣就能大致掌握代碼結構和基本知識點,而且由于書上代碼一般問題不大,而且質量也不會低,至少不會有太大的阻礙性問題,
-
當運行好以后,著重觀察集合,面向物件,多執行緒,IO處理,JDBC,例外處理相關章節,這個階段,是以掌握API用法為主,在這基本上再看下諸如介面,抽象類,例外處理流程,垃圾回收之類的高級知識點,
在上述基礎上,如果可以通過資料的幫助,用Java實作堆疊,鏈表,佇列,散串列,樹等的資料結構,同時操練各種排序演算法,這對找作業也有些幫助,
還有大廠的最新面試題和筆試題,想進大廠的同學不要錯過,
點擊:這個!點這個,暗號:csdn,進去可免費領取,

五、用半個月的時間,以MySQL為例,了解資料庫的大致操作
在資料庫方面,最好也去找本書,同時在MYSQL上實踐,為什么選MYSQL?因為這比較輕,相比Oracle而言,好安裝,當然如果有條件裝SQL Server之類的,那就更好了,
-
在MySQL資料庫上,實踐各種增刪改查的SQL陳述句,實踐建表,建索引能技巧,同時實踐一下諸如子查詢,with as等等復雜的SQL陳述句,
-
用JDBC連同MYSQL,在Java代碼里做各種增刪改查的操作,
-
在此基礎上,了解諸如索引,范式和鎖等概念,這時候雖然認識也會很膚淺,但至少不會一頭霧水了,
這樣,在資料庫方面,好歹有實際操作經驗了,這為之后的專案實踐,能打下很好的基礎,
六、用一個月的時間,了解基于Spring的web框架
面試時更看重的是框架經驗,這塊學習的建議如下,
-
先通過運行代碼,了解Spring里IOC, AOP,這時應該注意各種配置,
-
熟悉Spring的基本概念后,可以嘗試跑一個SSM的小例子,這個例子可以非常簡答,就一個頁面也行,但要包含Spring MVC和Mybatis諸多要素,這樣大家好歹能知道框架的構成,在這個基礎上,可以繼續擴展,加些必要的業務,從而進一步了解這個框架,
在這個階段,還是最好看書上的例子,因為書上的例子一定能通,而且還會帶部署和運行的步驟,還是不建議自己敲代碼,因為SSM框架相對復雜,在這個階段如果自己敲,很有可能會因為問題太多而放棄,
- 在自己機器上跑通SSM框架的案例后,可以網上找個帶業務的系統,比如圖書管理系統等,從中看些前端和后端互動資料的流程,同時,結合業務看Mybatis里的ORM程序,以及Spring里的常用注解,
七、在學習程序中,可以避免的誤區
Java方面,本人按照上述步驟輔導過不少在校的同學,只要肯上心練習,效果不會太差,不過很多同學在實踐程序中會走彎路,這里列些普遍存在的問題,請大家在操練的程序中盡量避免,
-
別鉆牛角尖,先面再點,比如有同學對一個知識點不理解,或者一段代碼運行有問題,就會在這個點上耗費很多時間,不解決就不繼續,其實在這個程序中,首先需要全方位掌握SSM框架、Java技術和資料庫,個別點如果有問題,可以跳過,或者一個案例運行不通可以運行其它類似的,總之別在一個點上花費太多的時間,
-
再啰嗦一下,最好先照著書上代碼運行,開始階段的學習方法是“復制粘貼運行理解”,在自己已經有一定的基礎后,再嘗試自己寫代碼,
-
在操練SSM專案時,有些同學會照著視頻上提到步驟做,如果有些視頻步驟不對,這樣就會有問題,所以還是建議照著書做,
-
工具要選對,剛開始就eclipse,或者Idea,別用editplus或命令列,
上述是方法上的誤區,其實最大的問題出在態度上,上述學習程序持續時間不會短,快則兩三個月,慢則半年,如果中途因為效果不明顯而放棄,那就很可惜了,
八、有學習專案經驗后,爭取找些商業專案的實踐機會
按照上述步驟,讓自己擁有最基本的SSM以及其它Java和資料庫相關技能后,要做的絕不是繼續積累學習專案經驗,而是盡可能去找實習的機會,以積累商業專案的經驗,在找實習經驗方面,大家可以參照如下的建議,
-
在我之前的博文里也提到,大三時,打聽計算機學院里哪些老師和外面公司有合作,一般碩導都有這樣的專案,然后直接去找老師,剛開始不要錢,只求經驗,或許對各位在校生同學而言,這種方式是比較可行的,本人第一個商業專案經驗也是由此得到的,
-
一般學校里都會安排實習,實習的程序中,一定要重視,這個是實打實的商業專案經驗,
-
寒暑假,找軟體公司,這可能會比較艱辛,因為在校階段自己非常難找相關實習機會,但要去找,
-
這個大家根據自己的實際情況自己斟酌:如果報培訓班,多少能積累些專案經驗,但這僅僅是學習專案經驗,不過在培訓班里,可以找相關老師推薦實習的機會,
-
如果實在找不到實習的機會,那么盡可能通過各種渠道,去找商業專案經驗的案例,我知道有些網站有,但不做廣告,雖然靠這種方式積累的商業專案經驗質量就打折扣了,但好歹聊勝于無,而且畢竟很多畢業生,連學習專案經驗都沒,
不少在校的同學發現,哪怕實際只干了三個月的商業專案經驗,自己的技能也會很大程度提升,而且實際的商業專案經驗,會讓大家掌握書本上根本不會多提但專案里一定會用的技能,比如JVM記憶體調優或多執行緒并發,從這意義上來講,只要有條件,大學生朋友應該擠破頭去找商業專案的經驗,而不是悠哉游哉地坐在機房里敲代碼,只要你有商業專案的經驗,哪怕就三個月,找作業時你就有代差優勢,
九、畢業生準備簡歷的要點
按照上述步驟,大家在畢業時,多少會有些商業專案經驗,再不濟也能有學習專案經驗,請記住,在招聘畢業生時,第一看專案經驗,第二看專案里包含的技能,第三再問演算法和理論問題,至于邏輯題和情商題,只供參考,
對此,畢業生在簡歷中,一定得突出做過的專案經驗,優先挖掘商業專案經驗,實在沒有學習專案也行,如果沒任何專案經驗,那么找作業時會吃力很多,本文的重點是講學習方法,準備簡歷的技能只是稍微提到,簡歷不會寫的也可以來領一下簡歷模板,
十、總結:最多堅持半年,技能就會大變樣
本文雖然長,但其中也是盡我所能,給出大學生朋友若干有實際操作性的學習建議,其實對于其它初學者,本文給出的建議同樣適用,希望本文能幫到大家,最后感謝大家能讀完此文,
整理了Java架構學習資料,學習技術內容包含有:Spring,Dubbo,MyBatis, RPC, 原始碼分析,高并發、高性能、分布式,性能優化,微服務 高級架構開發等等,
需要的朋友可以點擊:這個!點這個,暗號:csdn,
還有Java核心知識點+全套架構師學習資料和視頻+一線大廠面試寶典+面試簡歷模板可以領取+阿里美團網易騰訊小米愛奇藝快手嗶哩嗶哩面試題+Spring原始碼合集+Java架構實戰電子書,


轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/225837.html
標籤:其他
