推薦:《2020年Android面試題大匯總【收藏】》
- ##前言
- 很多人在面試之前,可能沒有在網路公司工作過或是說工作過但年頭較短,不知道網路公司技術面試都會問哪些問題?再加上可能自己準備也不充分,去面試沒幾個回合就被面試官幾個問題打蒙了,最後以慘敗收場。
- 下述是我整理的Android面試題匯總,由於篇幅原因,在這只把熱點技術部分的題目列舉出來,後續還會更新其餘面試題內容,大家可以關註一下我,及時知曉我更新的知識點,同時這份面試集錦的整理也花了我很多時間!
- 1.元件化
(1)概念:
元件化:是將一個APP分成多個module,每個module都是一個元件,也可以是一個基礎庫供元件依賴,開發中可以單獨調試部分元件,元件中不需要相互依賴但是可以互相調用,最終發布的時候所有元件以lib的形式被主APP工程依賴打包成一個apk。
- (2)由來:
- APP版本迭代,新功能不斷增加,業務變得複雜,維護成本高
- 業務耦合度高,程式碼臃腫,團隊內部多人協作開發困難
- Android編譯程式碼卡頓,單一工程下程式碼耦合嚴重,修改一處需要重新編譯打包,耗時耗力。
- 方便單元測試,單獨改一個業務模組,不需要專注於其他模組。
(3)優勢:
元件化將通用模組獨立出來,統一管理,以提高複用,將頁面拆分為粒度更小的元件,元件內部出了包含UI實現,還可以包含資料層和邏輯層
每個元件度可以獨立編譯、加快編譯速度、獨立打包。
每個工程內部的修改,不會影響其他工程。
業務庫工程可以快速分割出來,整合到其他App。
迭代頻繁的業務模組採用元件方式,業務線研發可以互不干擾、提升協作效率,並控制產品質量,加強穩定性。
並行開發,團隊成員只專注於自己的開發的小模組,降低耦合性,後期維護方便等。
(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熱點技術面試題彙總的詳細內容。更多資訊請關注PHP中文網其他相關文章!