前言

很多人面試之前,可能沒有在互聯網公司工作過或者說工作過但年頭較短,不知道互聯網公司技術面試都會問哪些問題? 再加上可能自己準備也不充分,去面試沒幾個回合就被面試官幾個問題打蒙了,最後以慘敗收場。

下述是我整理的Android面試題匯總,由於篇幅原因,在這隻把熱點技術部分的題目列舉出來,後續還會更新其餘面試題內容,大家可以關注一下我,及時知曉我更新的知識點,同時這份面試集錦的整理也花費了我很多時間,有需要的朋友可以點擊這裡免費領取

可以關注一下專欄Android高級開發架構(記得看專欄簡介哦~)每天更新各種Android開發趣事、技術乾貨、進階架構知識、面試經驗分享等。如有好的文章也歡迎投稿。

1.組件化

(1)概念:

組件化:是將一個APP分成多個module,每個module都是一個組件,也可以是一個基礎庫供組件依賴,開發中可以單獨調試部分組件,組件中不需要相互依賴但是可以相互調用,最終發布的時候所有組件以lib的形式被主APP工程依賴打包成一個apk。

(2)由來:

  1. APP版本迭代,新功能不斷增加,業務變得複雜,維護成本高
  2. 業務耦合度高,代碼臃腫,團隊內部多人協作開發困難
  3. Android編譯代碼卡頓,單一工程下代碼耦合嚴重,修改一處需要重新編譯打包,耗時耗力。
  4. 方便單元測試,單獨改一個業務模塊,不需要著重關注其他模塊。

(3)優勢:

  1. 組件化將通用模塊獨立出來,統一管理,以提高復用,將頁面拆分為粒度更小的組件,組件內部出了包含UI實現,還可以包含數據層和邏輯層
  2. 每個組件度可以獨立編譯、加快編譯速度、獨立打包。
  3. 每個工程內部的修改,不會影響其他工程。
  4. 業務庫工程可以快速拆分出來,集成到其他App中。
  5. 迭代頻繁的業務模塊採用組件方式,業務線研發可以互不幹擾、提升協作效率,並控制產品質量,加強穩定性。
  6. 並行開發,團隊成員只關注自己的開發的小模塊,降低耦合性,後期維護方便等。

(4)考慮問題:

模式切換:如何使得APP在單獨調試跟整體調試自由切換

組件化後的每一個業務的module都可以是一個單獨的APP(isModuleRun=false), release 包的時候各個業務module作為lib依賴,這裡完全由一個變數控制,在根項目 gradle.properties裡面isModuleRun=true。isModuleRun狀態不同,載入application和AndroidManifest都不一樣,以此來區分是獨立的APK還是lib。

在build.grade裡面配置:

資源衝突

當我們創建了多個Module的時候,如何解決相同資源文件名合併的衝突,業務Module和BaseModule資源文件名稱重複會產生衝突,解決方案在於:

每個 module 都有 app_name,為了不讓資源名重名,在每個組件的 build.gradle 中增加 resourcePrefix 「xxx_強行檢查資源名稱前綴。固定每個組件的資源前綴。但是 resourcePrefix 這個值只能限定 xml 裡面的資源,並不能限定圖片資源。

依賴關係

多個Module之間如何引用一些共同的library以及工具類

組件通信

組件化之後,Module之間是相互隔離的,如何進行UI跳轉以及方法調用,具體可以使用阿里巴巴ARouter或者美團的WMRouter等路由框架。

各業務Module之前不需要任何依賴可以通過路由跳轉,完美解決業務之間耦合。

入口參數

我們知道組件之間是有聯繫的,所以在單獨調試的時候如何拿到其它的Module傳遞過來的參數

Application

當組件單獨運行的時候,每個Module自成一個APK,那麼就意味著會有多個Application,很顯然我們不願意重複寫這麼多代碼,所以我們只需要定義一個BaseApplication即可,其它的Application直接繼承此BaseApplication就OK了,BaseApplication裡面還可定義公用的參數。

學習&提升&進階直通車:有任何問題,歡迎你來一起交流,互相學習

2.插件化

(1)概述

提到插件化,就不得不提起方法數超過65535的問題,我們可以通過Dex分包來解決,同時也可以通過使用插件化開發來解決。插件化的概念就是由宿主APP去載入以及運行插件APP。

(2優點)

在一個大的項目裡面,為了明確的分工,往往不同的團隊負責不同的插件APP,這樣分工更加明確。各個模塊封裝成不同的插件APK,不同模塊可以單獨編譯,提高了開發效率。 解決了上述的方法數超過限制的問題。可以通過上線新的插件來解決線上的BUG,達到「熱修復」的效果。 減小了宿主APK的體積。

(3缺點)

插件化開發的APP不能在Google Play上線,也就是沒有海外市場。

最後

以上就是Android熱點技術部分的面試題目,後續還會更新其餘面試題內容,大家可以關注一下我,及時知曉我更新的知識點,同時這份面試集錦的整理也花費了我很多時間,有需要的朋友可以點擊這裡免費領取

漫漫Android開發之路,你我只是其中的一小部分……只有不斷的學習、進階,纔是我們的出路!纔跟得上時代的進步!為此我也是找了很多的資料。

這邊把我收錄整理的一些資料拿出來分享給大家,一方面是希望能夠幫助大家提高,一方面也是警醒自己,要不斷學習、不斷提升,進階纔是王道!

分享給大家的資料包括高級架構技術進階腦圖Android開發面試專題資料,還有高級進階架構資料包括但不限於【高級UI、性能優化、移動架構師、NDK、混合式開發(ReactNative+Weex)微信小程序、Flutter等全方面的Android進階實踐技術】希望能幫助大家學習提升進階,也節省大家在網上搜索資料的時間來學習,也是可以分享給身邊好友一起學習的!

資料領取方式:點擊這裡免費領取

關注一下專欄Android高級開發架構(記得看專欄簡介哦~)每天更新各種Android開發趣事、技術乾貨、進階架構知識、面試經驗分享等。如有好的文章也歡迎投稿。

Android高級開發架構?

zhuanlan.zhihu.com圖標


推薦閱讀:
相關文章