gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

11道Android性能優化面試題【附答案】

推薦:《2020年Android面試題大匯總【收藏】》

因為實際開發與參考答案會有所不同,再者怕誤導大家,所以這些面試題答案還是自己去理解!面試官會針對簡歷中提到的知識點由淺入深提問,所以不要背答案,多理解。

1、圖片的三級緩存中,圖片加載到內存中,如果內存快爆了,會發生什么?怎么處理?

  • 參考回答:
    • 首先我們要清楚圖片的三級緩存是如何的

      11道Android性能優化面試題【附答案】

      如果內存足夠時不回收。內存不夠時就回收軟引用對象

2、內存中如果加載一張500*500的png高清圖片.應該是占用多少的內存?

  • 參考回答:
    • 不考慮屏幕比的話:占用內存=500 * 500 * 4 = 1000000B ≈ 0.95MB
    • 考慮屏幕比的的話:占用內存= 寬度像素 x (inTargetDensity / inDensity) x 高度像素 x (inTargetDensity / inDensity)x 一個像素所占的內存字節大小

inDensity表示目標圖片的dpi(放在哪個資源文件夾下),inTargetDensity表示目標屏幕的dpi

11道Android性能優化面試題【附答案】

3、WebView的性能優化 ?

  • 參考回答:
    • 一個加載網頁的過程中,native、網絡、后端處理、CPU都會參與,各自都有必要的工作和依賴關系;讓他們相互并行處理而不是相互阻塞才可以讓網頁加載更快:
      • WebView初始化慢,可以在初始化同時先請求數據,讓后端和網絡不要閑著。
      • 常用 JS 本地化及延遲加載,使用第三方瀏覽內核
      • 后端處理慢,可以讓服務器分trunk輸出,在后端計算的同時前端也加載網絡靜態資源。
      • 腳本執行慢,就讓腳本在最后運行,不阻塞頁面解析。
      • 同時,合理的預加載、預緩存可以讓加載速度的瓶頸更小。
      • WebView初始化慢,就隨時初始化好一個WebView待用。
      • DNS和鏈接慢,想辦法復用客戶端使用的域名和鏈接。

        11道Android性能優化面試題【附答案】

4、Bitmap如何處理大圖,如一張30M的大圖,如何預防OOM?

  • 參考回答:避免OOM的問題就需要對大圖片的加載進行管理,主要通過縮放來減小圖片的內存占用。
    • BitmapFactory提供的加載圖片的四類方法(decodeFile、decodeResource、decodeStream、decodeByteArray)都支持BitmapFactory.Options參數,通過inSampleSize參數就可以很方便地對一個圖片進行采樣縮放
    • 比如一張10241024的高清圖片來說。那么它占有的內存為102410244,即4MB,如果inSampleSize為2,那么采樣后的圖片占用內存只有5125124,即1MB(注意:根據最新的官方文檔指出,inSampleSize的取值應該總是為2的指數,即1、2、4、8等等,如果外界輸入不足為2的指數,系統也會默認選擇最接近2的指數代替,比如2*)
    • 綜合考慮。通過采樣率即可有效加載圖片,流程如下
      • 將BitmapFactory.Options的inJustDecodeBounds參數設為true并加載圖片
      • 從BitmapFactory.Options中取出圖片的原始寬高信息,它們對應outWidth和outHeight參數
      • 根據采樣率的規則并結合目標View的所需大小計算出采樣率inSampleSize
      • 將BitmapFactory.Options的inJustDecodeBounds參數設為false,重新加載圖片

        11道Android性能優化面試題【附答案】

