下面的面試題都是我在面試過程中遇到的,這里總結(jié)一下透绩。
1.android lottie動畫的使用?
答:先讓美工公用工具生成json格式的動畫文件壁熄,放到asset目錄帚豪,通過lottieanimationView類加載動畫文件實現(xiàn)功能。
2.android圖片的三級緩存草丧?
答:強應(yīng)用狸臣,軟應(yīng)用,系統(tǒng)文件昌执,網(wǎng)絡(luò)
3.怎樣更改Glide的緩存路徑烛亦?
答:實現(xiàn)glidebuilder接口重現(xiàn)里面的方法,通過glidebuilder類設(shè)置懂拾,在配置文件路徑煤禽。
4.自定義View的三種測量模式?
答:不確定值委粉,最大值呜师,完全準(zhǔn)確值
5.android事件分發(fā)機制?
答:用戶點擊屏幕產(chǎn)生MotionEvent(點擊事件) Activity接收MotionEvent(點擊事件)—>傳遞給Window—>傳遞給DecorView(ViewGroup)—>執(zhí)行ViewGroup的dispatchTouchEvent() ViewGroup接收到MotionEvent(點擊事件)之后贾节,按照事件分發(fā)機制去分發(fā)事件汁汗。 若當(dāng)子View不消耗事件,onTouchEvent()返回false栗涂,那么這個事件會傳遞回其父View的onTouchEvent()知牌,如若父View也不消耗,最后會傳遞回給Activity進行處理斤程。
6.講講MVP架構(gòu)角寸?
答:Model: 處理數(shù)據(jù),包過網(wǎng)絡(luò)請求忿墅、提交數(shù)據(jù);緩存扁藕、讀寫本地數(shù)據(jù)、寫入;寫入疚脐、讀取數(shù)據(jù)庫數(shù)據(jù)等 View: 提供Activity需要實現(xiàn)方法,本身是一個接口,實際在Presenter中被調(diào)用執(zhí)行亿柑。 Presenter: 業(yè)務(wù)處理,內(nèi)部持有Model和View;使用CallBack獲取Model獲取結(jié)果信息。 Activity: 實現(xiàn)View提供方法,持有Presenter對象;在監(jiān)聽事件中調(diào)用Presenter方法,
7.Rxjava中map和flatMap的區(qū)別棍弄?
答:
1望薄、返回值上面: map變換后可以返回任意值,而flatMap則只能返回ObservableSource類型
2呼畸、變換后的輸出: map只能進行一對一的變換痕支,而flatMap則可以進行一對一,一對多蛮原,多對多的變換卧须,具體的變換規(guī)則根據(jù)我們設(shè)置的變換函數(shù)mapper來定
8.View的繪制流程?
答:View 繪制中主要流程分為measure儒陨,layout花嘶, draw 三個階段。
measure :根據(jù)父 view 傳遞的 MeasureSpec 進行計算大小框全。 layout :根據(jù) measure 子 View 所得到的布局大小和布局參數(shù)察绷,將子View放在合適的位置上。 draw :把 View 對象繪制到屏幕上津辩。
9.你做過哪些自定義控件拆撼?
答:這個問題大部分面試官都會問,看自己的實際情況回答喘沿。
10..android6.0到9.0的應(yīng)?適配
答:https://mp.weixin.qq.com/s?__biz=MzAxMTI4MTkwNQ==&mid=2650826756&idx=1&sn=dd888498081cb61e9bdb7bc6ebcf3a55&chksm=80b7bc9ab7c0358c1e85150120ecdb3c3164670c8b27cecb0c16621667e229c929f65a6bbae6&scene=0&subscene=131&ascene=7&devicetype=android-28&version=260703f2&nettype=3gnet&abtest_cookie=BAABAAoACwASABQABAAmlx4AV5keAJmZHgCgmR4AAAA%3D&lang=zh_CN&pass_ticket=CMPfIDis7lMyANcY39ZtUakJIKqcOArrwyUfSa4%2FPd9SzwwoEyOIepvHr3f7Ckkd&wx_header=1
10.一張面試題
- webview 定位權(quán)限監(jiān)聽方法是什么闸度?
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onGeolocationPermissionsShowPrompt(String origin,Callback callback) {
callback.invoke(origin, true, false);
super.onGeolocationPermissionsShowPrompt(origin, callback);
}
});
12.你覺得你比你的同事強在哪里?
答:這個問題我不知道怎么回答,