一、序列化和反序列化
- 序列化 : 把數(shù)據(jù)按照一定的邏輯保存的過(guò)程
- 反序列化 : 把數(shù)據(jù)按照一定的邏輯恢復(fù)的過(guò)程
- Serializable 性能不會(huì)太高 , 會(huì)記錄類的全名、屬性名 , 反序列化時(shí)是反射
- Parcelable : write的順序和read的順序必須相同
a. Java推薦(對(duì)成員進(jìn)行序列化 , 內(nèi)存間的序列化)
b. write() -> Parcel(只記錄屬性值) -> read()
二、==和equal的區(qū)別
- ==比較的是內(nèi)存地址
- equal比較的是值(比較的是值,String重寫了hashcode方法)
三、ImageLoader、Picasso、Glide
- ImageLoader : 支持監(jiān)聽(tīng)圖片下載進(jìn)度 , 可以在View滾動(dòng)的時(shí)候暫停加載圖片(PauseOnScrollListener)
- Picasso : 框架體積小、不支持GIF
- Gilded : Picasso的升級(jí)版 , GIF、Video、視頻類優(yōu)先
四、MVC和MVP模式
- MVC : 用戶操作View發(fā)送請(qǐng)求 , Controller負(fù)責(zé)決定應(yīng)該調(diào)用哪個(gè)Model來(lái)進(jìn)行處理 , Model根據(jù)用戶請(qǐng)求進(jìn)行相應(yīng)的業(yè)務(wù)邏輯處理并返回?cái)?shù)據(jù) , 最后Controller調(diào)用對(duì)應(yīng)的View來(lái)顯示Model數(shù)據(jù)
- MVP : View和Model不直接交互 , Presenter作為視圖和數(shù)據(jù)的連接器 , 當(dāng)View有變動(dòng)或者M(jìn)odel有變動(dòng)時(shí) , 不會(huì)相互影響 , 耦合性低
五、ListView和RecyclerView的區(qū)別
- RecyclerView的ViewHolder編寫規(guī)范是好的 , 自帶item復(fù)用功能
- RecyclerView自帶動(dòng)畫效果
- RecyclerView可以實(shí)現(xiàn)ListView、GirdView、瀑布流效果
- RecyclerView可以局部刷新(notifyItemChanged)
六、String、StringBuffer、StringBuilder
- String : 字符串常量 , 每次修改都會(huì)new一個(gè)新的對(duì)象
- StringBuffer : 可修改的字符串 , 線程安全
- StringBuilder : 可修改的字符串 , 線程不安全(單線程使用) , 效率比StringBuffer高
七、android動(dòng)畫
- 補(bǔ)間動(dòng)畫 : 不會(huì)改變View的真正位置和相關(guān)屬性(點(diǎn)擊事件的出發(fā)區(qū)域還是動(dòng)畫前的位置)
- 幀動(dòng)畫 : 加載一系列Drawable資源來(lái)創(chuàng)建動(dòng)畫
- 屬性動(dòng)畫 : 改變View的屬性值
八、設(shè)計(jì)模式
- 單例 : 確保類只有一個(gè)實(shí)例 , 且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例
- Builder建造者模式 : 需要?jiǎng)?chuàng)建一個(gè)對(duì)象時(shí)要用到很多變量組合而成的時(shí)候
- 工廠模式 : 簡(jiǎn)單工廠模式、 工廠方法模式、抽象工廠模式(基類)
- 策略模式 : 一個(gè)類或算法可以在運(yùn)行時(shí)更改
九、進(jìn)程和線程的區(qū)別
- 進(jìn)程是CPU資源分配的最小單位 , 線程是CPU調(diào)度的最小單位
- 進(jìn)程之間不能共享資源 , 線程可以共享所在進(jìn)程的地址空間和其他資源
- 一個(gè)進(jìn)程可以有多個(gè)線程 , 進(jìn)程可以開(kāi)啟進(jìn)程 , 也可以開(kāi)啟線程
- 一個(gè)線程只能屬于一個(gè)進(jìn)程 , 線程可以直接使用進(jìn)程的資源 , 線程依賴進(jìn)程存在
十、內(nèi)部類
可以直接訪問(wèn)外部類的屬性
成員內(nèi)部類、局部?jī)?nèi)部類、匿名內(nèi)部類(沒(méi)有構(gòu)造方法)、靜態(tài)內(nèi)部類(static修飾 , 不能使用外圍類的非static成員變量和方法)
十一、Synchronized
可以在多線程環(huán)境下座位線程安全的同步鎖 , 可修飾 :
- 代碼塊
- 成員方法(方法用Synchronized修飾 , 修飾的是this)
- 修飾靜態(tài)方法(方法用Synchronized修飾 , 修飾的是Class對(duì)象)
十二、接口和抽象類的區(qū)別
- 接口用implements來(lái)實(shí)現(xiàn) , 抽象類用extent繼承
- 抽象類可以有構(gòu)造函數(shù) , 接口不能
- 抽象類可以有main方法能運(yùn)行 , 接口不能
- 接口可以實(shí)現(xiàn)多個(gè) , 抽象類只能繼承一個(gè)
- 接口默認(rèn)是public修飾 , 抽象類可以任意修飾符
十三、final的作用
- final修飾的變量叫常量 , 常量必須初始化 , 初始化后不能被修改
- final修飾方法 , 不能被重新
- final修飾類 , 最終類 , 不能被繼承