当前位置:网站首页>移动互联网开发专业,一次关于JVM的面试经历
移动互联网开发专业,一次关于JVM的面试经历
2022-04-22 00:20:00 【mb6260162caa201】
导语
又到了面试季,自己也不得不参与到这场战役中来,其实是从去年底就开始看,Android的好机会确实不太多,但也还好,3年+的android开发经历还是有一些面试机会的,不过确实不像几年前门槛那么低了,总的体会就是小的创业公司比较注重你的项目经历是否和自己的贴合,直接能过来独当一面。
大厂除了看中项目经历外,还比较注重你知识面的广度,是广度、深度和解决方案等多方面的考察,平时够工作要好好积累临时刷题只聊点皮毛估计是过不了关的。下面就总结一些大厂面试遇到必定会问的知识点,我把网络上讲解的最好的视频给大家整理出来了,各种风格的都有。
面试官提了一个问题,我们来看看 A、B 和 C三位同学的表现如何吧
A
面试官:说说 Application 的作用。
A:Application 是应用进程创建后就会创建的系统组件,所以可以用它来做一些初始化操作;Application 生命周期和应用进程一样长,所以可以用来给类库提供 Context; 因为在所有 Context 可以获得 Application 所以可以用来保存和传递全局变量。
面试官:你平常开发会把全局变量放在 Application ? 那应用在后台被回收,重新打开的时候值丢失怎么办?
A:会啊,很方便, 做一下容错判空就可以了
面试官:好的,回去等通知吧
B
面试官:说说对 Application 的理解
B:作用:做初始化操作、提供上下文。另外 Application 是一个 Context ,它直接继承了 ContextWrapper ;这个 ContextWrapper 的成员变量 mBase 可以用来存放系统实现的 ContextImpl,这样我们在调用 Application 的 Context 方法时,都是通过静态代理的方式最终调用到 ContextImpl 的方法。我们调用 ContextWrapper 的 getBaseContext 方法就能拿到 ContextImpl 的实例
面试官:你平常开发会把全局变量放在 Application ? 那应用在后台被回收,重新打开的时候值丢失怎么办?
B:不会,保存全局变量用静态变量,或单例可以把它们聚集在更合适的位置。
避免应用被回收数据丢失,可以页面传递参数时,通过 Intent 传递参数,这样被回收后打开重新从 Intent 取参还是有值的。数据量大的话也可以考虑数据持久化;另一个方法是通过 onSaveInstanceState 和 onRestoreInstanceState 分别在被回收时保存相应的数据以及在重新打开时恢复数据。
面试官:讲一下 Application 的生命周期吧
B:相比 Activity ,Application 的生命周期简直不要太简单。首先创建的时候会调用构造函数,然后系统准备好 ContextImpl 通过 attachBaseContext( Context ) 方法注入到 Application,接着调用我们最熟悉的 onCreate 方法。API 里还有一个 onTerminate 方法在进程被杀死的时候会回调,不过仅在模拟器生效,就不需要关注了。
面试官:那你能接着说一下 Application 的初始化流程吗?
B:基本上就是上面说的那些,再细没有去了解了
面试官:好的,回去等通知吧
C
面试官:说一下 Application 的初始化流程
C:Application 的初始化是在应用进程创建完成后:
ActivityThread 调用 AMS 的 Binder 对象( IActivityManager )的 attachApplication 方法
AMS 收到请求后再去调用 ActivityThread 的 bindApplication 方法
ActivityThread 这边收到请求再组装一个 AppBindData 对象,把所有参数封装进去,再通过 handler 发到主线程执行
主线程 loop 到这条消息,调用 handleBindApplication 来真正处理初始化 Application
handleBindApplication 和我们谈 “Context” 那次,Activity 的初始化差不多。回顾一下:
ClassLoader 加载 Application 类,实例化
初始化 Applicaction 用的 ContextImpl
通过 Application.attach( Context ) 方法,调用 attachBaseContext( Context ) 将 ContextImpl 注入到 Application
最后调用 Application.OnCreate()
这样 Application 就初始化完成了
面试官:为什么进程创建完成不直接调 handleBindApplication 去创建 Application 呢,又去 AMS 那边绕了一圈
C:调用 AMS 的 attachApplication 不仅仅是为了创建 Application ,还有在进程创建前可能调用了应用的四大组件却没办法启动;现在进程创建好了,创建好 Application 也要处理这些待启动的组件。所以需要通过 AMS 统一调度,如果 Application 的创建及 onCreate 回调耗时的话,也会影响这些待启动组件的启动时间
面试官:可以,我们再来聊聊别的。
最后
为了方便有学习需要的朋友,我把资料都整理成了视频教程(实际上比预期多花了不少精力),由于篇幅有限,都放在了我的GitHub上,点击即可免费获取!
Androidndroid架构视频+BAT面试专题PDF+学习笔记
当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
- 无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,这四个字就是我的建议!!
- 我希望每一个努力生活的IT工程师,都会得到自己想要的,因为我们很辛苦,我们应得的。
当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,没有人能随随便便成功。
加油,共勉。
版权声明
本文为[mb6260162caa201]所创,转载请带上原文链接,感谢
https://blog.51cto.com/u_15609400/5240941
边栏推荐
- Introduction à la technologie des conteneurs de la série Container Cloud
- 双指数平滑法一例
- 分享我常用的28个自媒体工具,赶紧收藏,视频2万播放就有264收益
- Gartner announces emerging technology research: insight into the meta universe
- 一文读懂MES系统生产调度管理功能
- Function of freewheeling diode in switching power supply
- B. Vlad and Candies
- [microservices] (VIII) -- Eureka smooth migration Nacos scheme
- 深度解析ERP和MES的六大不同之处,务必耐心看完
- 华为Routing & Switching切换为Datacom,究竟变了些什么
猜你喜欢

活动预告 | 4月23日,多场OpenMLDB精彩分享来袭,不负周末好时光!

隐私计算--36--联邦学习加速方法

Very powerful time and date plug-in --- jedate js

笔记本拓展外接显示器时 鼠标移动不到主显示器外的另一块屏上

Academicians and experts discussed how to embrace "counting from the east to the west", and the second China IDC industry discovery conference was successfully held

Brush questions (I)

继电器为什么要并联二极管

都说MES能提高企业生产效率,具体表现在哪些方面呢?

【牛客】面试必刷TOP101——01链表

C# 利用委托事件进行窗体间的传值
随机推荐
The excel drop-down box refers to another sheet
稳压二极管限流电阻怎么选择
OJ daily practice - number of daffodils
比较方便安全的期货开户怎么办理好?
Cocoscreator learning sample collection v3 four point two
小程序 分包
C# 利用委托事件进行窗体间的传值
LeetCode_62 不同路径
MES实施过程中为什么会出现需求变更?又该如何解决?
CocosCreator学习示例合集v3.4.2
应用层(一)
seo关键词扩展-自动关键词拓展软件免费下载
Functional coverage cov of coverage series learning
Memory management
展平多级双向链表-c语言
Introduction to container technology related concepts of container cloud series
AI's new story is hidden in Robin Li's "intelligent transport" audio book.
2022北京眼睛健康展,北京眼镜展,北京近视矫正展,眼视光展
09. 树莓派ASP.NET环境配置
【无标题】2022煤炭生产经营单位(机电运输安全管理人员)上岗证题目模拟考试平台操作