这篇文章可以满足你80%日常工作!一线互联网公司面经总结
前言
最近發(fā)現(xiàn)大家都喜歡看面試相關(guān)的文章,我也跟一波風(fēng),總結(jié)了一下我面試中所遇到的問題總結(jié),分享一下面試中被問的最多的一些問題。
希望對正在找工作的朋友提供一些幫助。
好了話不多說,進(jìn)入正題。
作為安卓開發(fā)者,除了Bug,經(jīng)常會碰到下面這些問題:
應(yīng)用卡頓,丟幀,屏幕畫面撕裂,操作界面刷新緩慢,UI不美觀,布局混亂…這些問題頻發(fā)的話,年后可能就不用來了。
開發(fā)App的時(shí)候,你是否會覺得界面卡頓?尤其是自定義View的時(shí)候。
Android 應(yīng)用的卡頓、丟幀等,這些影響用戶體驗(yàn)的因素絕大部分都與 16ms 這個(gè)值有關(guān)。Android 設(shè)備的刷新率也是 60Hz,Android系統(tǒng)每隔16ms發(fā)出VSYNC信號,觸發(fā)對UI進(jìn)行渲染,如果超過了16ms,我們則認(rèn)為發(fā)生了卡頓。
一些常見的原因有:
-
layout 太過復(fù)雜,層次過多;
-
UI 上有層疊太多的繪制單元,過度繪制;
-
或者onDraw等方法中過于耗時(shí);
-
CPU 或者 GPU 負(fù)載過重;
-
動畫執(zhí)行的次數(shù)過多;
-
頻繁 GC,主要是內(nèi)存抖動;
-
UI 線程執(zhí)行耗時(shí)操作;
-
等等;
那么究竟要怎么做才能給用戶一個(gè)良好的UI體驗(yàn)?zāi)?#xff1f;
優(yōu)化界面布局,使界面布局視圖扁平化,去除不必要的背景顏色,減少透明色的使用;?(盡量減少View在系統(tǒng)中measure、layout、draw的累計(jì)時(shí)間)
減少UI線程中數(shù)據(jù)運(yùn)算,使用子線程處理耗時(shí)任務(wù);
盡量避免在循環(huán)邏輯或者onDraw方法中頻繁創(chuàng)建新對象和使用局部變量;
不要在主進(jìn)程去做耗時(shí)的操作,提升UI的繪制速度(減少View的布局層級,避免過渡繪制等)
高級UI與自定義View有著不可分割的聯(lián)系。自定義View其實(shí)并不難,為什么呢?
因?yàn)樽远xView無非就是顯示+交互:顯示由onMeasure ->onLayout->onDraw的整個(gè)流程就將顯示整個(gè)流程處理完了,而交互則是touch事件的處理;另外其他的一切你比如Canvas,Animation,Paint都是圍繞著draw來進(jìn)行的,所以我們需要搞懂其中的根本原理。
最后
在這里我和身邊一些朋友特意整理了一份快速進(jìn)階為Android高級工程師的系統(tǒng)且全面的學(xué)習(xí)資料。涵蓋了Android初級——Android高級架構(gòu)師進(jìn)階必備的一些學(xué)習(xí)技能。
附上:我們之前因?yàn)榍镎惺占亩滓欢€互聯(lián)網(wǎng)公司Android面試真題(含BAT、小米、華為、美團(tuán)、滴滴)和我自己整理Android復(fù)習(xí)筆記(包含Android基礎(chǔ)知識點(diǎn)、Android擴(kuò)展知識點(diǎn)、Android源碼解析、設(shè)計(jì)模式匯總、Gradle知識點(diǎn)、常見算法題匯總。)
dle知識點(diǎn)、常見算法題匯總。)
[外鏈圖片轉(zhuǎn)存中…(img-WFeXsUgA-1620586208260)]
本文在開源項(xiàng)目:【騰訊文檔 】中已收錄,里面包含不同方向的自學(xué)編程路線、面試題集合/面經(jīng)、及系列技術(shù)文章等,資源持續(xù)更新中…
總結(jié)
以上是生活随笔為你收集整理的这篇文章可以满足你80%日常工作!一线互联网公司面经总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。