-
性能优化;
-
怎么处理在线app出现的闪退问题,比如是偶现的那种,怎样查找原因?
-
如果是报oom,怎么去定位哪里内存泄漏了?
-
有没有用过kotlin开发…
3面阿里钉钉
-
阿里的面试基本上都是边聊边问,根据你的工作经历以及面试过程中的内容进行展开。
-
面试官先问,你最擅长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面小米
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频**
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
[外链图片转存中…(img-PeDGtizw-1710931579369)]