1.Java
1.1 Java基礎
對抽象、繼承、多態的理解
泛型的作用及使用場景
枚舉的特點及使用場景
線程sleep和wait的區別
JAVA反射機制
weak/soft/strong引用的區別
Object的hashCode()與equals()的區別和作用
1.2 集合類
JAVA常用集合類功能、區別和性能
并發相關的集合類
部分常用集合類的內部實現方式
1.3 多線程相關
Thread、Runnable、Callable、Futrue類關系與區別
JDK中默認提供了哪些線程池,有何區別
線程同步有幾種方式,分別闡述在項目中的用法
在理解默認線程池的前提下,自己實現線程池
1.4 字符
String的不可變性
StringBuilder和StringBuffer的區別
字符集的理解:Unicode、UTF-8、GB2312等
正則表達式相關問題
1.5 注解
注解的使用
注解的級別及意義
如何自定義注解
2.Android技術
2.1 Android基礎
四大組件的意義及使用,生命周期回調及意義
AsyncTask、Handler的使用
Android系統層次框架結構
AsyncTask的實現方式
AsyncTask使用的時候應該注意什么
Android常見的存儲方式
Looper、Handler和MessageQueue的關系
Activity的啟動流程(考察對Framwork的熟悉程度)
多進程開發的注意事項(Application類區分進程,進程間內存不可見、進程間通訊方式)
2.2 Resource相關
.9圖片的意義
style和theme的作用及用法
dpi、sp、px的區別以及轉換關系
raw和assets文件夾的作用,二者有何區別
Android系統如何在多個資源文件夾下查找匹配最合適的資源
2.3 虛擬機
Java內存模型
Android虛擬機的特點
Dalvik和Art的區別
熟悉垃圾回收的實現機制,了解虛擬機的GC類型
2.4 View相關
常用組件的使用:ListView、RecyclerView及Adapter的使用
View之間的繼承關系
Invalidate與postInvalidate的區別
自定義View的實現方式(根據項目經驗詢問相關組件)。
onMeasure/onLayout/onDraw的作用
Paint、Matrix、Shader等繪制相關類的方法作用
詳細描述事件分發機制
2.5 動畫
Android有哪些動畫的實現方式
Interpolator類的意義和常用的Interpolator
ViewAnimation與屬性動畫有什么區別
如何自定義ViewAnimation
屬性動畫的實現原理
2.6 圖片處理
一般項目中如何加載大圖
圖片壓縮的方式
如何不壓縮圖片加載高清圖
圖片加載過程中,一般會使用緩存,這個緩存的主要作用是什么
談談自己熟悉的圖片加載框架
3.項目經驗
3.1 開發工具
代碼管理工具:SVN、Git
常用的調試工具:Hierarchy Viewer、DDMS等
CI工具:Lint檢查,FindBugs、Jenkins
內存分析工具:dumpsys、memoinfo、MAT
3.2 項目工程
APP更新策略:推送或者拉取?
如何統一處理錯誤崩潰
如何進行用戶行為收集
日志管理有哪些要點?(Debug包開放,release包關閉,錯誤日志反饋)
打包方式Ant、Maven、Gradle
機型適配情況
3.3 開放平臺
是否使用過第三方平臺
常用開放平臺的熟悉度(微信、QQ、微博、支付寶等常用的支付和分享)
是否進行過對第三方平臺的統一封裝?
是否自己開發過SDK?
3.4 設計相關
有哪些常用的設計模式、設計原則
設計模式在Android源碼中的應用
設計模式在項目中的應用
項目中的分包方式
MVC在android中的應用,利弊
android項目中的常見層次結構,包劃分
有沒有設計過項目中的層級結構、包劃分
參考:
1.LearningNotes
2.國內一線互聯網公司內部面試題庫
3.玩轉Android