一年Java開發面試進阿里,聊聊入職阿里的一些經驗與心得!

也許今天的你在公司作着 CRUD 的工做,也許你還在爲面試造火箭、工做擰螺絲悻悻不已,也許掙扎了許久卻找不到進步的方向。java

不是計算機相關專業的我,從開始學習 Java 到進入阿里,用了一年多點的時間,不少人以爲是進步比較快的,問我怎麼學習 Java 才能快速進步,微信一一回復難以說的太明白,今天整理一下個人思考分享給你們。程序員

打好計算機基礎面試

計算機基礎是全部編程語言的根基,不理解計算機運做原理就沒法真正理解編程的意義。就像咱們大一要從計算機基本原理開始學習同樣,若是你想真正吃透一門語言,就須要理解進程、線程、堆棧、內存尋址、函數調用……算法

這些內容與任何一門語言都沒有關係,倒是全部計算機語言的根基。打好計算機基礎之後,對你來講不一樣的語言就真的只是語法和特性的差別,在語言之間轉換就變得很容易。當我從 C 語言轉向 Java 的時候,看了一天 Java 基礎語法就開始寫業務代碼了。spring

自學和培訓的小夥伴每每在計算機基礎上比較薄弱,一旦學習到比較複雜的概念就會感受比較吃力,這個時候你須要好好補一下計算機基礎知識。別說你沒時間,今天不努力,明天就後悔。編程

熟練掌握 Java設計模式

《Java 編程思想》沒有完整看完大致讀懂兩遍就不要說掌握了 Java。會用 Java 寫代碼只能說你入門了能夠幹活了,但也僅僅是初級階段。緩存

我遇到過不少工做了三五年的人,作過不少項目,Java 水平卻和工做了一年的應屆生沒多大區別。大部分人迷茫和沒法進步的根本緣由就在於你僅僅掌握了java基礎,看不到 Java 的無限可能,也不知道作什麼能夠繼續進步。微信

熟練掌握 Java 須要你學習到 Java 特性的每一個角落,不須要記住每一個類和方法,但須要深入理解每一個特性的意義。工做中 SSM 框架爲咱們屏蔽了不少技術細節,Java 的特性可能並不常常用到。須要你主動學習,至少要把《Java 編程思想》看兩遍以上,其中反射、泛型、容器、註解、併發須要重點掌握。數據結構

熟練掌握框架

不少人蔘加培訓是從 JavaEE 開始的,問我如何學好 JavaEE?我想說的是 JavaEE 其實已通過時了,如今要學 SSM。

掌握框架的第一步是學會使用。學習 SSM 的基本用法可以幫助你完成絕大多數開發任務,掌握了高級用法可以提出更好的解決方案。學習框架沒有捷徑,在工做中一遍一遍地練習是惟一的方式。

掌握框架的第二步是理解原理。不少人面試阿里失敗就敗在原理上,只知其一,不是其二,稍微問的深刻一點就答不上來了。理解原理就是理解 SSM 框架的靈魂,這也是一個程序員從體力勞動進階到腦力勞動的門檻。

不理解原理只能作寫代碼的工具,理解原理才能成爲真正的開發工程師。多思考、多總結、多請教,保持好奇心,多問一句是什麼、爲何,才能探索到框架的奧祕。

掌握框架的第三步是設計框架。試着去寫一個簡化版的 spring,實現 IOC 功能,你就會發現真 TM 難。泛型、容器、反射、註解、設計模式、重構等都會用到,經過設計框架,可以深入地理解這些 Java 特性和框架的設計原理。若是你尚未寫過框架,嘗試着寫一個吧,邊作邊思考,好好體會下框架的祕密。

掌握應用技術

隨着技術的發展,分佈式、緩存等使用愈來愈普遍。Java 程序員須要掌握的應用技術也愈來愈多,好比 spring boot、spring cloud、dubbo、Redis、RabbitMQ、ZooKeeper ……不使用這些技術也能寫出很好的單機程序,但掌握這些技術才能作好大型架構。學習這些技術也很簡單,就是多加練習。

衆所周知,阿里內部基本都是使用本身的技術,好比 hsf、diamond、metaq ……業界流行的這些技術用的不多。在阿里呆久了會感受與社會脫節,因而我就天天抽出時間去看這些技術的文檔,作本身的項目使用這些技術,經過日復一日的練習來掌握這些不經常使用技術。

理解編程的本質

前面說了那麼多,其實都是編程的術。相對於武功來講,都是外在的招式。掌握了招式能夠禦敵,但想要再上一層則須要掌握心法。對於程序員來講,編程的心法就是道。而我也是在阿里工做了好久才體會到道的意義。

想必不少人都知道「程序等於算法加數據結構」的說法。算法和數據結構聽起來都很高大上,也是大部分作業務的同窗難以接觸到的東西。不少人告訴我在公司本身是個 CRUD boy 不知道如何提升本身的能力,也有人抱怨「面試造火箭,工做擰螺絲」不知道該怎麼辦。

實際上在平常工做中,程序 = 控制 + 邏輯 + 數據,也就是算法能夠拆分爲控制加邏輯。優秀的框架都實現了控制、邏輯、數據的分離,實現了很好的解耦和靈活性,這也是全部框架的演進方向。

數據容易理解,就是程序的配置、靜態數據和運行時數據;

