十幾年工作經驗,連一個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也備份了,需要的朋友可以自己來取,歡迎大家一起學習進步。

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