面试常谈的Binder理解,每个人都不一样~
发布网友
发布时间:2024-10-23 17:03
我来回答
共1个回答
热心网友
时间:2024-10-24 15:35
面试官提出问题,让我们看看三位同学如何解答。
第一位同学,自认为知识渊博,月薪10k。面试官问他对binder的理解,他回答binder是跨进程通信的,包括client、server、binder驱动以及service manager四部分。当面试官问及一次拷贝原理时,他表示不太清楚,对应用开发来说,没必要知道这些。
第二位同学,业余时间喜欢玩游戏、追剧、熬夜,月薪15k。面试官同样询问他对binder的理解,他回答说binder是一种IPC方式,相比Linux原有的管道、共享内存、Socket等,它通过mmap实现一次拷贝,比Socket和管道传输速度更快,比共享内存更安全可控,是Android系统中主要的IPC通信方式。面试官接着问Intent传参有大小*,这与binder有关系吗?他表示应该有关系,但具体如何*大小,他并不了解。
第三位同学,勤奋学习,不断提升自己,月薪30k。面试官询问他对binder的理解,他详细解释了binder在Android中是主要的跨进程通信方式,并基于mmap实现了一次拷贝。他还提到binder包括BinderProxy、BpBinder等实体,以及ProcessState、IPCThreadState封装等。他强调,要全面理解binder,需要从Java、Native层,用户态、内核态等多个角度去考虑。
面试官进一步询问基于mmap如何实现一次拷贝,第三位同学用示意图进行了详细解释。他还解释了页框和页的概念,并简单介绍了binder的整体架构。
最后,面试官推荐了《Android Framework核心知识点》一书,其中包含了Init、Zygote、SystemServer、Binder、Handler、AMS、PMS、Launcher等知识点记录。