Android 程序員面試筆試寶典
內容描述
《Android程序員面試筆試寶典》覆蓋了Android開發中的各個主要方面,所給出的試題均取材於各大IT公司的Android面試真題。
全書分為Java部分與Android部分。
因為Android開發是用Java語言來編寫的,所以這裡所講的Java知識都是基礎方面,
而且跟Android開發有關的其他基礎知識都會在Java部分進行講解。
而Android部分,則從面試中經常考的知識點入手,對Android進行全面的學習,
對常見面試真題進行分析與講解,培養讀者解決面試題思路的同時,也能係統學習到Android開發。
《Android程序員面試筆試寶典》內容豐富,講解思路清晰且詳細,涵蓋的知識點非常多,
不但是一本用來解決程序員面試的Android實用工具書,也是一本適合任何Android開發者學習的好書。
目錄大綱
前言
第1章四大組件1
1.1活動1
1.1.1生命週期1
1.1.2啟動模式2
1.1.3碎片5
1.1.4常見面試筆試真題6
1.2服務17
1.2.1 Android線程17
1.2.2生命週期17
1.2.3服務類型18
1.2.4 Handler機制18
1.2.5常見面試筆試真題19
1.3廣播接收器26
1.3.1動態註冊與靜態註冊26
1.3.2廣播類型26
1.3.3發送廣播27
1.3.4常見面試筆試真題28
1.4內容提供者30
1.4.1系統ContentProvider31
1.4.2自定義ContentProvider31
1.4.3常見面試筆試真題32
第2章佈局及其常用屬性36
2.1常用的幾種佈局36
2.1.1線性佈局36
2.1.2幀佈局37
2.1.3相對佈局37
2.1.4約束佈局38
2.2常見面試筆試真題40
第3章自定義View及ViewGroup42
3.1自定義View42
3.1.1 onMeasure()43
3.1.2 onDraw()44
3.2自定義ViewGroup45
3.3常見面試筆試真題48
第4章動畫65
4.1 View動畫65
4.1.1透明度動畫(AlphaAnimation)65
4.1.2縮放動畫(ScaleAnimation)66
4.1.3平移動畫(TranslateAnimation)67
4.1.4旋轉動畫(RotateAnimation)68
4.1.5 AnimationSet69
4.2屬性動畫70
4.3常見面試筆試真題74
第5章數據庫框架83
5.1文件流83
5.2 SQLite85
5.2 .1創建與更新數據庫85
5.2.2添加數據86
5.2.3刪除數據87
5.2.4修改數據87
5.2.5查詢數據87
5.3 LitePal88
5.3.1使用前準備工作88
5.3.2創建與升級數據庫89
5.3 .3添加數據91
5.3.4修改數據91
5.3.5刪除數據93
5.3.6查詢數據93
5.4常見面試筆試真題95
第6章網絡框架104
6.1關於HTTP/HTTPS的基礎知識104
6.1.1 HTTP請求方式104
6.1.2 HTTP報文104
6.1.3首部(Header)105
6.1.4 HTTP緩存106
6.2 OkHttp108
6.2.1 Get請求108
6.2.2 t請求109
6.2.3文件上傳109
6.2.4結合GSON框架來解析返回結果110
6.3 Retrofit112
常見面試筆試真題114
第7章Rxjava119
7.1 Rxjava的優點119
7.2 Rxjava原理119
7.3 Rxjava的使用120
7.4操作符121
7.4.1創建操作符121
7.4.2轉換操作符124
7.4.3組合操作符124
7.4.4功能操作符127
7.4.5過濾操作符135
7.4.6條件操作符138
7.5常見面試筆試真題140
第8章事件分發機制142
8.1觸摸事件的方法143
8.2 Activity事件分發143
8.3 ViewGroup與View事件分發144
8.4常見面試筆試真題148
第9章MVC、MVP與MVVM151
9.1 MVC151
9.2 MVP153
9.3 MVVM157
9.4常見面試筆試真題158
第10章圖片加載框架161
10.1 Glide161
10.2 ImageLoader162
10.3 Picasso162
10.4常見面試筆試真題163
第11章性能優化與跨進程通信165
11.1性能優化165
11.1.1佈局優化165
11.1.2繪製優化167
11.1.3內存優化168
11.1.4包優化169
11.1.5 Bitmap優化169
11.2跨進程通信170
11.2 .1進程與線程170
11.2.2 Android的IPC170
11.3常見面試筆試真題172
第12章Java基礎知識175
12.1基本概念175
12.1.1 Java語言有哪些優點?175
12.1.2 Java與C/C++有何異同?175
12.1.3為什麼需要public static void main(String[] args)這個方法?176
12.1.4如何實現在main函數執行前輸出“Hello world”?178
12.1.5 Java程序初始化的順序是怎樣的?178
12.1.6 Java中作用域有哪些?180
12.1.7一個Java文件中是否可以定義多個類?181
12.1.8什麼是構造方法?181
12.1.9為什麼Java中有些接口沒有聲明任何方法?183
12.1.10 Java中clone方法有什麼作用?185
12.1.11反射190
12.1.12 package有什麼作用?194
12.1.13 Java如何實現類似於C語言中函數指針的功能?194
12.1.14本地變量類型推斷196
12.1.15常見面試筆試真題200
12.2面向對象技術202
12.2.1面向對象與面向過程有什麼區別?202
12.2.2面向對像有哪些特徵?203
12.2.3面向對象的開發方式有什麼優點?203
12.2.4什麼是繼承?204
12.2.5組合與繼承有什麼區別?204
12.2.6多態的實現機制是什麼?205
12.2.7 Overload和Override有什麼區別?207
12.2.8 abstract class(抽像類)與interface(接口)有何異同?207
12.2.9內部類有哪些?209
12.2.10如何獲取父類的類名?211
12.2.11 this與super有什麼區別?212
12.2.12常見面試筆試真題213
12.3關鍵字216
12.3.1變量命名有哪些規則?216
12.3.2 break、continue以及return的區別是什麼?216
12.3.3 final、finally和finalize有什麼區別?218
12.3.4 assert有什麼作用?220
12.3.5 static關鍵字有哪些作用?220
12.3.6 switch使用時有哪些注意事項?224
12.3.7 volatile有什麼作用?226
12.3.8 instanceof有什麼作用?230
12.3.9 strictfp有什麼作用?230
12.3.10常見面試筆試真題231
12.4基本類型與運算231
12.4.1 Java提供了哪些基本的數據類型?231
12.4.2什麼是不可變類?233
12.4.3值傳遞與引用傳遞有哪些區別?235
12.4.4不同數據類型轉換有哪些規則?239
12.4.5強制類型轉換的注意事項有哪些?239
12.4.6運算符優先級是什麼?240
12.4.7 Math類中round、ceil和floor方法的功能是什麼?240
12.4.8 ++i與i++有什麼區別?241
12.4.9如何實現無符號數右移操作?242
12.4.10如何理解Unicode編碼?244
12.4.11常見面試筆試真題246
12.5字符串與數組248
12.5.1字符串創建與存儲的機制是什麼?248
12.5.2 “==”、equals和hashCode的區別是什麼?253
12.5.3 String、StringBuffer、StringBuilder和StringTokenizer有什麼區別?254
12.5.4 Java中數組是不是對象?256
12.5.5數組的初始化方式有哪幾種?257
12.5.6 length屬性與length方法的區別是什麼?258
12.5.7常見面試筆試真題259
12.6異常處理260
12.6.1 finally塊中的代碼什麼時候被執行?260
12.6.2異常處理的原理是什麼?263
12.6.3運行時異常和普通異常有什麼區別?263
12.異常處理的新特性265
12.6.5常見面試筆試真題265
12.7容器266
12.7.1 Java Collections框架是什麼?266
12.7.2 ArrayList、Vector和LinkedList的區別是什麼?268
12.7.3 Map269
12.7.4 Set271
第13章設計模式273
13.1單例模式273
13.2工廠模式273
13.3適配器模式275
13.4觀察者模式276
13.5常見面試筆試真題277
作者介紹
黃建紅,網名“Pingred”,安卓開發工程師,先後參與多用戶網購平台、金融貨幣電子交易平台等主流大型安卓App開發工作,現致力於研究並從事線上音視頻開發,關注開源技術,在CSDN社區分享多篇技術文章,興趣愛好廣泛,熱衷技術分享。