5年CRUD出去面試總遭拒?一文講解阿里等Java程序員面試考核標準

面試過程

最近去阿里的菜鳥國際做了一次面試交流,發現大公司對於面試者的知識結構考核非常嚴謹,可以作為我們日常工作學習的指導。雖然很多人說面試問到的東西在實際工作中很少用到,甚至有「面試造火箭,工作擰螺絲」的說法。

但從面試中,其實可以看得出來現在的公司對於面試者的知識體系要求。如果我們能在工作中就按著這樣的要求去不斷提升,那麼在面試的時候必然也能遊刃有餘。

一般來說,阿里的面試會有兩輪的技術電面,分別交叉檢驗你的技術基礎。後面還有兩輪的現場技術面試,主要檢驗你的項目經驗。但從知識體系的角度來看,阿里面試對於知識的考核可以分為三個層次:對於基礎知識的考核、對於項目經驗的考核、對於項目深度的考核。

5年CRUD出去面試總遭拒?一文講解阿里等Java程序員面試考核標準

一、基礎知識考核

在這個層次上,主要考核你對 Java 語言本身原理的理解以及各種框架的原理理解。對於 Java 開發崗位上來說,這些知識點包括但不限於:

  • 集合 HashMap 的原理,與 Hashtable、ConcurrentHashMap 的區別?
  • Java 線程池的核心屬性以及處理流程
  • Java 併發包原理、Synchronized關鍵字、鎖
  • 線程的生命週期
  • JVM類加載機制
  • JVM內存模型
  • JVM分代以及垃圾回收機制
  • Spring Bean 容器生命週期
  • Spring AOP 原理
  • Dubbo 請求流程以及原理
  • 數據庫 SQL 優化、數據庫索引、索引原理
  • ……

上面只是說了很少的一部分而已,多的就不在這裡總結了。之前有整理過一份Java後端面試複習筆記,含450道面試題詳細解析,有需要的朋友可以在文末獲取這份資料的免費領取方式!

5年CRUD出去面試總遭拒?一文講解阿里等Java程序員面試考核標準

看到這麼多的知識點,我一下子就懵逼了,這麼多得看到什麼時候才看得完啊?但後面我想明白了,其實你不需要全部都懂,但需要了解大部分知識點,並且在這大部分知識點中,還需要有部分是瞭解得非常深入的。如果達到這個水平,基本上都能通過考核。

對於基礎知識的考核多出現在阿里的前兩輪電話面試上。對於這塊,你事前把常見的面試題目看一遍,多面試幾次基本上都沒有問題。

二、項目經驗的考核

當你成功通過基礎知識的考核之後,你會進入下一關的考驗:項目的理解程度。

面試官首先會讓你選擇一個你最拿手的項目,畫出架構圖,之後的一切問題都從這個架構圖觸發。當你畫出架構圖之後,你肯定需要解釋清楚每個模塊的作用,每個框架的原理以及與其他框架的區別。

例如我就用我做過的一個搜索項目作為經典項目,與面試官探討。

1.項目中用到了 Kafka 這個框架,那麼面試官就會問 Kafka 和 RocketMQ 之間的區別是什麼,它們兩個有什麼不同?

2.項目中還用到了 Canal 這個阿里巴巴開源的框架,那麼面試官自然會問這個東西是幹嘛的,原理是怎樣的?

3.項目中還用到了 Zookeeper 作為協調者,那麼 Zookeeper 在這個項目中的作用是什麼,扮演了什麼角色?

對於「項目理解程度」的考核會發生在技術面試的三四輪。在這個層次上,你必須要有一個拿得出手的項目,並且對其中的所有框架以及原理都瞭如指掌,否則你會被虐慘。

三、項目深度的考核

通過上一輪對於「項目理解程度」的考核後,基本上你對整個項目都會有一個全面的認識,應用層面上的問題基本上不會難倒你了。但在「項目思考深度」的考核上,

就不僅僅只是考核應用層面上的問題了。

還是用我做過的一個搜索項目作為例子,其中 Canal 這個開源框架暫時是沒有實現集群這個功能的,那麼面試官就問了:

你如何去改造這個項目,從而實現 Canal 的集群功能?

這個時候,你會發現你懵逼了,因為你從來沒有去思考過這個問題。你所有的工作內容都是在想如何使用開源框架,而沒有進一步思考這些開源框架好不好,有什麼可以改進的地方。

所以,在這一個層次上考核的是你對開源框架的思考深度,這些框架到底好不好,好在哪裡,不好在哪裡,有什麼可以改進的地方。

對於「項目思考深度」的考核同樣發生在技術面試的三四輪。在這個層次上,你不僅要對項目本身理解足夠深刻,還要跳出項目本身,去思考開源框架本身的問題。

四、總結

當我們回過頭來總結,你會發現這三個層次都是層層遞進的,而且逐步深入。雖然這是面試中總結出來的經驗,但是這卻是一個很好的學習指引。讀者可以自己自查,看看自己現在是處於哪個層次,這樣在工作中也可以不斷地向更高層次邁進。

對於我來說,我缺乏的是對於項目的思考深度,很多時候都是業界覺得好,那我就用了。但是作為一個高級開發,甚至是一個即將成為架構師的高級開發來說,你必須知道為什麼要用這些框架?它有什麼問題,我們能不能做得更好?只有這樣,我們才能有所成長。

下面分享一下Java程序員進階高級開發所需要進階學習的內容

架構師必備基本技能

  • 併發編程進階
  • JVM性能深度調優
  • 網絡編程與高效IO
  • 深入Tomcat底層
  • MySQL深度優化
  • Linux基礎必備
5年CRUD出去面試總遭拒?一文講解阿里等Java程序員面試考核標準

設計思想和框架源碼解讀能力

  • 設計模式
  • Spring源碼解讀
  • SpringMVC源碼解讀
  • MyBatis框架源碼解讀
5年CRUD出去面試總遭拒?一文講解阿里等Java程序員面試考核標準

高併發分佈式架構

5年CRUD出去面試總遭拒?一文講解阿里等Java程序員面試考核標準

高性能存儲

5年CRUD出去面試總遭拒?一文講解阿里等Java程序員面試考核標準

微服務架構

5年CRUD出去面試總遭拒?一文講解阿里等Java程序員面試考核標準

分佈式事務方案和團隊開發工具

5年CRUD出去面試總遭拒?一文講解阿里等Java程序員面試考核標準

如何學習呢?有沒有免費資料?

針對上面的學習路線還整理總結的Java進階學習筆記和Java進階核心知識筆記,在這也是免費分享給那些有需要的朋友,其中囊括了

Dubbo、Redis、Netty、zookeeper、Spring cloud、分佈式、高併發等架構資料和完整的Java架構學習進階導圖!

資料免費獲取方式:轉發,轉發+關注後私信【架構】即可獲取資料免費領取方式!

5年CRUD出去面試總遭拒?一文講解阿里等Java程序員面試考核標準

5年CRUD出去面試總遭拒?一文講解阿里等Java程序員面試考核標準

5年CRUD出去面試總遭拒?一文講解阿里等Java程序員面試考核標準

5年CRUD出去面試總遭拒?一文講解阿里等Java程序員面試考核標準


分享到:


相關文章: