針對Java面試來學習JAVA內容,讓你事半功倍

    最近我在網上看到很多在校的同窗在學java,有很多在校生同窗來提問,java該怎麼學。前端

    對於那些已經工做的同窗,哪怕才工做不久,畢竟也能從項目實踐裏總結和探索java的學習途徑和相關方法。但在校生同窗因爲沒機會接觸實際項目,在學習內容、進階途徑和學成標準這些方面都是兩眼一抹黑,而大學裏的內容可能偏重於理論,講述的技術每每也和軟件公司裏經常使用的技術不匹配。java

    這就致使了不少上心的在校生,雖然很努力,但到畢業時,才發現本身起早貪黑學成的技能並不能幫他們找到工做。在本文裏,就將結合我面試實習生和畢業生的標準,專門給在校生這個羣體一些學習Java方面的建議。web

若是你們在學習Java過程當中遇到什麼問題,或者缺少相關的Java學習資料,可查看右側公告欄獲取,有問題隨問隨答,還有我這段時間整理的一些Java學習手冊,面試題,開發工具,PDF文檔書籍教程,須要的話均可以避免費分享給你們。面試

1 明確目標,先說下公司面試應屆生的標準

    我最近可能都在大公司,到畢業季,會到一些學校去校招,校招的標準描述起來很簡單:Java方面能幹活,或者能經短時間幫帶後能幹活,具體標準以下。redis

    1 Web框架方面,須要以全棧的形式,瞭解SSM,或Spring Boot或Spring Cloud從前端到後端的基本語法,至少能在項目經理短時間幫助下,能照着別人的例子寫代碼。應屆生候選人只要能講清楚相關框架的語法點和流程便可,最多再附帶說明下mybatis等組件的用法,至於redis,dubbo,根本沒要求。算法

    2 數據庫方面,能會基本的增刪改查便可,外帶一些基本概念,好比事務怎麼處理,JDBC裏批處理怎麼處理。數據庫

    3 Java語法(也就是核心方面),其實若是能講清楚SSM等Web框架技能,這塊只要刷題就能過,好比就問些ArrayList和LinkedList的差異,以及多線程等的概念。編程

    4 人看上去聽話,想法少,學習能力強,責任心強,不是刺頭,這塊其實大多數人均可以達標。後端

    以上不要求有商業項目經驗,固然若是有,絕對是加分項,並且這仍是大公司的面試應屆生的標準。至於一些小公司,或者是一些外包公司,有時候能招到人就阿彌陀佛了(至於有些能力比較強的一本的應屆生願不肯意去還難說)。有些在招收應屆生的時候,很多小公司甚至在「項目經驗」方面沒要求,哪怕沒學習項目經驗也沒關係,只會問些網上比較大路的面試題,能說上來便可。網絡

2 面試中大多數應屆生的實際表現

    從面試官角度來看,招收應屆生的標準實際上是很低的,對應的,在招初級開發時,多少都須要有商業項目經驗。從這個角度來看,應屆生最好在校期間就找到工做,畢業後兩三個月找不到工做問題還不怎麼大,但若是半年後再找不到工做,那麼到時候被面試的標準就高於「應屆生」的標準了。

    這裏我無心貶低應屆生的水平,畢竟咱們都是從這個階段過來的,但從面試狀況來看,至少有將近一半的應屆生達不到標準,下面列些具體的表現。

    1 沒有框架開發的經驗,這裏最低要求是能自行搭建個SSM項目,但很多同窗根本沒有。

    2 數據庫方面,就知道理論上的增刪改查,甚至不會在MySQL, Oracle和SQL Server平臺上運行過SQL語句。

    3 Java核心方面,掌握了一大堆項目裏必定不會用的,好比Swing之類的界面編程技術,但該掌握的多線程集合等,一些經常使用的概念也不清楚。

    論動手能力,有些同窗甚至沒有在Eclipse等IDE上運行通Java代碼,或者出了基本的語法錯誤不知道如何自行解決,至於沒有debug調試經驗的,就更加見怪不怪了,而在代碼裏須要加必要的try...catch異常處理語句,這就更加百裏挑一了。

    在一些一本大學裏,理論和實際操做能力較差的同窗雖然很少,但也有,就更別提其它大學和大專了。我也和一些大學老師打過交道,也看過一些大學裏用的Java和數據庫等編程方面的教材,再結合諸多應屆生在面試時的表現,個人感覺是,或許大學階段更會培養學生的理論素養,但大學生朋友在讀大學階段,必定要提高實際的編程能力,包含但不限於(SSM)框架的編程能力,數據庫實際操做能力和Java核心部分代碼的開發和調試能力 。 

