1. 程式人生 > >手把手教你成為年薪60萬的阿里巴巴架構師

手把手教你成為年薪60萬的阿里巴巴架構師

1.程式設計要求(全部精通)

1.常用資料結構和演算法

性表,連結串列,雜湊表是常用的資料結構,在進行Java開發時,JDK已經為我們提供了一系列相應的類來實現基本的資料結構。

Java提供了幾個能有效地組織和操作資料的資料結構,這些資料結構通常稱為Java集合框架。在平常的學習開發中,靈活熟練地使用這些集合框架,可以很明顯地提高我們的開發效率。但是,你要過關,這些都是精通,不是熟悉,下面的都是這樣,請切記。

2.面向物件程式設計(是精通不是熟悉)

1.面向物件

面向物件(Object Oriented)是一種新興的程式設計方法,或者是一種新的程式設計規範(paradigm),其基本思想是使用物件、類、繼承、封裝、多型等基本概念來進行程式設計。從現實世界中客觀存在的事物(即物件)出發來構造軟體系統,並且在系統構造中儘可能運用人類的自然思維方式。

2.物件

物件是系統中用來描述客觀事物的一個實體,它是構成系統的一個基本單位。一個物件由一組屬性和對這組屬性進行操作的一組服務組成。

類的例項化可生成物件,一個物件的生命週期包括三個階段:生成、使用、消除。

當不存在對一個物件的引用時,該物件成為一個無用物件。Java的垃圾收集器自動掃描物件的動態記憶體區,把沒有引用的物件作為垃圾收集起來並釋放。當系統記憶體用盡或呼叫System.gc( )要求垃圾回收時,垃圾回收執行緒與系統同步執行。

3.

類是具有相同屬性和方法的一組物件的集合,它為屬於該類的所有物件提供了統一的抽象描述,其內部包括屬性和方法兩個主要部分。在面向物件的程式語言中,類是一個獨立的程式單位,它應該有一個類名幷包括屬性和方法兩個主要部分。

Java中的類實現包括兩個部分:類宣告和類體。

類宣告

[public][abstract|final] class className [extends superclassName] [implements interfaceNameList]{……}

成員變數限定詞的含義:

static: 靜態變數(類變數)

final: 常量;transient: 暫時性變數,用於物件存檔,用於物件的序列化

volatile: 貢獻變數,用於併發執行緒的共享

方法的實現也包括兩部分內容:方法宣告和方法體。

方法宣告

方法宣告中的限定詞的含義:

static: 類方法,可通過類名直接呼叫

abstract: 抽象方法,沒有方法體

final: 方法不能被重寫

native: 整合其它語言的程式碼

synchronized: 控制多個併發執行緒的訪問

方法宣告包括方法名、返回型別和外部引數。其中引數的型別可以是簡單資料型別,也可以是複合資料型別(又稱引用資料型別)。

方法體

方法體是對方法的實現,它包括區域性變數的宣告以及所有合法的Java指令。方法體中宣告的區域性變數的作用域在該方法內部。若區域性變數與類的成員變數同名,則類的成員變數被隱藏。

為了區別引數和類的成員變數,我們必須使用this。this用在一個方法中引用當前物件,它的值是呼叫該方法的物件。返回值須與返回型別一致,或者完全相同,或是其子類。當返回型別是介面時,返回值必須實現該介面。

構造方法

構造方法是一個特殊的方法。Java 中的每個類都有構造方法,用來初始化該類的一個物件。

4

面向物件的基本特性

封裝

封裝最好理解了。封裝是面向物件的特徵之一,是物件和類概念的主要特性。封裝,也就是把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。

繼承

繼承是指這樣一種能力:它可以使用現有類的所有功能,並在無需重新編寫原來的類的情況下對這些功能進行擴充套件。通過繼承建立的新類稱為“子類”或“派生類”,被繼承的類稱為“基類”、“父類”或“超類”。

要實現繼承,可以通過“繼承”(Inheritance)和“組合”(Composition)來實現。

多型

多型性(polymorphisn)是允許你將父物件設定成為和一個或更多的他的子物件相等的技術,賦值之後,父物件就可以根據當前賦值給它的子物件的特性以不同的方式運作。簡單的說,就是一句話:允許將子類型別的指標賦值給父類型別的指標。

實現多型,有兩種方式,覆蓋和過載。覆蓋和過載的區別在於,覆蓋在執行時決定,過載是在編譯時決定。並且覆蓋和過載的機制不同,例如在 Java 中,過載方法的簽名必須不同於原先方法的,但對於覆蓋簽名必須相同。

過載(Overloading)

方法過載是讓類以統一的方式處理不同資料型別的手段。

一個類中可以建立多個方法,它們具有相同的名字,但具有不同的引數和不同的定義。呼叫方法時通過傳遞給它們的不同引數個數和引數型別來決定具體使用哪個方法。

