Android大厂面试必问的Android Framework 如何学习,如何深入了解Framework层?

发布时间:2022-06-27 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Android大厂面试必问的Android Framework 如何学习,如何深入了解Framework层?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

前言

对于大多数 Android 开发工程师来说,掌握Android Framework 一定是一个不光要熟练而且还要精通的技能。

高级 Android 工程师岗位的一些技术面试也离不开Framework。一般会针对下面几个面试题进行提问:

  • 1.Android中多进程通信的方式有哪些?
  • 2.进程通信你用过哪些?原理是什么?(字节跳动、小米)
  • 3.描述下Binder机制原理?(东方头条)
  • 4.Binder线程池的工作过程是什么样?(东方头条)
  • 5.Handler怎么进行线程通信,原理是什么?(东方头条)
  • 6.Handler如果没有消息处理是阻塞的还是非阻塞的?(字节跳动、小米)
  • 7.handler.post(Runnable) runnable是如何执行的?(字节跳动、小米)
  • 8.handler的Callback和handlemessage都存在,但callback返回true handleMessage还会执行么?(字节跳动、小米)
  • 9.Handler的sendMessage和postDelay的区别?(字节跳动)
  • 10.IdleHandler是什么?怎么使用,能解决什么问题?
  • 11.为什么Looper.loop不阻塞主线程?(腾讯)
  • 12.Looper无限循环为啥没有ANR(B站)
  • 13.Looper如何在子线程中创建?(字节跳动、小米)
  • 14.Looper、handler、线程间的关系。例如一个线程可以有几个Looper可以对应几个Handler?(字节跳动、小米)
  • 15.如何更新UI,为什么子线程不能更新UI?(美团)
  • 16.ThreadLocal的原理,以及在Looper是如何应用的?(字节跳动、小米)
  • 17.Android 有哪些存储数据的方式?
  • 18.SharedPreference原理,commit与apply的区别是什么?使用时需要有哪些注意?(腾讯)
  • 19.如何判断一个 APP 在前台还是后台?
  • 20.如何做应用保活?
  • 21.一张图片100x100在内存中的大小?(字节跳动)
  • 22.Intent的原理,作用,可以传递哪些类型的参数?

**然后扩展到和这些知识点相关的更深层次的知识点细节,直到问的你答不上来为止,**以此来探寻你的技术边际,这样就能更深入地了解你的技术能力。

Android大厂面试必问的Android Framework 如何学习,如何深入了解Framework层?

这些问题相信很多面试者都遇到过,但我面试的结果却表明Android Framework框架层原理的掌握并没有到人尽皆知的境地。不过也好,这些问题就可以很容易区分出面试者是否对Android开发真的还有热情。

如果非要总结Framework学习中的问题,大家遇到的困惑无非是这些方面:

  • 1.开发遇到Bug,百度不到,而你不懂框架里面的黑盒机制
  • 2.项目代码想到哪写到哪,每次迭代就是一场轮回?你不想知道Android这么庞大的源码体系是怎么设计的?
  • 3.学完就忘,不会使用,原理结合实战通过Framework学习知识点的使用。

Android Framework重要性

Android Framework 开发虽然比较偏底层,圈子窄,但是能掌握一些原理的东西,可以触类旁通,往应用层发展也可以,接下来我们看看Framework知识有多重要。举几个栗子,你或许就能清楚了。

像掉帧监控,函数插装,慢函数检测,ANR 监控,启动监控,都需要对 Framework 有比较深入的了解,才能知道怎么去做监控,利用什么机制去监控,函数插桩插到哪里,反射调用该反射哪个类哪个方法哪个属性……

目前大公司的app开发都要基于模块化、层次化、组件化、控件化的思路来设计架构,而这一切的基础都建立在Android Framework系统框架底层原理实现之上。

如何学习Android Framework

  • 1.系统启动流程分析 众所周知,Android是谷歌开发的一款基于Linux的开源操作系统,下图所示为 Android 平台的主要组件。

Android大厂面试必问的Android Framework 如何学习,如何深入了解Framework层?

Android 平台的基础是 Linux 内核。例如,Android Runtime (ART) 依靠 Linux 内核来执行底层功能,例如线程和低层内存管理。使用 Linux 内核可让 Android 利用主要安全功能,并且允许设备制造商为著名的内核开发硬件驱动程序。

此外还需要学习和掌握int进程。 init进程是Android系统中及其重要的第一个进程,init进程通常会做到以下几点。

  1. 创建和挂载启动所需要的文件目录
  2. 初始化和启动属性服务
  3. 解析init.rc配置文件并启动Zygote进程

