天天看點

一天時間,讓你拿下騰訊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機制,這個是面試必問之題。有些晦澀的點,或許它隻活在面試當中,實際工作當中你壓根不會用到它,但是你要知道它是什麼東西。

繼續閱讀