久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久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號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
国产精品中文字幕亚洲欧美| 日韩视频一区| 国产色99精品9i| 国产精品欧美大片| 精品一区二区三区免费看| 国产精品视频首页| 日韩在线黄色| 国产精品亚洲成在人线| 麻豆精品视频在线观看免费| 久久精品国产999大香线蕉| 国产一区调教| 国产国产精品| 亚洲美女久久| 美女久久久久久| 日韩高清欧美| 久久最新视频| 国产精品嫩模av在线| 国产精品毛片久久| 久久国产精品99国产| 国产福利一区二区三区在线播放| 国产在线观看www| 亚洲精品网址| 日韩在线卡一卡二| 久久不卡国产精品一区二区| 成人久久久久| 少妇精品久久久| 日韩大片在线| 欧美在线精品一区| 日本免费久久| 欧美日韩99| 国产亚洲在线| 日韩成人三级| 国产日韩欧美一区| 丝袜美腿成人在线| 日本在线啊啊| 国产伦精品一区二区三区在线播放| 91偷拍一区二区三区精品| 国产日韩综合| 99久久久久国产精品| 国产精品久久久久毛片大屁完整版 | 欧美色综合网| 丝袜美腿亚洲色图| 欧美综合另类| 欧美三级精品| 精品国产精品久久一区免费式 | 国产伦乱精品| 一区免费在线| 日韩精品一区二区三区中文字幕| 国产v综合v| 高清久久一区| 免费日韩成人| 国产精品久久久久9999高清| 蜜臀久久99精品久久久久久9 | 日本精品不卡| 精品一区二区三区中文字幕视频| 亚洲精品伊人| 亚洲九九精品| 亚洲作爱视频| 丝袜美腿亚洲一区| 久久中文字幕av一区二区不卡| 久久激情av| 久久激五月天综合精品| 国产乱码精品一区二区三区亚洲人| 红桃视频欧美| 亚洲精品自拍| 久久国产精品亚洲77777| 午夜av一区| 亚洲国内精品| 日韩在线卡一卡二| 中文字幕日本一区| 青草av.久久免费一区| 99香蕉国产精品偷在线观看| 久久一级电影| 日韩精品欧美激情一区二区| 久久久久久久久久久妇女 | 午夜欧美精品久久久久久久| 欧美专区一区二区三区| 日韩av字幕| 大香伊人久久精品一区二区| 亚洲午夜黄色| 欧美天堂在线| 亚洲精品一级二级| 亚洲精品麻豆| 在线手机中文字幕| 宅男噜噜噜66国产日韩在线观看| 日本欧美一区二区在线观看| 国产精品毛片视频| 精品一区在线| 国产精品白丝一区二区三区| 久久国产小视频| 亚洲欧美日韩精品一区二区| 91久久精品无嫩草影院| 国产91在线播放精品| 国模 一区 二区 三区| 五月亚洲婷婷 | 中文字幕亚洲在线观看| 国产精品一区免费在线| 亚洲特色特黄| 国产精品久久久网站| 国产亚洲高清视频| www.com.cn成人| 久久国产婷婷国产香蕉| 另类中文字幕国产精品| 久久国产亚洲| 日韩精品福利一区二区三区| 欧美sss在线视频| 国产亚洲精品美女久久 | 成人在线观看免费视频| 婷婷久久免费视频| 亚洲国产专区校园欧美| 欧美交a欧美精品喷水| 天堂精品久久久久| 亚洲国产综合在线看不卡| 国产精品18| 啪啪亚洲精品| 亚洲最大av| 国产亚洲毛片| 亚洲激情久久| 亚洲成人不卡| 成人在线视频区| 国产精品magnet| 香蕉国产精品| 99视频精品全国免费| 另类综合日韩欧美亚洲| 国产日韩在线观看视频| 91九色综合| 国产精久久一区二区| 国产精品一区亚洲| 老司机精品视频网| 国产精品第一国产精品| 久久精品国产网站| 欧美日韩一区二区三区在线电影| 日韩国产欧美一区二区三区| 日本色综合中文字幕| 欧美日韩99| 丝袜a∨在线一区二区三区不卡 | 深夜福利一区| 国产日韩免费| 精品国产亚洲日本| 99精品电影| 蜜臀国产一区二区三区在线播放| 亚州国产精品| 精品国产a一区二区三区v免费| 999国产精品| 日韩一二三区在线观看| 国产精品久久| 99热精品久久| 亚洲精品一二三**| 国产第一亚洲| 欧洲激情综合| 首页欧美精品中文字幕| 国产精品v一区二区三区| 日韩精品久久久久久久电影99爱| 免播放器亚洲| 蜜臀久久精品| 美女精品网站| 日本一区二区三区视频在线看| 国产伦理久久久久久妇女| 久久精品高清| 日韩中文字幕一区二区高清99| 国产精品久久久久久久久久妞妞| 久久激情网站| 久久gogo国模啪啪裸体| 美女网站一区| 精品视频自拍| 久久不射网站| 久久精品免费一区二区三区| 欧美一区在线观看视频| 亚洲免费激情| 欧美aa在线观看| 美女视频免费精品| 日韩成人av影视| 国产精品腿扒开做爽爽爽挤奶网站| 精品精品99| 国产精品成人3p一区二区三区| 香蕉视频成人在线观看| 91精品在线观看国产| 久久久久久久久丰满| 亚洲二区免费| 国产不卡一区| 亚洲一级大片| 免费人成在线不卡| 欧美特黄a级高清免费大片a级| 成人国产精品| 日韩av免费大片| 美女久久精品| 麻豆精品久久久| 国产精品麻豆成人av电影艾秋 | 久久久成人网| 久久久精品久久久久久96| 精品黄色一级片| 精品深夜福利视频| 精品免费av一区二区三区| 国产精品成人国产| 国产精品66| 视频一区二区国产| 日韩高清成人| 久久精品av| 国产一区白浆| 中文字幕一区日韩精品|