一天時間,讓你拿下騰訊Offer

一、前言
這兩個月聽的最多的兩個詞就是 疫情 和 裁員 ,作爲被裁大軍中的一員,我的關鍵詞就是 遺憾 和 還好 。
遺憾的是現在的項目還有很多想象的空間,但是就要走向盡頭; 還好 的是畢業幾年來一直沒有以一種打工的心態在工作,寒冬就寒冬,怕個錘子。
最近在整理面試方面的文章,因爲有小夥伴問我是怎麼準備面試的,也有許多小夥伴正面臨着面試,我也想談談我最近的一些想法和計劃,大家一起討論。
整體分爲以下兩個方面:
自我介紹 & 項目經驗
知識儲備
二、自我介紹 & 項目經驗
2.1 自我介紹
這個是第一個要準備的東西,面試多幾次,慢慢完善就好,重要的是 有條理 。可以從下面幾點入手,關鍵是第二和第三點:
之前工作的公司、崗位及工作方向。
團隊構成,在團隊中的位置及承擔的責任。
爲團隊做出的主要貢獻,對於這部分涉及到的 項目經歷以及延伸出的知識點 一定要重點準備。
能夠從側面反映出你優點的愛好。
如果能從其它渠道瞭解到你招人的部門所做的東西,那麼也可以談談對他們的一些瞭解以及自己的願望,沒有就算了,這個是可選項。
2.2 項目經驗
項目經驗這塊因人而異,把覺得做的有亮點的東西挑出來,從四個方面來準備:
功能模塊的實現
達到了什麼效果
遇到了什麼問題,是如何解決的
涉及到的相關知識點
項目經驗和知識點其實是一個雙向的過程,要 試圖去找到它們之間的聯繫 :
談到項目經驗的時候,可以說:做完 xx 之後,我還去了解了一下 yy 背後的原理,xxx,這裏體現的是 你是否有求知慾 。
談到知識點的時候,可以說:yy 的原理是這樣的,在 xx 項目中我是如何應用它來解決問題的,這裏體現的是 你是否具備把知識付諸實踐的能力 。
2.3 遇到的問題
一定要準備,很重要! 問題涉及到知識點也要都弄清楚。
平時項目可能比較忙,遇到問題急着解決。但是要學着先把問題先記錄下來,之後再按下面的步驟進行總結,有條理地進行闡述:
遇到問題
分析過程
解決方案
結果

三、知識儲備
很多人準備面試的時候,大多數就會這樣的,打開百度,輸入 “Android 面試題”,找幾個多的開始看。
這雖然看起來很自然,但是並不是一種 健康的方式 ,面試題的作用應當是查缺補漏,上學的時候也不是直接發習題冊然後對着答案學習吧?
知乎上有個問題,叫做 如何高效學習 ,裏面有一個回答我覺得很符合我自己的觀點,就是 建立起自己的知識體系 ,建立知識體系的目的在於:
鞏固記憶。
認識自己,找到自己的優勢及不足。
把握複習的進度。
經驗總結。
目前我自己的總結的會分爲以下幾個大點:
3.1 Java 基礎知識
面向對象的基本思想
Object 類相關: Object 類的幾個關鍵函數、 String 涉及到的常量池概念,序列化 & 反序列化。
重要關鍵字: final 、 static 。
內部類:內部類的分類、應用場景、內部類編譯成 class 後是怎麼樣的。
抽象類 & 接口:區別、應用場景。
編碼:編碼的目的、分類。
異常:異常體系、自定義異常。
註解:註解的基本概念、分類、編譯時註解 & 運行時註解。
容器:重要容器的內部實現、容器間的對比。
內存模型。
垃圾回收。
類加載的過程。
泛型:分類、通配符 & 上下邊界、泛型擦除。
反射:使用。
3.2 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 的權限管理機制。
3.3 圖片
Bitmap 相關: Bitmap 的大小計算、質量、 inJustDecodeBounds 、 inBitmap 。
幾種圖片格式的對比、壓縮。
大圖加載: BitmapRegionDecoder
3.4 算法
別無捷徑,刷題,但是刷題的時候,要按照題的類型去總結。
3.5 開源框架
RxJava :操作符的應用場景、重點操作符的內部實現、和 RxJava 的對比。
Glide :流程、緩存相關的實現。
Retrofit :流程、動態代理 & 註解解析。
OkHttp :流程、隊列實現、緩存實現。
3.6 性能

性能優化技巧:啓動速度優化、佈局優化、內存優化、電量優化、 APK 大小優化、列表滑動優化。


性能優化工具: TraceView 、 Systrace 、調試 GPU 過度繪製 & GPU 呈現模式分析、 Hierarchy Viewer 、 MAT 、 Memory Monitor & Heap Viewer & Allocation Tracker 、 LeakCanary 、 Lint 。


ANR


ANR 原因


ANR 產生過程源碼分析


信息收集過程


trace 文件分析


分析基本流程


具體示例


如何避免產生 ANR


性能實踐:解決過的性能問題,從 遇到問題、分析問題、解決問題、結果 四個點進行闡述。

3.7 View
繪製流程: measure 、 layout 、 draw 三個關鍵流程。
事件分發:事件分發的原理、處理過的滑動衝突問題。
自定義 View : Canvas & Path ,實現過的比較複雜的自定義 View 。
3.8 架構
MVP : MVP 的思想 & 優劣勢、在項目中的應用、
3.9 源碼

AMS


WMS


Binder


應用啓動流程


APK 相關知識點


APK 構成: resources.arsc 組成、 AndroidManifest.xml 、 aapt 作用及原理


APK 打包過程


APK 安裝過程


APK 簽名 & 校驗原理


dexopt 原理

3.10 網絡
基礎知識:看一下對於 <<計算機網絡>> ,重點是網絡分層模型、 TCP/UDP 、 HTTP/HTTPS 。
3.11 設計模式
按照 23 種網絡模型、三個分類進行總結,每種設計模式包含以下三個方面,至少要準備常用的幾個:
UML
Android
3.12 多線程
看併發編程的藝術,這本書的目錄就是多線程最好的知識體系。
遇到過的多線程問題、怎麼解決的。
3.13 Gradle
常用配置。
多渠道打包。
3.14 插件化
插件化的核心思想。
幾種插件化框架實現的原理。
3.15 組件化
Arouter
3.16 Kotlin
有用到的可以看看。
3.17 多媒體
音頻、視頻播放。
3.18 大前端
ReactNative 、 Flutter :沒學過的可以瞭解一下思想。
3.19 JNI
調用實現方式。
四、結語
我一直覺得技術面試不是考試,考前背背題,發給你一張考卷,答完交卷等通知。
首先,技術面試是一個 認識自己 的過程,知道自己和外面世界的差距。
更重要的是,技術面試是一個雙向瞭解的過程,要讓對方發現你的閃光點,同時也要 試圖去找到對方的閃光點 ,因爲他以後可能就是你的同事或者領導,所以,面試官問你有什麼問題的時候,不要說沒有了,要去試圖瞭解他的工作內容、瞭解這個團隊的氛圍。
找工作無非就是看三點:和什麼人、做什麼事、給多少錢,要給這三者在自己的心裏劃分一個比例。
今天關於面試的分享就到這裏,還是那句話,有些東西你不僅要懂,而且要能夠很好地表達出來,能夠讓面試官認可你的理解,例如Handler機制,這個是面試必問之題。有些晦澀的點,或許它只活在面試當中,實際工作當中你壓根不會用到它,但是你要知道它是什麼東西。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章