Android开发Android技术知识Android进阶之路

行情艰难,Android初中级面试题助你逆风翻盘,附详细答案解析

2020-03-04  本文已影响0人  Z_萧晓

如今面试旺季很多伙伴都在复习刷题为之后的面试做准备,今天分享一位大佬(夜猫少年)的面试题给大家,给大家查漏补缺~文末有我自己整理的面试专题PDF

Activity篇

1、说下Activity生命周期 ?

参考解答:在正常情况下,Activity的常用生命周期就只有如下7个

延伸:从整个生命周期来看,onCreate和onDestroy是配对的,分别标识着Activity的创建和销毁,并且只可能有一次调用;从Activity是否可见来说,onStart和onStop是配对的,这两个方法可能被调用多次;从Activity是否在前台来说,onResume和onPause是配对的,这两个方法可能被调用多次;除了这种区别,在实际使用中没有其他明显区别;

2、Activity A 启动另一个Activity B 会调用哪些方法?****如果B是透明主题的又或则是个DialogActivity呢 ?

参考解答:Activity A 启动另一个Activity B,回调如下:

Activity A 的onPause() → Activity B的onCreate() → onStart() → onResume() → Activity A的onStop();

如果B是透明主题又或则是个DialogActivity,则不会回调A的onStop;

3、说下onSaveInstanceState()方法的作用 ? 何时会被调用?

参考解答:发生条件:异常情况下(系统配置发生改变时导致Activity被杀死并重新创建、资源内存不足导致低优先级的Activity被杀死)

系统会调用onSaveInstanceState来保存当前Activity的状态,此方法调用在onStop之前,与onPause没有既定的时序关系;

当Activity被重建后,系统会调用onRestoreInstanceState,并且把onSave(简称)方法所保存的Bundle对象同时传参给onRestore(简称)和onCreate(),因此可以通过这两个方法判断Activity是否被重建,调用在onStart之后;

官方文档

4、说下 Activity的四种启动模式、应用场景 ?

官方文档

5、了解哪些Activity常用的标记位Flags?

官方文档

6、说下 Activity跟window,view之间的关系?

延伸:

WindowManager为每个Window创建Surface对象,然后应用就可以通过这个Surface来绘制任何它想要绘制的东西。而对于WindowManager来说,这只不过是一块矩形区域而已。

Surface其实就是一个持有像素点矩阵的对象,这个像素点矩阵是组成显示在屏幕的图像的一部分。我们看到显示的每个Window(包括对话框、全屏的Activity、状态栏等)都有他自己绘制的Surface。而最终的显示可能存在Window之间遮挡的问题,此时就是通过SurfaceFlinger对象渲染最终的显示,使他们以正确的Z-order显示出来。一般Surface拥有一个或多个缓存(一般2个),通过双缓存来刷新,这样就可以一边绘制一边加新缓存。

View是Window里面用于交互的UI元素。Window只attach一个View Tree(组合模式),当Window需要重绘(如,当View调用invalidate)时,最终转为Window的Surface,Surface被锁住(locked)并返回Canvas对象,此时View拿到Canvas对象来绘制自己。当所有View绘制完成后,Surface解锁(unlock),并且post到绘制缓存用于绘制,通过Surface Flinger来组织各个Window,显示最终的整个屏幕

推荐文章:Activity、View、Window的理解一篇文章就够了(https://blog.csdn.net/zane402075316/article/details/69822438

7、横竖屏切换的Activity生命周期变化?

不设置Activity的android:configChanges时,切屏会销毁当前Activity,然后重新加载调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次;

onPause() →onStop()→onDestory()→onCreate()→onStart()→onResume()

设置Activity的android:configChanges="orientation",经过机型测试:

设置Activity的android:configChanges="orientation|keyboardHidden|screenSize"时,机型测试通过,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法;

推荐文章:Android 横竖屏切换加载不同的布局

8、如何启动其他应用的Activity?

在保证有权限访问的情况下,通过隐式Intent进行目标Activity的IntentFilter匹配,原则是:

9、Activity的启动过程?(重点)

推荐文章:Android四大组件启动机制之Activity启动过程

Fragment

1、谈一谈Fragment的生命周期?

Fragment从创建到销毁整个生命周期中涉及到的方法依次为:onAttach()→onCreate()→ onCreateView()→onActivityCreated()→onStart()→onResume()→onPause()→onStop()→onDestroyView()→onDestroy()→onDetach(),其中和Activity有不少名称相同作用相似的方法,而不同的方法有:

推荐文章:Android之Fragment优点

2、谈谈Activity和Fragment的区别?

相似点:都可包含布局、可有自己的生命周期

不同点:

3、Fragment中add与replace的区别(Fragment重叠)

4、getFragmentManager、getSupportFragmentManager 、getChildFragmentManager之间的区别?

getFragmentManager()所得到的是所在fragment 的父容器的管理器,

getChildFragmentManager()所得到的是在fragment 里面子容器的管理器,

如果是fragment嵌套fragment,那么就需要利用getChildFragmentManager();

因为Fragment是3.0 Android系统API版本才出现的组件,所以3.0以上系统可以直接调用getFragmentManager()来获取FragmentManager()对象,而3.0以下则需要调用getSupportFragmentManager() 来间接获取;

5、FragmentPagerAdapter与FragmentStatePagerAdapter的区别与使用场景

相同点 :二者都继承PagerAdapter

不同点 :FragmentPagerAdapter的每个Fragment会持久的保存在FragmentManager中,只要用户可以返回到页面中,它都不会被销毁。因此适用于那些数据相对静态的页,Fragment数量也比较少的那种;

FragmentStatePagerAdapter只保留当前页面,当页面不可见时,该Fragment就会被消除,释放其资源。因此适用于那些数据动态性较大、占用内存较多,多Fragment的情况;

Service

1、谈一谈Service的生命周期?

参考回答:Service的生命周期涉及到六大方法:

推荐文章:Android组件系列----Android Service组件深入解析

2、Service的两种启动方式?****区别在哪?

startService():通过这种方式调用startService,onCreate()只会被调用一次,多次调用startSercie会多次执行onStartCommand()和onStart()方法。如果外部没有调用stopService()或stopSelf()方法,service会一直运行。

bindService():如果该服务之前还没创建,系统回调顺序为onCreate()→onBind()。如果调用bindService()方法前服务已经被绑定,多次调用bindService()方法不会多次创建服务及绑定。如果调用者希望与正在绑定的服务解除绑定,可以调用unbindService()方法,回调顺序为onUnbind()→onDestroy();

推荐文章:Android Service两种启动方式详解

3、如何保证Service不被杀死 ?

1)onStartCommand方式中,返回START_STICKY或则START_REDELIVER_INTENT

