2021最新 Android 高级开发面试题以及答案整理(助你备战金九银十)

Posted 冬天的毛毛雨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021最新 Android 高级开发面试题以及答案整理(助你备战金九银十)相关的知识,希望对你有一定的参考价值。

前言

网上高级工程师面试相关文章鱼龙混杂,要么一堆内容,要么内容质量太浅, 鉴于此我整理了如下安卓开发高级工程师面试题以及答案帮助大家顺利进阶为高级工程师,目前我就职于某大厂安卓高级工程师职位,在当下大环境下也想为安卓工程师出一份力,通过我的技术经验整理了面试经常问的题,答案部分会是一篇文章或者几篇文章,都是我认真看过并且觉得不错才整理出来,大家知道高级工程师不会像刚入门那样被问的问题一句话两句话就能表述清楚,所以我通过过滤好文章来帮助大家理解,进入正题:

android 面试题

1.Activity相关

1.1.Activity的启动流程
1.2.onSaveInstanceState(),onRestoreInstanceState的掉用时机
1.3.activity的启动模式和使用场景
1.4.Activity A跳转Activity B,再按返回键,生命周期执行的顺序
1.5.横竖屏切换,按home键,按返回键,锁屏与解锁屏幕,跳转透明Activity界面,启动一个 Theme 为 Dialog 的 Activity,弹出Dialog时Activity的生命周期
1.6.onStart 和 onResume、onPause 和 onStop 的区别
1.7.Activity之间传递数据的方式Intent是否有大小限制,如果传递的数据量偏大,有哪些方案
1.8.Activity的onNewIntent()方法什么时候执行
1.9.显示启动和隐式启动
1.10.scheme使用场景,协议格式,如何使用
1.11.ANR 的四种场景
1.12.onCreate和onRestoreInstance方法中恢复数据时的区别
1.13.activty间传递数据的方式
1.14.跨App启动Activity的方式,注意事项
1.15.Activity任务栈是什么
1.16.有哪些Activity常用的标记位Flags
1.17.Activity的数据是怎么保存的,进程被Kill后,保存的数据怎么恢复的

2.Service相关

2.1.service 的生命周期,两种启动方式的区别
2.2.Service启动流程
2.3.Service与Activity怎么实现通信
2.4.IntentService是什么,IntentService原理,应用场景及其与Service的区别
2.5.Service 的 onStartCommand 方法有几种返回值?各代表什么意思?
2.6.bindService和startService混合使用的生命周期以及怎么关闭

3.BroadcastReceiver 相关

3.1.广播的分类和使用场景
3.2.广播的两种注册方式的区别
3.3.广播发送和接收的原理
3.4.本地广播和全局广播的区别

4.ContentProvider 相关

4.1.什么是ContentProvider及其使用
4.2.ContentProvider,ContentResolver,ContentObserver之间的关系
4.3.ContentProvider的实现原理
4.4.ContentProvider的优点
4.5.Uri 是什么

5.Handler 相关

5.1.Handler的实现原理
5.2.子线程中能不能直接new一个Handler,为什么主线程可以
5.3.Handler导致的内存泄露原因及其解决方案
5.4.一个线程可以有几个Handler,几个Looper,几个MessageQueue对象
5.5.Message对象创建的方式有哪些 & 区别
5.6.Handler 有哪些发送消息的方法
5.7.Handler的post与sendMessage的区别和应用场景
5.8.handler postDealy后消息队列有什么变化,假设先 postDelay 10s, 再postDelay 1s, 怎么处理这2条消息sendMessageDelayed-sendMessageAtTime-sendMessage
5.9.MessageQueue是什么数据结构
5.10.Handler怎么做到的一个线程对应一个Looper,如何保证只有一个MessageQueue ThreadLocal在Handler机制中的作用
5.11.HandlerThread是什么 & 好处 &原理 & 使用场景
5.12.IdleHandler及其使用场景
5.13.消息屏障,同步屏障机制what
5.14.子线程能不能更新UI
5.15.为什么Android系统不建议子线程访问UI
5.16.Android中为什么主线程不会因为Looper.loop()里的死循环卡死?
5.17.Handler消息机制中,一个looper是如何区分多个Handler的当Activity有多个Handler的时候,怎么样区分当前消息由哪个Handler处理处理message的时候怎么知道是去哪个callback处理的
5.18.Looper.quit/quitSafely的区别
5.19.通过Handler如何实现线程的切换
5.20.Handler 如何与 Looper 关联的
5.21.Looper 如何与 Thread 关联的
5.22.Looper.loop()源码
5.23.MessageQueue的enqueueMessage()方法如何进行线程同步的
5.24.MessageQueue的next()方法内部原理
5.25.子线程中是否可以用MainLooper去创建Handler,Looper和Handler是否一定处于一个线程
5.26.ANR和Handler的联系

我已将这些面试题及答案整理成PDF文档,大家如果对这面试题感兴趣操作学习的话,可以直接去我 CodeChina:https://codechina.csdn.net/u012165769/Android-T3 查阅,其实还有更多的面试学习文档都有记录在上面。希望这些面试题能助你在金九银十面试季中斩获心仪的Offer。

6.View绘制 相关

6.1.View绘制流程
6.2.MeasureSpec是什么
6.3.子View创建MeasureSpec创建规则是什么
6.4.自定义Viewwrap_content不起作用的原因
6.5.在Activity中获取某个View的宽高有几种方法
6.6.为什么onCreate获取不到View的宽高
6.7.View#post与Handler#post的区别
6.8.Android绘制和屏幕刷新机制原理
6.9.Choreography原理
6.10.什么是双缓冲
6.11.为什么使用SurfaceView
6.12.什么是SurfaceView
6.13.View和SurfaceView的区别
6.14.SurfaceView为什么可以直接子线程绘制
6.15.SurfaceView、TextureView、SurfaceTexture、GLSurfaceView
6.16.getWidth()方法和getMeasureWidth()区别
6.17.invalidate() 和 postInvalidate() 方法的区别
6.18.Requestlayout,onlayout,onDraw,DrawChild区别与联系
6.19.LinearLayout、FrameLayout 和 RelativeLayout 哪个效率高
6.20.LinearLayout的绘制流程
6.21.自定义 View 的流程和注意事项
6.22.自定义View如何考虑机型适配
6.23.自定义控件优化方案
6.24.invalidate怎么局部刷新
6.25.View加载流程(setContentView)

7.View事件分发相关

7.1.View事件分发机制
7.2.view的onTouchEvent,OnClickListerner和OnTouchListener的onTouch方法 三者优先级
7.3.onTouch 和onTouchEvent 的区别
7.4.ACTION_CANCEL什么时候触发
7.5.事件是先到DecorView还是先到Window
7.6.点击事件被拦截,但是想传到下面的View,如何操作
7.7.如何解决View的事件冲突
7.8.在 ViewGroup 中的 onTouchEvent 中消费 ACTION_DOWN 事件,ACTION_UP事件是怎么传递
7.9.Activity ViewGroup和View都不消费ACTION_DOWN,那么ACTION_UP事件是怎么传递的
7.10.同时对父 View 和子 View 设置点击方法,优先响应哪个
7.11.requestDisallowInterceptTouchEvent的调用时机

8.RecyclerView 相关

8.1.RecyclerView的多级缓存机制,每一级缓存具体作用是什么,分别在什么场景下会用到哪些缓存
8.2.RecyclerView的滑动回收复用机制
8.3.RecyclerView的刷新回收复用机制
8.4.RecyclerView 为什么要预布局
8.5.ListView 与 RecyclerView区别
8.6.RecyclerView性能优化

9.Viewpager&Fragment 相关

由于整理的面试题比较多,文章篇幅长度有限,无法全部展现出来,像后面其实还有很多,比如:

10.WebView 相关
11.动画 相关
12.Bitmap 相关
13.mvc&mvp&mvvm 相关
14.Binder 相关
15.内存泄漏&内存溢出
16.性能优化
17.Window&WindowManager
18.AMS
19.系统启动
20.App启动&打包&安装
21.序列化
22.Art & Dalvik 及其区别
23.模块化&组件化
24.热修复&插件化
25.AOP
26.jectpack
27.开源框架

我已将这些面试题及答案整理成PDF文档,大家如果对这面试题感兴趣操作学习的话,可以直接去我 CodeChina:https://codechina.csdn.net/u012165769/Android-T3 查阅,其实还有更多的面试学习文档都有记录在上面。希望这些面试题能助你在金九银十面试季中斩获心仪的Offer。

以上是关于2021最新 Android 高级开发面试题以及答案整理(助你备战金九银十)的主要内容,如果未能解决你的问题,请参考以下文章

2021最新Android中高级开发必知必会面试题以及答案整理

2022最新版《Android高级开发面试题大全》开源分享

2022最新Android面试题(大厂Android中高级面试题持续更新~)

面试专题2021年字节阿里网易等 Handler 面试题集合,Android高级开发必备!

2021大厂Android面试经历,高级面试题+解析

Android高级开发面试题以及笞案整理