面试官提了一个问题,我们来看看 ????、???? 和 ????️ 三位同学的表现如何吧


???? 自认为无所不知,水平已达应用开发天花板,目前月薪 10k

面试官️:看你简历上写熟悉 AIDL,说一说 oneway 吧

????:oneway 是什么?跟 AIDL 没关系吧,我熟悉 AIDL 指的是使用 AIDL 接口进行跨进程通信。

面试官:AIDL 接口的方法可以用 oneway 修饰符来修饰,了解过这个修饰符的作用吗?

????:可以提高性能吗?我觉得没必要使用,我从没用过,程序也跑的好好的,没出过什么问题。

面试官:好的,回去等通知吧


???? 业余时间经常打游戏、追剧、熬夜,目前月薪 15k

面试官:看你简历上写熟悉 AIDL,说一说 oneway 吧

????:用 oneway 修饰的 AIDL 接口方法,是单向调用,不需要等待另一个进程的返回结果,所以方法的返回类型也只允许是 void.

面试官:怎么理解 "单向调用" ,有了解过它的实现原理吗?

????:由应用进程到服务进程是通过 binder 驱动进行 IPC 通信的,单向的意思应该是应用进程只向 binder 驱动发送一次数据就结束返回,不再等待回复数据;而不用 oneway 修饰的方法需要等待 binder 驱动与服务端通信完后,再回复数据给应用端。

面试官:只向 binder 驱动发送数据吗?binder 驱动有没有回复应用?

????:嗯... 我理解的是既然不需要返回值,所以没有回复吧

面试官:好的,回去等通知吧


????️ 坚持每天学习、不断的提升自己,目前月薪 30k

面试官:看你简历上写熟悉 AIDL,说一说 oneway 吧

????️:oneway 主要有两个特性:异步调用和串行化处理。异步调用是指应用向 binder 驱动发送数据后不需要挂起线程等待 binder 驱动的回复,而是直接结束。像一些系统服务调用应用进程的时候就会使用 oneway,比如 AMS 调用应用进程启动 Activity,这样就算应用进程中做了耗时的任务,也不会阻塞系统服务的运行。

串行化处理是指对于一个服务端的 AIDL 接口而言,所有的 oneway 方法不会同时执行,binder 驱动会将他们串行化处理,排队一个一个调用。

面试官:有了解过相关的 binder 协议吗?

????️:了解过,图会更直观一些,我来画一下图吧,首先是非 oneway 的情况:

如果是 oneway 的话,客户端就不需要挂起线程等待:

涉及到的 binder 命令也有规律,由外部发送给 binder 驱动的都是 BC_ 开头,由 binder 驱动发往外部的都是 BR_开头。

面试官:怎么理解客户端线程挂起等待呢?有没有实际占用 CPU 的调度?

????️:这里的挂起相当于 Thread 的 sleep,是真正的"休眠",底层调用的是 waiteventinterruptible() Linux 系统函数。

面试官:你是从哪里了解到 waiteventinterruptible() 函数的呢?

????️:在学习 Handle 机制的时候,Handle 中最关键的地方就是 Looper 的阻塞与唤醒,阻塞是调用了 nativePollOnce() 方法,当时对它的底层实现感兴趣,就去了解了一下,也学习到 Linux 用来实现阻塞/唤醒的 select、poll 和 epoll 机制

面试官:可以,我们再来聊聊别的。


看完了这三位同学的面试表现,你有什么感想呢?

推荐阅读
十年老码农,现场教你写简历!
安利10个让你爽到爆的IDEA必备插件
耐人寻味的 8 幅Java技术图
编程·思维·职场
欢迎扫码关注