5、內存回收機制與GC算法(各種算法的優缺點以及應用場景);GC原理時機以及GC對象

  • 參考回答:
    • 內存判定對象可回收有兩種機制:
      • 引用計數算法:給對象中添加一個引用計數器,每當有一個地方引用它時,計數器值就加1;當引用失效時,計數器值就減1;任何時刻計數器為0的對象就是不可能再被使用的。然而在主流的Java虛擬機里未選用引用計數算法來管理內存,主要原因是它難以解決對象之間相互循環引用的問題,所以出現了另一種對象存活判定算法。
      • 可達性分析法:通過一系列被稱為『GCRoots』的對象作為起始點,從這些節點開始向下搜索,搜索所走過的路徑稱為引用鏈,當一個對象到GC Roots沒有任何引用鏈相連時,則證明此對象是不可用的。其中可作為GC Roots的對象:虛擬機棧中引用的對象,主要是指棧幀中的本地變量、本地方法棧中Native方法引用的對象、方法區中類靜態屬性引用的對象、方法區中常量*引用的對象
    • GC回收算法有以下四種:
      • 分代收集算法:是當前商業虛擬機都采用的一種算法,根據對象存活周期的不同,將Java堆劃分為新生代和老年代,并根據各個年代的特點采用最適當的收集算法。
      • 新生代:大批對象死去,只有少量存活。使用『復制算法』,只需復制少量存活對象即可。
        • 復制算法:把可用內存按容量劃分為大小相等的兩塊,每次只使用其中的一塊。當這一塊的內存用盡后,把還存活著的對象『復制』到另外一塊上面,再將這一塊內存空間一次清理掉。實現簡單,運行高效。在對象存活率較高時就要進行較多的復制操作,效率將會變低
      • 老年代:對象存活率高。使用『標記—清理算法』或者『標記—整理算法』,只需標記較少的回收對象即可。
        • 標記-清除算法:首先『標記』出所有需要回收的對象,然后統一『清除』所有被標記的對象。標記和清除兩個過程的效率都不高,清除之后會產生大量不連續的內存碎片,空間碎片太多可能會導致以后在程序運行過程中需要分配較大對象時,無法找到足夠的連續內存而不得不提前觸發另一次垃圾收集動作。
        • 標記-整理算法:首先『標記』出所有需要回收的對象,然后進行『整理』,使得存活的對象都向一端移動,最后直接清理掉端邊界以外的內存。標記整理算法會將所有的存活對象移動到一端,并對不存活對象進行處理,因此其不會產生內存碎片

6、內存泄露和內存溢出的區別 ?AS有什么工具可以檢測內存泄露

  • 參考回答:
    • 內存溢出(out of memory):是指程序在申請內存時,沒有足夠的內存空間供其使用,出現out of memory;比如申請了一個integer,但給它存了long才能存下的數,那就是內存溢出。
    • 內存泄露(memory leak):是指程序在申請內存后,無法釋放已申請的內存空間,一次內存泄露危害可以忽略,但內存泄露堆積后果很嚴重,無論多少內存,遲早會被占光。memory leak會最終會導致out of memory!
    • 查找內存泄漏可以使用Android Studio 自帶的AndroidProfiler工具或MAT

7、性能優化,怎么保證應用啟動不卡頓? 黑白屏怎么處理?

  • 參考回答:
    • 應用啟動速度,取決于你在application里面時候做了什么事情,比如你集成了很多sdk,并且sdk的init操作都需要在主線程里實現所以會有卡頓的感覺。在非必要的情況下可以把加載延后或則開啟子線程處理
    • 另外,影響界面卡頓的兩大因素,分別是界面繪制和數據處理。
      • 布局優化(使用include,merge標簽,復雜布局推薦使用ConstraintLayout等)
      • onCreate() 中不執行耗時操作 把頁面顯示的 View 細分一下,放在 AsyncTask 里逐步顯示,用 Handler 更好。這樣用戶的看到的就是有層次有步驟的一個個的 View 的展示,不會是先看到一個黑屏,然后一下顯示所有 View。最好做成動畫,效果更自然。
      • 利用多線程的目的就是盡可能的減少 onCreate() 和 onReume() 的時間,使得用戶能盡快看到頁面,操作頁面。
      • 減少主線程阻塞時間。
      • 提高 Adapter 和 AdapterView 的效率。
    • 黑白屏產生原因:當我們在啟動一個應用時,系統會去檢查是否已經存在這樣一個進程,如果不存在,系統的服務會先檢查startActivity中的intent的信息,然后在去創建進程,最后啟動Acitivy,即冷啟動。而啟動出現白黑屏的問題,就是在這段時間內產生的。系統在繪制頁面加載布局之前,首先會初始化窗口(Window),而在進行這一步操作時,系統會根據我們設置的Theme來指定它的Theme 主題顏色,我們在Style中的設置就決定了顯示的是白屏還是黑屏。
      • windowIsTranslucent和windowNoTitle,將這兩個屬性都設置成true (會有明顯的卡頓體驗,不推薦)
      • 如果啟動頁只是是一張圖片,那么為啟動頁專一設置一個新的主題,設置主題的android:windowBackground屬性為啟動頁背景圖即可
      • 使用layer-list制作一張圖片launcher_layer.xml,將其設置為啟動頁專一主題的背景,并將其設置為啟動頁布局的背景。

