下面的面試題都是我在面試過(guò)程中遇到的,這里總結(jié)一下。
1.android lottie動(dòng)畫(huà)的使用?
答:先讓美工公用工具生成json格式的動(dòng)畫(huà)文件,放到asset目錄,通過(guò)lottieanimationView類(lèi)加載動(dòng)畫(huà)文件實(shí)現(xiàn)功能。
2.android圖片的三級(jí)緩存?
答:強(qiáng)應(yīng)用,軟應(yīng)用,系統(tǒng)文件,網(wǎng)絡(luò)
3.怎樣更改Glide的緩存路徑?
答:實(shí)現(xiàn)glidebuilder接口重現(xiàn)里面的方法,通過(guò)glidebuilder類(lèi)設(shè)置,在配置文件路徑。
4.自定義View的三種測(cè)量模式?
答:不確定值,最大值,完全準(zhǔn)確值
5.android事件分發(fā)機(jī)制?
答:用戶(hù)點(diǎn)擊屏幕產(chǎn)生MotionEvent(點(diǎn)擊事件) Activity接收MotionEvent(點(diǎn)擊事件)—>傳遞給Window—>傳遞給DecorView(ViewGroup)—>執(zhí)行ViewGroup的dispatchTouchEvent() ViewGroup接收到MotionEvent(點(diǎn)擊事件)之后,按照事件分發(fā)機(jī)制去分發(fā)事件。 若當(dāng)子View不消耗事件,onTouchEvent()返回false,那么這個(gè)事件會(huì)傳遞回其父View的onTouchEvent(),如若父View也不消耗,最后會(huì)傳遞回給Activity進(jìn)行處理。
6.講講MVP架構(gòu)?
答:Model: 處理數(shù)據(jù),包過(guò)網(wǎng)絡(luò)請(qǐng)求、提交數(shù)據(jù);緩存、讀寫(xiě)本地?cái)?shù)據(jù)、寫(xiě)入;寫(xiě)入、讀取數(shù)據(jù)庫(kù)數(shù)據(jù)等 View: 提供Activity需要實(shí)現(xiàn)方法,本身是一個(gè)接口,實(shí)際在Presenter中被調(diào)用執(zhí)行。 Presenter: 業(yè)務(wù)處理,內(nèi)部持有Model和View;使用CallBack獲取Model獲取結(jié)果信息。 Activity: 實(shí)現(xiàn)View提供方法,持有Presenter對(duì)象;在監(jiān)聽(tīng)事件中調(diào)用Presenter方法,
7.Rxjava中map和flatMap的區(qū)別?
答:
1、返回值上面: map變換后可以返回任意值,而flatMap則只能返回ObservableSource類(lèi)型
2、變換后的輸出: map只能進(jìn)行一對(duì)一的變換,而flatMap則可以進(jìn)行一對(duì)一,一對(duì)多,多對(duì)多的變換,具體的變換規(guī)則根據(jù)我們?cè)O(shè)置的變換函數(shù)mapper來(lái)定
8.View的繪制流程?
答:View 繪制中主要流程分為measure,layout, draw 三個(gè)階段。
measure :根據(jù)父 view 傳遞的 MeasureSpec 進(jìn)行計(jì)算大小。 layout :根據(jù) measure 子 View 所得到的布局大小和布局參數(shù),將子View放在合適的位置上。 draw :把 View 對(duì)象繪制到屏幕上。
9.你做過(guò)哪些自定義控件?
答:這個(gè)問(wèn)題大部分面試官都會(huì)問(wèn),看自己的實(shí)際情況回答。
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)聽(tīng)方法是什么?
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onGeolocationPermissionsShowPrompt(String origin,Callback callback) {
callback.invoke(origin, true, false);
super.onGeolocationPermissionsShowPrompt(origin, callback);
}
});
12.你覺(jué)得你比你的同事強(qiáng)在哪里?
答:這個(gè)問(wèn)題我不知道怎么回答,