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一区二区
熟妇人妻va精品中文字幕| 夜夜夜夜夜夜操| 日韩精品一区二区三区久久| 午夜精品久久久久久久无码| 欧美成人一区二区在线观看| 1024av视频| 色一情一区二区| 国产精品波多野结衣| 东北少妇不带套对白| 亚洲不卡中文字幕无码| 国产v亚洲v天堂无码久久久 | 国产小视频精品| 国产精品亚洲天堂| 国产欧美日韩小视频| 激情视频综合网| 精品国产无码在线| 中国丰满人妻videoshd| 色噜噜狠狠一区二区| 日本一区二区三区四区五区六区| 日韩av一二三四区| 天堂av手机在线| 日本中文字幕网址| 久久久一二三四| 欧美黄网站在线观看| 爱爱爱视频网站| 国产精品拍拍拍| 女人色极品影院| 亚洲va在线va天堂va偷拍| 中国丰满熟妇xxxx性| 国产精品v日韩精品v在线观看| 女人色极品影院| 日韩成人精品视频在线观看| 免费观看美女裸体网站| 男人的天堂成人| 奇米影视四色在线| 波多野结衣家庭教师在线| 黄色网zhan| 亚洲国产成人va在线观看麻豆| 日本在线xxx| 中文字幕在线中文| 欧美性受xxxx黒人xyx性爽| 男人天堂网视频| 国产一级爱c视频| av电影一区二区三区| 日本美女视频一区| 日日碰狠狠丁香久燥| 人妻久久久一区二区三区| www.18av.com| 日韩精品一区二区三区电影| 亚洲视频第二页| 久久国产精品国产精品| 国产免费人做人爱午夜视频| 奇米精品一区二区三区| 欧美交换配乱吟粗大25p| 国产在线观看中文字幕| 欧美视频亚洲图片| 欧洲美女亚洲激情| 国产福利在线免费| 亚洲这里只有精品| 日韩一区二区三区久久| 国产av人人夜夜澡人人爽| 男人操女人逼免费视频| 日本久久久精品视频| aaaaaa亚洲| 手机看片福利盒子久久| 高清在线观看免费| a在线视频观看| 久草资源站在线观看| 狠狠操精品视频| 一道本视频在线观看| 日本黄色福利视频| 久久出品必属精品| 国产成人艳妇aa视频在线| 男人添女人下面高潮视频| av之家在线观看| 国产精品无码av无码| 91 在线视频观看| 午夜影院免费版| 国产一区二区三区小说| 日韩激情免费视频| 黄色成人免费看| 欧美 另类 交| 国产深夜男女无套内射| 婷婷丁香激情网| 9999在线观看| 欧美一级视频免费看| 欧美伦理视频在线观看| 亚洲女人在线观看| 少妇高潮喷水在线观看| 日本特黄a级片| 国产一二三四五| 美女福利视频在线| 中文字幕线观看| 亚洲人成无码网站久久99热国产| 日本女优爱爱视频| 天天成人综合网| 国产综合av在线| 超碰在线免费av| 免费高清在线观看免费| 中文字幕av导航| 久久久久狠狠高潮亚洲精品| 911av视频| 成年女人18级毛片毛片免费| 麻豆三级在线观看| 全黄性性激高免费视频| 欧美成人乱码一二三四区免费| 999一区二区三区| 少妇一级淫免费播放| 免费无码不卡视频在线观看| 波多野结衣在线免费观看| av片中文字幕| 国产欧美精品aaaaaa片| 亚洲精品免费一区亚洲精品免费精品一区 | 91.com在线| 手机免费看av网站| 99蜜桃臀久久久欧美精品网站| 中文字幕制服丝袜在线| 88av.com| 国产精品一区二区免费在线观看| 伊人五月天婷婷| 亚洲一区在线不卡| 97国产精东麻豆人妻电影| 青青草视频国产| 在线一区二区不卡| 国产一区二区在线免费播放| 国产91在线视频观看| 日本老太婆做爰视频| 中文字幕国产高清| 五月婷婷六月丁香激情| 黄色一级免费大片| 国产无套内射久久久国产| 黄页网站大全在线观看| 隔壁人妻偷人bd中字| 免费国产成人看片在线| 无套内谢丰满少妇中文字幕| 天天综合成人网| 久久免费看毛片| 北条麻妃亚洲一区| 污视频网址在线观看| 8x8x成人免费视频| 日韩一级免费在线观看| 日本在线视频www| 91av俱乐部| 爱情岛论坛成人| 国内外成人免费在线视频| 亚洲xxxx2d动漫1| 中文字幕av不卡在线| 亚洲一级片网站| 福利片一区二区三区| aaa一级黄色片| 丰满人妻一区二区三区53号| 免费cad大片在线观看| 日韩一级性生活片| 黄色大片在线免费看| 男人揉女人奶房视频60分| 大j8黑人w巨大888a片| 亚洲欧美另类动漫| www.久久av.com| 老司机激情视频| 国产精品自拍片| 日韩一区二区三区不卡视频| 亚洲一区二区福利视频| 大桥未久一区二区三区| jizzjizz国产精品喷水| 高清av免费看| 国产高清不卡无码视频| av7777777| 天天干天天操天天做| 国产av第一区| 精品国产成人av在线免| 亚洲欧美手机在线| 欧美国产日韩激情| 五月婷婷六月丁香激情| 国产视频在线观看网站| 日本毛片在线免费观看| 91pony九色| 国产精品又粗又长| 久久撸在线视频| 99在线免费视频观看| 亚洲综合激情视频| 黄色一级在线视频| 欧美视频亚洲图片| 久久久久久久久久久免费视频| 中文字幕亚洲影院| 苍井空浴缸大战猛男120分钟| 波多野结衣在线免费观看| www黄色av| 日韩一级特黄毛片| gogogo高清免费观看在线视频| 被灌满精子的波多野结衣| 亚洲18在线看污www麻豆| 欧美日韩一区二区在线免费观看 | 37pao成人国产永久免费视频| 国产精品探花在线播放| 国产又大又黄又粗的视频| 日本精品久久久久久久久久| 国产成年人在线观看| 亚洲欧美在线精品| 人妻少妇被粗大爽9797pw| 男女激情免费视频|