8、強引用置為null,會不會被回收?

  • 參考回答:
    • 不會立即釋放對象占用的內存。 如果對象的引用被置為null,只是斷開了當前線程棧幀中對該對象的引用關系,而 垃圾收集器是運行在后臺的線程,只有當用戶線程運行到安全點(safe point)或者安全區域才會掃描對象引用關系,掃描到對象沒有被引用則會標記對象,這時候仍然不會立即釋放該對象內存,因為有些對象是可恢復的(在 finalize方法中恢復引用 )。只有確定了對象無法恢復引用的時候才會清除對象內存。

9、ListView跟RecyclerView的區別

  • 參考回答:
    • 動畫區別:
      • RecyclerView中,內置有許多動畫API,例如:notifyItemChanged(), notifyDataInserted(), notifyItemMoved()等等;如果需要自定義動畫效果,可以通過實現(RecyclerView.ItemAnimator類)完成自定義動畫效果,然后調用RecyclerView.setItemAnimator();
      • 但是ListView并沒有實現動畫效果,但我們可以在Adapter自己實現item的動畫效果;
    • 刷新區別:
      • ListView中通常刷新數據是用全局刷新notifyDataSetChanged(),這樣一來就會非常消耗資源;本身無法實現局部刷新,但是如果要在ListView實現局部刷新,依然是可以實現的,當一個item數據刷新時,我們可以在Adapter中,實現一個onItemChanged()方法,在方法里面獲取到這個item的position(可以通過getFirstVisiblePosition()),然后調用getView()方法來刷新這個item的數據;
      • RecyclerView中可以實現局部刷新,例如:notifyItemChanged();
    • 緩存區別:
      • RecyclerView比ListView多兩級緩存,支持多個離ItemView緩存,支持開發者自定義緩存處理邏輯,支持所有RecyclerView共用同一個RecyclerViewPool(緩存池)。
      • ListView和RecyclerView緩存機制基本一致,但緩存使用不同

10、ListView的adapter是什么adapter

參考回答:

11道Android性能優化面試題【附答案】

  • BaseAdapter:抽象類,實際開發中我們會繼承這個類并且重寫相關方法,用得最多的一個適配器!
  • ArrayAdapter:支持泛型操作,最簡單的一個適配器,只能展現一行文字?
  • SimpleAdapter:同樣具有良好擴展性的一個適配器,可以自定義多種效果!
  • SimpleCursorAdapter:用于顯示簡單文本類型的listView,一般在數據庫那里會用到,不過有點過時,不推薦使用!