看你简历上写熟悉 AIDL,说一说 oneway 吧相关推荐

  1. 看到网上有人说软件测试面试要会吹牛,我就在简历上写满了技能精通,拥有工作经验的我被面试官问到窒息...

    前言 如果有真才实学,写个精通可以让面试官眼前一亮! 如果是瞎写?基本就要被狠狠地虐一把里! 最近在面试,我现在十分后悔在简历上写了"精通"二字- 先给大家看看我简历上的技能列表: ...

  2. 在简历上写了“精通”后,拥有工作经验的我被面试官问到窒息

    前言 如果有真才实学,写个精通可以让面试官眼前一亮! 如果是瞎写?基本就要被狠狠地虐一把里! 最近在面试,我现在十分后悔在简历上写了"精通"二字- 先给大家看看我简历上的技能列表: ...

  3. 简历上写CV开源项目,有用吗?

    常有粉丝留言问我:简历上写CV的开源项目有用吗? 答案很简单,没什么用. 以"实时目标检测"这一自动驾驶.机器人等行业的重要任务来举例,尽管你可以获得一些开源代码,但几乎没有任何开 ...

  4. 阿里第二代微服务强势崛起,你还敢往简历上写“精通”吗?

    总算迎来金三银四...但简历千万别瞎写! 前几天,刚面试完一小伙,简历上写了"精通微服务",进来时表现得非常自信,所以我很期待他接下来的表现...... 也就随便问了几个微服务相关 ...

  5. mysql查询前段时间_没想到!我在简历上写了“精通MySQL”,阿里面试官跟我死磕后就给我发了高薪offer...

    事情是这样的 前段时间面试了阿里,大家也都清楚,如果你在简历上面写着你精通XX技术,那面试官就会跟你死磕到底. 我就是在自己的简历上写了精通MySQL,然后就开启了和阿里面试官的死磕之路,结果就是拿到 ...

  6. 一条mysql语句是事务吗_没想到!我在简历上写了“精通MySQL”,阿里面试官跟我死磕后就给我发了高薪offer...

    事情是这样的 前段时间面试了阿里,大家也都清楚,如果你在简历上面写着你精通XX技术,那面试官就会跟你死磕到底. 我就是在自己的简历上写了精通MySQL,然后就开启了和阿里面试官的死磕之路,结果就是拿到 ...

  7. 金三银四,简历上写CV开源项目,有用吗?

    春招在即,常有粉丝留言问我:简历上写CV的开源项目有用吗? 答案很简单,没什么用. 以"实时目标检测"这一自动驾驶.机器人等行业的重要任务来举例,尽管你可以获得一些开源代码,但几乎 ...

  8. 连Spring源码都没看过,你怎么敢在简历上写“精通”?

    小A 你好面试官,非常高兴能参加今天的面试 面试官 没事,先做一个自我介绍吧 小A 我叫小A,工作三年了,做过...... 面试官 嗯,好的,看到你的项目这块,在公司主要用的就是spring全家桶相关 ...

  9. 一个普通应届生,简历上写什么能过BAJT的海选初筛?(附实例模板)

    HR拿到一份简历的时候,第一眼会看整体的简历排版,如果排版视觉上看起来不舒服或者有明显遗漏和错别字,首先印象分大打折扣,除非学校背景特别优秀或者专业能力特别对口,不然十有八九都会被pass,因此简历排 ...

  10. 为了在简历上写掌握【Java中IO流】,做了该篇总结

    文章目录 聊聊文件 字节输入流 字节输出流 字符输入流 字符输出流 字节缓冲输入流 字节缓冲输出流 字符缓冲输入流 字符缓冲输出流 流的关闭 对IO流的学习,我记得还是初学Java基础的时候,后来找工 ...

最新文章

  1. 详尽 | PyTorch动态图解析
  2. saltStack运维工具的部署及master迁移实现的过程详解
  3. Java异常(一) Java异常简介及其架构
  4. 使用Joson的格式字符串在Socket中通讯时数据格式的转换
  5. UML中关联,聚合,组合的区别及C++实现
  6. thinkPHP伪静态,如何去掉index.php呢?
  7. 超简单利用xposed框架破解钉钉打卡
  8. new Date(date).getTime()的兼容问题
  9. 本页不但包含安全的内容,也包含不安全的内容
  10. 鼠标跟随事件jQuery
  11. webgis 行政图报错_开源WebGIS:地图发布与地图服务
  12. 0.3 Python环境安装
  13. 获取某一天的开始时间
  14. 山西农业大学计算机科学与技术分数线,山西农业大学计算机科学与技术专业2016年在湖北理科高考录取最低分数线...
  15. WIN7 SP1 windbg安装符号文件
  16. swift/dart代码规范检查工具介绍
  17. 【开工】知道创宇网络安全线上服务指南
  18. “ 流量or变现 “ 网销50条干货必备
  19. CCF-201809-3
  20. Arduino连接LCD1602显示屏

热门文章

  1. python使用matplotlib绘制3D图
  2. 7、共享模式的文件服务器
  3. Vue 2.0 升(cai)级(keng)之旅
  4. 泰坦尼克号乘客获救预测
  5. 撸羊毛之殇系列——之抖音极速版
  6. Recovering Realistic Texture in Image Super-resolution by Deep Spatial Feature Transform
  7. 软件安全期末考试试题21SZ回忆版
  8. iOS开发之高仿斗鱼tv初探
  9. python蓝牙模块教程_通过蓝牙将HC05蓝牙模块与python连接时出错
  10. 微信小程序(五)新版的用户授权和判断是否是否已经授权和自动提示更新版本