注:由於實際開發與參考答案會有所不一樣,再者怕誤導你們,因此這些面試題答案仍是本身去理解!面試官會針對簡歷中提到的知識點由淺入深提問,因此不要背答案,多理解。
1.你所知道的設計模式有哪些?java
參考回答android
模式、狀態模式、訪問者模式、中介者模式、解釋器模式。面試
2.談談MVC、MVP和MVVM,好在哪裏,很差在哪裏 ?數據庫
參考回答:後端
2.1.MVC:設計模式
總結緩存
具備必定的分層,model完全解耦,controller和view並無解耦層與層之間的交互儘可能使用回調或者去使用消息機制去完成,儘可能避免直接持有 controller和view在android中沒法作到完全分離,但在代碼邏輯層面必定要分清業務邏輯被放置在model層,可以更好的複用和修改增長業務安全
2.2.MVP網絡
經過引入接口BaseView,讓相應的視圖組件如Activity,Fragment去實現BaseView,實現了視圖層的獨立,經過中間層Preseter實現了Model和View的徹底解耦。MVP完全解決了MVC中View和Controller傻傻分不清楚的問題,可是隨着業務邏輯的增長,一個頁面可能會很是複雜,UI的改變是很是多,會有很是多的case,這樣就會形成View的接口會很龐大數據結構
2.3.MVVM
MVP中咱們說過隨着業務邏輯的增長,UI的改變多的狀況下,會有很是多的跟UI相關的case,這樣就會形成View的接口會很龐大。而MVVM就解決了這個問題,經過雙向綁定的機制,實現數據和UI內容,只要想改其中一方,另外一方都可以及時更新的一種設計理念,這樣就省去了不少在View層中寫不少case的狀況,只須要改變數據就行。
2.4.三者如何選擇?
3.封裝p層以後.若是p層數據過大,如何解決?
參考回答:
對於MVP模式來講,P層若是數據邏輯過於臃腫,建議引入RxJava或則Dagger,越是複雜的邏輯,越能體現RxJava的優越性
4.是否能從Android中舉幾個例子說說用到了什麼設計模式 ?
參考回答:
5.裝飾模式和代理模式有哪些區別 ?
參考回答:
裝飾器模式與代理模式的區別就在於
6.實現單例模式有幾種方法 ?懶漢式中雙層鎖的目的是什麼 ?兩次判空的目的又是什麼 ?
參考回答:
7.用到的一些開源框架,介紹一個看過源碼的,內部實現過程。
參考回答:
面試常客:Okhttp,Retrofit,Glide,RxJava,GreenDao,Dagger等
8.Fragment若是在Adapter中使用應該如何解耦?
參考回答:
須要更多學習資料的能夠加個人合做QQ羣925019412
今日更新視頻:
動態代理實現AOP打造淘寶式權限驗證以及行爲統計