返回值型別可以相同也可以不相同,無法以返回型別作為過載函式的區分標準。

重寫(Overriding)

子類對父類的方法進行重新編寫。如果在子類中的方法與其父類有相同的的方法名、返回型別和引數表,我們說該方法被重寫 (Overriding)。

如需父類中原有的方法,可使用super關鍵字,該關鍵字引用了當前類的父類。

子類函式的訪問修飾許可權不能低於父類的。

3.設計模式(加粗部分一定要掌握)

請注意加粗部分為需要精通掌握

1.建立型模式

  • 工廠模式(Factory Pattern)

  • 抽象工廠模式(Abstract Factory Pattern)

  • 單例模式(Singleton Pattern)

  • 建造者模式(Builder Pattern)

  • 原型模式(Prototype Pattern)

2.結構型模式

這些設計模式關注類和物件的組合。繼承的概念被用來組合介面和定義組合物件獲得新功能的方式。

  • 介面卡模式(Adapter Pattern)

  • 橋接模式(Bridge Pattern)

  • 過濾器模式(Filter、Criteria Pattern)

  • 組合模式(Composite Pattern)

  • 裝飾器模式(Decorator Pattern)

  • 外觀模式(Facade Pattern)

  • 享元模式(Flyweight Pattern)

  • 代理模式(Proxy Pattern)

3.行為型模式

這些設計模式特別關注物件之間的通訊。

  • 責任鏈模式(Chain of Responsibility Pattern)

  • 命令模式(Command Pattern)

  • 直譯器模式(Interpreter Pattern)

  • 迭代器模式(Iterator Pattern)

  • 中介者模式(Mediator Pattern)

  • 備忘錄模式(Memento Pattern)

  • 觀察者模式(Observer Pattern)

  • 狀態模式(State Pattern)

  • 空物件模式(Null Object Pattern)

  • 策略模式(Strategy Pattern)

  • 模板模式(Template Pattern)

  • 訪問者模式(Visitor Pattern)

4.J2EE 模式

這些設計模式特別關注表示層。這些模式是由 Sun Java Center 鑑定的。

  • MVC 模式(MVC Pattern)

  • 業務代表模式(Business Delegate Pattern)

  • 組合實體模式(Composite Entity Pattern)

  • 資料訪問物件模式(Data Access Object Pattern)

  • 前端控制器模式(Front Controller Pattern)

  • 攔截過濾器模式(Intercepting Filter Pattern)

  • 服務定位器模式(Service Locator Pattern)

  • 傳輸物件模式(Transfer Object Pattern)

4.建模語言和建模工具:UML(必須畫的溜溜的)

1.所有UML圖形

  • UML 基礎: 類圖

  • UML 基礎: 序列圖

  • UML 基礎: 元件圖

  • 繪製整潔的 UML 圖

  • 用例建模技巧

  • UML 序列圖簡介

  • 養成良好的繪製 UML 序列圖的習慣

  • 利用 UML 進行實體關係建模

2.UML建模工具

  • Rose

  • PowerDesigner

  • Edraw(我的選擇):我喜歡畫圖得漂亮

  • eclipse自帶..還有很多

  • 線上UML畫圖工具:processon等

5.高質量編碼能力:重用性,低耦合,可擴充套件性,高效能,可維護性。

我們評價高質量程式碼有三要素:可讀性、可維護性、可變更性。我們的程式碼要一個都不能少地達到了這三要素的要求才能算高質量的程式碼。

這些內容,需要你日常工作中不斷去總結和優化,先記好。

1.可讀性強

  • 不要編寫大段的程式碼

  • 程式碼如人,邏輯差的人都喜歡這樣幹,如果你喜歡這樣寫程式碼,你將很快被暴露,會被鄙視死的。

  • 釋義名稱與註釋

  • 按照我的話就是,要臉還是不要臉,你自己看著辦

2.可維護性

  • 程式碼不能寫死

  • 預測可能發生的變化

3.可變更性

  • 通過提高程式碼複用提高可維護性

  • 利用設計模式提高可變更性

  • 職責驅動設計和領域驅動設計

    以上是官方說明,我覺得就是這個意思。

6.整合開發,版本控制,構建等工具:eclipse, svn, git,maven 等

這些我相信每個人都使用的馬溜溜的,我就不多說了。

7.java相關的基礎知識和高階知識

  • Java語言基礎:異常處理,泛型,reflection

  • Java高階特性和類庫:class loader,bytecode,nio, juc 等

  • Java多執行緒程式設計

  • Java網路與伺服器程式設計

  • 開源產品和技術

  • JVM原理和調優

架構設計要求

大型網路應用結構:訊息中介軟體,負載均衡,叢集技術,資料同步...

可容災分散式系統設計能力.........還有很多,下次繼續說。