视图相关
系统View组件
- ListView
- Q:ListView为什么可以加载1000个条目不崩?
- Q:什么是RecycleBin,它是怎么和ListView回收和复用的?
- Q:你知道notifyDataSetChanged方法干了啥吗?调用之后为啥ListView就刷新了?
- Q:你知道ListView的跟手滑动和fling是怎么实现的吗?
- 考察知识点:ListView源码、设计模式
- 思路:这其实是考察是否看过ListView的源码,对于适配器模式、观察者模式是否有自己的见解。
- 参考答案:详见我这篇文章Android面试—ListView原理及fling分析
- ScrollView
- Q:ScrollView的测量过程,滑动过程以及fling的实现?
- FrameLayout
- Q:FrameLayout的布局过程?
- LinearLayout
- Q:LinearLayout的布局过程?
- RecyclerView
- CoordinatorLayout(协同布局)
- ConstraintLayout(约束布局)
测量
-
Q:onMeasure里面的MeasureSpec哪里来的?它的数据结构怎么样?怎么用?
- 考察知识点:测量流程、自定义View
- 思路:这题其实就是考察是否熟悉绘制流程的源码,我在5分钟告诉你,Activity的视图绘制流程(onMeasure、onLayout、onDraw的调用和参数解释)文章中讲过。
- 参考回答:MeasureSpec在刚爷的书里面讲的很细,onMeasure中的MeasureSpec是由父布局的onMeasure方法中的measureChild调用,其中的MeasureSpec是由父布局的MeasureSpec和子布局的layoutParams共同决定的,由size和mode组成,是一个32位的int值,其中前2位是mode,后30位是size,主要提供getSize()和getMode()方法,其中mode有Unspecified、exactly、at_most几种类型。
绘制相关
- Q:什么是SurfaceFlinger FrameBuffer Surface ?
- Q:为什么我们说主线程的操作不要操作16ms?
- Q:什么是VSYNC(垂直同步)、格栅化?
- Q:什么是掉帧jank,怎么处理?(双缓冲和三缓存机制)
设计模式
- 依赖注入
- 代理模式与动态代理
- 观察者模式
ps
这篇是上篇2019最全Android面试题总结(持续更新中。。。)的答案,上篇主要是题目总结。