一个 34 岁出来面试还被拒绝的 Android 程序员有多惨?
这个我们早知道了,摸鱼闲的,但我还是表示出十分的耐心:“然后呢?”
“卧槽!34 岁了哎!”前排工位上的一个同事探过头来,一脸听戏的表情,语气满满的不可置信。
“尼玛,这么大的年纪了还出来面试……”后排工位上的同事也过来凑热闹。
小组长看了一圈围过来的人,突然暴怒:“艹!我也 34,有意见?!!”
周围瞬间就安静下来作鸟兽散了,好像刚刚根本就没人提过“34 岁大龄”这几个关键字。
我追问了一句:“那人技术咋样?过了没?”
小组长一脸复杂:“问啥啥不会……问个底层都答不上来……”
“你问了些啥?”
“就 Handler 和 Binder 那些啊。”

=======================================================================
问:先做下自我介绍吧。
应聘者:我是**,本科学历,以前在阿里做 Android 开发,带过十人的小团队……
……
小组长一边看简历一边听,得到大致信息:大厂出身,“高龄”被裁,带过团队,做过大项目,能力不错,因就业大环境一般,现在选择降薪求职。
问:我看你简历里面这个项目用到了广播,说说广播底层的设计原理吧。
应聘者:哦,不是 Binder 吗?
问:那为什么要用 Binder 呢?说说 Binder 的原理?或者简单说一下 Binder 的优势是什么也行。
应聘者:我当时做的那个项目……(顾左右而言他)
小组长开始怀疑这人到底行不行,决定换个问题:那你知道 Handler 吗?说说为什么建议子线程不更新 UI 吧。
应聘者直接懵圈了,最后结结巴巴地回了一句:这……不是会用就行了吗?
小组长也很懵,没有想到做过大项目有过大厂经验的人一问三不知。
问:同步屏障和异步消息的实现和使用场景知道吗?
……
不到半小时,小组长就告诉他“回家等消息”了。
虽然很同情他的年龄和遭遇,但是规矩不能坏。

Android 面试躲不过 Handler 和 Binder
=============================================================================================
在项目中,各模块代码运行在不同的进程(线程)中,想要真正理解安卓的这几大服务,势必要掌握安卓的通信机制,而安卓最主要的两个通信机制就是 Handler 和 Binder。

Binder 机制在 Android 中的地位举足轻重,我们需要掌握的很多原理都和 Binder 有关:
系统中的各个进程键的通信
Android 系统启动过程
AMS、PMS 的原理
四大组件的原理(比如 Activity 的启动)
插件化原理
系统服务的 Client 端和 Server 端的通信原理(比如 MediaPlayer 和 MeidaPlayerService)
可以说 Binder 机制是掌握系统底层原理的基石。Handler 的地位也是同样的原理。
现在的业界有一句话是这样说的:技术好的未必弄得懂底层,但是底层基础好的学起技术来很快。所以,大公司在挑选公司人才的时候,更加看重的是应聘者对底层原理的掌握和理解。
=============================================================================
那些底层知识都很枯燥,每次学完就忘,一合上书就忘得差不多了,不知道要怎样学才好了。

其实造成这样的现象最主要的原因是没有掌握系统的学习方法
,也没有系统的资料辅助理解和学习
。
知识点就是那些,基本上,翻来覆去就是那些换汤不换药的问法。
但是现在大家上班要写业务代码,下班又是家庭琐碎,要想自己静下心来好好学习根本不可能,仅仅只是有用信息的筛选就足够麻烦。
鉴于“金三银四”已经过半
,为了让大家快速掌握
Framework 的这些底层原理,这里给大家免费分享一份 452 页的《Android Framework 精编内核解析》。
需要的朋友可以直接【点击此处】,管理会发给你。
这份资料通过对最近两年这些大厂面经的收集和分析,把面试中常问的 Handler 和 Binder 以及相关的知识点整理成了一份有针对性的 PDF。
手把手,保姆式教学,教你透彻理解这两个知识点,吊打面试官。
==================================================================================

Binder 机制作为进程间通信的一种手段,基本上贯穿了 andorid 框架层的全部。所以首先必须要搞懂的 Android Binder 的基本通信机制。
本章知识点
Binder 系列—开篇
Binder Driver 初探
Binder 驱动概述
Binder 核心方法

Binder Driver 再探
Binder 通信简述
Binder 通信协议
场景总结
Binder 内存机制
……

Binder 启动 ServiceManager
启动过程
核心工作
……

获取 ServiceManager
获取 ProcessState 对象
获取 BpBinder 对象
获取 BpServiceManager
……

注册服务(addService)
ProcessState
服务注册
Binder Driver
ServiceManager
……

获取服务(getService)
Framework 层分析
Binder 架构
评论