Android 面試題7

《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)。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,117評論 25 708
  • Java中的String類可以被繼承么? 答:不能,因為它是一個final類,同樣的還有Integer,Float...
    gyymz1993閱讀 4,019評論 2 104
  • 介紹自己負責的部分,如何實現的。 框架的搭建排查問題以及結解決方式兼容性保證性能優(yōu)化上線之后模塊導致crash的比...
    黃海佳閱讀 13,229評論 6 350
  • ?我們是穿梭在光和影中的詩人,用鏡頭記錄你真實的校園生活。 三月是一個很好的月份,可能是一年當中,最容易被同學們記...
    b6529b6064aa閱讀 237評論 0 0
  • 在我看來,要想造就出好女人,可愛女人,老爸是個重要因素。這是個心理學層面的問題。 說"心理學層面"不是說這個話題水...
    曾經的一波流閱讀 353評論 0 1