init.rc是一个非常重要的配置文件,它是由Android初始化语言(Android Init Language)编写的脚本,这里也是需要重点掌握和学习的。 最后不得不提zgyote了,作为Android中的第一个art虚拟机,他通过socket的方式与其他进程进行通信。这里的“其他进程”其实主要是系统进程——SystemServer。因此重要性不言而喻。

  • 2.Binder解析

Binder机制作为进程间通信的一种手段,基本上贯穿了andorid框架层的全部。所以首先必须要搞懂的Android Binder的基本通信机制。

首先我们要宏观认识Binder,从binder框架、binder涉及到的类、binder驱动整体层面去重新认识它。

Android大厂面试必问的Android Framework 如何学习,如何深入了解Framework层?

binder框架

接下来再从binder的jni方法注册、binder驱动、数据结构、启动service_manager、获取service_manager、addService流程等逐级进行学习。

  • 3.深入解析Handler

Message 源码分析,再到MessageQueue 的源码分析,Looper 的源码分析,handler 的源码分析,Handler 机制实现原理,既是面试常考,又是工作必备技能。

Android大厂面试必问的Android Framework 如何学习,如何深入了解Framework层?

Handler 机制实现原理
  • 4.深入解析AMS

Android系统非常庞大、错综复杂,其底层是采用Linux作为基底,上层采用包含虚拟机的Java层以及Native层, 通过系统调用(Syscall)连通系统的内核空间与用户空间。用户空间主要采用C++和Java代码,通过JNI技术打通用户空 间的Java层和Native层(C++/C),从而融为一体。 Google官方提供了一张经典的四层架构图,从下往上依次分为Linux内核、系统库和Android运行时环境、框架 层以及应用层这4层架构,其中每一层都包含大量的子模块或子系统。

Android大厂面试必问的Android Framework 如何学习,如何深入了解Framework层?

  • 5.深入解析 WindowManagerService 简称Wms,WindowManagerService管理窗口的创建、更新和删除,显示顺序等,是WindowManager这个管理接品的真正的实现类。它运行在System_server进程,作为服务端,客户端(应用程序)通过IPC调用和它进行交互。
  • 6.PackagerManagerService PKMS 是什么东西?

Android大厂面试必问的Android Framework 如何学习,如何深入了解Framework层?

PackageManagerService(简称 PKMS),是 Android 系统中核心服务之一,负责应用程序的装**,卸载,**信息查询,等工作。

大佬云集、资料丰富

当初我在腾讯认识一个非常非常资深的前辈,他在腾讯十来年了,但因为各种原因级别不是很高。我当时问他,既然你对现状如此不满,为什么不想着离开寻找更好的机会呢?

他沉思了片刻跟我说,他说我现在在这里虽然待着不顺心,但是我接触到的人都是非常优秀的。我遇到问题,还可以和你们讨论讨论。我如果出去了,我要是再遇到问题,可能连一个讨论的人都没有。

我当时听听只是觉得有道理,现在再回想起来,感受非常深刻。三观、格局、能力,能够进入大公司的,这三个方面一般都不会太差。除了优秀的同事之外,大公司里往往还有丰富的内部文档和资料。

我当时在腾讯内部看到了很多优秀的文章,也有很多优秀的技术沙龙和分享。现在想起来两年下来,也没有去过几次,文章和资料看得也不算多,现在想想颇为遗憾。别的不说,就拿推荐领域而言,近些年质量不错的论文往往都来源于大公司尤其是国内的大公司,以腾讯、华为和头条为主。除了公开的论文,公司内部还有很多技术相关的资料和文档,这些真的可以说是有价无市,非常珍贵。

例如:《Android Framework 开发揭秘》 **这份由腾讯技术团队出品的《Android Framework 开发揭秘》总共有19万字,包含109个知识点,**通过经典Binder、Handler、AMS等面试题解析加深你对Android Framework框架层的理解,需要《Android Framework 开发揭秘》这份资料的小伙伴,可以微信扫描下方CSDN官方认证二维码【免费获取】,希望对正在学习的你有所帮助!

Android大厂面试必问的Android Framework 如何学习,如何深入了解Framework层?

Android大厂面试必问的Android Framework 如何学习,如何深入了解Framework层?

需要《Android Framework 开发揭秘》这份资料的小伙伴,可以微信扫描下方CSDN官方认证二维码【免费获取】,希望对正在学习的你有所帮助!

Android大厂面试必问的Android Framework 如何学习,如何深入了解Framework层?

最后

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

  • 无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,这四个字就是我的建议!!!!!!!!!
  • 我希望每一个努力生活的IT工程师,都会得到自己想要的,因为我们很辛苦,我们应得的。

脚本宝典总结

以上是脚本宝典为你收集整理的Android大厂面试必问的Android Framework 如何学习,如何深入了解Framework层?全部内容,希望文章能够帮你解决Android大厂面试必问的Android Framework 如何学习,如何深入了解Framework层?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: