《Android開發(fā)藝術探索》
《Android群英傳》
《深入理解Java虛擬機》
《劍指offer》
刷題,主要是LeetCode
牛課網
Android客戶端面試題集錦
Android阿里面試題錦集
Android一些優(yōu)化方案
什么是過渡繪制,如何防止過渡繪制
事件分發(fā)機制
ListView的優(yōu)化
Binder機制
在多進程中,Application會啟動幾次
單例模式,雙鎖原理,volatile原理,靜態(tài)內部類實現單例的原理。
Java多線程,synchronized
聊項目,都具體做了什么。
Binder機制
問了關于數據庫的一些問題,SQLite的相關操作,沒辦法,我在華為唯一一個做的和java相關的項目,但是不太擅長數據庫。
網絡相關的問題,網絡的五層模型,又問了TCP和UDP,還有Android相關的長連接,這里問的比較深。
開始Android先關的知識,Handler機制,Acticity的生命周期以及四種啟動模式,各自特點,Service的兩種啟動模式生命周期,如果同時使用兩種啟動
volley的源代碼,在圖片緩存部分討論了挺長時間,http中緩存機制,Last-Modify的作用等。
fragment的生命周期
service一些知識
事件分發(fā)機制
Binder實現機制,Stub類中asInterface函數作用,BnBinder和BpBinder區(qū)別。
gradle中buildToolsVersion和TargetSdkVersion的區(qū)別是什么
手機適配一些方案
hashmap的實現原理
靜態(tài)方法是否能被重寫
3次握手和4次揮手的原因,以及為什么需要這樣做。
數據結構,搜索二叉樹的一些特性,平衡二叉樹。
hashmap是如何解決hash沖突的
進程與線程區(qū)別
寫了一個二分查找和單例模式
http中的同步和異步
聊了一些項目上做的東西,問了問職業(yè)規(guī)劃
Android是如何進行資源管理的。
java比較重要的幾個特性
網絡五層結構,每一層協議,由于我網絡不是很好,還問了一些其他的問題(例如MAC地址和ip地址的區(qū)別等)。
OpenGL、GLSurfaceView和Shader,主要聊了OpenGL繪制方法,還有一些Binder相關知識,
單例,快排,回型打印二維數組
寫一個死鎖,死鎖是怎樣產生的,怎樣防止死鎖
Acticity啟動模式有幾種,分別代表什么意思
聊項目都做了些什么
字符串反轉,討論復雜度。
給定一個int型 n,輸出1~n的字符串例如 n = 4 輸出“1 2 3 4”
輸出所有的笛卡爾積組合
單例模式
最長上升子序列
對剛才做的題,一些錯的地方做了討論,主要是類的加載和內部類方面的知識,尤其一些深入到JVM層的知識的確自己有一些不足,不過大部分都還是能答出來。
雙親委托機制,類的五個加載過程。
java類加載器的加載流程。
Binder機制,從java到framework再到kenral層,面試官問的都很詳細,遇到不會的也都會跟我解釋。
Serializable和Parcelable的區(qū)別。
View的繪制流程,詳細到framework代碼,討論到不確定的地方,立馬打開電腦和我一起看源碼。
事件分發(fā)機制。
常用設計模式,使用靜態(tài)內部類實現單例的原理是什么。
線程同步,CopyOnWriteArrayList怎樣實現。
Volley源碼,EventBus源碼。
GLSufaceView,OpengGL,Shader相關一些知識,在項目中做的優(yōu)化
gc是根據什么來回收一個對象的,引用計數和gc root分別怎么實現。
怎樣會產生內存泄露,舉一個具體的例子,使用什么檢查內存泄露
自定義View的繪制流程
給出二叉樹和一個值,找出所有和為這個值的路徑;{1,3}{3,6}{3,4}{6,8}區(qū)間去重,最少去掉幾個集 合,可以讓這個集合沒有交集。
什么是ANR,Activity、BroadcastReceiver、Service對ANR時間限制分別是多少,怎么處理ANR,除了系統(tǒng)生成trace.txt文件,怎么在程序中檢測ANR。寫出偽代碼。
編解碼一些知識,I幀,B幀,P幀區(qū)別。
Android一些優(yōu)化方案。
算法 n/m,怎么判斷得數是無限循環(huán)小數。
事件分發(fā)機制。
算法,將一個字符串轉換成int型數字,考慮 錯誤輸入,溢出,正負值等一些條件,考細心。
給出一個搜索二叉樹,輸出一個排序好的雙向鏈表。
類的加載過程,Person person = new Person();為例進行說明。
JVM相關知識,GC機制。
類的加載器,雙親機制,Android的類加載器。
Android中進程的級別,以及各自的區(qū)別。
插件化原理。
集合框架,list,map,set都有哪些具體的實現類,區(qū)別都是什么。
concurrentHashmap原理,原子類。
volatile原理。
Binder機制。
View的繪制流程,事件傳遞機制,Handler異步消息機制。
Interger中的128(-128~127),這里考的是常量池的概念,這個沒回答上來。
線程池的相關知識。
Handler機制,HandlerThread實現等等。
LRUCache算法是怎樣實現的。
說了說項目中相關的知識。
聊了聊之前做過的項目。
內存泄露,怎樣查找,怎么產生的內存泄露。
怎樣計算一張圖片的大小,加載bitmap過程(怎樣保證不產生內存溢出),二級緩存,LRUCache算法。
簡單介紹一下java中的泛型,泛型擦除以及相關的概念。
Android優(yōu)化相關的只是,布局優(yōu)化、內存優(yōu)化等等。
SQL相關的知識優(yōu)化的方案,這里我直接說不太了解,就過了。
算法題,m * n的矩陣,能形成幾個正方形(2 * 2能形成1個正方形,2 * 3 2個,3 * 3 6個)
項目相關。
Android優(yōu)化.。
插件化相關技術,熱修補技術是怎樣實現的,和插件化有什么區(qū)別。
詢問了我博客上寫的一些東西,從項目立意談起,到設計,再到詳細的技術實現,可謂是面面俱到,由于自己寫的博客還是比較熟悉,回答的還不錯。
GLSurfaceView的相關知識,OpenGL,Shader,繪制流程。
詢問當前做的項目,以及到具體的實現和優(yōu)化。
多進程間的通訊,Binder機制。
詢問看過哪些框架源碼,EventBus,Volley講了一下。
廣度:比較新的技術(Rxjava,插件化等),JVM,GC,網絡,數據庫,Android(一般不會詢問之前面試官問過的問題)。
深度:一般會通過1或2個問題來考察,例如:map接口下都有什么子類->hashmap和hashtable區(qū)別->hashmap實現原理->怎么解決hash沖突->是否了解concurrentHashmap->concurrentHashmap實現原理->volatile實現原理(concurrentHashmap讀是不加鎖的,使用到了volatile)。