11、LinearLayout、FrameLayout、RelativeLayout性能對比,為什么?

  • 參考回答:
    • RelativeLayout會讓子View調用2次onMeasure,LinearLayout 在有weight時,也會調用子 View 2次onMeasure
    • RelativeLayout的子View如果高度和RelativeLayout不同,則會引發效率問題,當子View很復雜時,這個問題會更加嚴重。如果可以,盡量使用padding代替margin。
    • 在不影響層級深度的情況下,使用LinearLayout和FrameLayout而不是RelativeLayout。

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
日本人视频jizz页码69| 亚欧精品在线视频| 欧美乱做爰xxxⅹ久久久| 欧美第一页浮力影院| 少妇高清精品毛片在线视频 | 成人午夜视频免费观看| 亚洲一区精品视频在线观看| 国产嫩草在线观看| 奇米影音第四色| 伊人影院综合在线| 亚洲国产精品影视| 丰满人妻一区二区三区53号| 国产91沈先生在线播放| 欧美狂野激情性xxxx在线观| 亚洲色欲久久久综合网东京热| 97av中文字幕| 日韩av片在线看| 三级在线免费看| 性久久久久久久久久久久久久| 欧美视频国产视频| 国产在线视频综合| 国产精品视频一区二区三区四区五区 | 成年人观看网站| 麻豆一区二区三区视频| 天天碰免费视频| 亚洲色图都市激情| 噜噜噜久久亚洲精品国产品麻豆| 日日碰狠狠躁久久躁婷婷| 亚洲成人福利在线观看| 国产四区在线观看| 无码人妻少妇伦在线电影| 91看片就是不一样| 天天爱天天做天天操| 亚洲人精品午夜射精日韩| 激情视频综合网| 一区二区三区四区久久| 亚洲人成色77777| 久久免费视频2| 苍井空浴缸大战猛男120分钟| 51自拍视频在线观看| 少妇性饥渴无码a区免费| 日韩一区二区三区不卡视频| 国产xxxx振车| 亚洲一区二区偷拍| 欧美 国产 日本| 黄网站色视频免费观看| 性生活免费在线观看| 免费一级淫片aaa片毛片a级| 亚洲高清在线免费观看| 国产免费毛卡片| 992tv成人免费观看| 激情五月婷婷久久| 日韩精品视频久久| 日韩国产一级片| 欧美性受黑人性爽| 色天使在线观看| 国产女女做受ⅹxx高潮| 精品视频免费在线播放| 一级性生活视频| 久久视频免费在线| 老司机午夜网站| 色婷婷激情视频| 国内av一区二区| 一级片黄色免费| 永久免费黄色片| 2021狠狠干| 黄色录像特级片| 九一免费在线观看| 中国黄色录像片| 91传媒免费视频| 99久久国产综合精品五月天喷水| 乱子伦一区二区| 激情六月天婷婷| cao在线观看| 精品国产免费av| 久久久久久久久久久免费视频| 99热成人精品热久久66| 日韩免费视频播放| av网址在线观看免费| 精品少妇无遮挡毛片| 孩娇小videos精品| 欧美日韩久久婷婷| 国产 欧美 日本| 欧美在线观看成人| xxww在线观看| 亚洲国产一二三精品无码| 内射国产内射夫妻免费频道| 久久久久久久激情| 亚洲va在线va天堂va偷拍| 国产对白在线播放| 欧美一区二区三区爽大粗免费| 免费观看精品视频| 九九热精品在线播放| 国产午夜精品视频一区二区三区| 免费成人午夜视频| 日韩一级在线免费观看| 黄色a级三级三级三级| 国产3p露脸普通话对白| 天天干天天干天天干天天干天天干| 亚洲激情在线看| 久久久久久久久久网| 亚洲娇小娇小娇小| 成人免费视频91| www.五月天色| 日本精品一区二区三区四区| 亚洲午夜激情影院| 欧美视频在线免费播放| 特黄视频免费观看| 国产女女做受ⅹxx高潮| 国产又粗又猛又爽又黄的网站 | 欧美 日韩 国产一区| 美女在线免费视频| 国产精品igao| 精品少妇在线视频| 日韩精品第1页| 国产美女18xxxx免费视频| 男女啪啪免费视频网站| 日本女人高潮视频| 日本肉体xxxx裸体xxx免费| 欧美成人免费在线观看视频| 国产不卡的av| 亚洲一级片av| 中文字幕66页| 99re精彩视频| 五月天av在线播放| 亚洲乱码国产一区三区| 日本一极黄色片| www一区二区www免费| 日本丰满少妇xxxx| 日韩精品视频在线观看视频| 熟女视频一区二区三区| 九九九九九国产| 天天做天天干天天操| 免费成年人高清视频| 乌克兰美女av| 潘金莲激情呻吟欲求不满视频| 午夜宅男在线视频| 色乱码一区二区三区在线| 日本肉体xxxx裸体xxx免费| 日韩av手机版| 亚洲这里只有精品| 不用播放器的免费av| 国产在线视频三区| 国产系列第一页| 三上悠亚免费在线观看| 亚洲色欲久久久综合网东京热| www国产无套内射com| 成年人网站免费视频| 国产女女做受ⅹxx高潮| 91高清国产视频| 国产大尺度在线观看| 青青青国产在线观看| 国产精品免费观看久久| 不卡中文字幕在线观看| 国产卡一卡二在线| 国产精品无码免费专区午夜| 尤物av无码色av无码| 免费大片在线观看| 久久精品国产露脸对白| 激情小视频网站| 91激情视频在线| 台湾无码一区二区| 人人干人人视频| 日本久久久网站| 日本成人中文字幕在线| 六月婷婷激情网| 情侣黄网站免费看| 欧美少妇一区二区三区| 成人综合视频在线| youjizz.com亚洲| 国产一区二区三区精彩视频| 中文字幕线观看| 北条麻妃在线观看| avav在线播放| 天天色天天综合网| 日韩网站在线免费观看| 日韩成人av免费| 男人的天堂99| 免费看日本黄色| 中文字幕资源在线观看| 18禁男女爽爽爽午夜网站免费| 中文字幕第一页亚洲| 中文字幕国产传媒| 国产日韩一区二区在线| 欧美视频在线观看视频| 激情图片中文字幕| 91激情视频在线| 男女曰b免费视频| 久在线观看视频| 天堂8在线天堂资源bt| 污免费在线观看| 色91精品久久久久久久久| 亚洲成人av免费看| 天天色综合天天色| 情侣黄网站免费看| 四虎永久在线精品无码视频| www.com毛片| 国内外成人激情视频| 日韩黄色片视频| 日韩中文字幕二区|