下面的面试题都是我在面试过程中遇到的,这里总结一下。
1.android lottie动画的使用?
答:先让美工公用工具生成json格式的动画文件,放到asset目录,通过lottieanimationView类加载动画文件实现功能。
2.android图片的三级缓存?
答:强应用,软应用,系统文件,网络
3.怎样更改Glide的缓存路径?
答:实现glidebuilder接口重现里面的方法,通过glidebuilder类设置,在配置文件路径。
4.自定义View的三种测量模式?
答:不确定值,最大值,完全准确值
5.android事件分发机制?
答:用户点击屏幕产生MotionEvent(点击事件) Activity接收MotionEvent(点击事件)—>传递给Window—>传递给DecorView(ViewGroup)—>执行ViewGroup的dispatchTouchEvent() ViewGroup接收到MotionEvent(点击事件)之后,按照事件分发机制去分发事件。 若当子View不消耗事件,onTouchEvent()返回false,那么这个事件会传递回其父View的onTouchEvent(),如若父View也不消耗,最后会传递回给Activity进行处理。
6.讲讲MVP架构?
答:Model: 处理数据,包过网络请求、提交数据;缓存、读写本地数据、写入;写入、读取数据库数据等 View: 提供Activity需要实现方法,本身是一个接口,实际在Presenter中被调用执行。 Presenter: 业务处理,内部持有Model和View;使用CallBack获取Model获取结果信息。 Activity: 实现View提供方法,持有Presenter对象;在监听事件中调用Presenter方法,
7.Rxjava中map和flatMap的区别?
答:
1、返回值上面: map变换后可以返回任意值,而flatMap则只能返回ObservableSource类型
2、变换后的输出: map只能进行一对一的变换,而flatMap则可以进行一对一,一对多,多对多的变换,具体的变换规则根据我们设置的变换函数mapper来定
8.View的绘制流程?
答:View 绘制中主要流程分为measure,layout, draw 三个阶段。
measure :根据父 view 传递的 MeasureSpec 进行计算大小。 layout :根据 measure 子 View 所得到的布局大小和布局参数,将子View放在合适的位置上。 draw :把 View 对象绘制到屏幕上。
9.你做过哪些自定义控件?
答:这个问题大部分面试官都会问,看自己的实际情况回答。
10..android6.0到9.0的应⽤适配
答:https://mp.weixin.qq.com/s?__biz=MzAxMTI4MTkwNQ==&mid=2650826756&idx=1&sn=dd888498081cb61e9bdb7bc6ebcf3a55&chksm=80b7bc9ab7c0358c1e85150120ecdb3c3164670c8b27cecb0c16621667e229c929f65a6bbae6&scene=0&subscene=131&ascene=7&devicetype=android-28&version=260703f2&nettype=3gnet&abtest_cookie=BAABAAoACwASABQABAAmlx4AV5keAJmZHgCgmR4AAAA%3D&lang=zh_CN&pass_ticket=CMPfIDis7lMyANcY39ZtUakJIKqcOArrwyUfSa4%2FPd9SzwwoEyOIepvHr3f7Ckkd&wx_header=1
10.一张面试题
- webview 定位权限监听方法是什么?
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onGeolocationPermissionsShowPrompt(String origin,Callback callback) {
callback.invoke(origin, true, false);
super.onGeolocationPermissionsShowPrompt(origin, callback);
}
});
12.你觉得你比你的同事强在哪里?
答:这个问题我不知道怎么回答,