Android高级进阶android面试录Android开发

2019中级Android开发面试解答之设计模式篇

2019-06-13  本文已影响11人  小小小小怪兽_666

注:因为实际开发与参考答案会有所不同,再者怕误导大家,所以这些面试题答案还是自己去理解!面试官会针对简历中提到的知识点由浅入深提问,所以不要背答案,多理解。

1.你所知道的设计模式有哪些?

参考回答

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中使用应该如何解耦?

参考回答:

需要更多学习资料的可以加我的合作群925019412


今日更新视频:
动态代理实现AOP打造淘宝式权限验证以及行为统计
上一篇下一篇

猜你喜欢

热点阅读