安卓Apk安裝過程,2021Android面試筆試總結

mb612e29aee034d 2021-09-19 04:56:02 阅读数:54

apk 2021android android

從初中級到高級,移動端程序員的進階寶典

想要成為一名優秀的Android開發,你需要一份完備的 知識體系,在這裏,讓我們一起成長為自己所想的那樣。

下面我們就以 Android 開發為例,從硬技能和軟技能兩方面,梳理大前端趨勢下移動端程序員從初級到高級進階所需的技能點,並且推薦一些實用的書籍資料。

(一) 硬技能:專業的技術知識

1. Java / Kotlin開發語言

(1) Java

**常用數據結構:**ArrayList、Vector、CopyOnWriteArrayList、HaspMap、ConcurrentHashMap、HashTable 等使用場景。

JVM 虛擬機包括 Java 內存管理,GC 垃圾回收機制,類加載機制。推薦書籍:《深入理解 Java 虛擬機 JVM 高級特性與***實踐》。

**多線程編程,**包括線程池,鎖機制,線程同步 。推薦書籍:《Java 並發編程實戰》和《Java 多線程編程核心技術》。

AOP 編程實現,包括 JDK 動態代理實現,ASM 直接操作字節碼、CGLIB 實現,其原理封裝了 ASM,使用更方便。

Javassist:在字節碼加載前直接修改需要切入的方法,以及注解處理器 APT,這在 Android 中開源的庫應用較多,比如 DataBinding , ButterKnife, EventBus3 等等。

异常處理 Exception,包括檢查性异常、運行時异常處理。

IO 流相關,包括堵塞型 IO 和非堵塞型 IO。

Java 的一些高性特級,比如反射、代理、泛型、枚舉、正則錶達式等等;同時了解一下 jdk1.8,1.9,1.10 等新特性。相關書籍比較多,推薦**《Thinking in Java》《Effective Java》**。

(2) Kotlin

Kotlin 是一個基於 JVM 的新編程語言,在 Google IO 2017 中被 Google 宣布成為 Android 官方開發語言。

Kotlin 有哪些優點?

**①簡潔性: **提供了很多標准函數,大大减少樣板代碼的數量。

**②安全性:**避免空指針异常等錯誤。

**③互操作性:**充分利用 JVM、Android 和瀏覽器的現有庫。

**④工具友好: **可用任何 Java IDE 或者使用命令行構建。

在 Kotlin 中要樹立函數式編程思想。把函數理解為一個值到另一個值的映射關系,以函數作為單元來處理各個業務邏輯,函數既可以做參數,也可以作為返回值。多使用 Kotlin 提供的標准函數,比如 let、run、with、apply、also、 Lambda 錶達式。盡量使用閉包和高階函數。

Kotlin 的另一個突出特點是協程,為設計异步、非阻塞的程序提供了强大的範式。協程是一種輕量級的線程,它提供避免阻塞且更廉價可控的操作: 協程掛起。將複雜异步操作放入底層庫中,程序邏輯可順序錶達,以此簡化异步編程。

簡單說下 Kotlin/Native,它的設計初衷是支持在非 JVM 虛擬機平臺環境的編程,如 iOS、嵌入式平臺等,同時支持與 C 互操作。推薦書籍: 《Kotlin 實戰》

2. Android 進階技術點

進程相關,包括 App 進程原理以及 AIDL 原理。

性能優化,包括:內存,cpu,耗電量、網絡請求、UI 布局、線程、數據庫等優化方法以及優化工具的使用。

Android 源碼相關,包括:Binder 機制,Activity 啟動流程,Handler 原理,AMS ,PMS,WMS 原理,View 的繪制流程,Touch 事件傳遞機制等等。

編譯打包流程,從 java/kotlin 源碼到最終形成 APK 的過程。

熱修複的實現原理,目前熱修複框架的種類繁多,常見的包括底層替換、類加載和 Instant Run 方案。

逆向工程原理,主要是為了防止 apk 被反編譯破解,以及了解 apk 加固方案。

插件化,目前方案同樣很多,主流的技術實現是 Hook 方式,注册 Activity 進行占坑,使用占坑 Activity 通過 AMS 驗證,還原插件 Activity,其他組件的原理也大致類似。

NDK 開發,調用 JNI 以及回調 Java 的方式。

自定義控件,需要注意 onMeasure,onLayout,onDraw 的調用時機,以及 Touch 事件分發機制。

動畫 View Animation,視圖動畫在很早的 Android 版本系統中就已經提供了,只能被用來設置 View 的動畫。

屬性動畫 Property Animation,只對 3.0 以上版本,可以設置給任何 Object,包括還沒有渲染到屏幕上的對象。這種動畫是可擴展的,可自定義任何類型和屬性的動畫。

Webview 中 Native JS 交互,常用的 JSBridge 等。

Gradle 的特性以及 DSL 語法,比如 Gradle Transform API 的使用,它允許第三方插件在 class 文件轉為 dex 文件前操作編譯好的 class 文件。利用這一特性,我們可以在代碼編譯階段實現代碼注入或者代碼修改,這也是很多埋點技術和熱修複技術的基礎。

