android面試相關知識

每次要開始新的面試的時候總要重新找相關知識點,每次找到的也都是類似的知識,所以轉載整理一些別人的乾貨,以後就不用費心思了。都是從鴻洋大神那裏借來的

整個面試題分爲三個部分:Java、Android和項目經驗。


1Java技術   1.1 Java基礎


  1. 對抽象、繼承、多態的理解

  2. 泛型的作用及使用場景

  3. 枚舉的特點及使用場景

  4. 線程sleep和wait的區別

  5. JAVA反射機制

  6. weak/soft/strong引用的區別

  7. Object的hashCode()與equals()的區別和作用


1.2 集合類

   

  1. JAVA常用集合類功能、區別和性能  

  2. 併發相關的集合類  

  3. 部分常用集合類的內部實現方式


1.3 多線程相關


  1. Thread、Runnable、Callable、Futrue類關係與區別

  2. JDK中默認提供了哪些線程池,有何區別

  3. 線程同步有幾種方式,分別闡述在項目中的用法

  4. 在理解默認線程池的前提下,自己實現線程池


1.4 字符


  1. String的不可變性

  2. StringBuilder和StringBuffer的區別

  3. 字符集的理解:Unicode、UTF-8、GB2312等 

  4. 正則表達式相關問題


1.5 註解


  1. 註解的使用 

  2. 註解的級別及意義  

  3. 如何自定義註解


2Android技術   2.1 Android基礎


  1. 四大組件的意義及使用,生命週期回調及意義

  2. AsyncTask、Handler的使用

  3. Android系統層次框架結構

  4. AsyncTask的實現方式

  5. AsyncTask使用的時候應該注意什麼

  6. Android常見的存儲方式

  7. Looper、Handler和MessageQueue的關係  

  8. Activity的啓動流程(考察對Framwork的熟悉程度)

  9. 多進程開發的注意事項(Application類區分進程,進程間內存不可見、進程間通訊方式)


2.2 Resource相關


  1. .9圖片的意義

  2. style和theme的作用及用法

  3. dpi、sp、px的區別以及轉換關係

  4. raw和assets文件夾的作用,二者有何區別

  5. Android系統如何在多個資源文件夾下查找匹配最合適的資源


2.3 虛擬機


  1. Java內存模型 

  2. Android虛擬機的特點

  3. Dalvik和Art的區別

  4. 熟悉垃圾回收的實現機制,瞭解虛擬機的GC類型


2.4 View相關


  1. 常用組件的使用:ListView、RecyclerView及Adapter的使用

  2. View之間的繼承關係

  3. Invalidate與postInvalidate的區別

  4. 自定義View的實現方式(根據項目經驗詢問相關組件)。

  5. onMeasure/onLayout/onDraw的作用

  6. Paint、Matrix、Shader等繪製相關類的方法作用

  7. 詳細描述事件分發機制


2.5 動畫


  1. Android有哪些動畫的實現方式 

  2. Interpolator類的意義和常用的Interpolator

  3. ViewAnimation與屬性動畫有什麼區別

  4. 如何自定義ViewAnimation

  5. 屬性動畫的實現原理


2.6 圖片處理


  1. 一般項目中如何加載大圖

  2. 圖片壓縮的方式

  3. 如何不壓縮圖片加載高清圖

  4. 圖片加載過程中,一般會使用緩存,這個緩存的主要作用是什麼

  5. 談談自己熟悉的圖片加載框架


3項目經驗   3.1 開發工具


  1. 代碼管理工具:SVN、Git

  2. 常用的調試工具:Hierarchy Viewer、DDMS等

  3. CI工具:Lint檢查,FindBugs、Jenkins

  4. 內存分析工具:dumpsys、memoinfo、MAT


3.2 項目工程


  1. APP更新策略:推送或者拉取?

  2. 如何統一處理錯誤崩潰

  3. 如何進行用戶行爲收集

  4. 日誌管理有哪些要點?(Debug包開放,release包關閉,錯誤日誌反饋)

  5. 打包方式Ant、Maven、Gradle

  6. 機型適配情況


3.3 開放平臺


  1. 是否使用過第三方平臺  

  2. 常用開放平臺的熟悉度(微信、QQ、微博、支付寶等常用的支付和分享)  

  3. 是否進行過對第三方平臺的統一封裝?

  4. 是否自己開發過SDK?


3.4 設計相關


  1. 有哪些常用的設計模式、設計原則

  2. 設計模式在Android源碼中的應用

  3. 設計模式在項目中的應用

  4. 項目中的分包方式

  5. MVC在android中的應用,利弊

  6. android項目中的常見層次結構,包劃分

  7. 有沒有設計過項目中的層級結構、包劃分

還有一些相關的網站:

http://blog.csdn.net/lmj623565791/article/details/24015867

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章