前言
轉眼間,2020 年已過去一大半了,2020 年很難,各企業裁員的消息蠻多的,降職,不發年終獎等等。2020 年確實是艱難的一年。然而生活總是要繼續,時間不給你喪的機會!如果我們能堅持下來,不斷提高自己,說不定會有新的機會。
面試中,網絡(http, https, tcp, udp), jvm, 類加載機制等這些基礎的知識點是高頻出現的,每個程序員都能說上好多。但不一定說到重點,以及理解背后的原理。
我在面試的過程中也經常被問到,于是總結記錄了下來。千萬不要小瞧這些基礎,有時候,你算法,項目經驗都過了,但是基礎答得不太好。結果可能會通過,但這肯定會影響你的評級,這是特別吃虧的。所以,不如花點時間背一下,理解一下背后的原理。
舉一個簡單的例子, https 連接過程是怎樣的,使用了了哪種加密方式,可以抓包嗎,怎樣防止抓包,你是否能夠對答如下。
廢話不多說,開始進入正文。
核心分析內容
面向Android初、中級開發者,對于要學習的Android理論知識,我認為主要包括:
Android基礎 & 常用
Android進階
與時俱進、熱門技術
編程語言
計算機基礎
下面,我將對上面的理論知識逐一介紹。
1. Android基礎 & 常用
針對Android基礎&常用知識,我認為對于初級開發者來說,按照優先級最主要的知識點主要包括:四大組件、布局使用、多線程 & 動畫;
具體介紹如下:
2. Android進階
針對Android進階知識,按照優先級最主要的知識點主要包括:自定義View、性能優化,具體介紹如下:
3. 與時俱進、熱門技術
除了基礎日常使用的Android知識,我們還需時刻關注行業動態,與時俱進的學習新技術,如近些年來較為熱門的Android新興技術包括:Flutter、熱修復、插件化等;
同時,了解 & 學習常用的開源庫也十分重要,常用的開源庫主要包括圖片加載、網絡請求、異步處理的開源庫,具體類型如下:
4. 編程語言:Java與Java虛擬機
Android是基于Java的,所以學習Java和Java虛擬機(JVM)十分重要
對于學習Java,我們移動端開發學習Java不需要后端那么深入,我認為作為Android開發者,學習的內容包括:語言特性、基礎使用、集合類&機制。具體介紹如下:
近年來新興的Kotlin大家也可以了解一下,但我認為短時間內是不會完全取代Java
對于Java虛擬機(JVM),屬于底層 & 原理性的內容,具體介紹 & 學習的內容包括:
5. 計算機基礎
除了學習Android特定技術外,對于程序員來說,計算機基礎素養也是十分重要,即所有從事技術行業的程序員都該具備的基礎知識。
計算機基礎主要包括:數據結構、算法和計算機網絡,具體介紹如下:
6. 額外
當你學習完上述知識后,你應該已經能稱得算是一個中級Android開發工程師了,可以嘗試向高級Android開發工程師進階。
此時,我認為有3個方向可以嘗試:技術專家、架構師 & 管理層,具體介紹如下:
最后
其實Android開發的知識點就那么多,面試問來問去還是那么點東西。所以面試沒有其他的訣竅,只看你對這些知識點準備的充分程度。so,出去面試時先看看自己復習到了哪個階段就好。
雖然 Android 沒有前幾年火熱了,已經過去了會四大組件就能找到高薪職位的時代了。這只能說明 Android 中級以下的崗位飽和了,現在高級工程師還是比較缺少的,很多高級職位給的薪資真的特別高(錢多也不一定能找到合適的),所以努力讓自己成為高級工程師才是最重要的。
這里附上上述的面試題相關的幾十套字節跳動,京東,小米,騰訊、頭條、阿里、美團等公司21年的面試題。把技術點整理成了視頻和PDF(實際上比預期多花了不少精力),包含知識脈絡 + 諸多細節。
由于篇幅有限,這里以圖片的形式給大家展示一小部分。
詳細整理在文檔可以見;
Android架構視頻+BAT面試專題PDF+學習筆記?
網上學習 Android的資料一大堆,但如果學到的知識不成體系,遇到問題時只是淺嘗輒止,不再深入研究,那么很難做到真正的技術提升。希望這份系統化的技術體系對大家有一個方向參考。
droid的資料一大堆,但如果學到的知識不成體系,遇到問題時只是淺嘗輒止,不再深入研究,那么很難做到真正的技術提升。希望這份系統化的技術體系對大家有一個方向參考。