想進BAT,京東,美團,面試以前刷幾百道面試題真的有用嗎?

面試以前先刷幾篇面經,或者作幾道熱門面試題,想必是你們很熟悉的一種複習方式了,就像咱們當年常常作五年高考三年模擬同樣。可是可不要把面試題和麪經當成你的主要複習方式,它只是錦上添花,絕非雪中送炭!java


面經的意義程序員

面經是別人的面試經驗,所謂前車可鑑,後事之師。咱們能夠經過麪筋對本身的不足查缺補漏,卻不能把這些面試題等同於咱們所要掌握的知識點。緣由很簡單,兩篇面經可能會有不少的重複知識點,100篇面經也沒法包含全部知識點,因此在只刷面經的問題就是:重複多、不全面。面試

其實筆者之前也很喜歡刷面經,在面試前幾天把該公司這個崗位的面經刷一遍,面試時仍是能夠遇到不少相似的問題的。這種作法短時間內效果確實好,可是若是從長計議,只刷面經的複習方法實爲下策。算法

做者在春招時才發現問題的嚴重性,吃了很多虧,簡單來講就是:別人的面試題和麪試總結看了又忘,忘了又看,本質性的東西沒有掌握。sql


你還記得多少面試題?數據庫

在春招剛剛結束的這段時間,我總結了一下春招面試過程當中的一些問題,主要就是:以前學過的東西忘記了不少,特別是那些理解的不夠深的知識點,老是特別容易忘記。另外我發現,雖然我在筆記中記錄了不少的知識點和麪試題,可是每每我只看過一次,不會再去看第二次。編程

這也意味着,雖然記錄的內容不少,可是真正消化吸取的內容不多,腦子裏充斥着老是那些零碎的知識點和麪試問題,對於完整的知識體系知之甚少。這些問題在春招期間也不斷地暴露出來,讓我思考了好久。後端

面對如此窘境,我想作出改變,趁着如今時間充裕,我想要爲這些內容作一次減法,而且藉此機會,推翻本身原有的知識體系,重建新的知識框架。簡單說來,就是從新開始學習Java後端,此次我要用一種更高效的方式,避免走以前走的彎路,要用最高效,最合理的方式去複習。因爲我以前已經有基礎,因此我對完成這一目標有信心,相應地我也爲此作出了明確且詳細的學習計劃。設計模式

1、閱讀源碼api

閱讀、分析源碼是程序員最基本的碼代碼能力也是碼農的根本所在,學習經典源碼中所用到的經典設計思想及經常使用設計模式,可以幫你瞭解大牛是如何寫代碼的,從而吸取大牛的代碼功力。在阿里面試中,MyBatis,Spring等框架的底層原理是常常會被問到的


2、分佈式架構

阿里巴巴有不少大團隊,這種大團隊裏有不少小團隊,到小團隊以後,作的業務都不相同,若是想立足成爲一線互聯網公司中的萬能選手,最主流的分佈式架構中有不少知識都是必需要去了解與學習的。而且在阿里面試過程當中,面試官會問到實際應用場景的問題:好比微服務化、用戶量、併發量、業務複雜度以及可擴展程度等,這裏很少贅述。本屌提供一個分佈式架構的學習思路也是本身目前還在學習中的體系:


3、微服務架構

微服務是如今互聯網架構技術中最火熱的話題之一,也是本屌目前正在學習研究的方向。在阿里面試過程當中,面試官不多會問到關於微服務相關的問題。但做爲一名開發者,一名有技術夢想的程序員微服務架構是如今必需要去了解的主流技術,小編給本身制定了一個微服務技術的學習計劃:



4、併發編程

併發編程幾乎是全部互聯網公司面試必問問題,併發編程是Java程序員最重要的技能之一,也是最難掌握的一種技能。它要求編程者對計算機最底層的運做原理有深入的理解,同時要求編程者邏輯清晰、思惟縝密,這樣才能寫出高效、安全、可靠的多線程併發程序。目前網上沒有系統的全面的併發編程學習大綱,我搜集了不少資料總結出來一個最全面的學習大綱:


5、性能優化

性能一直是讓程序員比較頭疼的問題。當系統架構變得複雜而龐大以後,性能方面就會降低,特別是阿里巴巴這樣的一線互聯網公司最爲注重,所以想進入阿里,性能優化必定是要去深刻學習與理解的一環,本屌在性能優化這一塊雖然不能算專家,也能夠自信的說是精通了(注意:本身的簡歷上必定不要寫精通xxxx,要否則面試官會懟死你。好在本屌這一塊還算自信)



6、B2c商城項目實戰


7、底層知識

從架構設計,到應用層調優,再深刻了解底層原理,紮實的Java基本功才能讓本身變爲掃地神僧:

內存模型

併發模式

線程模型

