背景經(jīng)歷
當時我工作近4年炮赦,明顯感覺到了瓶頸期怜跑。 具體來說,感覺自己做過一些技術(shù)設計吠勘、也有過一些產(chǎn)出性芬,但是從技術(shù)深度上感覺不足,到后期時做事也沒有明顯挑戰(zhàn)剧防,完全適應了公司節(jié)奏植锉,說句不好聽的成了老油條,可以每天舒服的混日子(這也有好處峭拘,有時間準備面試)俊庇。這對于個人成長不利,長此以往可能面臨大齡失業(yè)鸡挠。所以我覺得需要痛下決心改變一下現(xiàn)狀辉饱。我定的目標就是進大廠,因為我覺得小廠做到我目前的程度已經(jīng)很難有很多的提升了拣展。
先說說面試的問題
一面部分考題:
- 插件化彭沼。啟動activity的hook方式。
- okhttp支持HTTP2备埃?http2的功能有哪些姓惑?tcp方面擁塞控制?tsl的握手和具體的非對稱加密算法按脚。非對稱名稱
- handler的post(Runnable)如何實現(xiàn)的于毙。callback,runnable辅搬,msg的執(zhí)行優(yōu)先級唯沮。阻塞是怎么實現(xiàn)的?為什么不會阻塞主線程堪遂?
- 求二叉樹中兩個節(jié)點之間的最大距離烂翰。
- 206含義,未修改資源是哪個蚤氏,302含義甘耿,301含義
- 多進程通信問題。binder優(yōu)勢竿滨。aidl生成的java類細節(jié)佳恬。多進程遇到哪些問題捏境?
- 動態(tài)代理傳入的參數(shù)都有哪些?非接口的類能實現(xiàn)動態(tài)代理嗎毁葱?ASM的原理
- Application和Activity在Context的繼承樹上有何區(qū)別垫言?二者使用上有何不同?
- 任意一顆二叉樹倾剿,求最大節(jié)點距離
二面部分考題:
- 設計一個日志系統(tǒng)筷频。
- 內(nèi)存泄露的分類。怎么查看內(nèi)存泄露的問題
- touch事件源碼問題前痘。
- 組件化的問題凛捏。module和app之間的區(qū)別。moduler通信是如何實現(xiàn)的芹缔。
- native奔潰的日志采集坯癣,怎么處理?
- 注解實現(xiàn)一個提示功能:如果int的值大于了3需要提示最欠。
三面部分考題:
- 介紹下flutter的啟動流程
- 介紹下flutter與weex的區(qū)別
- 組件化介紹一下
- webview中與js通信的手段有哪些示罗?
- 介紹下flutter_boost的原理
- 適配器和裝飾模式各自特點和使用場景
- 視頻編解碼是怎么做的
- 三色球排序
聊聊我對面試的一些準備和心得
面試從哪些方面去準備呢? 例如芝硬,不太熟悉的技能要不要寫在簡歷上蚜点、要復習哪些Android組件的知識、刷算法題目有沒有用拌阴,可能在面試前你都會仔細考慮這些問題禽额。 下面我就結(jié)合自身的經(jīng)驗和理解,幫你梳理一下關(guān)于簡歷皮官、面試和算法方面需要準備的內(nèi)容,分享一些我的心得體會实辑。
簡歷篇
簡歷在面試過程會起到至關(guān)重要的作用捺氢,我們需要非常注意簡歷的撰寫。
在面試的過程中剪撬,面試官通常會非常關(guān)注你簡歷中的工作經(jīng)歷摄乒、項目介紹、技能特長這三部分的內(nèi)容残黑,如果你面試的公司沒有固定題目的話馍佑,那很多問題都會圍繞你簡歷里這三部分內(nèi)容去問。這里需要注意的一點是相關(guān)技能的書寫梨水,核心思想拭荤,想進大廠的簡歷,要突出自己的特色疫诽,寫得要生動舅世,能從簡歷看出你實力不俗旦委。如果簡歷不過關(guān),很大幾率根本沒有面試機會雏亚。
首先你要讓面試官明確你面試的定級是什么缨硝。 很多時候一個職位對應了很多個職級,在投簡歷的時候罢低,你的簡歷需要讓面試官給你一個比較明確的定級查辩,否則面試過程會比較被動,也會影響面試官對你的判斷网持。
因此這部分的內(nèi)容需要突出自己的特長宜岛,也要寫一些現(xiàn)在公司相對關(guān)心的問題:
- 比如你對插件化、熱修復翎碑、組件化谬返、性能優(yōu)化等很熟悉,就可以明確的寫上日杈,但如果不是很熟悉那么盡量不要去寫遣铝。
- 如果你對Android某部分內(nèi)容很熟悉就可以寫得相對詳細一些,比如你對Handler莉擒、Binder機制很熟悉酿炸,就可以寫“熟悉Android常見機制,比如Handler涨冀、Binder機制等”填硕。
- 而看到你很熟悉這部分內(nèi)容,面試官可能在問問題時一層層深入鹿鳖,因此你肯定需要提前準備一下這部分內(nèi)容如何講解扁眯,基本可以從機制的優(yōu)點、重點翅帜、難點三方面去說明姻檀。
面試篇
對于Android工程師來說,面試開始的時候都會問一些算法和Android涝滴、Java的基礎知識绣版。
針對Java的基礎知識,我列一下 Java 基礎部分要掌握的知識點
- Java序列化歼疮、注解杂抽,泛型與反射
- 虛擬機底層原理
- Android內(nèi)存原理
- Java高級并發(fā)原理
- JDK高級動態(tài)代理
- Java IO操作
對于Android的面試題,大多都是跟系統(tǒng)原理有關(guān)的內(nèi)容韩脏,但也有很多沒有準確答案的問題缩麸,比如四大組件的原理這樣的題目,需要你從一個宏觀的角度去解釋一下四大組件赡矢,或者你也可以拆分開一個個去講解匙睹。
關(guān)于Android面試高頻的問點愚屁,這些你是必須要理解清楚的!如果你在準備面試痕檬,之前我參考的這個**《Android快速面試指南》霎槐,需要可文末里免費領(lǐng)取呢
一些Android經(jīng)常使用到的組件一定要理解清楚,比如:
- Handler.postDelay的機制
- 觸摸事件機制
- 自定義View
- 如何計算View大小
- 容器控件如何對子控件進行布局
- 數(shù)據(jù)庫基本操作
- Binder機制
- LMK機制
還有面試官也可能會問一些開源框架的原理梦谜,建議你也要多了解一些:
- 優(yōu)秀的網(wǎng)絡框架
- 圖片加載框架
- 日志記錄框架
- EventBus
- AAC框架的原理
還有性能優(yōu)化丘跌,最近幾年公司對性能優(yōu)化關(guān)注很多, 有的人可能做過專門的性能優(yōu)化或者自己開發(fā)過一些工具總結(jié)過一些方法論唁桩,這樣比較好答一些闭树。但是大部分人可能平時都在關(guān)注業(yè)務需求開發(fā),性能優(yōu)化的實戰(zhàn)可能并不是很多荒澡。
面試的后面大多都會從項目入手报辱,你需要在面試之前針對你的項目做詳細的準備。比如面試官會:
- 讓你介紹一下你的項目
- 你需要體現(xiàn)出這個項目的難點
- 你在項目中的貢獻
- 項目的具體實現(xiàn)等
- 有可能還會問到一些具體的細節(jié)单山,所以建議是實事求是去講碍现,但一定要對自己的模塊非常清晰。
除了技術(shù)面試以外米奸,有時還有可能會考察一些軟技能昼接,比如面試官會考察你跨部門協(xié)作能力、溝通能力悴晰、時間管理慢睡、任務分配和職業(yè)規(guī)劃等
關(guān)于如何復習
對于復習,首先要對自己做一次自我了解铡溪, 我是通過畫腦圖來進行這個過程的漂辐,我會整體默想一遍大概的知識體系,畫成類似下圖棕硫∷柩模回想每個知識點可能考到的內(nèi)容,記錄下自己模糊的地方饲帅,然后去看網(wǎng)上總結(jié)的面試題,再對每個題目都做一下回答瘤泪。這是一個迭代過程灶泵。
在你預想的問題都可以回答上來的時候,就需要深入挖掘一下技術(shù)細節(jié)和深度了对途, 比如我工作中開發(fā)了一個PLT Hook工具赦邻,這個工具可能是我參考開源項目并封裝修改過來的,但對其中的細節(jié)并沒有很了解实檀,這個時候你就要對這個開源項目所涉及的內(nèi)容做一次系統(tǒng)學習了惶洲。
算法這一塊的話按声, “臨時抱佛腳”對于算法的學習和積累作用不是很大,因此需要我們在平時繁忙的工作中抽出一些時間來復習恬吕,你也可以去LeetCode签则、LintCode上刷刷題。另外铐料,雖然大部分面試的算法題目都是LeetCode上的簡單題目渐裂,但你同樣也需要關(guān)注一些中等和困難難度的經(jīng)典題目。
總結(jié)
沒有涉及太多具體的面試題钠惩,更多側(cè)重的如何準備面試柒凉, 而面試的準備其實是在我們平時工作過程中一點一滴積累的,復習只是作為一種在面試前鞏固知識的手段篓跛。 復習的過程主要是我們對知識點的整理和總結(jié)膝捞,你可以想一下在面試的時候可能會遇到的問題,以及該如何去表達愧沟。
但是我想說蔬咬,雖然“臨時抱佛腳”的準備可能有時有用,但是在短時間內(nèi)靠“突擊”是很難理解到某個知識點更加深度層次的內(nèi)容央渣, 而且知識面的廣度也是需要時間和經(jīng)驗去積累的计盒。所以不管你是否需要面試,在平時工作過程中都需要多思考芽丹、多訓練北启、多總結(jié),在有需要的時候可以厚積薄發(fā)拔第。
更多Amdroid可以查看我的個人介紹9敬濉!蚊俺!