十几年工作经验,连一个Binder都讲不明白,还敢要20K,网易的朋友给我这份339页的Android面经

应聘者情况

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

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

面试第一感

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

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

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

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

面试进行时

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

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

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

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

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

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

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

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

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

:确定是报错吗?(他想了想,不十几年工作经验,连一个Binder都讲不明白,还敢要20K,网易的朋友给我这份339页的Android面经_第1张图片
说话,然后我接着说)没有重试机制吗?重试机制是怎样的?

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

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

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

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

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

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

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

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

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

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

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

应聘者:擅长的啊……(半天没说出来一个)也没什么,就 Java 基础方面还可以吧!
,那你觉得你擅长的技术或者框架有哪一些呢?

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

你可能感兴趣的:(程序员,架构,移动开发,android)