前不久,接到了上面的任务,要去面几个人,我也没有拒绝的理由,就接下了,结果遇见了一个非常特殊的应聘者——一个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 接口和抽象类的区别是什么?(其实就是上一题的答案)
应聘者:呃……(想了半天)好像是抽象类还是接口里面可以写实现方法的吧(不确定的回答)
我:到底是哪个可以写实现方法呢?
应聘者:(左右摇头,眼神飘浮不定,不说话了,场面再度陷入尴尬……)
面试宝典
面试必问知识点、BATJ历年历年面试真题+解析

学习经验总结
(一)调整好心态
心态是一个人能否成功的关键,如果不调整好自己的心态,是很难静下心来学习的,尤其是现在这么浮躁的社会,大部分的程序员的现状就是三点一线,感觉很累,一些大龄的程序员更多的会感到焦虑,而且随着年龄的增长,这种焦虑感会越来越强烈,那么唯一的解决办法就是调整好自己的心态,要做到自信、年轻、勤奋。这样的调整,一方面对自己学习有帮助,另一方面让自己应对面试更从容,更顺利。
(二)时间挤一挤,制定好计划
一旦下定决心要提升自己,那么再忙的情况下也要每天挤一挤时间,切记不可“两天打渔三天晒网”。另外,制定好学习计划也是很有必要的,有逻辑有条理的复习,先查漏补缺,然后再系统复习,这样才能够做到事半功倍,效果才会立竿见影。
(三)不断学习技术知识,更新自己的知识储备
对于一名程序员来说,技术知识方面是非常重要的,可以说是重中之重。要面试大厂,自己的知识储备一定要非常丰富,若缺胳膊少腿,别说在实际工作当中,光是面试这一关就过不了。对于技术方面,首先基础知识一定要扎实,包括自己方向的语言基础、计算机基础、算法以及编程等等。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!
等等。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!
281

被折叠的 条评论
为什么被折叠?



