一型将、前言
這兩個(gè)月聽(tīng)的最多的兩個(gè)詞就是 寒冬 和 裁員,作為被裁大軍中的一員荐虐,我的關(guān)鍵詞就是 遺憾 和 還好七兜。
遺憾 的是現(xiàn)在的項(xiàng)目還有很多想象的空間,但是就要走向盡頭福扬;還好 的是畢業(yè)幾年來(lái)一直沒(méi)有以一種打工的心態(tài)在工作腕铸,寒冬就寒冬,怕個(gè)錘子铛碑。
最近又開始寫文章了狠裹,有小伙伴問(wèn)我是怎么準(zhǔn)備面試的,我也想談?wù)勎易罱囊恍┫敕ê陀?jì)劃亚茬,大家一起討論酪耳。
整體分為以下兩個(gè)方面:
- 自我介紹 & 項(xiàng)目經(jīng)驗(yàn)
- 知識(shí)儲(chǔ)備
二、自我介紹 & 項(xiàng)目經(jīng)驗(yàn)
2.1 自我介紹
這個(gè)是第一個(gè)要準(zhǔn)備的東西刹缝,面試多幾次碗暗,慢慢完善就好,重要的是 有條理梢夯⊙粤疲可以從下面幾點(diǎn)入手,關(guān)鍵是第二和第三點(diǎn):
- 之前工作的公司颂砸、崗位及工作方向噪奄。
- 團(tuán)隊(duì)構(gòu)成死姚,在團(tuán)隊(duì)中的位置及承擔(dān)的責(zé)任。
- 為團(tuán)隊(duì)做出的主要貢獻(xiàn)勤篮,對(duì)于這部分涉及到的 項(xiàng)目經(jīng)歷以及延伸出的知識(shí)點(diǎn) 一定要重點(diǎn)準(zhǔn)備都毒。
- 能夠從側(cè)面反映出你優(yōu)點(diǎn)的愛(ài)好。
- 如果能從其它渠道了解到你招人的部門所做的東西碰缔,那么也可以談?wù)剬?duì)他們的一些了解以及自己的愿望账劲,沒(méi)有就算了,這個(gè)是可選項(xiàng)金抡。
2.2 項(xiàng)目經(jīng)驗(yàn)
項(xiàng)目經(jīng)驗(yàn)這塊因人而異瀑焦,把覺(jué)得做的有亮點(diǎn)的東西挑出來(lái),從四個(gè)方面來(lái)準(zhǔn)備:
- 功能模塊的實(shí)現(xiàn)
- 達(dá)到了什么效果
- 遇到了什么問(wèn)題梗肝,是如何解決的
- 涉及到的相關(guān)知識(shí)點(diǎn)
項(xiàng)目經(jīng)驗(yàn)和知識(shí)點(diǎn) 其實(shí)是一個(gè)雙向的過(guò)程榛瓮,要 試圖去找到它們之間的聯(lián)系:
- 談到項(xiàng)目經(jīng)驗(yàn)的時(shí)候,可以說(shuō):做完 xx 之后巫击,我還去了解了一下 yy 背后的原理禀晓,xxx,這里體現(xiàn)的是 你是否有求知欲 坝锰。
- 談到知識(shí)點(diǎn)的時(shí)候匆绣,可以說(shuō):yy 的原理是這樣的,在 xx 項(xiàng)目中我是如何應(yīng)用它來(lái)解決問(wèn)題的什黑,這里體現(xiàn)的是 你是否具備把知識(shí)付諸實(shí)踐的能力。
2.3 遇到的問(wèn)題
一定要準(zhǔn)備堪夭,很重要愕把! 問(wèn)題涉及到知識(shí)點(diǎn)也要都弄清楚。
平時(shí)項(xiàng)目可能比較忙森爽,遇到問(wèn)題急著解決恨豁。但是要學(xué)著先把問(wèn)題先記錄下來(lái),之后再按下面的步驟進(jìn)行總結(jié)爬迟,有條理地進(jìn)行闡述:
- 遇到問(wèn)題
- 分析過(guò)程
- 解決方案
- 結(jié)果
三橘蜜、知識(shí)儲(chǔ)備
很多人準(zhǔn)備面試的時(shí)候,大多數(shù)就會(huì)這樣的付呕,打開百度计福,輸入 “Android 面試題”,找?guī)讉€(gè)多的開始看徽职。
這雖然看起來(lái)很自然象颖,但是并不是一種 健康的方式,面試題的作用應(yīng)當(dāng)是查缺補(bǔ)漏姆钉,上學(xué)的時(shí)候也不是直接發(fā)習(xí)題冊(cè)然后對(duì)著答案學(xué)習(xí)吧说订?
知乎上有個(gè)問(wèn)題抄瓦,叫做 如何高效學(xué)習(xí),里面有一個(gè)回答我覺(jué)得很符合我自己的觀點(diǎn)陶冷,就是 建立起自己的知識(shí)體系钙姊,建立知識(shí)體系的目的在于:
- 鞏固記憶。
- 認(rèn)識(shí)自己埂伦,找到自己的優(yōu)勢(shì)及不足煞额。
- 把握復(fù)習(xí)的進(jìn)度。
- 經(jīng)驗(yàn)總結(jié)赤屋。
目前我自己的總結(jié)的會(huì)分為以下幾個(gè)大點(diǎn)立镶,詳細(xì)的可以看 Android 知識(shí)梳理目錄 - 好吧,這是一個(gè)很"干"的標(biāo)題类早。
3.1 Java 基礎(chǔ)知識(shí)
- 面向?qū)ο蟮幕舅枷?/li>
-
Object
類相關(guān):Object
類的幾個(gè)關(guān)鍵函數(shù)媚媒、String
涉及到的常量池概念,序列化 & 反序列化涩僻。 - 重要關(guān)鍵字:
final
缭召、static
。 - 內(nèi)部類:內(nèi)部類的分類逆日、應(yīng)用場(chǎng)景嵌巷、內(nèi)部類編譯成
class
后是怎么樣的。 - 抽象類 & 接口:區(qū)別室抽、應(yīng)用場(chǎng)景搪哪。
- 編碼:編碼的目的、分類坪圾。
- 異常:異常體系晓折、自定義異常。
- 注解:注解的基本概念兽泄、分類漓概、編譯時(shí)注解 & 運(yùn)行時(shí)注解。
- 容器:重要容器的內(nèi)部實(shí)現(xiàn)病梢、容器間的對(duì)比胃珍。
- 內(nèi)存模型。
- 垃圾回收蜓陌。
- 類加載的過(guò)程觅彰。
- 泛型:分類、通配符 & 上下邊界钮热、泛型擦除缔莲。
- 反射:使用。
3.2 Android 基礎(chǔ)知識(shí)
-
Dalvik
霉旗、Art
虛擬機(jī) -
Activity
:生命周期痴奏、launchMode
蛀骇。 -
Fragment
:生命周期、懶加載读拆、兩種Adapter
之間的區(qū)別擅憔。 -
BroadcastReceiver
:基本概念、廣播分類檐晕、權(quán)限暑诸。 -
Service
:生命周期、onStartCommand
的返回值辟灰、startService
和bindService
的區(qū)別个榕、相同進(jìn)程 & 不同進(jìn)程的交互、IntentService
實(shí)現(xiàn)原理芥喇。 - 重要的工具類 & 源碼實(shí)現(xiàn):
AsyncTask
西采、HandlerThread
、Handler
继控、IntentService
械馆、LruCache
、LinkedHashMap
武通、SparseArray
霹崎。 -
RecyclerView
:緩存原理、和ListView
的對(duì)比冶忱、Adapter
如何適配多種layout
尾菇。 - 存儲(chǔ):數(shù)據(jù)庫(kù)升級(jí) & 優(yōu)化、
ContentProvider
囚枪,SharePreference
错沽。 -
SDK
版本升級(jí)的兼容問(wèn)題。 -
Android
的權(quán)限管理機(jī)制眶拉。
3.3 圖片
-
Bitmap
相關(guān):Bitmap
的大小計(jì)算、質(zhì)量憔儿、inJustDecodeBounds
忆植、inBitmap
。 - 幾種圖片格式的對(duì)比谒臼、壓縮朝刊。
- 大圖加載:
BitmapRegionDecoder
3.4 算法
- 別無(wú)捷徑,刷題蜈缤,但是刷題的時(shí)候拾氓,要按照題的類型去總結(jié)。
3.5 開源框架
-
RxJava
:操作符的應(yīng)用場(chǎng)景底哥、重點(diǎn)操作符的內(nèi)部實(shí)現(xiàn)咙鞍、和RxJava
的對(duì)比房官。 -
Glide
:流程、緩存相關(guān)的實(shí)現(xiàn)续滋。 -
Retrofit
:流程翰守、動(dòng)態(tài)代理 & 注解解析。 -
OkHttp
:流程疲酌、隊(duì)列實(shí)現(xiàn)蜡峰、緩存實(shí)現(xiàn)。
3.6 性能
- 性能優(yōu)化技巧:?jiǎn)?dòng)速度優(yōu)化朗恳、布局優(yōu)化湿颅、內(nèi)存優(yōu)化、電量?jī)?yōu)化粥诫、
APK
大小優(yōu)化油航、列表滑動(dòng)優(yōu)化。 - 性能優(yōu)化工具:
TraceView
臀脏、Systrace
劝堪、調(diào)試GPU
過(guò)度繪制 &GPU
呈現(xiàn)模式分析、Hierarchy Viewer
揉稚、MAT
秒啦、Memory Monitor & Heap Viewer & Allocation Tracker
、LeakCanary
搀玖、Lint
余境。 -
ANR
-
ANR
原因 -
ANR
產(chǎn)生過(guò)程源碼分析 - 信息收集過(guò)程
-
trace
文件分析 - 分析基本流程
- 具體示例
- 如何避免產(chǎn)生
ANR
-
- 性能實(shí)踐:解決過(guò)的性能問(wèn)題,從 遇到問(wèn)題灌诅、分析問(wèn)題芳来、解決問(wèn)題、結(jié)果 四個(gè)點(diǎn)進(jìn)行闡述猜拾。
3.7 View
- 繪制流程:
measure
即舌、layout
、draw
三個(gè)關(guān)鍵流程挎袜。 - 事件分發(fā):事件分發(fā)的原理顽聂、處理過(guò)的滑動(dòng)沖突問(wèn)題。
- 自定義
View
:Canvas
&Path
盯仪,實(shí)現(xiàn)過(guò)的比較復(fù)雜的自定義View
紊搪。
3.8 架構(gòu)
-
MVP
:MVP
的思想 & 優(yōu)劣勢(shì)、在項(xiàng)目中的應(yīng)用全景、
3.9 源碼
AMS
WMS
Binder
- 應(yīng)用啟動(dòng)流程
-
APK
相關(guān)知識(shí)點(diǎn)-
APK
構(gòu)成:resources.arsc
組成耀石、AndroidManifest.xml
、aapt
作用及原理 -
APK
打包過(guò)程 -
APK
安裝過(guò)程 -
APK
簽名 & 校驗(yàn)原理 -
dexopt
原理
-
3.10 網(wǎng)絡(luò)
- 基礎(chǔ)知識(shí):看一下對(duì)于 <<計(jì)算機(jī)網(wǎng)絡(luò)>> 爸黄,重點(diǎn)是網(wǎng)絡(luò)分層模型滞伟、
TCP/UDP
揭鳞、HTTP/HTTPS
。
3.11 設(shè)計(jì)模式
按照23
種網(wǎng)絡(luò)模型诗良、三個(gè)分類進(jìn)行總結(jié)汹桦,每種設(shè)計(jì)模式包含以下三個(gè)方面,至少要準(zhǔn)備常用的幾個(gè):
- 基本概念:
UML
圖鉴裹、簡(jiǎn)單例子舞骆、應(yīng)用場(chǎng)景、優(yōu)勢(shì) & 劣勢(shì)径荔。 -
Android
源碼中的實(shí)現(xiàn) - 項(xiàng)目中的應(yīng)用
3.12 多線程
- 看并發(fā)編程的藝術(shù)督禽,這本書的目錄就是多線程最好的知識(shí)體系。
- 遇到過(guò)的多線程問(wèn)題总处、怎么解決的狈惫。
3.13 Gradle
- 常用配置。
- 多渠道打包鹦马。
3.14 插件化
- 插件化的核心思想胧谈。
- 幾種插件化框架實(shí)現(xiàn)的原理。
3.15 組件化
- 組件化的優(yōu)勢(shì)荸频。
-
Arouter
:使用方式菱肖、實(shí)現(xiàn)原理。
3.16 Kotlin
- 有用到的可以看看旭从。
3.17 多媒體
- 音頻稳强、視頻播放。
3.18 大前端
-
ReactNative
和悦、Flutter
:沒(méi)學(xué)過(guò)的可以了解一下思想退疫。
3.19 JNI
- 調(diào)用實(shí)現(xiàn)方式。
四鸽素、結(jié)語(yǔ)
我一直覺(jué)得技術(shù)面試不是考試褒繁,考前背背題,發(fā)給你一張考卷馍忽,答完交卷等通知棒坏。
首先,技術(shù)面試是一個(gè) 認(rèn)識(shí)自己 的過(guò)程舵匾,知道自己和外面世界的差距。
更重要的是谁不,技術(shù)面試是一個(gè)雙向了解的過(guò)程坐梯,要讓對(duì)方發(fā)現(xiàn)你的閃光點(diǎn),同時(shí)也要 試圖去找到對(duì)方的閃光點(diǎn)刹帕,因?yàn)樗院罂赡芫褪悄愕耐禄蛘哳I(lǐng)導(dǎo)吵血,所以谎替,面試官問(wèn)你有什么問(wèn)題的時(shí)候,不要說(shuō)沒(méi)有了蹋辅,要去試圖了解他的工作內(nèi)容钱贯、了解這個(gè)團(tuán)隊(duì)的氛圍。
找工作無(wú)非就是看三點(diǎn):和什么人侦另、做什么事秩命、給多少錢,要給這三者在自己的心里劃分一個(gè)比例褒傅。