3 哪些大學裏學到的知識點面試大機率不問(根本不用太費精力看的技術有哪些)

     前幾天我看到篇大學生朋友寫的文章,匹馬行天下之思惟決定高度篇——大學再努力,培訓機構作兄弟,或許不少大學生朋友也知道上進,平時也在不斷看各類資料,但可能苦於方法不當,可能有些大學老師也沒真在公司裏幹過,也無法給出合適的學習建議,因此致使最終畢業找工做時,能力沒達到基本的指望要求。

    也就是說,大學教育和公司面試需求之間存在差距,這就給一些培訓機構帶來了商機。但培訓機構收的錢也不便宜,而培訓班也不是必定能保證學生能找到工做,關鍵要靠本身。從這裏開始,就將給出有實際操做性的學習建議。

    我最近接觸到很多大學生朋友,發現他們努力正在學的知識,面試時未必會問,也就是說,這些點白學了。以前已經提到了面試的標準,這裏就將結合具體的知識點,列出面試時須要掌握的最低技能標準,除此以外,大機率不會問的。

    1  Java核心方面,集合,多線程,異常處理,IO,JDBC,面向對象技能,大機率會問到,其它的沒提到的,好比圖形化界面,NIO,Socket網絡編程,甚至Applet之類的,不會問到。

    2 數據庫方面,會寫增刪改查的SQL語句,知道存儲過程之類的概念,會經過索引優化查詢條件,會建表,會些諸如子查詢,group by,having,表關聯查詢等基本SQL技能,這裏請注意,至少得用過一種商業化數據庫。

    3 框架方面,須要有Spring+Spring MVC+mybatis框架的實際操做能力(不是商業項目開發能力),至於有Spring Boot或Spring Cloud,那更好了。

    4 綜合技能方面,能知道基本的數據結構知識(線性表外帶排序外帶一些樹的技能),基本的操做系統知識(通常僅限於線程進程概念),基本網絡通信知識(通常僅限於網絡通信模型和tcp udp協議),但這僅僅是「須要知道」而已。

     你們其實也能夠經過看各類職位描述和招聘需求,看下哪些技能其實是不會問的,對於這些知識,就不用學,從而把精力用到學實際Java相關技能上。

     這裏須要說明,在大學階段學的不少知識,不能說沒用。好比網絡通信裏的tcp底層通信細節,這些技能或者要等到工做5年後升級到高級開發或架構師的時候纔會用到,並且以高級開發視角觀察須要掌握的通信協議細節知識,絕對要比大學階段要複雜。

    換句話說,不少技能,在大學階段也就「須要瞭解有這事」,以在大學階段的經歷,再多用時間學,估計也沒法達到「實際項目的需求」,並且等到有實際項目經驗時,再學這類技能也就是一兩週的事情。兩廂一對比,結論就很明確了:在校階段應該更多積累實際開發能力,由於更得靠這個找工做。 

