2 Star 20 Fork 42

胡老皮 / 2023年Android面试题合集解析

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
系统启动流程面试题.md 2.52 KB
一键复制 编辑 原始数据 按行查看 历史
胡老皮 提交于 2023-02-08 02:47 . 系统启动流程

这套Android面试题汇总大全,希望对大家有帮助哈~

全部答案,更新日期:2月8日,直接下载吧

全部答案,更新日期:2023年2月8日,直接下载吧!

下载链接:高清全答案解析,累计935页+大厂面试题 PDF

1、你了解Android系统启动流程吗?

A: 当 按 电 源 键 触 发 开 机 , 首 先 会 从 ROM 中 预 定 义 的 地 方 加 载 引 导 程 序 BootLoader 到 RAM 中 , 并执 行 BootLoader 程 序 启动 Linux Kernel, 然后启动用户级别的第一个进程: init 进程。init 进程会解析init.rc 脚 本 做一些初始化工作,包括挂载文件系统、创建工作目录以及启动系统服务进程等,其中系统服务进程包括 Zygote、service manager、media 等 。在 Zygote 中 会 进 一 步 去 启 动 system_ server进 程 , 然 后 在 system_server 进 程 中 会 启 动 AMS、WMS、PMS 等 服 务 ,等 这 些 服 务 启 动 之 后 ,AMS 中 就 会 打 开 Launcher 应 用 的 home Activity, 最 终 就 看 到 了 手 机 的 "桌 面 "。

2、system_server为什么要在Zygote中启动,而不是由init直接启动

A:Zygote 作为一个孵化器,可以提前加载一些资源,这样 fork() 时基于 Copy-On-Write 机制创建的其他进程就能 直 接使用这些资源,而不用重新加载。 比如 system_server 就可以直接使用 Zygote 中的 JNI 函数、共享库、常用 的类、 以及主题资源。

3、为什么要专门使用Zygote进程去孵化应用进程,而不是让system_server去孵化呢?

A: 首 先 system_server 相 比 Zygote 多 运 行 了 AMS、 WMS 等 服 务 , 这 些 对 一 个 应 用 程 序 来 说 是 不 需 要的 。 另 外 进 程 的 fork() 对多线程不友好,仅会将发起调用的线程拷贝到子进程,这可能会导致死锁,而system_server 中肯定 是 有很 多线 程的 。

4、能说说具体是怎么导致死锁的吗?

5、Zygote为什么不采用Binder机制进行IPC通信?

由于篇幅原因,此处仅展示部分内容,查看更多Android面试题点击直接查看

全部答案,更新日期:2023年2月8日,直接下载吧!

下载链接:全部答案,整理好了

新增:高清全答案解析,累计935页+大厂面试题 PDF

1
https://gitee.com/hu-laopi/NewDevBooks.git
git@gitee.com:hu-laopi/NewDevBooks.git
hu-laopi
NewDevBooks
2023年Android面试题合集解析
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891