什么是Kotlin?
Kotlin,如前面所說,它是JetBrains開發的基于JVM的語言。JetBrains因為創造了一個強大的Java開發IDE被大家所熟知。Android Studio,官方的Android IDE,就是基于Intellij,作為一個該平臺的插件。
Kotlin是使用Java開發者的思維被創建的,Intellij作為它主要的開發IDE。對于Android開發者,有兩個有趣的特點:
對Java開發者來說,Kotlin是非常直覺化的,并且非常容易學習。語言的大部分內容都是與我們知道的非常相似,不同的地方,它的基礎概念也能迅速地掌握它。
它與我們日常生活使用的IDE無需配置就能完全整合。Android Studio能夠非常完美地理解、編譯運行Kotlin代碼。而且對這門語言的支持正是來自于開發了這個IDE的公司本身,所以我們Android開發者是一等公民。
但是在小編學習Flutter和Kotlin發現網上沒有能將兩個技術點講的特別系統并運用的學習資料,我翻閱了各大平臺網站都沒有發現真正能把Flutter和Kotlin講解的十分透徹,最終在一位大佬的指點下,我拿到了這份Flutter和Kotlin筆記,這份筆記中全面的講解了Flutter和Kotlin相關知識。
有需要的朋友可在文末獲取這兩份筆記+所有資料文檔哦!
很多人準備面試的時候,大多數就會這樣的,打開百度,輸入 “Android 面試題”,找幾個多的開始看。
這雖然看起來很自然,但是并不是一種?健康的方式,面試題的作用應當是查缺補漏,上學的時候也不是直接發習題冊然后對著答案學習吧?
知乎上有個問題,叫做?如何高效學習,里面有一個回答我覺得很符合我自己的觀點,就是?建立起自己的知識體系,建立知識體系的目的在于:
-
鞏固記憶。
-
認識自己,找到自己的優勢及不足。
-
把握復習的進度。
-
經驗總結。
目前我自己的總結的會分為以下幾個大點:
Java 基礎知識
- 面向對象的基本思想
- Object類相關:Object類的幾個關鍵函數、String涉及到的常量池概念,序列化 & 反序列化。
- 重要關鍵字:final、static。
- 內部類:內部類的分類、應用場景、內部類編譯成class后是怎么樣的。
- 抽象類 & 接口:區別、應用場景。
- 編碼:編碼的目的、分類。
- 異常:異常體系、自定義異常。
- 注解:注解的基本概念、分類、編譯時注解 & 運行時注解。
- 容器:重要容器的內部實現、容器間的對比。
- 內存模型。
- 垃圾回收。
- 類加載的過程。
- 泛型:分類、通配符 & 上下邊界、泛型擦除。
- 反射:使用。
Android 基礎知識
- Dalvik、Art虛擬機
- Activity:生命周期、launchMode。
- Fragment:生命周期、懶加載、兩種Adapter之間的區別。
- BroadcastReceiver:基本概念、廣播分類、權限。
- Service:生命周期、onStartCommand的返回值、startService和bindService的區別、相同進程 & 不同進程的交互、IntentService實現原理。
- 重要的工具類 & 源碼實現:AsyncTask、HandlerThread、Handler、IntentService、LruCache、LinkedHashMap、SparseArray。
- RecyclerView:緩存原理、和ListView的對比、Adapter如何適配多種layout。
- 存儲:數據庫升級 & 優化、ContentProvider,SharePreference。
- SDK版本升級的兼容問題。
- Android的權限管理機制。
圖片
- Bitmap相關:Bitmap的大小計算、質量、inJustDecodeBounds、inBitmap。
- 幾種圖片格式的對比、壓縮。
- 大圖加載:BitmapRegionDecoder
算法
- 別無捷徑,刷題,但是刷題的時候,要按照題的類型去總結。
開源框架
- RxJava:操作符的應用場景、重點操作符的內部實現、和RxJava的對比。
- Glide:流程、緩存相關的實現。
- Retrofit:流程、動態代理 & 注解解析。
- OkHttp:流程、隊列實現、緩存實現。
性能
- 性能優化技巧:啟動速度優化、布局優化、內存優化、電量優化、APK大小優化、列表滑動優化。
- 性能優化工具:TraceView、Systrace、調試GPU過度繪制 &?GPU呈現模式分析、Hierarchy Viewer、MAT、Memory Monitor & Heap Viewer & Allocation Tracker、LeakCanary、Lint。
- ANRANR原因ANR產生過程源碼分析信息收集過程trace文件分析分析基本流程具體示例如何避免產生ANR
- 性能實踐:解決過的性能問題,從?遇到問題、分析問題、解決問題、結果?四個點進行闡述。
View
- 繪制流程:measure、layout、draw三個關鍵流程。
- 事件分發:事件分發的原理、處理過的滑動沖突問題。
- 自定義View:Canvas?&?Path,實現過的比較復雜的自定義View。
架構
- MVP:MVP的思想 & 優劣勢、在項目中的應用、
源碼
- AMS
- WMS
- Binder
- 應用啟動流程
- APK相關知識點APK構成:resources.arsc組成、AndroidManifest.xml、aapt作用及原理APK打包過程APK安裝過程APK簽名 & 校驗原理dexopt原理
網絡
- 基礎知識:看一下對于 <<計算機網絡>> ,重點是網絡分層模型、TCP/UDP、HTTP/HTTPS。
設計模式
按照23種網絡模型、三個分類進行總結,每種設計模式包含以下三個方面,至少要準備常用的幾個:
- 基本概念:UML圖、簡單例子、應用場景、優勢 & 劣勢。
- Android源碼中的實現
- 項目中的應用
多線程
- 看并發編程的藝術,這本書的目錄就是多線程最好的知識體系。
- 遇到過的多線程問題、怎么解決的。
Gradle
- 常用配置。
- 多渠道打包。
插件化
- 插件化的核心思想。
- 幾種插件化框架實現的原理。
組件化
- 組件化的優勢。
- Arouter:使用方式、實現原理。
Kotlin
- 有用到的可以看看。
多媒體
- 音頻、視頻播放。
大前端
- ReactNative、Flutter:沒學過的可以了解一下思想。
JNI
- 調用實現方式。
其他重要知識點
下面是有幾位Android行業大佬對應上方技術點整理的一些進階資料。有**【Android架構視頻+BATJ面試專題PDF+核心筆記等資料+源碼+思維導圖】**。希望能夠幫助到大家提升技術。如果大家想要獲取的話,可以免費獲取哦~
高級進階篇——高級UI,自定義View(部分展示)
UI這塊知識是現今使用者最多的。當年火爆一時的Android入門培訓,學會這小塊知識就能隨便找到不錯的工作了。不過很顯然現在遠遠不夠了,拒絕無休止的CV,親自去項目實戰,讀源碼,研究原理吧!
- 面試題部分合集
這小塊知識就能隨便找到不錯的工作了。不過很顯然現在遠遠不夠了,拒絕無休止的CV,親自去項目實戰,讀源碼,研究原理吧!
[外鏈圖片轉存中…(img-8nc42jAg-1620586340622)]
- 面試題部分合集
[外鏈圖片轉存中…(img-DPlai00k-1620586340625)]