**安全性:**HTTPS 通信原理,數據加密方式,包括 MD5,RSA 等,webview 安全性,代碼混淆,數據驗簽,組件通信安全,服務器通信。

CI 持續集成:Jenkins ,Gitlab CI 等搭建持續集成開發工具。

Sersor 傳感器:包括陀螺儀,加速傳感器,方向傳感器,重力傳感器,光線傳感器等。

Android 開發國際化

ART 和 Dalvik 虛擬機的區別,主要是 AOT,Ahead-Of-Time 預編譯。

熟悉 DEX 文件結構。

單元測試:JUnit4,AndroidJUnitRunner,Mockito 框架的使用。

自動化測試:Monkey / Monkey Runner ,Espresso ,UI Automator 等。

掌握模塊化開發方式:主要注意分好層、模塊間跳轉通信。

代碼重構能力,推薦書籍:《重構改善既有代碼的設計》、《重構與模式》

Google 動態化框架 App Bundles

Jetpack,Google 推出的新一代組件、工具和架構指導,旨在加快 Android 應用開發速度。Jetpack 主要分為 4 部分:

安卓Apk安裝過程,2021Android面試筆試總結_Android

大前端趨勢下移動端程序員要凉?這些進階技能助你逆襲

Android開發常用的第三方庫:

響應式編程:RxJava、RxAndroid,Google 的Agera

網絡庫:包括Retrofit,OkHttp,Volley

圖片:Fresco,Gilde,Picasso

依賴注入:Dagger2

數據庫:Realm,ORMLite,GreenDAO,ObjectBox

數據總線:EventBus,otto

內存泄漏檢測工具 LeakCanary 等

各個技能點如果詳細拓展開,會形成相當龐雜的一張知識圖譜,建議大家自行梳理總結消化。

3. OOAD 和設計模式

在架構設計方面,首先要掌握的就是面向對象的開發和設計。具體知識點包括:

**面向對象三大特性:**封裝,繼承,多態。

五大基本原則(SOLID 原則),單一職責原則,開放封閉原則,裏氏替換原則,依賴倒置原則,接口分離原則。

23 種設計模式:常用的有工廠、單例、適配器、橋接、組合、代理、命令、觀察者、策略、狀態模式等等。

4. APP架構設計

包括 MVC、MVP、MVVM、MVI、VIPER、Clean Architecture、Flux。目前除了 MVC 外 MVP 和MVVM 用得比較多,具體的架構設計還要結合業務去考慮。

(二) 軟技能

人在職場,行走江湖,想進階高級程序員光有技術深度是不够的,還需要掌握眾多軟技能,注意綜合職業素養的磨練。有很多人一開始重視程度不足,在職場後半段的上昇過程中,容易遇到瓶頸。

下面是我個人總結出的高級程序員必備軟技能,供大家參考。

**1. 快速學習能力:**包括技術深度和廣度,能够不斷探究新技術,不斷學習。

**2. 溝通能力:**加强錶達、閱讀、編寫能力,即使在技術發達的今天也絕不會過時。因為任何方式的溝通在企業內部都是非常有必要的。

**3. 團隊協作能力:**開發人員很容易陷入孤立的人際交往狀態,但開發工作永遠都不可能是一個人完成,只有成員真正能融入團隊內,順利與其他同事溝通合作,才能體現出其真正的價值,被列為未來職比特晋昇候選人的幾率也更大。

**4. 時間管理能力:**可以參考時間管理「四象限法則」,有重點地把精力和時間集中用於處理重要但不緊急的工作,這樣可以做到未雨綢繆。

安卓Apk安裝過程,2021Android面試筆試總結_移動開發_02

大前端趨勢下移動端程序員要凉?這些進階技能助你逆襲

**5. 影響力:**一方面是業務影響力,另一方面是技術影響力。其中,提高技術影響力的方式包括:多參與技術分享,把積累的知識進行總結和傳播;參加技術方案評審,把技術經驗分享出去;幫助新同學解决技術問題;在博客、Github、StackOverflow 等平臺上對外分享。

6. 文檔編寫能力:

代碼注釋。很多程序員很少寫注釋,或者注釋過多,都是不合適的。多參考開源項目的注釋規範。

編寫技術設計文檔。包括流程圖,類圖,功能時序圖等等。

最後

對於很多初中級Android工程師而言,想要提昇技能,往往是自己摸索成長,不成體系的學習效果低效漫長且無助。整理的這些架構技術希望對Android開發的朋友們有所參考以及少走彎路,本文的重點是你有沒有收獲與成長,其餘的都不重要,希望讀者們能謹記這一點。

同時我經過多年的收藏目前也算收集到了一套完整的學習資料以及高清詳細的Android架構進階學習導圖及筆記分享給大家,希望對想成為架構師的朋友有一定的參考和幫助。

下面是部分資料截圖,誠意滿滿:特別適合有開發經驗的Android程序員們學習。

安卓Apk安裝過程,2021Android面試筆試總結_Android_03

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

不論遇到什麼困難,都不應該成為我們放弃的理由!

如果你看到了這裏,覺得文章寫得不錯就給個贊唄?如果你覺得那裏值得改進的,請給我留言,一定會認真查詢,修正不足,謝謝。

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