面试,妥妥的Android开发经验谈Android开发

妥妥的去面试之Android基础(六)

2019-03-06  本文已影响40人  树獭非懒

笔者由于在近期需要找工作,所以近期最主要的任务就是准备面试,不打无准备之仗。只有你准备充分了,那么你想得到的机会才可能有机会入你怀中。

笔者会将准备面试的学习过程记录下来,方便自己复盘的同时也希望能给一道找工作的小伙伴们一些帮助。笔者准备的内容大纲如下

Android面试大纲.png

妥妥的去面试之Android基础(一)

妥妥的去面试之Android基础(二)

妥妥的去面试之Android基础(三)

妥妥的去面试之Android基础(四)

妥妥的去面试之Android基础(五)

关于Android基础篇部分,不出意外的话这篇应该是终结篇了~~

那么上最后的正菜吧

谈谈你对MVC、MVP和MVVM的理解

MVC分三个层

总结:

具有一定的分层,model彻底解耦,controller和view并没有解耦。Controller既要承担页面的初始化又要处理控制逻辑,承担的功能过多,其代码量也会过多。Model和View要直接交互,它们耦合度依然更高。

MVP

MVP在MVC的基础上,引入了中间层Present把Model和View层彻底解耦,由Present来控制逻辑,解决了MVC中Controller和View分不清的问题。但是随着业务逻辑的增加,一个页面可能会非常复杂,UI的改变是非常多,会有非常多的case,这样就会造成View的接口会很庞大。

MVVM

MVP中我们说过随着业务逻辑的增加,UI的改变多的情况下,会有非常多的跟UI相关的case,这样就会造成View的接口会很庞大。而MVVM就解决了这个问题,通过双向绑定的机制,实现数据和UI内容,只要想改其中一方,另一方都能够及时更新的一种设计理念,这样就省去了很多在View层中写很多case的情况,只需要改变数据就行。

MVVM与DataBinding的关系?

MVVM是一种思想,DataBinding是谷歌推出的方便实现MVVM的工具。
看起来MVVM很好的解决了MVC和MVP的不足,但是由于数据和视图的双向绑定,导致出现问题时不太好定位来源,有可能数据问题导致,也有可能业务逻辑中对视图属性的修改导致。如果项目中打算用MVVM的话可以考虑使用官方的架构组件ViewModel、LiveData、DataBinding去实现MVVM。

三者如何选择?

HttpClient和HttpUrlConnection的区别?

invalidate和requestLayout的区别及使用?

如果需要局部刷新怎么办?

使用 requestFocus()方法,他只刷新你要刷新的地方。

Android对HashMap做了优化后推出的新的容器类是什么?

比如使用了SparseArray、ArrayMap用来代替HashMap。它们在有些情况下能带来更好的性能提升。

SparseArray

SparseArray比HashMap更省内存,在某些条件下性能更好,主要是因为它避免了对key的自动装箱(int转为Integer类型),它内部则是通过两个数组来进行数据存储的,一个存储key,另外一个存储value,为了优化性能,它内部对数据还采取了压缩的方式来表示稀疏数组的数据,从而节约内存空间。

SparseArray在存储和读取数据时候,使用的是二分查找法。

满足下面两个条件我们可以使用SparseArray代替HashMap

建议与此篇博客共同食用 Android内存优化(使用SparseArray和ArrayMap代替HashMap)

面试系列的文章都放于 面试妥妥的 建议小伙伴们关注该专题

上一篇 下一篇

猜你喜欢

热点阅读