1. 程式人生 > >CVTE安卓實習生一二面(涼經)

CVTE安卓實習生一二面(涼經)

面試官是個非常年輕的小夥子,相當nice,因為是我第一次面試,說話有點語無倫次的感覺,但面試官能get到我要表達的想法,非常感謝。

 

  1. 談談你做的最滿意的一個專案。
  2. 談談你在專案中用到的一些設計模式。
  3. 談談工廠模式
  4. View的事件分發,用到的是哪個設計模式(話題是被我帶過來的)
  5. 自定義View瞭解嗎?View的繪製流程?
  6. MVP模式瞭解嗎?說一下。你在專案中什麼地方用到MVP模式?用MVP有什麼好處?
  7. Service的兩種啟動方式,能否在service中執行耗時操作?會有什麼影響?兩種啟動方式分別有什麼不同?
  8. Activity與Service的通訊有幾種方法?
  9. 用過那些圖片載入框架?分別有什麼不同?
  10. Glide的底層原理是什麼?
  11. Java執行緒有幾種狀態?
  12. 結束執行緒的幾種方式?
  13. JAVA泛型理解嗎?
  14. 陣列和連結串列各有什麼優缺點?
  15. JAVA的弱引用和軟引用,說一下,圖片資源應該是用弱引用還是軟引用?為什麼?
  16. 雜湊衝突是什麼?如何解決雜湊衝突?當資料量很大的時候呢?

 

二面:(全程被問的我懷疑人生)

  1. 說一下你的專案
  2. okhttp優勢,有看過原始碼嗎?(卒)
  3. 有在專案中用到哪些設計原則(知道設計原則,但要在專案中說出來,卒);
  4. 有用過哪些分層架構?除了MVP和MVC知道MVVM嗎?具體是怎麼解耦的,有什麼優勢?
  5. 專案中用到哪些設計模式?我答了我經常用到單例,偶爾用到一些適配者模式,觀察者模式,那觀察者模式怎麼實現解耦的?(觀察者模式解耦??? 卒)
  6. 瞭解IPC嗎(我說了Binder的的通訊過程)
  7. Binder池瞭解嗎?它在代理方法裡面做了什麼事情?它裡面tranc...什麼方法是幹什麼的?客戶端是怎麼知道呼叫的是哪個方法?(卒)
  8. 為什麼頁面會出現滑動卡頓?(我答了記憶體抖動,導致大量的gc。)
  9. 為什麼gc會導致卡頓?(卒)
  10. 說說你在專案中遇到的一些困難,怎麼解決的?(我答了RecyclerView 錯位,3.0Glide之前沒有設定超時時間的解決辦法)
  11. 知道RecyclerView錯位的根本原因是什麼麼?有沒有看過底層的程式碼去分析?為什麼沒有考慮去改Glide的原始碼呢(卒)
  12. 你從EventBus原始碼裡面學到了什麼新的東西?(eventBus我跟它說我才看一點,卒)
  13. 自定義Viev onDraw()方法裡面需要注意什麼?
  14. 談一下自定義View裡面動畫的實現方式,以及一下動畫屬性(卒)
  15. Handler的原理,Messagequeue底層是怎麼實現的?裡面為什麼要使用單鏈表的結構?這樣做是為什麼?(handler的原理說了出來,問為什麼使用單鏈表-卒)
  16. 談談你在專案做的一些優化。
  17. Loop.loop為什麼不會阻塞主執行緒?(我給忘了,卒)
  18. 最後沒問我演算法,二面(卒)

二面給我感覺就是,他會考察你是不是對專案的所有知識點都瞭解。特別是你使用到的一些框架,動畫,自定義View,然後就是深度,他會一直往深的問。所以還要準備學習並理解透徹一兩個開源框架的原始碼。