根据大佬总结的面试题目,根据自学的内容更新编绘一次笔记本的总结,希望完成之后能够记得住大部分的题目,以至于在面试中不会一问三不知
大佬总结的内容地址,感谢大佬启立豆:
https://blog.csdn.net/huangqili1314/article/details/79824830
听说这是安卓面试要记住的内容:
根据之前的面试总结了一下自己主要的方向,主要的内容是:
安卓四大件;
Fragment;
RecycleView;
数据存储;
线程与Handler;
混合开发(安卓与H5);
热门的第三方包;
.....
内容太多流下了无知的泪水。
Android的四大件:
(1.1)四大组件是什么
Activity, Service, ContentProvider 和 Broadcast
(1.2)四大组件的生命周期
Activity:
onCreate---onStart---onResume--onPause--onStop--onRestart--onDestory
Service:
Service的生命周期分为两种,startService与bindService
startService: onCreate--startService--onDestory(除非调用stopService或stopItself会后台一直运行Service)
bindService: onCreate--bindService--unBindService--onDestory
ContentProvider:
ContentProvider作用于跨进程通信,个人觉得它的生命周期就是:
onCreate---ContentProvider---onDestory
Broadcast:
广播分为静态注册和动态注册,静态注册的广播会一直存在于后台中,直到app任务被销毁
动态注册的生命周期依附于Activiy,最好是在onResume注册,onPause中注销以保证销毁Activity时不会注销广播:
onCreate---onResumes(registerBroadcast)---onPause(unregisterBroadcast)---onDestory
(1.3)Activity之间的通信方式
使用intent进行数据传输,intent中使用bundle进行数据的整合。startActivityForResult可以用于返回时获取返回内容
(1.4)横竖屏切换的时候,Activity 各种情况下的生命周期
横竖屏切换的本质上,是保存当前状态后销毁当前activity重新创建一个activity,所以它的生命周期是:
onSaveInstanceState--onPause--onStop--onDestory--onCreate--onStart--onRestoreInstanceState--onResume
(1.5)Activity与Fragment之间生命周期比较
Activity与Fragment的区别在于,Fragment依附在Activity中,所以它的生命周期会与Activity的onCraete与onDestory中有区别,其余没有区别。Fragment的生命周期是这样的:
Fragment的onCreate:onAttach--onCreate--onCreateView--onActivityCreated
Fragment的onDestory:onDestoryView--onDestory--onDetach
(1.6)Activity上有Dialog的时候按Home键时的生命周期
Activity中有Dialog时是Pasue的状态,所以按Home键是:onPause--onStop
如果过久不操作整个进程会被删除
(1.7)两个Activity 之间跳转时必然会执行的是哪几个方法?
跳转必然执行的是ActivityA的onPause,ActivityB的onCreate,onStart和onResume
如果ActivityB覆盖了A页面,则A会调用onStop;如果B已经存在与A的栈中,则B的onCreate不会触发
(1.8)Activity的四种启动模式对比以及使用场景
Standerd:默认模式,栈按照activity的触发顺序压栈
SingleTop:当Activity处于栈顶,调用本身会复用本身,多用于常更新本页面的情景
SingleTask:当Activity处于栈中时,调用会移除此activity到栈顶的所有activity并将其置于栈顶。多用于跳转到多个页面的入口页面
SingleInstance:一个Activity一个栈,适用与广泛性大的应用。用于功能点与程序分开的页面,如设置闹钟与闹钟提醒,闹钟提醒需要与程序分开。
(1.9)Activity状态保存与恢复
使用onSaveInstance去保存状态,使用onRestoreInstance去读取状态
(1.10)Activity 怎么和Service 绑定
使用bindService进行绑定,并使用unBindService进行解绑
(1.11)Service和Activity怎么进行数据交互?
可以使用Service与Listiner进行交互,Service与Handler进行交互,或者是使用AIDL,Boardcast等方法,也可以使用第三方库进行数据交互
(1.12)Service的开启方式
可以使用startService启动,也可以用bindService进行启动
(1.13)请描述一下Service 的生命周期
Service的生命周期有两种,分别是startService的生命周期和bindService的生命周期
startService:onCreate--startService--onDestory(除非调用stopService或者stopItself停用服务,Service会一直存在与后台)
bindService:onCreate---bindService---unBindService---onDestory
(1.14)谈谈你对ContentProvider的理解
ContentProvider使用于跨进程之间的通信,也可以用于app与数据库之间的交互。
(1.15)ContentProvider、ContentResolver、ContentObserver 之间的关系
ContentProvider是内容提供者,提供内容给应用进行处理
ContentResolver是内容处理者,用于修改数据库的内容
ContentObserver是内容观察这,相当于数据库的触发器,当uri产生某种变化时可以通过ContentObserver去进行监听
(1.16)请描述一下广播BroadcastReceiver的理解(实现原理)
BroadcastReceiver是广播接收器,用于接收广播。当Broadcast发出广播后,广播接收器通过对比内容是否相同来识别是否接收这个广播。这个内容的值在manifest的intentfilter可以进行定义。且BroadcastReceiver可以通过定义优先度来决定处理有序广播的顺序
(1.17)广播的分类
广播分为有序广播和无序广播
无序广播是当广播发出后,广播接收器在约同一时间接收到相同的广播,没有先后顺序。
有序广播是广播发出后,根据广播接收器的优先度来决定谁先接收并处理这个广播,但这样广播可能会被拦截
(1.18)广播使用的方式和场景
广播适用于跨进程的简单通信,也可以通过broadcast进行数据传递,但是有数据泄露的风险。也可以是系统与App的通信。比如系统在低电量时发了一个广播,app接收到了这个广播可以进行相应的处理等等
(1.19)本地广播和全局广播有什么差别?
本地广播只应用于当前app,全局广播作用于整个手机,可以是系统与app或者是app与app之间。区别是本地广播无法被外部识别,相比之下安全性比较高,缺点是无法跨进程通信
(1.20)Application 和 Activity 的 Context 对象的区别
Application与Activity的Context都是Context的一种,可以翻译为理解为上下文。Application的上下文与应用的生命周期相同,Activity的context则与Activity的生命周期相同。如果在Activity中的处理使用了Application的context会造成泄漏,因为没有办法在Activity回收的时候一并回收context。另一方面如果application的处理中使用了activity的context则有可能报错,因为生命周期的长度不一样。
以上是本人对四大件理解的面试问题整理,更多的资料全在原地址中,请多查看原文大佬的总结及前人的经验
另外如果我说的地方有什么不对的请大家留言,本人非常的菜,大家的指点能够让我更加理解开发的知识点。请不要含蓄,谢谢
安卓面试的准备一:https://www.jianshu.com/p/0a12b61a8f6d
安卓面试的准备二:https://www.jianshu.com/p/4459a9b6bba3