==

擼這篇文章不會透漏任何樓主面過的任何一家公司,只從面試的戰(zhàn)略思維上去引導(dǎo)諸位如何準(zhǔn)備面試。

最近剛?cè)肼殻诿φ曳孔影峒业氖?,端午?jié)會更新第二波

26、7歲時,您靜不下心來讀書看文章,到了30歲,你還風(fēng)吹而樹不止,講道理,這篇文章您瞅瞅就行,走好!

個人整理不代表所有,批評樂意接受,噴子繞道而行!

持續(xù)畫圖中,我覺得最好的記憶便是圖形記憶,畫圖很簡單,如何畫的別人也理解很難...

面試前你該準(zhǔn)備什么

  • 購買《深入理解Java虛擬機》書籍
  • Java鎖機制的深入了解
  • Java線程池
  • Java線程間通信
  • Java HashMap
  • Android Handler機制的源碼研究透徹
  • Android Binder機制
  • Android Activity Window之間的關(guān)系
  • Android View繪制流程
  • Android 事件分發(fā)
  • Android nested scroll原理與 behaviour 實現(xiàn)
  • Android冷啟動解讀
  • Android垂直同步與緩沖Buffer
  • 第三方框架retrofit、okhttp、rxjava、leakcanary、Tinker等源碼閱讀。
  • java常用設(shè)計模式

本片文章會從以上幾個點去分析面試中遇到的一些問題!

《深入理解Java虛擬機》

這本書目前我只閱讀完了了三個章節(jié),第二章節(jié)(自動內(nèi)存管理),第三章節(jié)(垃圾回收機制),第七章節(jié)(類加載機制)... 這幾個章節(jié)我不可能在這篇文章中具體體現(xiàn)出來,但樓主只花費了1個禮拜不到的時間就閱讀完畢了,并對自己以前的一些錯誤認(rèn)知進行了修復(fù)。

1. 自動內(nèi)存管理

下面是知識點,帶著腦子去讀

  • 棧、堆、方法區(qū)、本地方法區(qū)、程序計數(shù)器 這些jvm的內(nèi)存布局概念與它們內(nèi)部分別存儲了什么數(shù)據(jù)
  • class文件頭信息中Mark World 需要重點理解
  • jvm 的內(nèi)存模型,工作內(nèi)存與主內(nèi)存
  • jvm如何分配一個對象的內(nèi)存(為第七章做接入準(zhǔn)備)
  • 直接指針與句柄
    ...
    帶著這些疑惑去看第二章,你會收獲較多,接下來第二章的內(nèi)容我會用一張簡短的圖來表示。
    待補充。

2. 垃圾回收機制

下面是知識點,帶著腦子去讀

  • jvm如何判斷一個對象為垃圾的
  • GCROOT集合
  • jvm 堆區(qū)的對象回收
    • 青年代(eden,from,to)
    • 老年代
    • 持久代
  • jvm 在gc時,是如何回收垃圾對象的內(nèi)存的
    • 標(biāo)記清除法
    • 標(biāo)記復(fù)制法
    • 標(biāo)記整理法
      ...
      這個章節(jié)在面試過程中變得極其常見,特別是堆區(qū)對于對象的管理更是面試技巧中的一門藝術(shù),也是面試中的加分項

3. 類加載機制

這個章節(jié)就比較有意思了,坑很多,但說實話,對于你對static這類的關(guān)鍵字會有更深入的了解!

  • 類變量和對象變量(對應(yīng)類加載過程中的’準(zhǔn)備‘和'初始化'階段)
  • 類加載過程,以及每個過程做了什么
  • 雙親委托機制
    • BootClassLoader
    • ExtClassLoader
    • 應(yīng)用程序類加載器

...

4. 關(guān)于jvm的面試題有哪些

  • jvm 堆和棧有什么區(qū)別
  • jvm 方法區(qū)都存放了那些數(shù)據(jù)
  • 類變量和成員變量
  • static修飾的成員變量是否能在static靜態(tài)代碼塊中進行賦值操作
  • jvm 分代收集理念(強引用,軟引用,弱引用,虛引用),說出具體的區(qū)別
  • jvm如何判斷一個對象是垃圾
  • gc 如何回收內(nèi)存

當(dāng)你了解上面這些知識點的時候,你會發(fā)現(xiàn),什么是內(nèi)存抖動,什么事內(nèi)存泄漏,而不是只是一個概念性原則的問題;為了能夠?qū)?biāo)阿里P6,面試者必須掌握這些知識,you can do it!

Java鎖機制的深入了解

這個章節(jié)就比較有意思了,建立在你理解了Class 文件頭信息Mark World的存儲結(jié)構(gòu)上

  • 原子性、可見性、有序性
  • volatile、synchronized、ReentrantLock之間的區(qū)別
    • 公平鎖與非公平鎖
    • 偏向鎖、輕量鎖與重量鎖
    • synchronized是不是可重入鎖
    • CAS鎖和Monitor ACC_SYNCHORNIZED鎖機制

Java線程池

  • corePollSize->核心線程數(shù)
  • maxPollSize->最大線程數(shù)
  • Queue->線程隊列
  • InvokeHandler->拒絕策略

Java線程間通信

  • 線程通信有哪幾種方式
  • 如何在一個線程當(dāng)中等待其它子線程結(jié)束再退出當(dāng)前線程(CountDownLatch)
  • 如何得到一個線程處理結(jié)果(FeatureTask)

Java HashMap

  • 數(shù)據(jù)結(jié)構(gòu)
  • bucket index相同的情況下如何獲取key的value
  • 與ArrayMap的比較

java常用設(shè)計模式

Android Handler機制

  • Handler機制工作原理(Handler,Looper,MessageQueue是三者之間的持有關(guān)系以及如何sendMessage和dispatchMessage的)
  • Message 的obtain和你自己new 一個Message有什么區(qū)別
  • postDelay中的Runnable是如何參與到消息機制中的
  • postDelay delay效果是如何實現(xiàn)的
  • 如何將一條Message放入到消息隊列的隊首位置
  • Looper的block是如何實現(xiàn)的
  • Android主線程更新ui的幾種方式
  • view.post 做了什么可以得到寬高
  • HandlerThread

Android Binder機制

  • Binder機制的實現(xiàn)原理
  • Binder機制的數(shù)據(jù)傳輸(Parcelable和Serializable的區(qū)別)
  • AIDL
  • Handler的getMessenger

我覺得Binder機制是必問的一個問題,那么在你了解ServiceManager 以及 Binder之間的關(guān)系后,另一個深入點的問題便是-> client 向 ServiceManager 注冊service時,ServiceManager是如何工作的!
呵呵,毫無疑問,這是大廠才會問的,回答出來了,我想最起碼這是一個加分項。

Android Activity Window->View繪制流程

Android 創(chuàng)建view的流程

activity的啟動流程基本可以用一張圖來解決,那么一張圖很容易看明白,但其中蘊含的一些知識點是你應(yīng)該所關(guān)注,映射出來的一些奇奇怪怪的問題比如:

  1. 為什么不能在子線程中更新ui
  2. 是否只能在子線程當(dāng)中更新ui
  3. view.post 做了哪些事,以及為何某些情況不生效

Android冷啟動解讀

Android垂直同步與緩沖buffer

第三方框架EventBus、retrofit、okhttp、RxJava、leakcanary、Tinker等源碼閱讀。

最后編輯于
?著作權(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ù)。

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