這兩個月聽的最多的兩個詞就是 疫情 和 裁人 ,做爲被裁大軍中的一員,個人關鍵詞就是 遺憾 和 還好 。前端
遺憾的是如今的項目還有不少想象的空間,可是就要走向盡頭; 還好 的是畢業幾年來一直沒有以一種打工的心態在工做,寒冬就寒冬,怕個錘子。面試
最近在整理面試方面的文章,由於有小夥伴問我是怎麼準備面試的,也有許多小夥伴正面臨着面試,我也想談談我最近的一些想法和計劃,你們一塊兒討論。算法
總體分爲如下兩個方面:數據庫
·自我介紹 & 項目經驗編程
·知識儲備設計模式
這個是第一個要準備的東西,面試多幾回,慢慢完善就好,重要的是 有條理 。能夠從下面幾點入手,關鍵是第二和第三點:緩存
·以前工做的公司、崗位及工做方向。性能優化
·團隊構成,在團隊中的位置及承擔的責任。網絡
·爲團隊作出的主要貢獻,對於這部分涉及到的 項目經歷以及延伸出的知識點 必定要重點準備。多線程
·可以從側面反映出你優勢的愛好。
·若是能從其它渠道瞭解到你招人的部門所作的東西,那麼也能夠談談對他們的一些瞭解以及本身的願望,沒有就算了,這個是可選項。
項目經驗這塊因人而異,把以爲作的有亮點的東西挑出來,從四個方面來準備:
·功能模塊的實現
·達到了什麼效果
·遇到了什麼問題,是如何解決的
·涉及到的相關知識點
項目經驗和知識點實際上是一個雙向的過程,要 試圖去找到它們之間的聯繫 :
·談到項目經驗的時候,能夠說:作完 xx 以後,我還去了解了一下 yy 背後的原理,xxx,這裏體現的是 你是否有求知慾 。
·談到知識點的時候,能夠說:yy 的原理是這樣的,在 xx 項目中我是如何應用它來解決問題的,這裏體現的是 你是否具有把知識付諸實踐的能力 。
必定要準備,很重要! 問題涉及到知識點也要都弄清楚。
平時項目可能比較忙,遇到問題急着解決。可是要學着先把問題先記錄下來,以後再按下面的步驟進行總結,有條理地進行闡述:
·遇到問題
·分析過程
·解決方案
·結果
不少人準備面試的時候,大多數就會這樣的,打開百度,輸入 「Android 面試題」,找幾個多的開始看。
這雖然看起來很天然,可是並非一種 健康的方式 ,面試題的做用應當是查缺補漏,上學的時候也不是直接發習題冊而後對着答案學習吧?
知乎上有個問題,叫作 如何高效學習 ,裏面有一個回答我以爲很符合我本身的觀點,就是 創建起本身的知識體系 ,創建知識體系的目的在於:
·鞏固記憶。
·認識本身,找到本身的優點及不足。
·把握複習的進度。
·經驗總結。
目前我本身的總結的會分爲如下幾個大點:
·面向對象的基本思想
·Object 類相關: Object 類的幾個關鍵函數、 String 涉及到的常量池概念,序列化 & 反序列化。
·重要關鍵字: final 、 static 。
·內部類:內部類的分類、應用場景、內部類編譯成 class 後是怎麼樣的。
·抽象類 & 接口:區別、應用場景。
·編碼:編碼的目的、分類。
·異常:異常體系、自定義異常。
·註解:註解的基本概念、分類、編譯時註解 & 運行時註解。
·容器:重要容器的內部實現、容器間的對比。
·內存模型。
·垃圾回收。
·類加載的過程。
·泛型:分類、通配符 & 上下邊界、泛型擦除。
·反射:使用。
·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 。
·
·
ANR
·
·
ANR 緣由
·
·
ANR 產生過程源碼分析
·
·
信息收集過程
·
·
trace 文件分析
·
·
分析基本流程
·
·
具體示例
·
·
如何避免產生 ANR
·
·
性能實踐:解決過的性能問題,從 遇到問題、分析問題、解決問題、結果 四個點進行闡述。
·
·繪製流程: 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
·看併發編程的藝術,這本書的目錄就是多線程最好的知識體系。
·遇到過的多線程問題、怎麼解決的。
·經常使用配置。
·多渠道打包。
·插件化的核心思想。
·幾種插件化框架實現的原理。
Arouter
·有用到的能夠看看。
·音頻、視頻播放。
·ReactNative 、 Flutter :沒學過的能夠了解一下思想。
·調用實現方式。
我一直以爲技術面試不是考試,考前背背題,發給你一張考卷,答完交卷等通知。
首先,技術面試是一個 認識本身 的過程,知道本身和外面世界的差距。
更重要的是,技術面試是一個雙向瞭解的過程,要讓對方發現你的閃光點,同時也要 試圖去找到對方的閃光點 ,由於他之後可能就是你的同事或者領導,因此,面試官問你有什麼問題的時候,不要說沒有了,要去試圖瞭解他的工做內容、瞭解這個團隊的氛圍。
找工做無非就是看三點:和什麼人、作什麼事、給多少錢,要給這三者在本身的內心劃分一個比例。
今天關於面試的分享就到這裏,仍是那句話,有些東西你不只要懂,並且要可以很好地表達出來,可以讓面試官承認你的理解,例如Handler機制,這個是面試必問之題。有些晦澀的點,或許它只活在面試當中,實際工做當中你壓根不會用到它,可是你要知道它是什麼東西。