基本的Android面試問(wèn)題小問(wèn)題

一、序列化和反序列化

  1. 序列化 : 把數(shù)據(jù)按照一定的邏輯保存的過(guò)程
  2. 反序列化 : 把數(shù)據(jù)按照一定的邏輯恢復(fù)的過(guò)程
  • Serializable 性能不會(huì)太高 , 會(huì)記錄類的全名、屬性名 , 反序列化時(shí)是反射
  • Parcelable : write的順序和read的順序必須相同
    a. Java推薦(對(duì)成員進(jìn)行序列化 , 內(nèi)存間的序列化)
    b. write() -> Parcel(只記錄屬性值) -> read()

二、==和equal的區(qū)別

  1. ==比較的是內(nèi)存地址
  2. equal比較的是值(比較的是值,String重寫了hashcode方法)

三、ImageLoader、Picasso、Glide

  1. ImageLoader : 支持監(jiān)聽(tīng)圖片下載進(jìn)度 , 可以在View滾動(dòng)的時(shí)候暫停加載圖片(PauseOnScrollListener)
  2. Picasso : 框架體積小、不支持GIF
  3. Gilded : Picasso的升級(jí)版 , GIF、Video、視頻類優(yōu)先

四、MVC和MVP模式

  1. 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ù)
  2. MVP : View和Model不直接交互 , Presenter作為視圖和數(shù)據(jù)的連接器 , 當(dāng)View有變動(dòng)或者M(jìn)odel有變動(dòng)時(shí) , 不會(huì)相互影響 , 耦合性低

五、ListView和RecyclerView的區(qū)別

  1. RecyclerView的ViewHolder編寫規(guī)范是好的 , 自帶item復(fù)用功能
  2. RecyclerView自帶動(dòng)畫效果
  3. RecyclerView可以實(shí)現(xiàn)ListView、GirdView、瀑布流效果
  4. RecyclerView可以局部刷新(notifyItemChanged)

六、String、StringBuffer、StringBuilder

  1. String : 字符串常量 , 每次修改都會(huì)new一個(gè)新的對(duì)象
  2. StringBuffer : 可修改的字符串 , 線程安全
  3. StringBuilder : 可修改的字符串 , 線程不安全(單線程使用) , 效率比StringBuffer高

七、android動(dòng)畫

  1. 補(bǔ)間動(dòng)畫 : 不會(huì)改變View的真正位置和相關(guān)屬性(點(diǎn)擊事件的出發(fā)區(qū)域還是動(dòng)畫前的位置)
  2. 幀動(dòng)畫 : 加載一系列Drawable資源來(lái)創(chuàng)建動(dòng)畫
  3. 屬性動(dòng)畫 : 改變View的屬性值

八、設(shè)計(jì)模式

  1. 單例 : 確保類只有一個(gè)實(shí)例 , 且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例
  2. Builder建造者模式 : 需要?jiǎng)?chuàng)建一個(gè)對(duì)象時(shí)要用到很多變量組合而成的時(shí)候
  3. 工廠模式 : 簡(jiǎn)單工廠模式、 工廠方法模式、抽象工廠模式(基類)
  4. 策略模式 : 一個(gè)類或算法可以在運(yùn)行時(shí)更改

九、進(jìn)程和線程的區(qū)別

  1. 進(jìn)程是CPU資源分配的最小單位 , 線程是CPU調(diào)度的最小單位
  2. 進(jìn)程之間不能共享資源 , 線程可以共享所在進(jìn)程的地址空間和其他資源
  3. 一個(gè)進(jìn)程可以有多個(gè)線程 , 進(jìn)程可以開(kāi)啟進(jìn)程 , 也可以開(kāi)啟線程
  4. 一個(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ū)別

  1. 接口用implements來(lái)實(shí)現(xiàn) , 抽象類用extent繼承
  2. 抽象類可以有構(gòu)造函數(shù) , 接口不能
  3. 抽象類可以有main方法能運(yùn)行 , 接口不能
  4. 接口可以實(shí)現(xiàn)多個(gè) , 抽象類只能繼承一個(gè)
  5. 接口默認(rèn)是public修飾 , 抽象類可以任意修飾符

十三、final的作用

  1. final修飾的變量叫常量 , 常量必須初始化 , 初始化后不能被修改
  2. final修飾方法 , 不能被重新
  3. final修飾類 , 最終類 , 不能被繼承
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容