鎖細節


以上七大知識體系是我從業多年總結出來的經驗,都是當前最主流的技術。若是對Java分佈式、工程化、高併發、微服務,JVM等技術,歡迎你們來討論。

最後針對於互聯網公司java程序員涉及到的絕大部分難題我作成了文檔和架構視頻資料免費分享給你們(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分佈式、高併發等架構技術資料),但願能幫助到且找到一個好的工做,也節省你們在網上搜索資料的時間來學習,也能夠關注我一下之後會有更多幹貨分享。 資料領取方式: Java高級架構qun;603619042








忘掉過去,重拾基礎

忘記過去,才能更好地開始。固然,也不是真的要你們忘記之前學過的知識點,只是建議各位把以前學的不紮實的技術從新地學一遍,不要只憑着印象去記憶知識點。

前面提到我在秋招前完成了知識體系重建,那在這裏我也想跟你們分享一下我當時大體的知識體系構成。就跟我前面說的同樣,我選擇從新再學一遍Java後端相關的技術內容,由於我知道大體的學習方向,而且有必定的基礎,因此看不少文章變得更加駕輕就熟,寫文章和作總結也更加有底氣了。

首先在Java基礎方面,我寫了20多篇原創博客,主要是對Java核心技術的解析,好比"Java反射"、"Java序列化和反序列化"、"Java異常體系"等等。

在Java集合類方面,我原創了部分文章,另外整合了一些比較好的技術文章,其中最主要的就是關於hashmap的文章,當時我整合的文章幾乎沒有遺漏任何一個知識點。

在Java併發編程方面,我主要參考了併發編程網以及一些優質博客的文章,先搞懂了Java併發原理,再一步步學習JUC併發包的組件,其中重點看了chm,併發工具類以及阻塞隊列等JDK源碼的解析文章,除此以外,我還會在IDE中跑JUC相關的emo,畢竟這方面的內容很是須要實踐。

在Java網絡編程方面,我先從最基礎的socket入手,再講到NIO,AIO,而且加入了幾篇對Linux IO模型解析的文章,讓整個知識體系更加完整(由於NIO是基於Linux Epoll實現的),接着我又加入了對Netty的探討,以及Tomcat中對NIO的應用,能夠說是把Java網絡編程一些比較重要的部分都囊括進來了。爲了更好理解這部份內容,我也在網上參考了不少客戶端和服務端通訊的demo,最後我分別用Socket,NIO,AIO以及Netty把C/S 通訊的demo都寫了一遍。

在JVM虛擬機方面,我則按照《深刻理解JVM虛擬機》這本書的行文脈絡進行文章的整理。在搞定JVM基本原理之後,我着重瞭解了JVM調優和實踐中常遇到的問題,而且整理了經常使用的JVM調優工具,場景問題以及調優實踐的案例,這也是由於面試中對JVM調優實踐愈來愈重視了。

在JavaWeb方面,我從Java Web相關技術的發展入手,一步步瞭解了每種技術存在的意義,好比JSP,Servlet,JDBC,Spring等等,而後對每種技術進行了比較全面的瞭解,而且着重地看了Spring和SpringMVC的源碼分析文章,另一方面,我花了不少時間去研究Tomcat的工做原理。除此以外,JavaWeb項目中經常使用的maven,日誌組件,甚至是單測試組件,也歸入了個人系列文章裏。

在數據庫和緩存方面,我主要學習了MySQL和Redis這兩種最經常使用的數據庫。對於Mysql,我從簡單的sql開始瞭解,而後開始瞭解sql優化,MySQL的存儲引擎和索引,事務及鎖,還有更復雜的主從複製,分庫分表等內容。對於Redis,我也是從簡單的api入手,而後去了解每一種數據結構的底層實現原理,接着嘗試去學習Redis的持久化方式,以及做爲緩存常須要考慮的技術點,固然,也包括Redis的分佈式鎖實現,以及它的分佈式集羣方案。

最後一部分就是分佈式相關的理論和技術了,這個也是困擾我好久的一塊內容,我主要把這塊內容分爲兩個部分,分別是分佈式理論和分佈式技術,理論方面,我先了解CAP,BASE等基本知識,而後開始學習一致性協議和算法,接着探討分佈式事務。

對於分佈式技術,涉及的東西就更多了,例如分佈式session,負載均衡,分佈式鎖等內容,這些知識點我都會用一到兩篇文章去總結,對於分佈式緩存,消息隊列,以及分佈式服務等內容,我會花比較多的時間去全面學習,而後總結出一個系列的文章出來。固然,對於這些技術的學習主要仍是停留在理論方面,在本身的項目中能用到的比較少。

至此,個人知識體系基本構建完成,這也是我在春招中可以成功闖過那麼多面試的緣由。

相關文章
相關標籤/搜索