2)提高Service的优先级:在AndroidManifest.xml文件中对于intent-filter可以通过android:priority = "1000"这个属性设置最高优先级,1000是最高值,如果数字越小则优先级越低,同时适用于广播;

3)在onDestroy方法里重启Service:当service走到onDestroy()时,发送一个自定义广播,当收到广播时,重新启动service;

4)提升Service进程的优先级:进程优先级由高到低:前台进程 一 可视进程 一 服务进程 一 后台进程 一 空进程。可以使用startForeground将service放到前台状态,这样低内存时,被杀死的概率会低一些;

5)系统广播监听Service状态

6)将APK安装到/system/app,变身为系统级应用

注意:以上机制都不能百分百保证Service不被杀死,除非做到系统白名单,与系统同生共死。

4、能否在Service开启耗时操作 ?**** 怎么做 ?

参考回答:Service默认并不会运行在子线程中,也不运行在一个独立的进程中,它同样执行在主线程中(UI线程)。换句话说,不要在Service里执行耗时操作,除非手动打开一个子线程,否则有可能出现主线程被阻塞(ANR)的情况;

5、用过哪些系统Service ?

参考回答:

6、了解ActivityManagerService吗?发挥什么作用

参考回答:ActivityManagerService是Android中最核心的服务 , 主要负责系统中四大组件的启动、切换、调度及应用进程的管理和调度等工作,其职责与操作系统中的进程管理和调度模块类似;

推荐文章:ActivityManagerService分析——AMS启动流程

Broadcast Receiver

1、广播有几种形式 ? 都有什么特点 ?

推荐文章:Android四大组件:BroadcastReceiver史上最全面解析

2、广播的两种注册方式 ?

参考回答:

3、广播发送和接收的原理了解吗 ?(Binder机制、AMS)

参考回答:

推荐文章:广播的底层实现原理

ContentProvider

1、ContentProvider了解多少?

ContentProvider作为四大组件之一,其主要负责存储和共享数据。与文件存储、SharedPreferences存储、SQLite数据库存储这几种数据存储方法不同的是,后者保存下的数据只能被该应用程序使用,而前者可以让不同应用程序之间进行数据共享,它还可以选择只对哪一部分数据进行共享,从而保证程序中的隐私数据不会有泄漏风险。

推荐文章:Android:关于ContentProvider的知识都在这里了!

2、ContentProvider的权限管理?

3、说说ContentProvider、ContentResolver、ContentObserver 之间的关系?

文末

这次疫情下,Android开发的岗位明显少了很多,开的工资也不是很高,除了一些大公司,比如字节跳动,小公司工资不高,要求还是挺高的,感觉啥都要会,所以Android开发现在也是亚历山大,所以离职要慎重,不要裸辞,多弥补下基础知识,梳理下自己的工作及对应的应用及实践,准备充足点,不要浪费少量的机会。

所以有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。

不管怎么样,不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流啊~

最后在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司19年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

Android学习PDF+架构视频+面试文档+源码笔记

【Android开发核心知识点笔记】

【Android思维脑图(技能树)】

【Android核心高级技术PDF文档,BAT大厂面试真题解析】

【Android高级架构视频学习资源】

Android精讲视频领取学习后更加是如虎添翼!进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!

【Android进阶学习视频】、【全套Android面试秘籍】关注我【主页简介】或者【简信我】查看免费领取方式!

上一篇 下一篇

猜你喜欢

热点阅读