注:由于实际开发与参考答案会有所不一样,再者怕误导你们,因此这些面试题答案仍是本身去理解!面试官会针对简历中提到的知识点由浅入深提问,因此不要背答案,多理解。
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打造淘宝式权限验证以及行为统计