一個Android程序員的面試心得,面試必問

mb6129e85ca1752 2021-09-19 21:28:03 阅读数:198

android 程序 心得

二、理解架構

全球有名的架構目前分為四種:

1、Clean架構:一種分層的架構方式,將核心業務(對應domain層)、UI相關(對應presenter層)以及數據加載(對應data層)彼此獨立開來,不同的層之間由接口依次連接起來,但卻又彼此不了解彼此的具體實現。

一個Android程序員的面試心得,面試必問_移動開發

2、DCI架構:DCI是數據Data 場景Context 交互Interactions的簡稱,DCI是一種特別關注行為的模式(可以對應GoF行為模式)。DCI架構真正含義可以歸結如下:

  • 1.數據data:是領域對象中代錶領域類概念的那部分。

  • 2.場景context:根據運行時即時調用,將活的對象實例帶到符合用例需求的場景中

  • 3.交互interactions, 描述需求用戶心目中角色的活動算法。

一個Android程序員的面試心得,面試必問_Android_02

3、DDD領域驅動設計:2004年著名建模專家Eric Evans發錶了他最具影響力的著名書籍:Domain-Driven Design –Tackling Complexity in the Heart of Software(中文譯名:領域驅動設計 2006年3月清華出版社譯本,或稱 Domain Driven-Design architecture [Evans DDD])。軟件的產生過程是:分析、設計、編程、測試、部署。過去,分析領域和軟件設計是分裂的,分析人員從領域中收集基本概念;而設計必須指明一組能在項目中適應編程工具構造的組件,這些組件必須能够在目標環境中有效執行,並能够正確解决應用程序出現的問題。模型設計設計(Model-Driven Design)拋弃了分裂分析模型與設計的做法,使用單一的模型來滿足這兩方面的要求。這就是領域模型。

一個Android程序員的面試心得,面試必問_移動開發_03

4、六邊形架構架構:六邊形架構(Hexagonal Architecture),又稱為端口和適配器架構風格,其中的“六”具體數字沒有特殊的含義,僅僅錶示一個“量級”的意思,六邊形的定義只是方便更加形象的理解。我們知道分層架構的重要作用就是避免耦合的出現,經典分層架構和六邊形架構都是分層架構的一種,但是所發揮的作用會有些不同,經典分層架構更多的精力放在抽象的分離上,每個層的職責分的很明確,各個層的依賴關系更加抽象化,從而避免耦合的出現,而在六邊形架構中,是用“組件化”的形式來避免耦合的出現,每個業務單元盡可能的最小化,然後把這些業務組件集合起來,用一個錘子把他們都拍扁,所以,在整個集合中,這些小的業務單元都是“平等的”,這種方式用一個詞來概括,那就是“扁平化”。

一個Android程序員的面試心得,面試必問_程序員_04

三、設計模式

設計模式(Design Pattern)是一套被反複使用、多數人知曉的、經過分類的、代碼設計經驗的總結。使用設計模式的目的:為了代碼可重用性、讓代碼更容易被他人理解、保證代碼可靠性。 設計模式使代碼編寫真正工程化;設計模式是軟件工程的基石脈絡,如同大厦的結構一樣。

1、設計模式的重要性:

  • 設計模式是高級軟件工程師和架構師面試基本必問的項目(先通過面試進入這個門檻我們再談其它)

  • 設計模式是經過大量實踐檢驗的安全高效可複用的解决方案。不要重複發明輪子,而且大多數時候你發明的輪子還沒有已有的好

  • 設計模式是被主流工程師/架構師所廣泛接受和使用的,你使用它,方便與別人溝通,也方便別人code review(這個够實在吧)

  • 使用設計模式可以幫你快速解决80%的代碼設計問題,從而讓你更專注於業務本身

  • 設計模式本身是對幾大特性的利用和對幾大設計原則的踐行,代碼量積累到一定程度,你會發現你已經或多或少的在使用某些設計模式了

  • 架構師或者team leader教授初級工程師設計模式,可以很方便的以大家認可以方式提高初級工程師的代碼設計水平,從而有利於提高團隊工程實力

四、代碼形式

  • 這樣子解釋架構、設計模式應該能讓你更加了解它:

  • 我現在要蓋一棟房子(需求),房子當然要蓋得漂亮大方美觀一點去把全國最有名的設師Jack叫過來把我的房子先設計出來讓我看一看(架構師),恩Jack果然是老司機設計的我很滿意不過這個房子的左邊不要蓋出來要留出來一部分讓我以後的孩子來用,還有右上角要多加個走廊還有房子的院前要留出啦一部分當花園,針對這麼多需要更變Jack爽快的答應了,一點也不苦惱因為Jack早就想到會變更偷偷運用了自己總結了一生的方案(設計模式)。好了搬磚的搬磚、砌牆的砌牆、工人們依靠Jack給出的設計愉快的蓋著房子(程序員)。

最後

題外話,我在一線互聯網企業工作十餘年裏,指導過不少同行後輩。幫助很多人得到了學習和成長。

我意識到有很多經驗和知識值得分享給大家,也可以通過我們的能力和經驗解答大家在IT學習中的很多困惑,所以在工作繁忙的情况下還是堅持各種整理和分享。但苦於知識傳播途徑有限,很多程序員朋友無法獲得正確的資料得到學習提昇,故此將並將重要的Android進階資料包括自定義view、性能優化、MVC與MVP與MVVM三大框架的區別、NDK技術、阿裏面試題精編匯總、常見源碼分析等學習資料。

 CodeChina開源項目:《Android學習筆記總結+移動架構視頻+大廠面試真題+項目實戰源碼》

【Android思維腦圖(技能樹)】

知識不體系?這裏還有整理出來的Android進階學習的思維腦圖,給大家參考一個方向。

一個Android程序員的面試心得,面試必問_程序員_05

【Android進階學習視頻】、【全套Android面試秘籍】

希望我能够用我的力量幫助更多迷茫、困惑的朋友們,幫助大家在IT道路上學習和發展

版权声明:本文为[mb6129e85ca1752]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/09/20210919212802803k.html