ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

某度员工从事 Android 5年还是初级工程师,所以我们到底该不该研究底层?

2022-01-29 20:01:29  阅读:167  来源: 互联网

标签:该不该 面试官 art 修复 插件 某度 Android 加载


我答了插件化、组件化、热修复、React Native,最近也在钻研Flutter,对flutter有一些自己的理解。(我故意这么讲,希望面试官可以多问一下flutter。)

面试官:插件化和热修复有什么区别吗?

我:插件化是把需要实现的模块或功能独立提取出来,减少宿主的规模,需要相应功能时再去加载相应模块;而热修复则是从修复bug的角度出发,不需要二次安装应用、用户无感知的情况下就可以修复已知bug。(这么基础的问题,回答的时候自信满满…)

面试官:热修复的核心原理是什么?

我:主要是利用Android类加载机制,把需要修复的类打包成dex文件,把这个修复过的dex文件排在dexElements最前面,ClassLoader在修复过的dex文件加载到类之后就不会再去加载错误的类了。(还好面试前有看过)

面试官:
类加载为什么要使用双亲委托机制?

我:…(我记得我看过的来着,一下子想不起来了。)

面试官:jvm和dalvik、art的区别是什么?

我:jvm是基于栈的,dalvik和art是基于寄存器的。(这时候我慌得一比,快顶不住了…)

面试官又追问:那什么是基于栈的虚拟机,什么又是基于寄存器的虚拟机?

我说不知道。(那时完全不懂面试官为什么要问这个)

面试官:art加载类的流程和Dalvik有区别吗?

我:有区别吗?不就是ClassLoader吗?(面试官稍微提了一下机器码。)

后续查资料才知道,原来art水这么深,7.0以前直接编译为机器码。之后又变成混合aot、jit和解释执行了,加载类底层使用classlinker,先从classtable缓存查找,如果没有再从oat文件查找,否则就解释执行

面试官:那art下,热修复的实现上有什么需要注意的地方?

最后一个问题听完之后直接懵逼了…查资料才感觉到面试官其实还是在问:art下类加载的流程。原来aot会生成一个base.art文件,在ClassLoader创建之后就会把base.art中的类注入到缓存中去,所以会导致这些类无法修复。

面试官又问了我遇到的最难的内存优化问题和解决方案;未来三年计划,技术发展纵深的选择。

感觉凉了…

3面小米:

=================================================================

@纵有疾风起:

对okhttp的源码解析;用rxjava遇到过哪些坑;

用过最复杂的自定义view和优化处理;

用EventBus遇到的坑;

glide如何检测生命周期;

底层替换热修复和冷启动热修复有什么区别,怎么实现?

常用算法,递归;各种算法空间和时间复杂度;

事件冲突解决;

绘制中MeasureSpec的结构和数据的计算规则;

最近几个系统版本的系统适配做过哪些工作( 不是ui适配)。


大厂招Android高级工程师要求很高,问的东西很深,一般都会问到原理和底层,你必须专精于Android中某一块的知识点,不然面试中对什么知识都是点到即止,肯定是不行。

热修复技术已经非常成熟,很多大厂的热修复方案都是开源的,但是市场上深入系统讲解热修复技术细节的博客和书籍非常少,在学习过程中我们经常会遇到各种各样的问题,无从下手,很多人用过热修复技术也并不真正理解热修复的原理。热修复技术涉及到了类加载、双亲委托机制、反射等原理,面试官基于任何一个点,都可以进行深挖,摸清你的真实Android水平。

为了让大家全面快速地理解热修复技术难点和关键点,我特别分享《Android开发核心知识点笔记》,给大家详解Android内核原理,各种项目实战示例,将会全方位带你梳理Android知识体系。

如果你需要的话,可以 在这领取

mgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8yMjQzNjc0MC0xMzNjZGMxOTEwZWRjZmFk?x-oss-process=image/format,png)

标签:该不该,面试官,art,修复,插件,某度,Android,加载
来源: https://blog.csdn.net/m0_66265031/article/details/122747002

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有