安卓系统面经_安卓面经(10/20)Recovery框架

牛客高级系列专栏:

安卓(安卓系统开发也要掌握)

嵌入式

  • 本人是2020年毕业于广东工业大学研究生:许乔丹,有国内大厂CVTE和世界500强企业安卓开发经验,该专栏整理本人从嵌入式Linux转Android系统开发过程中对常见安卓系统开发面试题的理解;
  • 1份外卖价格助您提高安卓面试准备效率,为您面试保驾护航!!

正文开始⬇

面试题预览

1)Recovery框架在Android系统中扮演什么角色?(有什么作用)⭐⭐⭐⭐⭐
2)Android系统OTA升级和Recovery有什么关联?⭐⭐⭐⭐
3)讲述下Recovery的启动流程?⭐⭐⭐⭐⭐
4)Android Recovery框架在应对系统故障和异常情况方面有何优点?请简述其优点和具体应用场景。⭐⭐⭐⭐⭐
5)Android Recovery框架中的recovery分区包含哪些内容?请说明其作用。⭐⭐

1、Recovery简介

Recovery模式是Android系统中的一种特殊模式,用户可以在该模式下进行一系列高权限操作,例如系统恢复、安装更新、备份数据等,类似于windows PE或DOS。在这个模式下我们可以刷入新的Android系统,或者对已有的系统进行备份或升级,也可以在此模式下恢复出厂设置。

系统进入recovery模式后会装载recovery分区,该分区包含recovery.img(与boot.img类似,也包含了标准的内核和根文件系统).进入该模式后主要就是运行了recovery服务(/sbin/recovery)。

1.1 进入Recovery的常见方法

1)组合键进入:
在关机情况下,同时按住电源(Power)+ 音量加(Vol +)键,直到出现Recovery界面为止。注:有的系统按键方式可能不同。一般为下面三种:

  • Volume UP + Power
  • Volume DOWN + Power
  • Home + Power

2)使用安卓辅助工具,如:刷机精灵、360手机助手等等。
3)使用adb命令reboot recovery启动。

1.2 Recovery功能简介

1、擦除用户数据

恢复系统到出厂模式,即擦除用户数据和缓存数据。

2、系统升级

系统升级的概念比较广,包括系统文件的升级、恢复损害的系统数据、firmware的升级,以及应用软件的维护,甚至影音文件的下载。系统升级需要使用特定的升级包,Android使用OTA[1]升级包,其初衷在于可以发挥广域无线通信链路的优势,如3G。

升级方式有两种:

  • 在线升级 利用无线通信网络,系统自动连接更新源,查看有无升级包、下载OTA升级包,然后给出提示,发起升级过程,如下左图。感觉有点类似Windows XP的系统更新,只不过升级的时候,Android系统会重启系统进入Recovery模式。另外Android的升级内容很广泛,比如可以通过这种方式安装应用程序。T-Mobile已经提供了这种服务,如升级服务器以OTA无线方式向G1终端发送Android平台RC33升级包,传输媒介可以是3G网络、Wi-Fi或GPRS。
  • 离线升级 可以将下载到的OTA包放在SD卡里,通过离线方式升级,如下右图所示。这种升级方式比较灵活,不用花费无线流量。这样一来,使用自己制作的OTA进行升级也成为可能。事实上,G1就是用这种方式进行刷机的,比如更新radio firmware以支持某个频段。

2、Recovery启动流程

在Bootloader开始如果没有组合键按下,就从MISC分区读取BCB块的command字段(在主系统时已经将“boot-recovery”写入)。然后就以Recovery模式开始启动。与正常启动不同的是Recovery模式下加载的镜像是recovery.img。这个镜像同boot.img类似,也包含了标准的内核和根文件系统。其后就与正常的系统启动类似,也是启动内核,然后启动文件系统。在进入文件

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

Android系统面试题全解析 文章被收录于专栏

2020年研究生毕业后,工作重心由嵌入式Linux转为安卓系统,Android发展已经很多年,网上面向中初级Android系统开发的面经还比较少,也不够集中,因此梳理出本专栏,本专栏收集了本人工作中持续积累的众多安卓系统知识,持续更新中。

全部评论

相关推荐

PDD服务端一面(技术栈不是很匹配,没问项目,一直拷打各种场景和why)1. 算法刷了多少道,先做一道题吧,判断字符串能否组成等差数列2. 读哪本书让你最有收获,为什么3. STL里vector底层实现4. 线程安全吗,为什么,什么情况下不安全5. Unordered_map底层实现,负载因子再哈希等6. 哈希表插入流程7. 线程安全吗,哈希冲突怎么办,什么时候扩容,扩容具体过程8. Map和unordered_map管理自定义类怎么做9. 线上服务内存里一个哈希表缓存,想要从数据库定期更新数据,怎么提高效率10. 怎么保证更新时的客户端读写性能11. 内存泄漏的情况12. 智能指针怎么管理内存13. 什么结构适合作为索引14. 除了B、B+、AVL、红黑树、Hash、跳表还有别的吗15. 红黑树怎么用作索引的,有哪些情况16. B+一个节点大小受什么限制17. 行溢出怎么办18. 溢出页放在哪里19. 怎么与溢出页建立联系20. 访问性能会受影响吗二面1.自我介绍2.tcpudp区别及场景3.quic怎么保证可靠的4.quic自由发挥说5.三次握手过程还有对应api6.虚拟内存自由发挥说7.你刚才提到vm_area_struct,了解怎么查看数量吗8.你刚才提到红黑树,说一说红黑树9.红黑树怎么实现定时器的10.CFS调度算法是什么11.什么时候发生内存的换入换出12.你刚才提到pagecache,他是怎么管理的13. LRUM了解过吗14.非递归二叉树前序遍历15.实现红黑树(不会)16.红黑树反转(没写出来,自己沉默地写了个二叉树反转)17.尴尬一会,你知道红黑树的节点包括什么吗,答value 左右父节点和颜色,ok那你写个结构体定义吧
牛客208528989号:整这么难
点赞 评论 收藏
分享
评论
1
10
分享

创作者周榜

更多
牛客网
牛客企业服务