阿里的面試重在傾向深度挖掘,廣度挖掘相對少些

01

有位朋友去阿里巴巴java工程師崗位,面試完後,感觸很深,不愧是大公司,發現公司對於面試者的知識結構考核非常嚴謹,雖然只是一場面試,但可以作為我們工作學習的指導,有人說面試問到的東西在實際工作中很少用到,譬如數據結構、算法等,甚至有的人還倜儻,

面試造火箭,工作擰螺絲。但從一場正規的面試我們可以看得出規模較大的公司對於求職者的知識體系要求是相當高的。如果我們能在平時工作中就按著這樣的要求不斷要求自己,提升自己,相信在下一次面試的時候定能做到遊刃有餘。

阿里的面試一般會有兩輪電話技術面試,分別交叉檢驗求職者的基礎知識是否紮實。兩輪現場技術面試,一般是考核求職者的項目經驗。從這個角度分析,阿里對於人才招聘大概可以考核可以分為三個層次:基礎知識的考核、項目深度的考核。

基礎知識的考核

基礎知識的考核,主要考核求職者對 編程J語言本身原理的理解以及框架原理的理解。對於 Java 開發崗位上來說,一般考察的知識點有:

  1. 集合 HashMap 的原理,與 Hashtable、ConcurrentHashMap 的區別?
  2. 線程池的核心屬性以及處理流程、Synchronized關鍵字、鎖
  3. 線程的生命週期
  4. JVM類加載機制、內存模型、垃圾回收機制
  5. Spring Bean 容器生命週期
  6. Spring AOP 原理
  7. 數據庫 SQL 優化、數據庫索引、索引原理等

看到這一系列的知識點,可能有的一下子就慌了,當然,這只是一小部分而已。面試官喜歡針對求職者掌握的知識點刨根問底。如果你能吼住的話,進入下一輪面試的幾率就大大提高了。

阿里的面試重在傾向深度挖掘,廣度挖掘相對少些

阿里巴巴

阿里更傾向深度挖掘,針對你掌握的知識點進行深度挖掘。比如前面提到的java知識點,垃圾回收機制Garbage collection,我們知道要,準確理解Java的垃圾回收機制,我們可以從:“什麼時候”,“對什麼東西”,“做了什麼事情”這三個方面來分析。

要是在面試時,面試官問“對什麼東西”,有的求職者回答 沒有用的對象,按道理來說,這並沒有錯,只是這並不是理想的答案。要是能更進一步分析,那就更好了,GC操作的對象分為:通過可達性分析法無法搜索到的對象和可以搜索到的對象。對於搜索不到的方法進行標記。從root搜索不到,而且經過第一次標記、清理後,仍然沒有復活的對象。

對於用可達性分析法搜索不到的對象,GC並不一定會回收該對象。要完全回收一個對象,至少需要經過兩次標記的過程。 把問題具體化了一些,對類似這樣的對象進行回收,相信能給你這次面試加分。

項目思考深度

要是你通過基礎知識的考核,恭喜你,你離拿offer不遠了。接下來面試官一般會讓你說說你的項目經驗,譬如項目的架構圖,既然有了架構圖,你需要清楚理解每個模塊的作用,每個框架的原理以及與其他框架的優勢和不足。

阿里的面試重在傾向深度挖掘,廣度挖掘相對少些

阿里巴巴

在這個層次上,你不僅要對項目本身理解足夠深刻,還要跳出項目本身,思考開源框架本身的問題。進一步思考這些開源框架好不好,有什麼可以改進的地方。作為一名的程序員,有必要掌握為什麼要用這些框架?它有什麼不足,能不能做得更好?只有往深度的方向去思考,才能促進我們有所成長。

02

作為一名Android 開發人員,如何在面試中脫穎而出,找到心儀的工作?就個人觀點看,一般需要這樣的技能:技術紮實,有技術追求和工作激情 ;良好的溝通和協作。

簡單點,就是技術水平和溝通能力。其中技術始終是面試成敗的決定因素,技術掌握到什麼程度才能相對輕鬆地通過面試呢?

一般來說,一場Android面試內容不太可能全是Android的問題,應該也會與編程基礎相關的問題。譬如數據結構、算法和常見的設計模式要熟悉,比如單例模式、工程模式、觀察者模式等。至於數據結構工作中不常用到,但還是要稍微瞭解下,能熟練掌握更好。

阿里的面試重在傾向深度挖掘,廣度挖掘相對少些

面試

每一次面試來自不易,不可忽視,面試時,有些細節不容忽視。面試前,做一些準備是很有必要的,這裡給幾點建議。

1、梳理專業知識要點

毋庸置疑,專業知識點基礎要做好充分準備,如果時間緊,來不及做充分準備,最少也要大致瀏覽一下,溫故而知新,如果你是大神,請忽略。筆者有次面試時,沒有做好準備,一些基本的筆試題都沒有做好,最好的結果可想而知,而心儀的公司擦肩而過。

2、回答面試官的問題時要抓重點

一般程序員的口才能力相對比較薄弱,如果是這樣,建議你在面試過程中要學會揚長避短,針對面試官提出的問題,無論是技術問題還是談人生,都要做到有的放矢,抓重點。

3、平時要培養獨立思考,獨自解決問題能力

有的開發者,一碰到問題,喜歡立馬通過搜索引擎找到答案,認為這樣效率高,其實不然,獨立思考問題是一項很有意思的活。

在實際開發過程中,難免會遇到各種各樣的問題,這時,建議你先思考,實在不清楚的在通過搜索引擎或是其他方法解決。

相信你身邊有不少這樣的人:他們學習更傾向於被動接受知識,習慣人云亦云,遇到問題了,總是求助於他人,認為他們都有道理。

還有這樣的人,相信你身邊也不少:他們看問題總有自己的觀點,而且觀點新穎,想法深刻。能獨立思考問題的人,解決問題往往更實在,這就是獨立思考的魅力了。

我們平時如何積累面試中需要的技術,閱讀源碼是一個不錯的選擇,因為面試中的很多問題我們都可以從源碼中找答案,其次要主動學習平時工作中遇不到的一些技術,由於工作的原因,我們不可能通過公司的項目來解除到Android中所有的重要技術,尤其是一些規模不大的項目來說,這個時候需要我們主動去學習。比如AIDL原理、Binder機制、多進程、View的繪製流程、事件分發、消息隊列等。這類知識點,需要我們不斷去探索實踐,運用才能更好的解決問題。

當我們回過頭來總結,你會發現大多數正規的面試每個環節都是層層遞進的,而且逐步深入。並不是每次面試結果都能如願拿到offer,但我們可以從面試中總結出來的經驗,也是一個很好的學習指引,我們可以自己自查,看看自己現在是處於哪個層次,這樣在工作中也可以不斷地向更高層次邁進。

[END]


分享到:


相關文章: