-
1 # 洪生鵬
-
2 # 萬能的大熊
正常情況那就排除了天才的可能性,再根據一萬個小時定律,差不多3年多才能成為某個領域的專家。看你的情況,怎麼不也是個的是資深級別的程式設計師。
-
3 # 灬亦凡
JVM類載入機制、記憶體模型、垃圾回收機制
Spring Bean 容器生命週期
Spring AOP 原理
資料庫 SQL 最佳化、資料庫索引、索引原理等
看到這一系列的知識點,可能有的一下子就慌了,當然,這只是一小部分而已。面試官喜歡針對求職者掌握的知識點刨根問底。如果你能吼住的話,進入下一輪面試的機率就大大提高了。
阿里更傾向深度挖掘,針對你掌握的知識點進行深度挖掘。比如前面提到的java知識點,垃圾回收機制Garbage collection,我們知道要,準確理解Java的垃圾回收機制,我們可以從:“什麼時候”,“對什麼東西”,“做了什麼事情”這三個方面來分析。
要是在面試時,面試官問“對什麼東西”,有的求職者回答 沒有用的物件,按道理來說,這並沒有錯,只是這並不是理想的答案。要是能更進一步分析,那就更好了,GC操作的物件分為:透過可達性分析法無法搜尋到的物件和可以搜尋到的物件。對於搜尋不到的方法進行標記。從root搜尋不到,而且經過第一次標記、清理後,仍然沒有復活的物件。
對於用可達性分析法搜尋不到的物件,GC並不一定會回收該物件。要完全回收一個物件,至少需要經過兩次標記的過程。 把問題具體化了一些,對類似這樣的物件進行回收,相信能給你這次面試加分。
專案思考深度
要是你透過基礎知識的考核,恭喜你,你離拿offer不遠了。接下來面試官一般會讓你說說你的專案經驗,譬如專案的架構圖,既然有了架構圖,你需要清楚理解每個模組的作用,每個框架的原理以及與其他框架的優勢和不足。
在這個層次上,你不僅要對專案本身理解足夠深刻,還要跳出專案本身,思考開源框架本身的問題。進一步思考這些開源框架好不好,有什麼可以改進的地方。作為一名的程式設計師,有必要掌握為什麼要用這些框架?它有什麼不足,能不能做得更好?只有往深度的方向去思考,才能促進我們有所成長。
本人在一家小公司待了差不多4年,做的比較雜,又要做安卓端,又要做java後臺,
公司最近也不景氣了,老闆說今年沒業績的話明年就解散了,所以很慌,想在這一年裡深入學習java後臺的知識,明年找個java後臺的開發,問下4到5年應該是什麼水平
回覆列表
轉換一下回答方式,從面試角度切入。
阿里的面試重在傾向深度挖掘,廣度挖掘相對少些
01
有位朋友去阿里巴巴java工程師崗位,面試完後,感觸很深,不愧是大公司,發現公司對於面試者的知識結構考核非常嚴謹,雖然只是一場面試,但可以作為我們工作學習的指導,有人說面試問到的東西在實際工作中很少用到,譬如資料結構、演算法等,甚至有的人還倜儻,面試造火箭,工作擰螺絲。但從一場正規的面試我們可以看得出規模較大的公司對於求職者的知識體系要求是相當高的。如果我們能在平時工作中就按著這樣的要求不斷要求自己,提升自己,相信在下一次面試的時候定能做到遊刃有餘。
阿里的面試一般會有兩輪電話技術面試,分別交叉檢驗求職者的基礎知識是否紮實。兩輪現場技術面試,一般是考核求職者的專案經驗。從這個角度分析,阿里對於人才招聘大概可以考核可以分為三個層次:基礎知識的考核、專案深度的考核。
基礎知識的考核
基礎知識的考核,主要考核求職者對 程式設計J語言本身原理的理解以及框架原理的理解。對於 Java 開發崗位上來說,一般考察的知識點有:
集合 HashMap 的原理,與 Hashtable、ConcurrentHashMap 的區別?
執行緒池的核心屬性以及處理流程、Synchronized關鍵字、鎖
執行緒的生命週期
JVM類載入機制、記憶體模型、垃圾回收機制
Spring Bean 容器生命週期
Spring AOP 原理
資料庫 SQL 最佳化、資料庫索引、索引原理等
看到這一系列的知識點,可能有的一下子就慌了,當然,這只是一小部分而已。面試官喜歡針對求職者掌握的知識點刨根問底。如果你能吼住的話,進入下一輪面試的機率就大大提高了。
阿里更傾向深度挖掘,針對你掌握的知識點進行深度挖掘。比如前面提到的java知識點,垃圾回收機制Garbage collection,我們知道要,準確理解Java的垃圾回收機制,我們可以從:“什麼時候”,“對什麼東西”,“做了什麼事情”這三個方面來分析。
要是在面試時,面試官問“對什麼東西”,有的求職者回答 沒有用的物件,按道理來說,這並沒有錯,只是這並不是理想的答案。要是能更進一步分析,那就更好了,GC操作的物件分為:透過可達性分析法無法搜尋到的物件和可以搜尋到的物件。對於搜尋不到的方法進行標記。從root搜尋不到,而且經過第一次標記、清理後,仍然沒有復活的物件。
對於用可達性分析法搜尋不到的物件,GC並不一定會回收該物件。要完全回收一個物件,至少需要經過兩次標記的過程。 把問題具體化了一些,對類似這樣的物件進行回收,相信能給你這次面試加分。
專案思考深度
要是你透過基礎知識的考核,恭喜你,你離拿offer不遠了。接下來面試官一般會讓你說說你的專案經驗,譬如專案的架構圖,既然有了架構圖,你需要清楚理解每個模組的作用,每個框架的原理以及與其他框架的優勢和不足。
在這個層次上,你不僅要對專案本身理解足夠深刻,還要跳出專案本身,思考開源框架本身的問題。進一步思考這些開源框架好不好,有什麼可以改進的地方。作為一名的程式設計師,有必要掌握為什麼要用這些框架?它有什麼不足,能不能做得更好?只有往深度的方向去思考,才能促進我們有所成長。
02
作為一名Android 開發人員,如何在面試中脫穎而出,找到心儀的工作?就個人觀點看,一般需要這樣的技能:技術紮實,有技術追求和工作激情 ;良好的溝通和協作。
簡單點,就是技術水平和溝通能力。其中技術始終是面試成敗的決定因素,技術掌握到什麼程度才能相對輕鬆地透過面試呢?
一般來說,一場Android面試內容不太可能全是Android的問題,應該也會與程式設計基礎相關的問題。譬如資料結構、演算法和常見的設計模式要熟悉,比如單例模式、工程模式、觀察者模式等。至於資料結構工作中不常用到,但還是要稍微瞭解下,能熟練掌握更好。
每一次面試來之不易,不可忽視,面試時,有些細節不容忽視。面試前,做一些準備是很有必要的,這裡給幾點建議。
1、梳理專業知識要點
毋庸置疑,專業知識點基礎要做好充分準備,如果時間緊,來不及做充分準備,最少也要大致瀏覽一下,溫故而知新,如果你是大神,請忽略。筆者有次面試時,沒有做好準備,一些基本的筆試題都沒有做好,最好的結果可想而知,而心儀的公司擦肩而過。
2、回答面試官的問題時要抓重點
一般程式設計師的口才能力相對比較薄弱,如果是這樣,建議你在面試過程中要學會揚長避短,針對面試官提出的問題,無論是技術問題還是談人生,都要做到有的放矢,抓重點。
3、平時要培養獨立思考,獨自解決問題能力
有的開發者,一碰到問題,喜歡立馬透過搜尋引擎找到答案,認為這樣效率高,其實不然,獨立思考問題是一項很有意思的活。
在實際開發過程中,難免會遇到各種各樣的問題,這時,建議你先思考,實在不清楚的在透過搜尋引擎或是其他方法解決。
相信你身邊有不少這樣的人:他們學習更傾向於被動接受知識,習慣人云亦云,遇到問題了,總是求助於他人,認為他們都有道理。
還有這樣的人,相信你身邊也不少:他們看問題總有自己的觀點,而且觀點新穎,想法深刻。能獨立思考問題的人,解決問題往往更實在,這就是獨立思考的魅力了。
我們平時如何積累面試中需要的技術,閱讀原始碼是一個不錯的選擇,因為面試中的很多問題我們都可以從原始碼中找答案,其次要主動學習平時工作中遇不到的一些技術,由於工作的原因,我們不可能透過公司的專案來解除到Android中所有的重要技術,尤其是一些規模不大的專案來說,這個時候需要我們主動去學習。比如AIDL原理、Binder機制、多程序、View的繪製流程、事件分發、訊息佇列等。這類知識點,需要我們不斷去探索實踐,運用才能更好的解決問題。
當我們回過頭來總結,你會發現大多數正規的面試每個環節都是層層遞進的,而且逐步深入。並不是每次面試結果都能如願拿到offer,但我們可以從面試中總結出來的經驗,也是一個很好的學習指引,我們可以自己自查,看看自己現在是處於哪個層次,這樣在工作中也可以不斷地向更高層次邁進。