Android程序员该如何进阶?,2021Android面经
-
LinkedList
-
ArrayList
-
Vector
(2) Set
-
HashSet
-
TreeSet
Map:
-
HashMap
-
TreeMap
-
HashTable
我們需要知道每個容器的特性,以及它們的擴容方式(這個很重要)。根據我們的數據大小、特定場景、業務邏輯來選擇合適的容器。
7 . Java 內存模型
Java 內存模型這一塊非常重要,因為它涉及到我們程序的性能,我們需要知道,內存是如何分配的,成員變量、靜態變量、局部變量、對象等各自分配到哪一個區:
-
棧內存
-
堆內存
垃圾回收機制:
涉及到內存,我們就需要知道java的垃圾回收機制,雖然Java 不像c++一樣需要我們自己分配內存、釋放內存。但是我們還是需要知道它的回收機制,分代回收:
-
年輕代:1 Eden 區 和2個Survivor 區
-
年老代
-
永久代
分代回收分為了三個代,每個代的垃圾回收時機和頻率是不一樣的,因此才用的回收算法也不一樣。
總的來說:年輕代的回收頻率很高,對象的生命周期比較短暫,當經過一定次數的回收周期之后,年輕代的對象還存活的話,就會被移動到年老代,年老代的回收比較耗時,回收頻率較低,回收成本較大。
Java 基礎總結:關于Java基礎暫時就總結了這些,這些都是Android 開發中比較常用或者常常需要關心的一些東西。如果你想比較系統的學習Java基礎相關的東西,推薦你去看一下經典書籍《Thinking in Java》。
二、Android 基礎
就像建造房屋一樣,要建造一座宏偉的建筑,首先得打牢根基。同樣的,作為Android 開發者,要想走的更遠,也要學好Android基礎。
1 . Android 四大組件
Android四大組件是Android的根本,從我們學習Android 時候,就先認識了它們:
-
Activity
-
Service
-
BroadcastReceiver
-
ContentProvider
Activity:
Activity 再熟悉不過了吧,我們APP 所能看到的活動界面就是一個個Activity,說到Activity,我們得知道:
- 1,Activity 的生命周期
- 2,Activity 的幾種啟動方式:
standard
SingleTask
SingleTop
SingleInstance
請記住這幾種啟動方式的區別。
-
3,Activity 間傳如何遞數據?
-
4,Activity 橫豎屏切換生命周期有哪些變化?
-
5,顯示Intent 和隱式Intent 有和區別?
Service:
Service 也是我們用得比較多的一個組件,關于Service ,我們需要知道:
-
Service 的生命周期
-
Service 的兩種啟動方式:
1, startService
2, bindService
2種啟動方式 所走的生命周期方法是不一樣的
- Service vs IntentService:
Service 和IntentService 個自用于不同的場景,想知道他們各自的使用場景和區別嗎?查資料去吧!
BroadcastReceiver:
廣播相關的知識點:廣播有兩種注冊方式,Manifest 清單文件中注冊和 代碼中動態注冊,代碼中注冊的廣播一般為局部廣播,最好?register?和?unRegister?成對出現,別忘了反注冊。
全局廣播可以跨應用訪問,存在安全隱患并且效率不高,因此出現了更安全、更高效的替代者:LocalBroadcastReceiver,使用非常簡單。如果在代碼中看到的是LocalBroadcastReceiver而不是BroadCastReceiver,我會給你加分。
ContentProvider
ContentProvider 可能用得不是很多,可以用于共享數據,提供數據源,掌握會寫增刪改查就好了。
啰嗦一下:四大組件需要在清單文件中聲明。
2 . Android 常用的幾種布局
-
1,幀布局 FrameLayout
-
2,線性布局 LinearLayout
-
3,相對布局 RelativeLayout
-
4,Google 新出的約束布局ConstraintLayout
3 . Android Studio
Android Studio 是我們Android開發的常用工具,熟練操作和使用上面的快捷鍵和一些插件,對我們的開發效率有很大的幫助。
Android Studio 有很多好用的插件,可以根據自己的需要安裝,如:
-
GsonFormat
-
Parcelable 序列化
-
翻譯插件:對于英文不是很好的很有幫助。
除了一些好用的插件之外,還可以根據自己的習慣設置一些快捷鍵,總之,工欲善其事,必先利其器。要提高開發效果,先配置好我們的開發工具。
4 . Fragment
-
1,Fragment 的生命周期
-
2,Fragment 與fragment 之間的通訊方式
-
3,Fragment 與Activity 之間的通訊方式
-
4,Fragment + ViewPager 懶加載
-
5,Fragment +TabLayout 選項卡
5 . 數據庫相關
Android 自帶數據庫 Sqlite, 關于數據庫,我們應該熟悉:
-
1,數據庫和表的創建
-
2,數據的增刪、改、查。
-
3,數據庫升級:
這點尤為重要,因為數據庫的升級往往伴隨著數據的升級,不能升級之后把前面的用戶數據弄沒了。
- 4,三方庫:GreenDao:
如果你覺得自己做這些操作很麻煩的話,你可以選擇你一些三方的庫,如GreenDao,已經為你封裝了所有的這些操作,只需簡單配置就能使用。當然,Github 上還有很多類似的庫,根據自己的需要選擇。
6 . 常用控件基礎控件
-
1,RecyclerView & ListView
-
2,ViewPager
-
3,TextView
-
4,ImageView
-
5,Button
-
6,Checkbox
-
7,RadioButton
所有復雜的界面都由這些簡單的基礎控件組成,因此,你需要好好了解一下他們的各種屬性。
三、Android 進階
上面列舉了一些Android的基礎知識點,僅僅熟悉這些還不夠,還需要學習Android開發中更高級一點的東西:
1 . View
上面列舉了一些基礎的View和控件,但是這些基礎控件有時候不能滿足我們的需求,這時候就需要自定義View了。
自定義View:
自定義view 的三種方式:
-
1,組合基礎控件
-
2,繼承基礎控件,做相應的更改。
-
3,繼承View 或 ViewGroup:
這種方式也是我們用的比較多的一種方式,這種方式比較自由,定制度高,需要實現下面幾個方法
(1) onMeasure()
(2) onLayout()
(3) onDraw()
執行順序為:onMeasure()->onLayout() -> onDraw()。
View事件分發機制:
自定義view 的時候,我們需要響應用戶的各種事件,這個時候我們就需要了解View的事件分發機制了。
關于事件分發機制,看一張比較經典的圖(U型圖):
當這幾個方法都調用super 的時候,整個事件會走完這個U型圖。
事件分發機制這一塊還是比較難理解的,更多詳解請查資料。
App 的幾種架構
-
MVC
-
MVP
-
MVVM
常見的三種架構,根據自己的業務需要選擇,每種架構都有自己的有點和缺點,另外,我覺得一個APP 中,多種架構是可以并存的,比如:MVC和 MVP 。一個非常簡單的展示界面,不必為它弄一個 P 層,反而變得復雜了。
3 . Android 動畫
(1) Android 中的5種基礎動畫
-
平移動畫
-
縮放動畫
-
旋轉動畫
-
Alpha 動畫
-
幀動畫
(2) 屬性動畫
補間動畫很簡單,但是它的場景使用很有限,它只能對一個View做動畫。有的時候,我們需要更為精準的控制,我們要控制一個屬性來做動畫,這個時候屬性動畫就派上用場了。屬性動畫的幾個相關類:
-
ObjectAnimator
-
ValueAnimator
-
AnimatorSet
屬性動畫用得就比較廣泛了,屬性動畫 + 自定義View 配置 Path和貝塞爾曲線 能做出很多復雜的漂亮的效果。
(3)矢量動畫
-
svg
-
VectorDrawable
-
AnimatedVectorDrawable
矢量動畫大家可能比較陌生,Android Studio 支持將一個Svg 文件導入生成一個path 路徑,用VectorDrawable 和AnimatedVectorDrawable 來實現矢量動畫。但是需要在Android5.0 以上。
4 . Material Design 系列
Android 5.0 開始,Google 推出了 Material Design 設計規范,Android support 包中也加入了符合Material Design 設計規范的各種控件:
最后
總而言之,Android開發行業變化太快,作為技術人員就要保持終生學習的態度,讓學習力成為核心競爭力,所謂“活到老學到老”只有不斷的學習,不斷的提升自己,才能跟緊行業的步伐,才能不被時代所淘汰。
在這里我分享一份自己收錄整理上述技術體系圖相關的幾十套騰訊、頭條、阿里、美團等公司19年的面試題,把技術點整理成了視頻和PDF(實際上比預期多花了不少精力),包含知識脈絡 + 諸多細節,由于篇幅有限,這里以圖片的形式給大家展示一部分。需要的朋友可以私信我【資料】或者 點這里 免費領取
還有高級架構技術進階腦圖、Android開發面試專題資料,高級進階架構資料 幫助大家學習提升進階,也節省大家在網上搜索資料的時間來學習,也可以分享給身邊好友一起學習。 領取地址: Android學習PDF+架構視頻+最新面試文檔+源碼筆記
鏈圖片轉存中…(img-SJ6M9aUs-1643952530885)]
[外鏈圖片轉存中…(img-njMd9g62-1643952530886)]
[外鏈圖片轉存中…(img-pn53P288-1643952530886)]
還有高級架構技術進階腦圖、Android開發面試專題資料,高級進階架構資料 幫助大家學習提升進階,也節省大家在網上搜索資料的時間來學習,也可以分享給身邊好友一起學習。 領取地址: Android學習PDF+架構視頻+最新面試文檔+源碼筆記
總結
以上是生活随笔為你收集整理的Android程序员该如何进阶?,2021Android面经的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于debezium实时数据同步(Ora
- 下一篇: Nvidia Jetson AGX Or