作者:情聖
簡介
本人15年畢業後,就開始從事Android移動應用開發,轉眼間到現在已進入第六個年頭了。剛開始是南下前往深圳工作,在深圳摸爬滾打了好三四年,也都是在小廠的圈子裏跳來跳去。薪資最高的時候也才15K。但我一直感覺憑藉自己的技能水平,應該遠不止這個薪資水平。於是從2020年的下半年開始,抽出自己的業餘時間進行系統複習、學習一些技術點知識。10月底纔開始往一些公司投簡歷,中間也有幾次碰壁,但最終還是在獲得了一家上市公司的offer,雖不是什麼一流大廠,但對於我來說,從15K的薪資漲到近30K,已經非常滿足了。下面分享一下我的複習、學習指南,以及一些心得體會吧。(先曬一下我的offer)
面試個人體會
我個人認爲,對於Android面試以及進階的最佳學習方法莫過於刷題+多寫多看博客+記錄知識點+總結,前三者博主將淋漓盡致地揮毫於這篇博客文章中,至於總結在於個人,實際上越到後面你會發現面試並不難,其次就是在刷題的過程中有沒有去思考,刷題只是次之,這又是一個層次了,這裏暫時不提後面再談。
一、java相關
java基礎
1、java 中==和 equals 和 hashCode 的區別
2、int、char、long 各佔多少字節數
3、int 與 integer 的區別
4、談談對 java 多態的理解
5、String、StringBuffer、StringBuilder 區別
6、什麼是內部類?內部類的作用
7、抽象類和接口區別java高級
1、哪些情況下的對象會被垃圾回收機制處理掉?
2、講一下常見編碼方式?
3、utf-8 編碼中的中文佔幾個字節;int 型幾個字節?
4、靜態代理和動態代理的區別,什麼場景使用?
5、Java 的異常體系
6、談談你對解析與分派的認識。
7、修改對象 A 的 equals 方法的簽名,那麼使用 HashMap 存放這個對象 實例的時候,會調用哪個 equals 方法?
二、圖片相關
1、圖片庫對比
2、LRUCache 原理
3、圖片加載原理
4、自己去實現圖片庫,怎麼做?
5、Glide 源碼解析
6、Glide 使用什麼緩存?
7、Glide 內存緩存如何控制大小?
8.Fresco 源碼分析
三、網絡和安全機制
1.網絡框架對比和源碼分析
2.自己去設計網絡請求框架,怎麼做?
3.網絡請求緩存處理,okhttp 如何處理網絡緩存的
4.從網絡加載一個 10M 的圖片,說下注意事項
5.TCP 的 3 次握手和四次揮手
6.TCP 與 UDP 的區別
7.TCP 與 UDP 的應用
8.HTTP 協議
四、數據庫相關
1.Sqlite 升級,增加字段的語句
2.數據庫框架對比和源碼分析
3.數據庫優化
4.數據庫數據遷移問題
5.Sqlite 常見異常
五、插件化、模塊化、組 件化、熱修復、增量更新、Gradle
1.對熱修復和插件化的理解
2.插件化原理分析
3.模塊化實現(好處,原因)
4.熱修復、插件化
5.項目組件化的理解
6.描述清楚點擊 Android Studio 的 build 按鈕後發 生了什麼
六、架構設計與設計模式
1.談談你對 Android 設計模式的理解
2.MVC MVP MVVM 原理和區別
3.你所知道的設計模式有哪些?
4.項目中常用的設計模式
5.手寫生產者/消費者模式
6.寫出觀察者模式的代碼
7.適配器模式,裝飾者模式,外觀模式的異同?
8.談談對 RxJava 的理解
七、性能優化專題
1.啓動 app 黑白屏優化
2.穩定——內存優化
3.流暢——卡頓優化
4.節省——耗電優化
5.安裝包——APK 瘦身
6.冷啓動與熱啓動
7.內存泄漏的場景和解決辦法
- Bitmap 優化
9.webview 優化
八、Android Framework 相關
1、Android 系統架構
2、View 的事件分發機制?滑動衝突怎麼解決?
3、View 的繪製流程?
4、跨進程通信。
5、Android 系統啓動流程是什麼?
6、說下四大組件的啓動過程,四大組件的啓動與銷 毀的方式。
7、理解 Window 和 WindowManager。
8、大體說清一個應用程序安裝到手機上時發生了什 麼?
九、Android 優秀三方庫源碼
1.網絡底層框架:OkHttp 實現原理
2.網絡封裝框架:Retrofifit 實現原理
3.響應式編程框架:RxJava 實現原理
4.圖片加載框架:Glide 實現原理
5.事件總線框架:EventBus 實現原理
6.內存泄漏檢測框架:LeakCanary 實現原理
7.依賴注入框架:ButterKnife 實現原理
8.依賴全局管理框架:Dagger2 實現原理
9.數據庫框架:GreenDao 實現原理
十、算法合集
1.編程技巧
2.線性表
3.字符串
4.棧和隊列
5.樹
6.排序
7.查找
8.暴力枚舉法
9.廣度、深度優先搜索
10.分治算法
11.貪心算法
12.動態規劃
最後
其實Android開發的知識點就那麼多,面試問來問去還是那麼點東西。所以面試沒有其他的訣竅,只看你對這些知識點了解的程度。so,出去面試時先看看自己複習到了哪個階段就好。
大家如果還想了解更多Android 相關的更多知識點,可以點進我的【GitHub項目中:https://github.com/733gh/GH-Android-Review-master】自行查看,裏面記錄了許多的Android 知識點。
持續更新--請Android的小夥伴關注! 喜歡的話給一個贊Star吧!