4 用一個月的時間瞭解Java核心部分的內容

    經過上文,你們大體能夠了解到畢業時找工做的目標,若是再不瞭解,能夠實際看下招聘要求,甚至直接多去參加招聘會和麪試,總之優先考察實際的開發能力,具體在Java核心部分,該如何高效學習呢?

    1 在電腦上裝jdk,eclipse,別用editplus之類的工具,最好再用eclipse的自動編譯功能。這方面,實際上是鍛鍊本身的動手搭建環境的能力,工做後,開發是一方面,搭建環境的能力一樣重要。

    2 剛開始,必定得去找兩三本Java入門書,先經過運行現有代碼,理解代碼的含義。別光看書不運行,開始階段,也多運行別人的代碼,別本身敲代碼。這裏建議直接找書,由於相比一些視頻教材,畢竟書上的知識很系統,並且能正式出版的書通常沒代碼問題,能直接運行。不建議本身敲代碼,是由於本身敲代碼時,多少會遇到問題,遇到問題後延誤學習進度是小,由於一直得不到解決從而影響學習信心,甚至終止學習了,事情就大了。

    3 若是找到兩三本Java入門書,通常其中涵蓋的知識系統大多很類似,你們能夠先運行一遍全部代碼,這樣就能大體掌握代碼結構和基本知識點,並且因爲書上代碼通常問題不大,並且質量也不會低,至少不會有太大的阻礙性問題。

    4 當運行好之後,着重觀察集合,面向對象,多線程,IO處理,JDBC,異常處理相關章節,這個階段,是以掌握API用法爲主,在這基本上再看下諸如接口,抽象類,異常處理流程,垃圾回收之類的高級知識點。 

    在上述基礎上,若是能夠經過資料的幫助,用Java實現堆棧,鏈表,隊列,散列表,樹等的數據結構,同時操練各類排序算法,這對找工做也有些幫助。

5 用半個月的時間,以MySQL爲例,瞭解數據庫的大體操做

    在數據庫方面,最好也去找本書,同時在MYSQL上實踐。爲何選MYSQL?由於這比較輕,相比Oracle而言,好安裝,固然若是有條件裝SQL Server之類的,那就更好了。 

    1 在MySQL數據庫上,實踐各類增刪改查的SQL語句,實踐建表,建索引能技巧,同時實踐一下諸如子查詢,with as等等複雜的SQL語句。

    2  用JDBC連同MYSQL,在Java代碼裏作各類增刪改查的操做。

    3  在此基礎上,瞭解諸如索引,範式和鎖等概念,這時候雖然認識也會很膚淺,但至少不會一頭霧水了。

    這樣,在數據庫方面,好歹有實際操做經驗了,這爲以後的項目實踐,能打下很好的基礎。

6 用一個月的時間,瞭解基於Spring的web框架

    面試時更看重的是框架經驗,這塊學習的建議以下。

    1 先經過運行代碼,瞭解Spring裏IOC, AOP,這時應該注意各類配置。

    2 熟悉Spring的基本概念後,能夠嘗試跑一個SSM的小例子,這個例子能夠很是簡答,就一個頁面也行,但要包含Spring MVC和Mybatis諸多要素,這樣你們好歹能知道框架的構成,在這個基礎上,能夠繼續擴展,加些必要的業務,從而進一步瞭解這個框架。

    在這個階段,仍是最好看書上的例子,由於書上的例子必定能通,並且還會帶部署和運行的步驟,仍是不建議本身敲代碼,由於SSM框架相對複雜,在這個階段若是本身敲,頗有可能會由於問題太多而放棄。

    3 在本身機器上跑通SSM框架的案例後,能夠網上找個帶業務的系統,好比圖書管理系統等,從中看些前端和後端交互數據的流程,同時,結合業務看Mybatis裏的ORM過程,以及Spring裏的經常使用註解。     

7 在學習過程當中,能夠避免的誤區

    Java方面,本人按照上述步驟輔導過很多在校的同窗,只要肯上心練習,效果不會太差,不過不少同窗在實踐過程當中會走彎路,這裏列些廣泛存在的問題,請你們在操練的過程當中儘可能避免。

    1 別鑽牛角尖,先面再點。好比有同窗對一個知識點不理解,或者一段代碼運行有問題,就會在這個點上耗費不少時間,不解決就不繼續。其實在這個過程當中,首先須要全方位掌握SSM框架、Java技術和數據庫,個別點若是有問題,能夠跳過,或者一個案例運行不通能夠運行其它相似的,總之別在一個點上花費太多的時間。

    2 再囉嗦一下,最好先照着書上代碼運行,開始階段的學習方法是「複製粘貼運行理解」,在本身已經有必定的基礎後,再嘗試本身寫代碼。

    3 在操練SSM項目時,有些同窗會照着視頻上提到步驟作,若是有些視頻步驟不對,這樣就會有問題,因此仍是建議照着書作。

    4 工具要選對,剛開始就eclipse,或者Idea,別用editplus或命令行。

    上述是方法上的誤區,其實最大的問題出在態度上,上述學習過程持續時間不會短,快則兩三個月,慢則半年,若是中途由於效果不明顯而放棄,那就很惋惜了。 

