背景經(jīng)歷
當(dāng)時我工作近4年虑瀑,明顯感覺到了瓶頸期。 具體來說舌狗,感覺自己做過一些技術(shù)設(shè)計叽奥、也有過一些產(chǎn)出痛侍,但是從技術(shù)深度上感覺不足主届,到后期時做事也沒有明顯挑戰(zhàn),完全適應(yīng)了公司節(jié)奏君丁,說句不好聽的成了老油條,可以每天舒服的混日子(這也有好處谈截,有時間準(zhǔn)備面試)。這對于個人成長不利毙死,長此以往可能面臨大齡失業(yè)喻鳄。所以我覺得需要痛下決心改變一下現(xiàn)狀。我定的目標(biāo)就是進(jìn)大廠,因?yàn)槲矣X得小廠做到我目前的程度已經(jīng)很難有很多的提升了爪喘。
先說說面試的問題
一面部分考題:
插件化纠拔。啟動activity的hook方式。
okhttp支持HTTP2侦鹏?http2的功能有哪些臀叙?tcp方面擁塞控制?tsl的握手和具體的非對稱加密算法渊涝。非對稱名稱
handler的post(Runnable)如何實(shí)現(xiàn)的床嫌。callback,runnable既鞠,msg的執(zhí)行優(yōu)先級。阻塞是怎么實(shí)現(xiàn)的蚯姆?為什么不會阻塞主線程洒敏?
求二叉樹中兩個節(jié)點(diǎn)之間的最大距離。
206含義郭毕,未修改資源是哪個函荣,302含義,301含義
多進(jìn)程通信問題乘碑。binder優(yōu)勢金拒。aidl生成的java類細(xì)節(jié)。多進(jìn)程遇到哪些問題资铡?
動態(tài)代理傳入的參數(shù)都有哪些?非接口的類能實(shí)現(xiàn)動態(tài)代理嗎笤休?ASM的原理
Application和Activity在Context的繼承樹上有何區(qū)別宛官?二者使用上有何不同瓦糕?
任意一顆二叉樹,求最大節(jié)點(diǎn)距離
二面部分考題:
設(shè)計一個日志系統(tǒng)咕娄。
內(nèi)存泄露的分類圣勒。怎么查看內(nèi)存泄露的問題
touch事件源碼問題。
組件化的問題圣贸。module和app之間的區(qū)別。moduler通信是如何實(shí)現(xiàn)的滑负。
native奔潰的日志采集用含,怎么處理?
注解實(shí)現(xiàn)一個提示功能:如果int的值大于了3需要提示痴鳄。
三面部分考題:
介紹下flutter的啟動流程
介紹下flutter與weex的區(qū)別
組件化介紹一下
webview中與js通信的手段有哪些缸夹?
介紹下flutter_boost的原理
適配器和裝飾模式各自特點(diǎn)和使用場景
視頻編解碼是怎么做的
三色球排序
聊聊我對面試的一些準(zhǔn)備和心得
面試從哪些方面去準(zhǔn)備呢虽惭? 例如,不太熟悉的技能要不要寫在簡歷上趟妥、要復(fù)習(xí)哪些Android組件的知識、刷算法題目有沒有用亲雪,可能在面試前你都會仔細(xì)考慮這些問題。 下面我就結(jié)合自身的經(jīng)驗(yàn)和理解虾标,幫你梳理一下關(guān)于簡歷灌砖、面試和算法方面需要準(zhǔn)備的內(nèi)容,分享一些我的心得體會蘸吓。
簡歷篇
簡歷在面試過程會起到至關(guān)重要的作用撩幽,我們需要非常注意簡歷的撰寫。
在面試的過程中宪萄,面試官通常會非常關(guān)注你簡歷中的工作經(jīng)歷榨惰、項(xiàng)目介紹、技能特長這三部分的內(nèi)容居凶,如果你面試的公司沒有固定題目的話恢暖,那很多問題都會圍繞你簡歷里這三部分內(nèi)容去問。這里需要注意的一點(diǎn)是相關(guān)技能的書寫舆床,核心思想嫁佳,想進(jìn)大廠的簡歷,要突出自己的特色蒿往,寫得要生動瓤漏,能從簡歷看出你實(shí)力不俗颊埃。如果簡歷不過關(guān)蝶俱,很大幾率根本沒有面試機(jī)會。
首先你要讓面試官明確你面試的定級是什么罗标。 很多時候一個職位對應(yīng)了很多個職級积蜻,在投簡歷的時候,你的簡歷需要讓面試官給你一個比較明確的定級宙拉,否則面試過程會比較被動如输,也會影響面試官對你的判斷央勒。
因此這部分的內(nèi)容需要突出自己的特長崔步,也要寫一些現(xiàn)在公司相對關(guān)心的問題:
比如你對插件化、熱修復(fù)井濒、組件化、性能優(yōu)化等很熟悉瑞你,就可以明確的寫上,但如果不是很熟悉那么盡量不要去寫春感。
如果你對Android某部分內(nèi)容很熟悉就可以寫得相對詳細(xì)一些虏缸,比如你對Handler、Binder機(jī)制很熟悉窥岩,就可以寫“熟悉Android常見機(jī)制宰缤,比如Handler晃洒、Binder機(jī)制等”朦乏。
而看到你很熟悉這部分內(nèi)容集歇,面試官可能在問問題時一層層深入,因此你肯定需要提前準(zhǔn)備一下這部分內(nèi)容如何講解诲宇,基本可以從機(jī)制的優(yōu)點(diǎn)姑蓝、重點(diǎn)、難點(diǎn)三方面去說明纺荧。
面試篇
對于Android工程師來說宙暇,面試開始的時候都會問一些算法和Android、Java的基礎(chǔ)知識占贫。
針對Java的基礎(chǔ)知識型奥,我列一下 Java 基礎(chǔ)部分要掌握的知識點(diǎn)
Java序列化、注解厢汹,泛型與反射
虛擬機(jī)底層原理
Android內(nèi)存原理
Java高級并發(fā)原理
JDK高級動態(tài)代理
Java IO操作
對于Android的面試題烫葬,大多都是跟系統(tǒng)原理有關(guān)的內(nèi)容,但也有很多沒有準(zhǔn)確答案的問題夹纫,比如四大組件的原理這樣的題目设凹,需要你從一個宏觀的角度去解釋一下四大組件,或者你也可以拆分開一個個去講解月匣。
關(guān)于Android面試高頻的問點(diǎn),這些你是必須要理解清楚的锄开!如果你在準(zhǔn)備面試萍悴,之前我參考的這個《Android快速面試指南》,有需要完整版MD的朋友癣诱,可以直接前往公號:小塵Android專欄即可拿到
一些Android經(jīng)常使用到的組件一定要理解清楚撕予,比如:
Handler.postDelay的機(jī)制
觸摸事件機(jī)制
自定義View
如何計算View大小
容器控件如何對子控件進(jìn)行布局
數(shù)據(jù)庫基本操作
Binder機(jī)制
LMK機(jī)制
還有面試官也可能會問一些開源框架的原理实抡,建議你也要多了解一些:
優(yōu)秀的網(wǎng)絡(luò)框架
圖片加載框架
日志記錄框架
EventBus
AAC框架的原理
還有性能優(yōu)化,最近幾年公司對性能優(yōu)化關(guān)注很多吆寨, 有的人可能做過專門的性能優(yōu)化或者自己開發(fā)過一些工具總結(jié)過一些方法論鸟废,這樣比較好答一些。但是大部分人可能平時都在關(guān)注業(yè)務(wù)需求開發(fā)盒延,性能優(yōu)化的實(shí)戰(zhàn)可能并不是很多添寺。
面試的后面大多都會從項(xiàng)目入手懈费,你需要在面試之前針對你的項(xiàng)目做詳細(xì)的準(zhǔn)備。比如面試官會:
讓你介紹一下你的項(xiàng)目
你需要體現(xiàn)出這個項(xiàng)目的難點(diǎn)
你在項(xiàng)目中的貢獻(xiàn)
項(xiàng)目的具體實(shí)現(xiàn)等
有可能還會問到一些具體的細(xì)節(jié)票罐,所以建議是實(shí)事求是去講泞边,但一定要對自己的模塊非常清晰。
除了技術(shù)面試以外蚕礼,有時還有可能會考察一些軟技能,比如面試官會考察你跨部門協(xié)作能力朝聋、溝通能力囤躁、時間管理、任務(wù)分配和職業(yè)規(guī)劃等
關(guān)于如何復(fù)習(xí)
對于復(fù)習(xí)金度,首先要對自己做一次自我了解严沥, 我是通過畫腦圖來進(jìn)行這個過程的,我會整體默想一遍大概的知識體系跟伏,畫成類似下圖翩瓜。回想每個知識點(diǎn)可能考到的內(nèi)容勘高,記錄下自己模糊的地方坟桅,然后去看網(wǎng)上總結(jié)的面試題竣况,再對每個題目都做一下回答。這是一個迭代過程喉脖。
在你預(yù)想的問題都可以回答上來的時候,就需要深入挖掘一下技術(shù)細(xì)節(jié)和深度了豫喧, 比如我工作中開發(fā)了一個PLT Hook工具紧显,這個工具可能是我參考開源項(xiàng)目并封裝修改過來的,但對其中的細(xì)節(jié)并沒有很了解鸟妙,這個時候你就要對這個開源項(xiàng)目所涉及的內(nèi)容做一次系統(tǒng)學(xué)習(xí)了。
算法這一塊的話花椭, “臨時抱佛腳”對于算法的學(xué)習(xí)和積累作用不是很大矿辽,因此需要我們在平時繁忙的工作中抽出一些時間來復(fù)習(xí),你也可以去LeetCode袋倔、LintCode上刷刷題宾娜。另外,雖然大部分面試的算法題目都是LeetCode上的簡單題目前塔,但你同樣也需要關(guān)注一些中等和困難難度的經(jīng)典題目华弓。
總結(jié)
沒有涉及太多具體的面試題,更多側(cè)重的如何準(zhǔn)備面試贰谣, 而面試的準(zhǔn)備其實(shí)是在我們平時工作過程中一點(diǎn)一滴積累的迁霎,復(fù)習(xí)只是作為一種在面試前鞏固知識的手段。 復(fù)習(xí)的過程主要是我們對知識點(diǎn)的整理和總結(jié)频伤,你可以想一下在面試的時候可能會遇到的問題芝此,以及該如何去表達(dá)因痛。
但是我想說鸵膏,雖然“臨時抱佛腳”的準(zhǔn)備可能有時有用,但是在短時間內(nèi)靠“突擊”是很難理解到某個知識點(diǎn)更加深度層次的內(nèi)容谭企, 而且知識面的廣度也是需要時間和經(jīng)驗(yàn)去積累的。所以不管你是否需要面試非区,在平時工作過程中都需要多思考、多訓(xùn)練久橙、多總結(jié)管怠,在有需要的時候可以厚積薄發(fā)渤弛。