安卓面试各大公司面试资料搜集集合安卓

安卓面试的准备:一

2020-07-01  本文已影响0人  假面纯牛奶

根据大佬总结的面试题目,根据自学的内容更新编绘一次笔记本的总结,希望完成之后能够记得住大部分的题目,以至于在面试中不会一问三不知

大佬总结的内容地址,感谢大佬启立豆

https://blog.csdn.net/huangqili1314/article/details/79824830

听说这是安卓面试要记住的内容:

这TM记个鬼啊

根据之前的面试总结了一下自己主要的方向,主要的内容是:

                安卓四大件;

                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

安卓面试的准备三:https://www.jianshu.com/p/2b6d7fcb2bd5

安卓面试的准备四:https://www.jianshu.com/p/728b43773930

上一篇下一篇

猜你喜欢

热点阅读