記一次 Android 面試
最近老同事給內推了鏈家網的 Android 職位,由於時間倉促,加上近半年多一直處於忙碌地開發狀態中,還沒能複習便接到了電話面試。
雖然大部分問題都答上來了,原理性的問題基本都把大體流程說出來了,但是時間間隔太久不少具體細節記不太清了,描述得不夠詳細,因此並沒能達到面試官的期望值。
對於自己的表現,基本在自己的預期中,談不上好,也談不上太差,還算中規中矩,只是一面都沒過,自己還是挺失落的(自己真的是有點自信過了頭,覺得不復習也能輕鬆過一面 o(╥﹏╥)o )
之前在內推的簡歷前還特意對一些專案的功能實現加了些描述,因為功能其實挺複雜的,需要結合很多知識點,並且自己做了最大化的優化,遺憾的是面試官竟然沒有問到任何一個跟專案相關的問題(這點跟我面試別人的時候完全不同,我喜歡根據專案去拓展問題)。
總的來說面試的問題並不是太難,但是需要靜下心來花時間好好複習,趁著面試剛過去兩三天,還能記得大部分面試問題,抽了些時間將電話面試中的問題做了下整理(後續會補上答案),方便自己後續複習,也希望能幫助到大家。
題目整理
StringBuilder 和 StringBuffer 區別
StringBuilder 跟 StringBuffer 一樣,都是用來處理可變的字元序列 , 區別在於 StringBuilder 是執行緒不安全的 ,而 StringBuffer 是執行緒安全的
在執行效率上,StringBuilder 比 StringBuffer 要高, 因此在不考慮執行緒安全的情況下,推薦使用 StringBuilder。java 中 sleep() 跟 wait() 區別,專案中 Thread sleep 的應用場景
- sleep() 屬於 Thread 類
執行緒呼叫此方法後,會休眠一段時間,休眠期間,會暫時釋放cpu,但並不釋放物件鎖 - wait() 屬於 Object 類
釋放佔有的物件鎖,執行緒進入等待池,釋放cpu,而其他正在等待的執行緒即可搶佔此鎖,獲得鎖的執行緒即可執行程式
- sleep() 屬於 Thread 類
sychronized 鎖住方法後方法能被中斷嗎?
不能被中斷,Lock 可以被中斷
java 中 final 修飾方法和修飾類的作用
ArrayList 和 LinkedList 區別
- ArrayList是實現了基於動態陣列的資料結構,LinkedList基於連結串列的資料結構。
- 對於隨機訪問get和set,ArrayList覺得優於LinkedList,因為LinkedList要移動指標。
- 對於新增和刪除操作add和remove,LinedList比較佔優勢,因為ArrayList要移動資料。
Java的反射機制,原理,應用場景,getDeclaredField和getField 的 區別
java 單例設計模式,雙重檢測寫法中兩個判空的原因
Android 整個介面佈局,父子元件的繪製流程以及單個子 View 的繪製流程
Android 事件分發機制原理相關程式碼,如何處理父子佈局的巢狀滾動
自定義 View 中,onMeasure 中 MeasureSpec 的 Spec 有幾種型別, 以及他們的作用,在其值為 EXACTLY 的情況下, 當子 View 超過父 View 大小時, 返回的寬高值是什麼,是否會超過父佈局
Activity 的啟動渲染流程, AMS, ActivityThread 相關概念
Android 解析 XML 有幾種方式? LayoutInflate 是如何解析 XML 並建立物件的(面試官是想問這裡用的反射的方式建立的物件)
Android 中代理模式的應用場景
Android 中 Binder 的原理機制, 其中 ServiceManager 傳遞給 Client 的程序是否為真實程序
Android 中 Handler 的原理機制
Android 中 Service 的概念, IntentService 和 Service 區別,在 IntentService 中是否需要手動終止 Service, Service 的使用場景
Android 中跨程序通訊的方式, 應用場景, aidl 相關概念
Dalvik 和 JVM 的區別
pathclassloader, dexclassloader 區別
Android 外掛化的實現原理機制
Android 熱修復的主流框架對比及實現原理
一個介面中需要請求多個介面,所有介面資料獲取後再進行介面渲染,請問如何來實現
RxJava 中 merge, zip 的實現原理
自定義 View 中如何實現圓形圖片
說說你常用的圖片框架以及實現原理(glide, fresco)
Android 中 65535 問題中 MultiDex 的實現原理
Android 中記憶體洩漏的常見場景(我回答了專案中遇到的非靜態內部類/匿名內部類,Handler,非同步操作引用了 Context,面試官多次詢問是否還有其他場景後補充了自定義 View 中 TypeArray 使用後未呼叫 recycle()方法也會洩漏)
Android 中如何開啟新的程序,Manifest 中 process 引數命名加 “:” 什麼作用
如何快速將一個單向連結串列反序操作
氣泡排序的實現