8 有學習項目經驗後,爭取找些商業項目的實踐機會

    按照上述步驟,讓本身擁有最基本的SSM以及其它Java和數據庫相關技能後,要作的毫不是繼續積累學習項目經驗,而是儘量去找實習的機會,以積累商業項目的經驗。在找實習經驗方面,你們能夠參照以下的建議。

    1 在我以前的博文裏也提到,大三時,打聽計算機學院裏哪些老師和外面公司有合做,通常碩導都有這樣的項目,而後直接去找老師,剛開始不要錢,只求經驗,或許對各位在校生同窗而言,這種方式是比較可行的,本人第一個商業項目經驗也是由此獲得的。

    2 通常學校裏都會安排實習,實習的過程當中,必定要重視,這個是實打實的商業項目經驗。

    3 寒暑假,找軟件公司,這可能會比較艱辛,由於在校階段本身很是難找相關實習機會,但要去找。

    4 這個你們根據本身的實際狀況本身斟酌:若是報培訓班,多少能積累些項目經驗,但這僅僅是學習項目經驗,不過在培訓班裏,能夠找相關老師推薦實習的機會。

    5 若是實在找不到實習的機會,那麼儘量經過各類渠道,去找商業項目經驗的案例,我知道有些網站有,但不作廣告。雖然靠這種方式積累的商業項目經驗質量就打折扣了,但好歹聊勝於無,並且畢竟不少畢業生,連學習項目經驗都沒。 

    很多在校的同窗發現,哪怕實際只幹了三個月的商業項目經驗,本身的技能也會很大程度提高,並且實際的商業項目經驗,會讓你們掌握書本上根本不會多提但項目裏必定會用的技能,好比JVM內存調優或多線程併發。從這意義上來說,只要有條件,大學生朋友應該擠破頭去找商業項目的經驗,而不是悠哉遊哉地坐在機房裏敲代碼。只要你有商業項目的經驗,哪怕就三個月,找工做時你就有代差優點。

9 畢業生準備簡歷的要點

    按照上述步驟,你們在畢業時,多少會有些商業項目經驗,再不濟也能有學習項目經驗,請記住,在招聘畢業生時,第一看項目經驗,第二看項目裏包含的技能,第三再問算法和理論問題,至於邏輯題和情商題,只供參考。

     對此,畢業生在簡歷中,必定得突出作過的項目經驗,優先挖掘商業項目經驗,實在沒有學習項目也行。若是沒任何項目經驗,那麼找工做時會吃力不少。本文的重點是講學習方法,準備簡歷的技能只是稍微提到。這塊能夠參考的以前寫的博文,你的簡歷能幫你爭取到面試機會嗎。若是有時間的話,或許我會再專門針對畢業生朋友,寫篇文章講在java方面,如何準備簡歷和麪試,以及如何找工做。 

10 總結:最多堅持半年,技能就會大變樣

    我記得兩年前,個人Python能力僅限於寫hello world,我運行代碼看文檔,辛苦堅持了半年,自認爲就達到了出版書的地步,再過了半年,果然就從出版社接到了一本以股票案例講述Python技術的選題,並自認爲寫的內容不會誤人子弟。

    我持續關注了一位大學生網友的公衆號,也就是寫了半年多博客,他技術看上去就更專業多了。能堅持不懈地上進,這種精神值得提倡,雖然我工做好久了,但也得時刻警戒,不能懈怠,這也是我肯推薦該公衆號的緣由,不只推薦其內容,更提倡這種精神。

    不光是這位同窗,經我培訓的其它不少大學生,也只要肯上心學,最多半年,最短三個月,就能從小白進階到能實際幹活的水平,並且還真能面試進軟件公司幹活。 

    本文雖然長,但其中也是盡我所能,給出大學生朋友若干有實際操做性的學習建議,其實對於其它初學者,本文給出的建議一樣適用。但願本文能幫到你們,最後感謝你們能讀完此文。

相關文章
相關標籤/搜索