我是如何準備 Android 技術(shù)面試的~

一、前言

這兩個月聽的最多的兩個詞就是 寒冬裁員,作為被裁大軍中的一員,我的關(guān)鍵詞就是 遺憾還好。

遺憾 的是現(xiàn)在的項目還有很多想象的空間,但是就要走向盡頭;還好 的是畢業(yè)幾年來一直沒有以一種打工的心態(tài)在工作,寒冬就寒冬,怕個錘子。

最近又開始寫文章了,有小伙伴問我是怎么準備面試的,我也想談?wù)勎易罱囊恍┫敕ê陀媱潱蠹乙黄鹩懻摗?/p>

整體分為以下兩個方面:

  • 自我介紹 & 項目經(jīng)驗
  • 知識儲備

二、自我介紹 & 項目經(jīng)驗

2.1 自我介紹

這個是第一個要準備的東西,面試多幾次,慢慢完善就好,重要的是 有條理??梢詮南旅鎺c入手,關(guān)鍵是第二和第三點:

  • 之前工作的公司、崗位及工作方向。
  • 團隊構(gòu)成,在團隊中的位置及承擔的責任。
  • 為團隊做出的主要貢獻,對于這部分涉及到的 項目經(jīng)歷以及延伸出的知識點 一定要重點準備。
  • 能夠從側(cè)面反映出你優(yōu)點的愛好。
  • 如果能從其它渠道了解到你招人的部門所做的東西,那么也可以談?wù)剬λ麄兊囊恍┝私庖约白约旱脑竿?,沒有就算了,這個是可選項。

2.2 項目經(jīng)驗

項目經(jīng)驗這塊因人而異,把覺得做的有亮點的東西挑出來,從四個方面來準備:

  • 功能模塊的實現(xiàn)
  • 達到了什么效果
  • 遇到了什么問題,是如何解決的
  • 涉及到的相關(guān)知識點

項目經(jīng)驗和知識點 其實是一個雙向的過程,要 試圖去找到它們之間的聯(lián)系

  • 談到項目經(jīng)驗的時候,可以說:做完 xx 之后,我還去了解了一下 yy 背后的原理,xxx,這里體現(xiàn)的是 你是否有求知欲
  • 談到知識點的時候,可以說:yy 的原理是這樣的,在 xx 項目中我是如何應(yīng)用它來解決問題的,這里體現(xiàn)的是 你是否具備把知識付諸實踐的能力。

2.3 遇到的問題

一定要準備,很重要! 問題涉及到知識點也要都弄清楚。

平時項目可能比較忙,遇到問題急著解決。但是要學著先把問題先記錄下來,之后再按下面的步驟進行總結(jié),有條理地進行闡述:

  • 遇到問題
  • 分析過程
  • 解決方案
  • 結(jié)果

三、知識儲備

很多人準備面試的時候,大多數(shù)就會這樣的,打開百度,輸入 “Android 面試題”,找?guī)讉€多的開始看。

這雖然看起來很自然,但是并不是一種 健康的方式,面試題的作用應(yīng)當是查缺補漏,上學的時候也不是直接發(fā)習題冊然后對著答案學習吧?

知乎上有個問題,叫做 如何高效學習,里面有一個回答我覺得很符合我自己的觀點,就是 建立起自己的知識體系,建立知識體系的目的在于:

  • 鞏固記憶。
  • 認識自己,找到自己的優(yōu)勢及不足。
  • 把握復(fù)習的進度。
  • 經(jīng)驗總結(jié)。

目前我自己的總結(jié)的會分為以下幾個大點,詳細的可以看 Android 知識梳理目錄 - 好吧,這是一個很"干"的標題。

3.1 Java 基礎(chǔ)知識

  • 面向?qū)ο蟮幕舅枷?/li>
  • Object類相關(guān):Object類的幾個關(guān)鍵函數(shù)、String涉及到的常量池概念,序列化 & 反序列化。
  • 重要關(guān)鍵字:final、static。
  • 內(nèi)部類:內(nèi)部類的分類、應(yīng)用場景、內(nèi)部類編譯成class后是怎么樣的。
  • 抽象類 & 接口:區(qū)別、應(yīng)用場景。
  • 編碼:編碼的目的、分類。
  • 異常:異常體系、自定義異常。
  • 注解:注解的基本概念、分類、編譯時注解 & 運行時注解。
  • 容器:重要容器的內(nèi)部實現(xiàn)、容器間的對比。
  • 內(nèi)存模型。
  • 垃圾回收。
  • 類加載的過程。
  • 泛型:分類、通配符 & 上下邊界、泛型擦除。
  • 反射:使用。

3.2 Android 基礎(chǔ)知識

  • Dalvik、Art虛擬機
  • Activity:生命周期、launchMode。
  • Fragment:生命周期、懶加載、兩種Adapter之間的區(qū)別。
  • BroadcastReceiver:基本概念、廣播分類、權(quán)限。
  • Service:生命周期、onStartCommand的返回值、startServicebindService的區(qū)別、相同進程 & 不同進程的交互、IntentService實現(xiàn)原理。
  • 重要的工具類 & 源碼實現(xiàn):AsyncTaskHandlerThread、HandlerIntentService、LruCache、LinkedHashMap、SparseArray。
  • RecyclerView:緩存原理、和ListView的對比、Adapter如何適配多種layout。
  • 存儲:數(shù)據(jù)庫升級 & 優(yōu)化、ContentProvider,SharePreference。
  • SDK版本升級的兼容問題。
  • Android的權(quán)限管理機制。

