十几年工作经验,连一个Binder都讲不明白,还敢要20K?

博主是京东员工,奉旨担任了几次面试官,其中有一次的面试经历印象比较深,因为来参加面试的人真的是一个名副其实的“老Android”了。

具体情况

前不久,接到了上面的任务,要去面几个人,我也没有拒绝的理由,就接下了,结果遇见了一个非常特殊的应聘者——一个40岁的应聘者。

交谈之下,唏嘘不已,回去后就想发帖倾吐一下自己内心积攒的情绪,和诸位分享一下,也想听听大家的想法。

应聘者情况

40岁,名副其实的大龄程序员,两天前刚过四十岁生日。上有年逾耳顺之年的母亲,下有刚刚上小学六年级的孩子,妻子身体不太好,一直在家养病,只有他一个人是家里最大的劳动力。

三月,因为疫情还有其他多方面的原因,他被原来的公司辞退了,到现在,已经是失业半年有余,没有收入来源,还有份子钱,房贷,车贷等一大堆的支出,家里的经济状况越来越差,他只能出来继续找工作了。

面试第一感

现在的市场行情,招聘信息一般都会标注要求:35岁以下。我们公司在招的岗位也是。

所以,看见这个人面试的年龄信息时,我的第一个猜想是:这人要么是技术大牛,要么是老板的关系户,当时心里更加偏向大牛的猜测。

所以,一开始心里是怀着比较认真且有些紧张的心情面对的,有些担心自己的表现不够专业,从而影响对方对我们公司的评价。

但是问了几个问题后,我发现这个人和我想象中的有些不一样。

面试进行时

因为公司技术涉及到Binder比较多,所以我就问了一些相关的问题,都是比较基础的吧

:Linux和Android的IPC机制种类
应聘者:Linux中提供了很多进程间通信机制,主要有管道、信号、信号量、消息队列……(这个还是回答的差不多了)

:为什么要使用Binder
应聘者:这个也不太记得了

:Linux和Binder的IPC通信原理
应聘者:……这个不清楚了

我感觉再问下去就直接冷场了,于是,干脆换了方向,换了话题。看他的简历,Java基础好,于是就挑了Java方向的问题问他。

:你有互联网分布式相关项目开发经历么?
应聘者:有啊,那个 XXX 项目就是...(说了一堆)

:好,我看到了,我看这个项目是用 Dubbo 框架做的,为什么要用 Dubbo 呢?在你们整个项目里面 Dubbo 承担了什么角色?
应聘者:做服务治理,底层是 ZK…

然后他就一直在说和 ZK 的关系,我也没怎么听明白,我再怎么引导也没说清楚 Dubbo 在项目中承担什么角色。

:能介绍下服务与服务之间相互调用的时候,如果调用超时了是怎么处理的?
应聘者:超时啊,(想了几秒后)那应该是报错吧。

:确定是报错吗?(他想了想,不说话,然后我接着说)没有重试机制吗?重试机制是怎样的?

做过分布式的项目的都知道重试机制,至少读操作要支持重试,写操作支持重试的话被调用方还要支持幂等性,不然会造成重复写入。

应聘者:(局促的笑了一下,和我说)这个项目有点久了,这个不太记得了……

然后我看了下这个项目,2014 年做的,6 年前了,他说太久不记得了,那也情有可原了。

:我想问的是,从上到下,这些技术是怎么承接起来的,整体的系统架构是怎样的?(现场没纸笔,不然我都想让他画图了)
应聘者:呃……我知道你的意思,主要是我真的不知道怎么表达……(然后他不说话了,场面尴尬了)

:没事,问你一个设计性的问题,假如有一个接口,五个实现类,现在的需求可能要往接口加一个方法,这样就要改动五个实现类,但需求只需要改动其中两个实现类,要怎么设计才好?

应聘者:那就只能把方法写在两个实现类中……(想了半天也没有说出好的方案)

其实这里至少有两个方案:

可以再定义一个抽象类去实现这个接口,在抽象类中新增这个方法,然后其他两个实现类实现这个抽象类就好了。

使用 Java 8 中的新特性,在接口中新增默认方法或者静态方法。

所以,其实这里我一方面是考一下他的设计能力,另一方面我是想了解下他对 JDK 新特性各方面知识的应用和掌握。还有更多设计方案,我这里只列了两种。

:好的,没事,那你觉得你擅长的技术或者框架有哪一些呢?

应聘者:擅长的啊……(半天没说出来一个)也没什么,就 Java 基础方面还可以吧!

:Java 基础可以是吧,好吧,我问一些 Java 基础方面的问题吧。请问:Java 接口和抽象类的区别是什么?(其实就是上一题的答案)
应聘者:呃……(想了半天)好像是抽象类还是接口里面可以写实现方法的吧(不确定的回答)

:到底是哪个可以写实现方法呢?
应聘者:(左右摇头,眼神飘浮不定,不说话了,场面再度陷入尴尬……)

后面聊了一些其他的,期间我问了一下他的薪资要求(如果在10K左右,我觉得还是可以考虑一下的……)但是我没想到,他说20K起步,当然,他也说了理由,家庭经济压力大,必须要这个价。我表示理解,但是,我还是觉得没必要聊下去了。

:(没办法,我要打破这个尴尬场面)你确定是做过 Java 么,这都是非常基础的呀,感觉你基础也不是很好啊!
应聘者:哎,来这家公司面试没做准备!(一脸无奈)

:这样啊,那建议你还是回去好好准备一下吧,因为我们这个岗位是需要有一定技术能力的,所以,非常不好意思……
应聘者:好的,我明白。

最后

我一开始以为会是一个无所不能的大佬,结果发现对方技术陈旧,没有什么建树,而且年纪在所有面试者中也是偏大的,学习能力比较弱。

所以最后,虽然很同情他,但是我还是没敢收下他。

结束后,对面隐晦的问了一下,我没说话,直接摇了摇头,他看懂了,当时就感觉他快要哭出来了……

结语

Android学习是一条漫长的道路,我们要学习的东西不仅仅只有表面的 技术,还要深入底层,弄明白下面的 原理,只有这样,我们才能够提高自己的竞争力,在当今这个竞争激烈的世界里立足。

千里之行始于足下,愿你我共勉。

其实,Binder这个知识点并不难,当时面试结束后,我整合了很多Binder的知识,此外还有我认为比较重要的学习方向和知识点,当时发去了应聘者的邮箱。

另外,我在我的GitHub:https://github.com/xieyuliang/Android也备份了,需要的朋友可以自己来取,欢迎大家一起学习进步。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章