android面試知識點
Android面試相關知識點
1.1Java基礎
對抽象、繼承、多態的理解
泛型的作用及使用場景
枚舉的特點及使用場景
線程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.1Android基礎
四大組件的意義及使用,生命周期回調及意義
AsyncTask、Handler的使用
Android系統層次框架結構
AsyncTask的實現方式
AsyncTask使用的時候應該注意什么
Android常見的存儲方式
Looper、Handler和MessageQueue的關系
Activity的啟動流程(考察對Framwork的熟悉程度)
多進程開發的注意事項(Application類區分進程,進程間內存不可見、進程間通訊方式)
2.2Resource相關
style和theme的作用及用法
dpi、sp、px的區別以及轉換關系
raw和assets文件夾的作用,二者有何區別
Android系統如何在多個資源文件夾下查找匹配最合適的資源
2.3虛擬機
Java內存模型
Android虛擬機的特點
Dalvik和Art的區別
熟悉垃圾回收的實現機制,了解虛擬機的GC類型
2.4View相關
常用組件的使用: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
常用的調試工具:HierarchyViewer、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項目中的常見層次結構,包劃分
有沒有設計過項目中的層級結構、包劃分