控制是程序的主流程,通常在微內核或框架底層實現,控制邏輯通常與具體業務邏輯關係不大,只是定義了流程;

邏輯就是具體的業務邏輯,在特定約束下被控制流程調用生產出符合預期的數據。

試着從控制、邏輯、數據的維度去理解框架、設計框架、優化代碼,你很快就能成爲優秀的程序員。若是你以爲在公司作業務很難提升技術,不妨嘗試一下梳理出控制、邏輯、數據,而後進行重構。

Java學習思路架構

1、學會如何分析源碼?

大部分程序員都會「寫」代碼,或者至少會抄代碼和改代碼。可是,會讀代碼的並不在多數,會讀代碼又真正讀懂一些大項目的源碼的,少之又少。由於它是兩個緣由形成的:

1:咱們全部的教育和培訓都在強調怎麼寫代碼,並無教你們如何讀代碼

2:大多數工做場景都是一個蘿蔔一個坑,咱們只須要了解一個系統的局部便能開展工做,讀不相干的代碼,彷佛沒用

因此,要養成源碼三問的習慣:

「爲何要有這樣的架構」

「他是什麼樣子的」

「他是怎麼工做的」

入門Java一年進阿里,分享我學Java的一些經驗與心得!

2、爲何是分佈式?

首先須要說明的是,分佈式系統是一個複雜且寬泛的研究領域,學習一兩門在線課程,看一兩本書可能都是不能徹底覆蓋其全部內容的。

入門Java一年進阿里,分享我學Java的一些經驗與心得!

3、微服務爲何會這麼火?

相信你們都瞭解業務愈來愈複雜,服務分層,微服務架構是架構升級的必由之路,而對於微服務的優勢相信你們都不陌生。

好比:易於開發與維護 / 微服務相對小,易於理解 / 啓動時間短,開發效率高 / 獨立部署 / 伸縮性強 / 每一個服務均可以在橫向和縱向上擴展 / 微服務架構能夠更好將架構和組織相匹配 / 每一個團隊獨立負責某些服務,得到更高的生產力 / 下降嘗試新技術的成本......

入門Java一年進阿里,分享我學Java的一些經驗與心得!

4、程序員到底要不要學習JVM?

總有人問這個東西好像用不上,因而要不要學這樣的問題,而後又總有人擔憂一直搬磚整天作些重複沒提高的東西。

若是你這輩子只甘心作一個平庸的Java碼農,那麼你徹底沒有必要去學習JVM相關的知識。

入門Java一年進阿里,分享我學Java的一些經驗與心得!

5、被咱們忽略掉的工程化專題

在IT產業中,寡頭化出現表明着創業公司減小--沒人再去用聲勢浩大的發佈會講故事、沒人再去宣傳本身拿了多少融資。

這一代中國人自小的教育不比歐美的STEAM,而是重學術、輕手藝。咱們每每會爲工科和產能過剩畫上等號。強大的資本和技術門檻爲這些產業蒙上了一層神祕的面紗,讓普通人很難真正瞭解到其中技術和工藝的複雜程度,也就更難明白其中的價值。可正是由於中國的工程化能力,才讓咱們有機會走到AI時代的第一梯隊,而不只僅是靠學術研究能力。

入門Java一年進阿里,分享我學Java的一些經驗與心得!

6、沒有高併發經驗,想進大公司該怎麼辦?

假如沒有靠譜的公司,接觸不到高併發的業務場景怎麼辦?你永遠解決的是小問題,工做10年技術也未必提高多少。

不少程序員也常常找我說,沒有經驗就沒有靠譜的公司收,沒有靠譜的公司也就沒有經驗,我看了無數的書,本身作了無數的實驗拼命想找個靠譜公司去深刻,可是感受好難,簡直是個死循環

你們都比較關注高併發,緣由很簡單,想去BAT這樣的大公司,你必需要有高併發的經驗。今天普及下高併發的知識,但願你們對高併發有一個正確的認識。

入門Java一年進阿里,分享我學Java的一些經驗與心得!

7、學習千遍,不如項目實戰成功一次

有人說:項目實戰相信不少程序員都多少會有的,但是咱們這個還要學習什麼呢?

個人回答是:那就要看你想不想成爲一個架構師了,爲何98%的程序員工做10年,一生還只是一個開發者,程序員們都要想想這個問題,我是否是須要提高了。

入門Java一年進阿里,分享我學Java的一些經驗與心得!

我認爲,學習項目實戰最重要的仍是學習項目管理,做爲程序員,都應該學點項目管理。

凡事皆爲「項目」項目的兩類屬性(複雜的邏輯,龐大的信息量)

這纔是咱們學習「項目實戰」的終極意義。

入門Java一年進阿里,分享我學Java的一些經驗與心得!

想進BATJ大型互聯網企業上班,提高本身技術能力 學習的能夠來看看

這裏我也分享本身收集的系統的學習資料,和幾套學習路徑圖給你們,真心的但願能幫助到你們。

**資料獲取方式:加羣:794812436領取以上架構學習資料

轉發+轉發+轉發纔可領取

入門Java一年進阿里,分享我學Java的一些經驗與心得!

入門Java一年進阿里,分享我學Java的一些經驗與心得!

入門Java一年進阿里,分享我學Java的一些經驗與心得!

加羣:794812436領取以上架構學習資料

相關文章
相關標籤/搜索