背景:
非常感谢相关学员朋友靠回忆提供出来的的真实framework面试题目,他的面试优秀表现来自他的平时努力学习哈,经常也找我交流他对课程一些项目的思路和理解,当然我们的学员朋友本身也是顺利通过面试的。
他还给大家记录了当时如何回答面试题目的,不过我这边故意删除了部分答案让大家在vip群进行讨论,大家可以看看下面的详细面试题,当然学员的不一定回答的非常全面和百分百正确,这里大家可以进行讨论留言等,后期整理更加完善的汇总到vip群中。
某公司面试题汇总
评价面试官:
明显感觉这个面试官属于比较资深的framework老司机,很多问题都是比较到位的,过程中偶尔回答不是那么完善也会给一些补充,整体面试回答问题及自由交流也比较友好,本身面试的也是fw的高级岗位,整体面试过程对于我来说难度一般,说实话感觉没有马哥的模拟面试压力大,现在也可以理解马哥说的只要可以通过模拟,那么其他真实面试问题不大。
具体的面试题目
1、binder相关问题-你说你熟悉binder请问你解决过哪些binder相关的bug,具体怎么分析的及如何修改?
回答:
主要讲解了马哥课程的中的oneway情况,属于app端使用不合理的使用异步binder调用,具体分析过程也是和马哥课程步骤一样,主要是有以下几个要点:
a.从最直观的java报错堆栈寻找到具体报错代码点
b.结合堆栈定位到哪个调用方法,哪个调用进程
c.搜索出问题进程号,然后在kernel日志发现该进程binder调用错误
d.结合kernel中的binder代码,定位出属于异步调用引发
e.修改方案一般为从异步调用源头修改,让异步调用不要短时间过于频繁,让app改
2、binder的一次内存拷贝请讲解一下你的理解
这个部分其实属于很常规的面试题目,马哥课程也有讲解,主要表达清楚了源进程(数据源头端)和目标进程(数据到达端)。
数据一开始在源进程内存里面,目标进程因为通过mmap在kernel一段内存,目标进程的用户空间和内核空间可以通过地址偏移就访问该内存,所以数据只需要从源进程的copy_frame_user用户空间拷贝到目标进程的mmap那段内存既可以,因为目标进程的内核空间用户空间可以通过地址偏移访问,所以完全可以省略目标进程copy_to_user.
注意面试官又补充问了源进程数据是不是也在共享内存?这里回答肯定不是,因为源进程数据是自己直接new,根本没有在mmap那块内存
3、binder调用过程中,为什么经常systemserver服务中处理业务时候出现clearCallingIdentity,restoreCallingIdentity等
Binder通信时,被调用方(如SystemServer)需通过调用方的UID/PID进行权限检测。当远程调用(如进程A→SystemServer)触发本地调用(SystemServer内部方法)时,若未清除原始调用身份,会导致权限校验失败。
简单说就是systemserver很多方法有权限经验,会识别uid,pid等,所以这个时候binder调用如果要触发systemserver的一些方法调用,systemserver端必须要先在调用前清除这些uid,pid,调用相关方法完成后就要记得restore。
4、你这边说有解决疑难问题闪黑,冻屏等疑难问题经验,请分别详细说说你的思路最好有相关案例
相关答案见vip学员群内,vip学员独享
5、请问你是如何分析调试触摸一些窗口无响应的疑难问题?
相关答案见vip学员群内,vip学员独享
6、你这边说深入理解wms层级结构树,请问你如何理解层级结构树。
相关答案见vip学员群内,vip学员独享
7、请问你是桌面理解层级结构树创建时候的的Feature,请详细描述一些它存在的具体作用
相关答案见vip学员群内,vip学员独享
8、请问你前面有说到wms层级结构树又说的SurfaceFlinger的层级结构树,请问二者区别是啥,还有user手机如果没有条件使用Winscope抓取请问如何看层级结构?
相关答案见vip学员群内,vip学员独享
9、系统的启动流程中,你能说说Fallbackhome和Launcher启动顺序和关系吗?
相关答案见vip学员群内,vip学员独享
10、系统的启动流程中,你是否遇到过Fallbackhome跳转Launcher过程中有闪黑现象,请问如何分析和解决?
相关答案见vip学员群内,vip学员独享
11、性能优化相关:你是否在系统框架层面做过App冷启动优化,而不是app本身代码冷启动优化?
相关答案见vip学员群内,vip学员独享
面试总结
上面就是面试的10几个面试题目,其实真实面试聊得比上面这个多,不过整体上难度感觉不是很大,面试完成立即就让我等待一会,然后就进入了领导面试,HR面试。说实话感觉跟着马哥学了几个月后,自己的fw整体思维相比学之前有了巨大的提升,这里再次感谢马哥的课程和对我耐心的答疑服务,学习fw的过程虽然刚开始辛苦,但是伴随着一个课程的实战项目做出来,自己在系统上修改,而且刚开始经常有错误达不到马哥效果,然后自查不出问马哥,经过指导后搞定成功运行,这种收获的喜悦也是自己成长的见证。
这里特别感谢一下马哥答疑问题方式,他一般不是只给答案而是思路方向指导,这个我感觉其实更加贴近公司实战,因为实际工作中遇到各种问题都是找不到答案,要我合理的思路去排查。
马哥是教我遇到这类问题的排查思路和方向,然后让我自己按照这个方向查,马哥这种答疑方式其实非常好的锻炼了我的问题分析和解决能力,导致后续遇到相关问题都是比较有条理分析解决。
更多framework实战干货,干货资料,请关注下面“千里马学框架”