3.3 圖片

  • Bitmap相關(guān):Bitmap的大小計算、質(zhì)量、inJustDecodeBoundsinBitmap。
  • 幾種圖片格式的對比、壓縮。
  • 大圖加載:BitmapRegionDecoder

3.4 算法

  • 別無捷徑,刷題,但是刷題的時候,要按照題的類型去總結(jié)。

3.5 開源框架

  • RxJava:操作符的應(yīng)用場景、重點操作符的內(nèi)部實現(xiàn)、和RxJava的對比。
  • Glide:流程、緩存相關(guān)的實現(xiàn)。
  • Retrofit:流程、動態(tài)代理 & 注解解析。
  • OkHttp:流程、隊列實現(xiàn)、緩存實現(xiàn)。

3.6 性能

  • 性能優(yōu)化技巧:啟動速度優(yōu)化、布局優(yōu)化、內(nèi)存優(yōu)化、電量優(yōu)化、APK大小優(yōu)化、列表滑動優(yōu)化。
  • 性能優(yōu)化工具:TraceView、Systrace、調(diào)試GPU過度繪制 & GPU呈現(xiàn)模式分析、Hierarchy Viewer、MAT、Memory Monitor & Heap Viewer & Allocation Tracker、LeakCanary、Lint。
  • ANR
    • ANR原因
    • ANR產(chǎn)生過程源碼分析
    • 信息收集過程
    • trace文件分析
    • 分析基本流程
    • 具體示例
    • 如何避免產(chǎn)生ANR
  • 性能實踐:解決過的性能問題,從 遇到問題、分析問題、解決問題、結(jié)果 四個點進行闡述。

3.7 View

  • 繪制流程:measure、layoutdraw三個關(guān)鍵流程。
  • 事件分發(fā):事件分發(fā)的原理、處理過的滑動沖突問題。
  • 自定義ViewCanvas & Path,實現(xiàn)過的比較復(fù)雜的自定義View。

3.8 架構(gòu)

  • MVPMVP的思想 & 優(yōu)劣勢、在項目中的應(yīng)用、

3.9 源碼

  • AMS
  • WMS
  • Binder
  • 應(yīng)用啟動流程
  • APK相關(guān)知識點
    • APK構(gòu)成:resources.arsc組成、AndroidManifest.xml、aapt作用及原理
    • APK打包過程
    • APK安裝過程
    • APK簽名 & 校驗原理
    • dexopt原理

3.10 網(wǎng)絡(luò)

  • 基礎(chǔ)知識:看一下對于 <<計算機網(wǎng)絡(luò)>> ,重點是網(wǎng)絡(luò)分層模型、TCP/UDP、HTTP/HTTPS。

3.11 設(shè)計模式

按照23種網(wǎng)絡(luò)模型、三個分類進行總結(jié),每種設(shè)計模式包含以下三個方面,至少要準備常用的幾個:

  • 基本概念:UML圖、簡單例子、應(yīng)用場景、優(yōu)勢 & 劣勢。
  • Android源碼中的實現(xiàn)
  • 項目中的應(yīng)用

3.12 多線程

  • 看并發(fā)編程的藝術(shù),這本書的目錄就是多線程最好的知識體系。
  • 遇到過的多線程問題、怎么解決的。

3.13 Gradle

  • 常用配置。
  • 多渠道打包。

3.14 插件化

  • 插件化的核心思想。
  • 幾種插件化框架實現(xiàn)的原理。

3.15 組件化

  • 組件化的優(yōu)勢。
  • Arouter:使用方式、實現(xiàn)原理。

3.16 Kotlin

  • 有用到的可以看看。

3.17 多媒體

  • 音頻、視頻播放。

3.18 大前端

  • ReactNativeFlutter:沒學過的可以了解一下思想。

3.19 JNI

  • 調(diào)用實現(xiàn)方式。

四、結(jié)語

我一直覺得技術(shù)面試不是考試,考前背背題,發(fā)給你一張考卷,答完交卷等通知。

首先,技術(shù)面試是一個 認識自己 的過程,知道自己和外面世界的差距。

更重要的是,技術(shù)面試是一個雙向了解的過程,要讓對方發(fā)現(xiàn)你的閃光點,同時也要 試圖去找到對方的閃光點,因為他以后可能就是你的同事或者領(lǐng)導,所以,面試官問你有什么問題的時候,不要說沒有了,要去試圖了解他的工作內(nèi)容、了解這個團隊的氛圍。

找工作無非就是看三點:和什么人、做什么事、給多少錢,要給這三者在自己的心里劃分一個比例。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 寫了個顯眼的標題,就真得說幾句有用的話。 5月份一個很偶然的機會,加了葉神的微信,還收到了祝福。一激動就承諾說寫...
    batbattle閱讀 13,694評論 1 57
  • 基礎(chǔ) 不管是Android基礎(chǔ)還是Java基礎(chǔ)以及常見的數(shù)據(jù)結(jié)構(gòu),這些是無原則地必須要熟練掌握的,尤其是非計算機專...
    JxMY閱讀 2,870評論 2 48
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,681評論 1 32
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,316評論 2 89
  • 昨天帶孩子去書展,一轉(zhuǎn)眼的功夫,小家伙就不知跑哪去了,人流熙熙攘攘,想問人或找人求助都不好描述。碰到這種情...
    托尼在廈門閱讀 706評論 0 50

友情鏈接更多精彩內(nèi)容