京东-优惠雷达
新人页面
精选商品
首月0月租体验,领12个月京东PLUS
自营热卖

P7级别的Android开发,面试竟然被 Framework 那些知识点绊倒了

情话微凉 24天前   阅读数 103 0

金九银十到了,很多小伙伴已经在面试或者面试的路上~

最近就有位阿里P7级别的Android研发跳槽腾讯,没想到自己十年的开发经验还没用上就遭到面试官拒绝,到底是怎么回事呢?

经过一番沟通了解到,他是在Framework知识上吃了大亏……

**掌握 Framework 有什么用呢?**现在热门的技术热修复,插件化,所需要使用到的「欺上瞒下」都需要对 Activity 启动以及与 AMS 交互等非常精通,自然需要利用 Framework的知识。此外,一些性能相关兼容,监听 MessageQueue排查卡顿,甚至一些系统更新,例如 Android 9 对 hidden API 的限制,你也需要熟知 Framework 才可能找到突破口。

举个例子,比如常说的 Handler,MessageQueue,Looper。看源码你就可以更好的理解那些概念:

  • ThreadLocal 做什么的?

  • Thread 和 Handler 的关系

  • 为什么不能在子线程更新 UI?

  • idleHandler 什么时候运行?

  • 主线程为什么循环却不会卡死?

  • ContentProvider、Broadcast、Service 是怎么利用 Message 监控 ANR 的?

再比如说 Android 的卡顿掉帧问题,很多文章都说卡顿是由于主线程耗时造成的,这其实只是一部分,其他的比如:

  • RenderThread 耗时也会导致卡顿

  • Binder 通信耗时也会导致卡顿

  • 60 fps 下没问题的 app 90fps或者 120fps 下也可能会卡顿

  • 有时候低内存下你主线程读个文件可能都会导致卡顿

但如果你真正明白了卡顿的原理,再面对卡顿问题就不会那么慌了。

所以问题在于哪里?是你对于底层原理的了解。

相信近期有面试的小伙伴也可以感觉得到:现在面试是越来越难了!别说阿里、头条、腾讯这些大厂,就连很多中小公司面试问的都全是原理,其中Framework层相关的知识非常多!

Binder和Handler就更是其中的必问项,绝对是必须要掌握的知识点!

像下面这些面试题就全是高频问题,来看看自己能不能全答上来:

Handler 相关面试题:

  1. View.post 与 Handler.post 有何不同?

  2. 主进程的 Looper 是何时创建的?

  3. 一个Thread可以有几个Looper?几个Handler?

  4. 线程关联的Looper 是如何与 Handler 绑定的?

  5. 系统中的同步屏障机制是怎样的?

  6. 为什么系统不建议在子线程访问UI?(为什么不能在子线程更新UI?)

  7. MessageQueue 中如何提升消息的优先级?

  8. 可以在子线程直接new一个Handler吗?那该怎么做?

  9. 主线程中Looper的轮询死循环为何没有阻塞主线程?

  10. Handler内存泄漏问题及解决方案

Binder相关面试题:

  1. Activity 启动时与 AMS 交互,binder 交互的细节是怎么样的?

  2. ActivityThread 中的 ApplicationThread 是什么作用?

  3. binder 交互过程中涉及到多少个线程?

  4. 启动过程中如果想监控 binder 交互的频率,怎么做?

  5. binder 交互过程中,想要监控传输数据的大小,防止数据过大造成崩溃怎么做?

  6. Binder是如何做到一次拷贝的?

  7. 为什么Intent不能传递大数据?

  8. 描述AIDL生成的java类细节;

  9. 为什么Intent不能传递大数据?

  10. Binder机制是如何跨进程的?

一线企业的app都是多线程和多进程的,而Android进程间通信机制就是Binder,原生的线程间通信则是Handler,Binder和Handler是了解安卓运行机制必须要掌握的一个知识点,更是一线企业面试必问的知识点!

为了方便大家了解更多Android framework 相关知识点和其他技术知识点,我给大家收录整理了一些学习文档和面试题库文档,并上次至我 GitHub项目中:https://github.com/733gh/Android-T3 为了让大家一起学习进步,特此在这分享给大家。




注意:本文归作者所有,未经作者允许,不得转载

全部评论: 0

    我有话说: