1. 程式人生 > >記一次 Android 面試

記一次 Android 面試

最近老同事給內推了鏈家網的 Android 職位,由於時間倉促,加上近半年多一直處於忙碌地開發狀態中,還沒能複習便接到了電話面試。

雖然大部分問題都答上來了,原理性的問題基本都把大體流程說出來了,但是時間間隔太久不少具體細節記不太清了,描述得不夠詳細,因此並沒能達到面試官的期望值。

對於自己的表現,基本在自己的預期中,談不上好,也談不上太差,還算中規中矩,只是一面都沒過,自己還是挺失落的(自己真的是有點自信過了頭,覺得不復習也能輕鬆過一面 o(╥﹏╥)o )

之前在內推的簡歷前還特意對一些專案的功能實現加了些描述,因為功能其實挺複雜的,需要結合很多知識點,並且自己做了最大化的優化,遺憾的是面試官竟然沒有問到任何一個跟專案相關的問題(這點跟我面試別人的時候完全不同,我喜歡根據專案去拓展問題)。

總的來說面試的問題並不是太難,但是需要靜下心來花時間好好複習,趁著面試剛過去兩三天,還能記得大部分面試問題,抽了些時間將電話面試中的問題做了下整理(後續會補上答案),方便自己後續複習,也希望能幫助到大家。

題目整理

  1. StringBuilder 和 StringBuffer 區別

    StringBuilder 跟 StringBuffer 一樣,都是用來處理可變的字元序列 , 區別在於 StringBuilder 是執行緒不安全的 ,而 StringBuffer 是執行緒安全的
    在執行效率上,StringBuilder 比 StringBuffer 要高, 因此在不考慮執行緒安全的情況下,推薦使用 StringBuilder。

  2. java 中 sleep() 跟 wait() 區別,專案中 Thread sleep 的應用場景

    • sleep() 屬於 Thread 類
      執行緒呼叫此方法後,會休眠一段時間,休眠期間,會暫時釋放cpu,但並不釋放物件鎖
    • wait() 屬於 Object 類
      釋放佔有的物件鎖,執行緒進入等待池,釋放cpu,而其他正在等待的執行緒即可搶佔此鎖,獲得鎖的執行緒即可執行程式
  3. sychronized 鎖住方法後方法能被中斷嗎?

    不能被中斷,Lock 可以被中斷

  4. java 中 final 修飾方法和修飾類的作用

  5. ArrayList 和 LinkedList 區別

    1. ArrayList是實現了基於動態陣列的資料結構,LinkedList基於連結串列的資料結構。
    2. 對於隨機訪問get和set,ArrayList覺得優於LinkedList,因為LinkedList要移動指標。
    3. 對於新增和刪除操作add和remove,LinedList比較佔優勢,因為ArrayList要移動資料。
  6. Java的反射機制,原理,應用場景,getDeclaredField和getField 的 區別

  7. java 單例設計模式,雙重檢測寫法中兩個判空的原因

  8. Android 整個介面佈局,父子元件的繪製流程以及單個子 View 的繪製流程

  9. Android 事件分發機制原理相關程式碼,如何處理父子佈局的巢狀滾動

  10. 自定義 View 中,onMeasure 中 MeasureSpec 的 Spec 有幾種型別, 以及他們的作用,在其值為 EXACTLY 的情況下, 當子 View 超過父 View 大小時, 返回的寬高值是什麼,是否會超過父佈局

  11. Activity 的啟動渲染流程, AMS, ActivityThread 相關概念

  12. Android 解析 XML 有幾種方式? LayoutInflate 是如何解析 XML 並建立物件的(面試官是想問這裡用的反射的方式建立的物件)

  13. Android 中代理模式的應用場景

  14. Android 中 Binder 的原理機制, 其中 ServiceManager 傳遞給 Client 的程序是否為真實程序

  15. Android 中 Handler 的原理機制

  16. Android 中 Service 的概念, IntentService 和 Service 區別,在 IntentService 中是否需要手動終止 Service, Service 的使用場景

  17. Android 中跨程序通訊的方式, 應用場景, aidl 相關概念

  18. Dalvik 和 JVM 的區別

  19. pathclassloader, dexclassloader 區別

  20. Android 外掛化的實現原理機制

  21. Android 熱修復的主流框架對比及實現原理

  22. 一個介面中需要請求多個介面,所有介面資料獲取後再進行介面渲染,請問如何來實現

  23. RxJava 中 merge, zip 的實現原理

  24. 自定義 View 中如何實現圓形圖片

  25. 說說你常用的圖片框架以及實現原理(glide, fresco)

  26. Android 中 65535 問題中 MultiDex 的實現原理

  27. Android 中記憶體洩漏的常見場景(我回答了專案中遇到的非靜態內部類/匿名內部類,Handler,非同步操作引用了 Context,面試官多次詢問是否還有其他場景後補充了自定義 View 中 TypeArray 使用後未呼叫 recycle()方法也會洩漏)

  28. Android 中如何開啟新的程序,Manifest 中 process 引數命名加 “:” 什麼作用

  29. 如何快速將一個單向連結串列反序操作

  30. 氣泡排序的實現