Java中的String類可以被繼承么?
答:不能,因?yàn)樗且粋€(gè)final類,同樣的還有Integer,F(xiàn)loat,Boolean,Byte,Character,Long,Short等等,也就是說,所有基本類型的包裝類都是final類,無法被繼承或修改
如何安全的退出一個(gè)已經(jīng)開啟多個(gè)activity的APP
答:在Application中持有一個(gè)全局的集合(List),進(jìn)而在其onCreate()方法添加到這個(gè)集合,最終遍歷所有的activcity并finish。
ActivityCompat.finishAffinity(this);
簡單的概敘下Handler?
答:andriod提供了Handler 和 Looper 來滿足線程間的通信。Handler先進(jìn)先出原則。Looper類用來管理特定線程內(nèi)對(duì)象之間的消息交換
1)Looper: 一個(gè)線程可以產(chǎn)生一個(gè)Looper對(duì)象,由它來管理此線程里的MessageQueue(消息隊(duì)列)。
2)Handler: 你可以構(gòu)造Handler對(duì)象來與Looper溝通,以便push新消息到MessageQueue里;或者接收Looper從Message Queue取出)所送來的消息。
- Message Queue(消息隊(duì)列):用來存放線程放入的消息。
4)線程:UIthread 通常就是main thread,而Android啟動(dòng)程序時(shí)會(huì)替它建立一個(gè)MessageQueue。
文件的上傳?
答:使用HttpURLConnection得到輸入流,將文件的通過IO流的方式上傳到服務(wù)器??墒褂玫谌絏utils框架。
ListView的源碼和如何優(yōu)化Listview?
答:根據(jù)ConvertView來判斷View的重用還是新建,新建的話通過ViewHolder來存儲(chǔ)所有的控件并設(shè)置到View的Tag中有利于下次的復(fù)用。
AIDL原理?
答:AIDL是一個(gè)縮寫,全稱是Android Interface Definition Language,也就是Android接口定義語言。
實(shí)現(xiàn)進(jìn)程間通信,尤其是在涉及多進(jìn)程并發(fā)情況下的進(jìn)程間通信,我們可以通過AIDL來制定一些規(guī)則,規(guī)定它們能進(jìn)行哪些交流。
通過接口的方式創(chuàng)建AIDL文件的后綴是 .aidl,而不是 .java。
創(chuàng)建一個(gè)類實(shí)現(xiàn)剛才那個(gè)aidl的接口,通過預(yù)先定義的接口達(dá)到兩個(gè)進(jìn)程內(nèi)部通信進(jìn)程的目的,在Service中Aidl返回一個(gè)Binder對(duì)象。
Binder機(jī)制
Binder是Android的系統(tǒng)進(jìn)程通許方式之一簡稱IPC
Binder使用Clinet->Server通訊方式,Binder框架定義的四個(gè)角色,Server,Client,ServiceManager,以及Binder驅(qū)動(dòng),其中Server,Client,ServiceManager運(yùn)行于用戶空間,驅(qū)動(dòng)運(yùn)行于內(nèi)核空間,Binder驅(qū)動(dòng)程序提供Dev/binder與用戶空間交互,Server,Client,ServiceManager,通過open和ioctl文件操作函數(shù)和Binder交互。
深入理解Binder機(jī)制
TCP和UDP的區(qū)別,tcp如何保證可靠的,丟包如何處理?
TCP面向連接,三次握手,發(fā)送需要確定以鏈接狀態(tài)(如打電話),輯通信信道是全雙工的可靠信道
UDP無連接,發(fā)送數(shù)據(jù)無需確定是否連接(如郵差),則是不可靠信道
將文件分塊發(fā)送,接收端每收到一塊數(shù)據(jù)就發(fā)送一個(gè)收到確認(rèn)給發(fā)送方(包括收到的數(shù)據(jù)長度)
發(fā)送方在收到接收方發(fā)送的“收到確認(rèn)”后才接著發(fā)送下一塊數(shù)據(jù)。。。。
直到整個(gè)文件發(fā)送完畢。
每塊數(shù)據(jù)都加一個(gè)包頭,里面可以包含一些標(biāo)志信息,如:是否所有數(shù)據(jù)發(fā)送完畢(即最后一個(gè)包了)
三次握手簡單的說就是:(C:客戶端,S:服務(wù)端)
C:SYN到S 客戶端發(fā)送SYN(SEQ=1022)報(bào)文給服務(wù)器端,客戶端進(jìn)入SYN_SEND狀態(tài)
S:如成功--返回給C(SYN+ACK),回應(yīng)一個(gè)SYN (SEQ=2032)ACK(ACK=1022+1)報(bào)文,服務(wù)器段進(jìn)入SYN_RECV狀態(tài)。
C:如成功---返回給S(ACK) 客戶端收到服務(wù)器端的SYN報(bào)文,回應(yīng)一個(gè)ACK(ACK=2032+1)報(bào)文,進(jìn)入Established狀態(tài)。
什么是三級(jí)緩存?三級(jí)緩存原理
答:網(wǎng)絡(luò)加載,不優(yōu)先加載,速度慢,浪費(fèi)流量
本地緩存,次優(yōu)先加載,速度快
內(nèi)存緩存,優(yōu)先加載,速度最快
首次加載 Android App 時(shí),肯定要通過網(wǎng)絡(luò)交互來獲取圖片,之后我們可以將圖片保存至本地SD卡和內(nèi)存中
之后運(yùn)行 App 時(shí),優(yōu)先訪問內(nèi)存中的圖片緩存,若內(nèi)存中沒有,則加載本地SD卡中的圖片,最后選擇訪問網(wǎng)絡(luò)。
Service的兩種啟動(dòng)方法,有什么區(qū)別 ?
答:1.在Context中通過public boolean bindService(Intent service,ServiceConnection conn,int flags) 方法來進(jìn)行Service與Context的關(guān)聯(lián)并啟動(dòng),并且Service的生命周期依附于Context(不求同時(shí)同分同秒生!但求同時(shí)同分同秒屎!!)。
2.通過public ComponentName startService(Intent service)方法去啟動(dòng)一個(gè)Service,此時(shí)Service的生命周期與啟動(dòng)它的Context無關(guān)。
View和SurfaceView的區(qū)別?
答:SurfaceView中采用了雙緩存技術(shù),在單獨(dú)的線程中更新界面
View在UI線程中更新界面
當(dāng)程序需要更新View上的圖像時(shí),程序必須重繪View上顯示的整張圖片
新線程無法直接更新View組件
Android的進(jìn)程優(yōu)先級(jí)
答:android的系統(tǒng)進(jìn)程分為五個(gè)等級(jí), Foreground Process(前臺(tái)進(jìn)程), Visible Process(可見進(jìn)程), Service Process(服務(wù)進(jìn)程), Background Process(后臺(tái)進(jìn)程), Empty Process(空進(jìn)程)
自定義View相關(guān)知識(shí),下拉刷新的實(shí)現(xiàn)原理?
答:【1】Header 通常有下拉箭頭,文字,進(jìn)度條等元素,根據(jù)下拉的距離來改變它的狀態(tài),從而顯示不同的樣式
【2】Content 這部分是內(nèi)容區(qū)域,網(wǎng)上有很多例子都是直接在ListView里面添加Header,但這就有局限性,因?yàn)楹枚嗲闆r下并不一定是用ListView來顯示數(shù)據(jù)。把要顯示內(nèi)容的View放置在一個(gè)容器中,如果想實(shí)現(xiàn)一個(gè)用ListView顯示數(shù)據(jù)的下拉刷新,需要?jiǎng)?chuàng)建一個(gè)ListView旋轉(zhuǎn)到容器中。處理這個(gè)容器的事件(down,move,up),如果向下拉,則把整個(gè)布局向下滑動(dòng),從而把header顯示出來。
【3】Footer可以用來顯示向上拉的箭頭,自動(dòng)加載更多的進(jìn)度條等。
亦可以使用開源PullToRefreshView
在你項(xiàng)目中所用到的第三方?
Volley xUtils okHttp(支持圖片上傳) ImageLoader RxJava Retrofix dataBing
Google推薦的圖片加載庫Glide介紹
目前Android在使用的Json解析框架主要有Jackson、Gson、FastJson、org.json;
源碼解析
使用 picasso 加載圖片;使用 EventBus 同步不同頁面間對(duì)象狀態(tài)
UI框架優(yōu)化,增加RefreshFragment基類抽取
通過LeakCanary、TraceView等工具進(jìn)行內(nèi)存檢測,優(yōu)化內(nèi)存的使用,構(gòu)建一套服務(wù)業(yè)務(wù)需求的線程池
熟練掌握okhttp,glide,greenDao等主流框架;
Android中原生HttpClient和HttpUrlConnection來處理網(wǎng)絡(luò)操作比較復(fù)雜,需要我們處理很多操作:如果圖片的緩存和請(qǐng)求的調(diào)度。
簡單的說下Retrofit的使用流程?
Retrofit2在項(xiàng)目中的完整使用流程:創(chuàng)建Bean類 --> 創(chuàng)建接口形式的http請(qǐng)求方法 --> 通過Retrofit.builder()創(chuàng)建接口對(duì)象并調(diào)用http方法請(qǐng)求網(wǎng)絡(luò)數(shù)據(jù) --> 在RxJava的Observable(被觀察者)中異步處理請(qǐng)求結(jié)果!
Volley到底有哪些特點(diǎn)呢?
內(nèi)部封裝了異步線程,可直接在主線程中調(diào)用服務(wù)器端并處理返回結(jié)果,可以取消請(qǐng)求容易擴(kuò)展
缺點(diǎn):大文件下載表現(xiàn)不好,只支持Http。
項(xiàng)目中有沒有見過內(nèi)存泄漏以及OOM?為什么會(huì)產(chǎn)生?怎么解決的?
內(nèi)存泄漏它是造成應(yīng)用程序OOM的主要原因之一
在android應(yīng)用開發(fā)中,當(dāng)一個(gè)對(duì)象已經(jīng)不需要再使用了,本該被回收時(shí),而另外一個(gè)正在使用的對(duì)象持有它的引用從而導(dǎo)致它不能被回收,這就導(dǎo)致本該被回收的對(duì)象不能被回收而停留在堆內(nèi)存中,內(nèi)存泄漏就產(chǎn)生了。
全局變量的濫使用,加載對(duì)象過大,相應(yīng)資源過多,來不及釋放,資源未關(guān)閉造成的內(nèi)存泄漏。
在內(nèi)存引用上做些處理,常用的有軟引用、強(qiáng)化引用、弱引用
在內(nèi)存中加載圖片時(shí)直接在內(nèi)存中作處理,如邊界壓縮
及時(shí)回收不用的對(duì)象如Bitmap,IO流。
Android系統(tǒng)的有哪些安全機(jī)制?
應(yīng)用程序簽名機(jī)制,權(quán)限申明機(jī)制,訪問控制機(jī)制,進(jìn)程通訊機(jī)制,內(nèi)存管理機(jī)制。
Android-Service和Thread的區(qū)別?
service是android四大組件之一,沒有任何界面,它不是一個(gè)線程,一般在后臺(tái)默默運(yùn)行。有自己的生命周期。有本地service和遠(yuǎn)程service,本地service一般有2中啟動(dòng)方式,startService和bindservice. 遠(yuǎn)程service就是所謂的AIDL,實(shí)現(xiàn)跨進(jìn)程調(diào)用.
thread是java里的一個(gè)線程概念,跟service是完全不同的。1中說的service特點(diǎn),thread在android中大多沒有。尤其是生命周期和跨進(jìn)程調(diào)用,thread是沒有的。
Android圖片緩存之初識(shí)Glide
MarsDaemon實(shí)現(xiàn)安卓APP進(jìn)程常駐筆記
Asset目錄與res目錄的區(qū)別
ANR問題,force close問題,activity,service,broadcast各自超過多少秒報(bào)ANR
Activity啟動(dòng)模式,intent匹配規(guī)則
Android反編譯
JNI和native方法
Android系統(tǒng)的有哪些安全機(jī)制
Android新特性有哪些(5.0 6.0 7.0)
Dalvik和ART區(qū)別
Android屏幕適配有哪些方法
View事件體系,滑動(dòng)沖突
View繪制原理,性能問題(view繪制間隔16ms,60fps),measure,layout,draw三大過程
如何避免overdraw
Android動(dòng)畫分類和各自特點(diǎn)
View和SurfaceView的區(qū)別
APK瘦身的辦法
Android如何獲取Crash信息
ANR日志分析
Android動(dòng)態(tài)加載,如何解決方法數(shù)越界
Android怎么加速啟動(dòng)Activity
Android內(nèi)存泄漏問題,內(nèi)存泄漏分析工具
Android內(nèi)存溢出問題,圖片的三級(jí)緩存
Android系統(tǒng)開機(jī)過程
Zygote和System進(jìn)程的啟動(dòng)過程
Activity的啟動(dòng)過程
Android的消息機(jī)制,Handler原理
AsyncTask源碼,優(yōu)缺點(diǎn)
HandlerThread和IntentService的原理和特點(diǎn)
AIDL原理
Binder機(jī)制原理
ActivityManagerService
一個(gè)如何維持一個(gè)長連接
如何實(shí)現(xiàn)進(jìn)程?;?/p>
Binder里面引用計(jì)數(shù)的原理
Binder底層為什么用紅黑樹,紅黑樹的原理知道嗎
Retrofit的原理,為什么不用volley
為什么選用Glide,原理?
LruCache的原理
Android系統(tǒng)框架
handler和asyncTast的區(qū)別,然后讓我自己設(shè)計(jì)線程池怎么做
Fragment好處,碰到過什么bug,怎么解決的
為什么選用Realm,原理是什么
如何設(shè)計(jì)一個(gè)網(wǎng)絡(luò)加載框架
Android四大組件的理解(這個(gè)扯了十多分鐘)
ContentProvider的啟動(dòng)過程
Activity的四種啟動(dòng)模式,用過哪一種,為什么要用
Service和InentService的區(qū)別
View的事件分發(fā)和繪制原理
如何解決滑動(dòng)沖突
.接著問了是否用過 volley,果斷沒有,說用過Retrofit,畢竟現(xiàn)在都是MVP+Retrofit+RXJava,然后就讓講下MVP
多進(jìn)程通信的方式(這個(gè)就比較模式化了,面試官也知道基本用不上)
廣播的使用
Handler機(jī)制,以及具體的使用情況
討論了一下各個(gè)框架的使用
AIDL,廣播的種類
.如何解決app卡頓的問題,用到哪些工具
view的繪制流程
多線程和handler結(jié)合使用要注意什么 (我沒get到他的點(diǎn),他想要的答案是當(dāng)activity隱藏或者銷毀的時(shí)候要注意handler的任務(wù)取消之類的)
四大組件是在主線程運(yùn)行的嗎
sqlite的相關(guān)的
下載大文件要注意的事情(防止OOM)
Android的啟動(dòng)流程、四大組件、listview的運(yùn)用于優(yōu)化、MVP、兩個(gè)activity怎么傳輸數(shù)據(jù),intent是怎么實(shí)現(xiàn)傳輸數(shù)據(jù)的,鬧鐘怎么實(shí)現(xiàn)
fragment,該怎么用,比如實(shí)現(xiàn)類似微信的那種滑動(dòng),講了一下fragment的滑動(dòng)以及底部狀態(tài)的切換。之后又問了怎么保存view的數(shù)據(jù),當(dāng)時(shí)以為就是回調(diào)生命周期的方法時(shí)保存數(shù)據(jù),面試官就給我講了一下現(xiàn)在常用了的將頂層的view作為變量然后傳遞引用,之后切換回來的時(shí)候直接在oncreateview里面進(jìn)行判斷即可。
Activity與Fragment的生命周期。
Acitivty的四中啟動(dòng)模式與特點(diǎn)。
Activity緩存方法。
Service的生命周期,兩種啟動(dòng)方法,有什么區(qū)別。
怎么保證service不被殺死。
廣播的兩種注冊(cè)方法,有什么區(qū)別。
Intent的使用方法,可以傳遞哪些數(shù)據(jù)類型。
ContentProvider使用方法。
Thread、AsycTask、IntentService的使用場景與特點(diǎn)。
五種布局:FrameLayout、LinearLayout、AbsoluteLayout、RelativeLayout、TableLayout各自特點(diǎn)及繪制效率對(duì)比。
Android的數(shù)據(jù)存儲(chǔ)形式。
Sqlite的基本操作。
Android中的MVC模式。
Merge、ViewStub的作用。
Json有什么優(yōu)劣勢。
動(dòng)畫有哪兩類,各有什么特點(diǎn)?
Handler、Loop消息隊(duì)列模型,各部分的作用。
怎樣退出終止App。
Asset目錄與res目錄的區(qū)別。
Android怎么加速啟動(dòng)Activity。
Android內(nèi)存優(yōu)化方法:ListView優(yōu)化,及時(shí)關(guān)閉資源,圖片緩存等等。
Android中弱引用與軟引用的應(yīng)用場景。
Bitmap的四中屬性,與每種屬性隊(duì)形的大小。
View與View Group分類。自定義View過程:onMeasure()、onLayout()、onDraw()。
Touch事件分發(fā)機(jī)制。
Android長連接,怎么處理心跳機(jī)制。
Zygote的啟動(dòng)過程。
Android IPC:Binder原理。
你用過什么框架,是否看過源碼,是否知道底層原理。
進(jìn)程有哪些通信方式
ListView優(yōu)化方案
service和線程的關(guān)系
.looper是線程級(jí)別還是進(jìn)程級(jí)別
activity1啟動(dòng)activity2的過程,是否可以在新的進(jìn)程里面,如果在新的進(jìn)程里面流程有什么不同。啟動(dòng)按返回系統(tǒng)的調(diào)度。
廣播的注冊(cè)方式,信息是保存在哪里,發(fā)送廣播是如何回調(diào)廣播接收者。
app安裝過程,每次開機(jī)是否會(huì)重新安裝所有的app
Android系統(tǒng)為系統(tǒng)安全性做什么事情
zygote和systemservice的關(guān)系
為什么zygote死掉后會(huì)重新啟動(dòng)
界面的繪制過程
開機(jī)畫面有幾個(gè),分別是什么時(shí)候顯示和暫停
activity四種啟動(dòng)模式
有沒有使用過Android的開源庫,或者開源控件
啟動(dòng)一個(gè)應(yīng)用的流程
打開一個(gè)activity的過程
設(shè)計(jì)一個(gè)Android的下載模塊
項(xiàng)目點(diǎn)為什么要用view不用fragment?同樣fragment可以解決緩存(用了view,并且設(shè)了map作為緩存,為了模擬activity棧重制了新的棧來實(shí)現(xiàn)相同的回退功能,需要處理連續(xù)點(diǎn)擊和多次點(diǎn)擊的問題,還需要解決連續(xù)點(diǎn)view,緩存增大而oom)
用了什么設(shè)計(jì)模式?為什么要這么用?(舉例了觀察者+工廠)
談一下Collection包:hashmap底層實(shí)現(xiàn),用了什么方法解決hash沖突(基于jdk版本),具體是如何實(shí)現(xiàn)(jdk1.5鏈表頭插還是尾插),為什么不安全?如何變得安全(concurrent包下集合類),concurrentHashmap實(shí)現(xiàn)原理是?
Executor框架說說你的理解?
結(jié)束一條Thread有什么方法?interrupt底層實(shí)現(xiàn)有看過嗎?線程的狀態(tài)是怎么樣的?如果給你實(shí)現(xiàn)會(huì)怎么樣做?
Io和nio有沒有了解?
現(xiàn)在需要在四大組件中傳數(shù)據(jù)?如何傳,方法有哪些(需要自己再具體說什么情況)?
緩存算法除了lru還認(rèn)識(shí)哪種?
Java中有內(nèi)存泄露嗎?是怎么樣的情景?為什么不用循環(huán)計(jì)數(shù)?
ANR產(chǎn)生原因?怎么定位?
ContextImpl的源碼使用的設(shè)計(jì)模式?為什么你認(rèn)為其中有外觀?
在一個(gè)app中,只有在一張activity,所有功能業(yè)務(wù)邏輯在里面實(shí)現(xiàn),現(xiàn)在報(bào)ANR,你會(huì)怎么做?(代碼層面:耗時(shí)操作(UI、網(wǎng)絡(luò)、數(shù)據(jù)庫),工具層面:trace和crashHandle)
Android中ClassLoader和java中有什么關(guān)系和區(qū)別
用過什么開源,舉一個(gè)例子?(volley)
Activity生命周期?情景:現(xiàn)在在一張act1點(diǎn)了新的act2,周期如何?
Act的launchMode,有沒有結(jié)合項(xiàng)目用過(自己的程序鎖和微信的PC端登陸對(duì)比,不過我現(xiàn)在又發(fā)現(xiàn),應(yīng)該大約估計(jì)可能是動(dòng)態(tài)加載的一個(gè)缺陷,如果有找到相關(guān)信息,請(qǐng)務(wù)必跟我說。具體問題就是,當(dāng)在PC端登錄時(shí),Android終端的微信會(huì)跳出,即使wechat的task不是在fore,當(dāng)按下確認(rèn),返回的是wechat,而不是自己先前的app)
View的繪制原理,有沒有用canvas自己畫過ui?
動(dòng)態(tài)加載主要問題
插件化
Assetmanager獲取資源原理和資源獲取原理
項(xiàng)目Oom異常解決方案+用戶體驗(yàn)優(yōu)化方案
Touch傳遞機(jī)制+listview滑動(dòng)沖突
Volley底層實(shí)現(xiàn)
為什么不能用volley請(qǐng)求大數(shù)據(jù)
Volley底層實(shí)現(xiàn)+設(shè)計(jì)模式理解
Imageloader緩存策略
項(xiàng)目如何解決oom?響應(yīng)速度是怎么優(yōu)化?電量消耗如何優(yōu)化?
描述一下Aidl和android ipc?(binder機(jī)制沒跟他講得很深)
屏幕適配使用的方案?有沒有輔助的工具幫助?(hyviewer)
如何分析內(nèi)存泄露?(代碼+工具traceview+mat)
那ANR呢?(我忘記了trace)
View樹繪制?如何優(yōu)化布局?
事件傳遞原理?
uil的框架如何設(shè)計(jì)?有沒有用過glide?(結(jié)合了fresco的分析)
Volley和okhttp底層實(shí)現(xiàn)(也講了okio),為什么說okhttp高效?
Listview的優(yōu)化(同一布局,左為bm,右為text)?
Apk瘦身可以關(guān)注什么點(diǎn)?(這里忘記了說so庫,然而他也不會(huì))
講一下動(dòng)態(tài)加載技術(shù)點(diǎn)?
適配優(yōu)化屏幕適配接觸到什么方法?
Binder機(jī)制(只深入到framework)
View樹繪制+事件分發(fā)
Contextimpl源碼,幾種context的區(qū)別
如何實(shí)現(xiàn)通訊?Binder機(jī)制
屏幕適配接觸到什么方法?
java內(nèi)存泄露是怎么樣的?(本質(zhì)+handler例子)
Handler機(jī)制?
情景題,把handler設(shè)static,里面需要對(duì)一個(gè)view更新,會(huì)不會(huì)內(nèi)存泄露?(可達(dá)性分析)
UI接觸得多嗎?有沒有用過canvas畫過圖?
在項(xiàng)目中為什么要用動(dòng)態(tài)加載?最大的問題是什么?怎么解決資源管理問題
Volley底層實(shí)現(xiàn)?(okhttp沒問)
自己寫的圖片加載工具類談一下?(結(jié)合uil談了一下)
描述下Aidl?覺得aidl有什么缺陷
JNI的使用。
Activity啟動(dòng)模式
兩個(gè)應(yīng)用能使用同一個(gè)任務(wù)棧么?
Binder機(jī)制
Volley源碼的實(shí)現(xiàn)
大圖加載
Http && Https
常用的加密算法,對(duì)稱加密和非對(duì)稱加密
Android里的序列化
Android里的內(nèi)存泄漏
Android里的設(shè)計(jì)模式
兩個(gè)應(yīng)用間Binder通信的原理
OkHttp如何對(duì)鏈接進(jìn)行復(fù)用
如何設(shè)計(jì)鎖
內(nèi)存泄漏如何發(fā)現(xiàn)(用什么工具)
Handler+Thread機(jī)制、
View繪制過程、
Activity的啟動(dòng)過程
什么時(shí)候會(huì)發(fā)生SOF問題
有用過什么框架,看過他們的源碼沒?
平時(shí)有用過什么開源項(xiàng)目?
AnsycTask的原理?(我的簡歷里提到過AnsycTask)
在紙上寫了個(gè)Activity,然后在類里面定義了一個(gè)Handler,問我這個(gè)會(huì)有警告,怎么解決?--static、軟引用
Service的?;?/p>
Handler機(jī)制,Handler除了線程通信還有什么作用,這個(gè)我說通知吧,因?yàn)锳ndroid是消息驅(qū)動(dòng)的,不是特別明白面試官要問哪點(diǎn),難道是延時(shí)?
Activity的啟動(dòng)模式,每種啟動(dòng)模式的使用場景,singletop中回調(diào)onNewIntent和finish掉之后onCreate()有什么不同?,這個(gè)4種的使用場景中,我singletop回答不是特別好,應(yīng)該是那種頻繁接受消息的activity需要使用
Fragment的生命周期,棧管理,和commit()類似的方法還有哪個(gè),commit類似的那個(gè)之前真沒注意,應(yīng)該是commitAllowingStateLoss(),區(qū)別是是否能在activity保存之后調(diào)用
實(shí)現(xiàn)一個(gè)文件夾列表,面試官要求5000個(gè)文件的時(shí)候才從ViewGroup轉(zhuǎn)到ListView
ART和Dalvik的區(qū)別
批量插入50條聯(lián)系人,比較高效的方法,ContentProvider是否了解原理
啟動(dòng)一個(gè)APP的流程
android學(xué)了多久?廣播分為幾種?實(shí)現(xiàn)原理,工作原理,廣播接收器有幾種?
ipc的方式
AIDL怎么用?
android四大組件
broadcast機(jī)制
thread.wait()與thread.sleep()區(qū)別
okhttp原理
線程池機(jī)制
androird進(jìn)程間通信方式
事件分發(fā)機(jī)制
view的繪制流程
MVP的介紹
說了下Android事件的分發(fā)機(jī)制
onSaveInstanceState和onRestoreInstanceState調(diào)用的過程和時(shí)機(jī),onNewIntent方法
fragment的生命周期,和Activity如何進(jìn)行通信
Android的事件分發(fā)機(jī)制,ACTION_DOWN和后續(xù)事件如何消耗
Activity的啟動(dòng)方式
View的繪制流程,MeasureSpec如何工作,父的MeasureSpec和自己的LayoutParams
廣播的兩種注冊(cè)方式
數(shù)據(jù)庫如何升級(jí)(懵逼)
Handler Looper的使用方式,實(shí)現(xiàn)機(jī)制,設(shè)計(jì)的原因
HandlerThread有沒有了解(很神奇的我完全忘了當(dāng)時(shí)是怎么答的了)
ThreadLocal是干嘛的,使用的地方
Sqlite的一些問題
Activity A調(diào)用Activity B時(shí),A調(diào)用什么函數(shù)(onPause)
onSaveInstanceState和onRestoreInstanceState又問了一次
JNI的參數(shù)ENV參數(shù)。。。
JNI工作時(shí),java 層的類如何找到C/C++層的類(懵)
AIDL的工作流程
Service與Thread區(qū)別,這個(gè)問題應(yīng)該是必問的了,一定要知道清楚。
SQLite能否并發(fā)讀取或者寫入,自己只記得不能并發(fā)寫,可以并發(fā)讀,但是原因不清楚。
Activity與Service的通信問題,這里要對(duì)Binder機(jī)制和AIDL比較了解,因?yàn)樽约簺]在項(xiàng)目中用過,所以回答的不是很好。這個(gè)還可以通Broadcast進(jìn)行通信。
畫出Activity與Fragment生命周期
activity生命周期,啟動(dòng)模式,service在哪個(gè)線程,service防殺死
ViewPager如何判斷左滑右滑
activity的啟動(dòng)模式及在你項(xiàng)目里的應(yīng)用
View事件分發(fā)機(jī)制
view事件沖突的處理
android7.0的虛擬機(jī)的優(yōu)化(什么即時(shí)編譯)
啟動(dòng)一個(gè)應(yīng)用的流程(從點(diǎn)擊桌面的icon開始)
sqlite如何批量插入大量數(shù)據(jù),如何提高效率(放到一個(gè)事務(wù)里)
fragment 和activity之間如何選擇(說出自己的理解)
android6.0 的動(dòng)態(tài)權(quán)限(聊項(xiàng)目時(shí)扯上去的)
View的繪制過程
當(dāng)時(shí)談到使用到了開源框架xtuil中的dbxutil和httptuil,然后讓分析這倆個(gè)模塊源碼;其中詳細(xì)問了httputil實(shí)現(xiàn)原理(主要是線程池,封裝的是httpclient) 使用到了slidingmenu_library開源控件,讓分析這個(gè)開源框架的源碼;
說說你做過最復(fù)雜的控件
animation 和animator的區(qū)別
說說推送 ,扯到長連接,心跳包,直接被面試官打斷,這個(gè)我們都知道,說說保持一個(gè)長連接很簡單,為什么長連接會(huì)帶來很多麻煩,還提示從耗電量,微信分析
項(xiàng)目使用開源框架的源碼分析討論 ,主要還是集中在httputil源碼實(shí)現(xiàn)、討論了線程池設(shè)計(jì),阻塞隊(duì)列; 由于httputil封裝了httpclient,然后讓比較 httpclient和httpurlclient區(qū)別; 扯到了http協(xié)議,問了http與https區(qū)別,(當(dāng)時(shí)我在分析直接被打斷,“這個(gè)我們都知道,簡介概括”,然后我我直接說https=http+ssl+加密算法); 加密算法是對(duì)稱還是非對(duì)稱的,,商量秘鑰的過程是對(duì)稱還是非對(duì)稱
android消息處理機(jī)制 ,handler+loop分析; loop線程與普通線程區(qū)別; asynctask源碼分析(這里有個(gè)線程池幾個(gè)關(guān)鍵參數(shù)5,128,使用的阻塞隊(duì)列,補(bǔ)充講了asynctask缺陷) ;如何改進(jìn)asynctask造成的內(nèi)存泄露的問題,從而延伸到 jvm虛擬機(jī)四種引用
說說androi 使用卡頓是什么造成的,給出優(yōu)化 ,主要回答了ui overdraw避免,<include>標(biāo)簽,<viewstub>標(biāo)簽,<merge>標(biāo)簽使用,hierarchy viewer工具的使用; 面試官追問:再從底層分析;(其實(shí)就是 16ms和60fps的追求了) ;再結(jié)合GPU操作分析一下UI過程; 然后說到了大圖加載問題,提到UIL框架,讓分析內(nèi)部源碼(我主要從uil的緩存策略和線程池機(jī)制分析)
忽然扯到并發(fā),讓分析concurrenthashmap,答了分段鎖仍不滿意,要求再分析一下size操作是如何做的
從listview優(yōu)化談到recyclerview,深入分析一下recyclerview特點(diǎn) ,然后引申到瀑布流如何實(shí)現(xiàn),不使用recyclerview如何實(shí)現(xiàn)瀑布流。
屬性動(dòng)畫
touch事件分發(fā)機(jī)制
android開機(jī)過程(主要討論了zygote)
讓你設(shè)計(jì)一個(gè)游戲人物,如何設(shè)計(jì) ,主要講了抽象類+接口+mvc和mvp模式
Android中的幾種Context什么區(qū)別?這個(gè)問題我回答的不好,簡單說了一下生命周期和Context的繼承關(guān)系,以及注意事項(xiàng)彈對(duì)話框不能使用applicatuion的上下文
Android中的內(nèi)存泄露遇到過沒?我講了Handler持有Activity泄露以及google建議的嵌套類、弱引用的解決方案、Drawable的setCallback,耗時(shí)的線程可能會(huì)持有Activity,Bitmap調(diào)用recycle,因?yàn)橐郧癰itmap在native分配,所以要調(diào)用recycle釋放,現(xiàn)在不用了因?yàn)樵诙逊峙洌蒅C回收,他問我是幾點(diǎn)幾版本開始的,我說是3.0版本。
接著問我bitmap能否復(fù)用?這個(gè)我沒弄懂意思,就回答不知道,最后查了一下,也是3.0以后的有個(gè)Option的inbitmap字段可以復(fù)用
平時(shí)遇到過OOM沒?遇到過,主要是圖片加載很常見,我講了BitmapFactory的解析Options的in...bound參數(shù)先讀取圖片信息進(jìn)行必要的縮放,還有緩存,講了DiskLruCache、LruCache緩存策略,以及可以加入軟引用,講了底層的LinkedHashMap實(shí)現(xiàn)。
用過外觀模式?(表示沒聽過)這是Android中的知識(shí)嗎?面試官告訴我,是一種設(shè)計(jì)模式,我說,哦,沒有,我知道的有單例模式、工廠模式、代理模式、觀察者模式、裝飾者模式、迭代器模式。然后讓我講一下代理模式,我就大概說了一下,然后說在Android中使用AIDL產(chǎn)生的的代碼中當(dāng)查不到本地的Binder時(shí)asInterface返回的就是一個(gè)代理對(duì)象,然后面試官說,那就是你使用過bindService調(diào)用過Service了?恩。
FrameWork層看過那些源碼?Java源碼呢?講了一下看過的框架層源碼和java集合,沒有具體講。
自定義控件做過哪些,需要注意什么?處理wrap_content的情況,ondraw不能耗時(shí),刷新率16ms等,然后讓我講了一下圓角矩形的圖片控件怎么做,降到了畫筆的xferm...方法進(jìn)行圖面交疊。
還問到我Android動(dòng)態(tài)加載了解不?我沒用過,但之前看到過通過DexClassLoader使用接口實(shí)現(xiàn)的一種插件形式
draw和onDraw方法區(qū)別。
view和viewGroup區(qū)別。
內(nèi)存溢出處理。
Activity能運(yùn)行在別的進(jìn)程中嗎?
內(nèi)存泄漏。
Bitmap的recycle方法執(zhí)行后會(huì)立即回收內(nèi)存嗎?
進(jìn)程間通信的方法。
Activity中如何調(diào)用另一個(gè)進(jìn)程Service里的方法?
AIDL的方式能訪問另一個(gè)進(jìn)程Service里靜態(tài)變量嗎?
Activity的四種啟動(dòng)模式。
有用過什么框架?
知道Picasso的緩存機(jī)制嗎?
ListView的優(yōu)化。
有木有在項(xiàng)目中用到什么設(shè)計(jì)模式?
更新UI用的什么機(jī)制?(最后一個(gè)問題沒聽懂問的是什么,追問了面試官,面試官說了什么上層調(diào)用底層,底層再調(diào)用上層......還是沒聽懂,就說網(wǎng)絡(luò)請(qǐng)求用的框架,在回調(diào)接口中更新UI)
在項(xiàng)目中有沒有用到圖片加載庫?網(wǎng)絡(luò)加載庫?
問我JAVA哪些先進(jìn)的東西給你在Android開發(fā)帶來方便?我說JSON庫。知道幾種JSON庫,有什么區(qū)別?
跨線程通信 主要涉及LooperMessageHandler以及MessageQueue
說一下自定義View需要注意哪些細(xì)節(jié) 主要說了一下View繪制的三大過程onDraw()不要做耗時(shí)操作 不要?jiǎng)?chuàng)建新對(duì)象 以及 怎么處理View的觸摸事件
View的事件沖突的解決辦法 ps:重寫dispatchEvent()或者touch()方法
講一下listView的優(yōu)化方法
講一下RecycleView與listview的區(qū)別
view的繪制過程
Activity的啟動(dòng)模式
跨線程通信
夸進(jìn)程通信 主要是Android的AIDL
如何解析json數(shù)據(jù)和xml
自定義view的幾個(gè)步驟 怎么刷新view ps:onLayout(); onMeasrue();onDraw();
RecycleView的優(yōu)化
幾種context的區(qū)別
看過什么源碼沒有
講一下binder類
Runnable運(yùn)行在哪個(gè)線程里面 ps:開啟一個(gè)子線程的唯一方法就是new Thread().start();
HashMap和HashTable的區(qū)別
raw和assets文件夾的區(qū)別
activity關(guān)閉后尚未運(yùn)行完畢的thread會(huì)怎么樣 ps:會(huì)變成空進(jìn)程線程,優(yōu)先級(jí)最低 很容易被終止回收
mainfest文件的合并規(guī)則
跨線程通信
講了其中一個(gè)項(xiàng)目是怎么實(shí)現(xiàn)的 問jsoup怎么拼 = =
用過哪些開源庫 講一下他的架構(gòu)是怎樣的
圖片三級(jí)緩存 內(nèi)存緩存滿了怎么辦 ps:優(yōu)先級(jí)隊(duì)列 滿了后根據(jù)優(yōu)先級(jí)主動(dòng)刪除一部分圖片 根據(jù)LRU算法確定優(yōu)先級(jí)
講一下JNI開發(fā)的過程 java怎么找到c函數(shù) ps:JNINativeMethod保存函數(shù)對(duì)應(yīng)關(guān)系
activity的四中啟動(dòng)模式
service的生命周期
項(xiàng)目中用JNI做什么 為什么要用他呢
什么是OAuth協(xié)議 做什么的
四大組件,詳細(xì)說
handler機(jī)制(深入源碼)
CotentProvider的權(quán)限問題,就是怎么樣使得數(shù)據(jù)對(duì)外有選擇性的提供和使用
Android的存儲(chǔ)方式
Handler、Looper、MessageQueue
AsyncTask 為什么java已經(jīng)有線程池的實(shí)現(xiàn)了,還要繼續(xù)使用AsyncTask,AsyncTask相對(duì)于java自帶的線程池的好處
onTouch事件的處理機(jī)制
說一下MVC以及其在Android中的應(yīng)用
說一下OOM以及你怎么解決的
了解Android的Framework么
說一下一個(gè)Android APP從點(diǎn)擊打開開始,是怎樣展示在用戶面前的(Zygote、Ams、Wms等)
viewpager里面只能嵌套view嗎 可不可以嵌套Activity
假如viewpager里面的每一頁都有有很大數(shù)據(jù)量的內(nèi)容,那么在快速的左右滑動(dòng)時(shí),如果出現(xiàn)了內(nèi)存被回收的情況,如何處理 假如出現(xiàn)了OOM,怎么處理
同上情況,使用Fragment,又當(dāng)如何?與viewpager有什么區(qū)別
ExpandableListView的Adapter怎么寫
在ListView的每個(gè)item中如果可能出現(xiàn)的view都不一樣,如何處理?動(dòng)態(tài)獲取view種類數(shù)量的話是不是就不能使用viewHolder進(jìn)行優(yōu)化?固定顯示view如果不存在該種view就不顯示的方法是否太耗內(nèi)存
ListView的Adapter的getView具體是什么機(jī)制?
Activity之間傳遞大量的數(shù)據(jù)用什么方法 Binder Bundle不夠大 Socket 在同一應(yīng)用中沒必要使用 共享內(nèi)存 static變量——同一應(yīng)用中static變量如何控制,會(huì)不會(huì)并發(fā)出問題,如果Activity由于內(nèi)存不足被kill掉,再重啟的時(shí)候static變量的值還可靠嗎:設(shè)置專門的訪問類,進(jìn)行讀寫控制,以及Activity重啟后的初始化工作。
SQLite在使用時(shí) 假如ActivityA是用于修改SQLite,ActivityBCDEF。。。是用來展示SQLite的內(nèi)容,如何在修改SQLite的同時(shí)使得BCDEF...都立刻獲得最新的數(shù)據(jù)?SQLite有沒有類似于ContentObserver的這么一種監(jiān)視類可以監(jiān)聽到SQLite內(nèi)容的改變?如果廣播通知所有類,那么廣播可以攜帶多大的數(shù)據(jù)?
假設(shè)把一個(gè)ActivityB向右滑動(dòng)可以回到上一個(gè)ActivityA,B漸漸透明,A漸漸清晰,要怎么編寫頁面?說說你對(duì)android:theme的理解,說說你對(duì)alpha值的理解
ListView在數(shù)據(jù)量很大圖片很多的情況下怎么優(yōu)化?假如一個(gè)圖片,輕輕的向上滑動(dòng)一丟丟,那么需要重繪嗎?(什么鬼。。。)
詳細(xì)展開說一下所有LaunchMode的應(yīng)用場景
假如A-》B-》C,想讓C后退直接到A,使用什么樣的intentflag?
假如A-》B-》C,C使用singleTask,C后退,后退到什么地方呢?
在全屏顯示高清大圖的時(shí)候,網(wǎng)速慢的情況下如何顯示?漸進(jìn)式顯示是怎么做到的?如果想顯示下載進(jìn)度圈圈,該如何實(shí)現(xiàn)?
AsyncTask在4.x以后有什么改變?怎樣改回并發(fā)執(zhí)行好多個(gè)?如果一個(gè)AsyncTask結(jié)束取得結(jié)果之前Activity就因?yàn)閮?nèi)存原因被Destroy掉了,那會(huì)有什么情況發(fā)生?會(huì)內(nèi)存泄露嗎?會(huì)空指針嗎?需要在Activity徹底死掉之前把AsyncTaskcancel掉嗎?如果沒有cancel掉,然后Activity重啟了,那這個(gè)Asynctask又當(dāng)如何呢?
AsyncTask內(nèi)部實(shí)現(xiàn)機(jī)理 與Thread+Handler有什么不同
說一下HandlerThread
你的APP里,是每個(gè)Activity都有一個(gè)Handler呢還是所有Activity共享一個(gè)Handler
基于事件監(jiān)聽、基于事件回調(diào) 假如一個(gè)touch事件發(fā)生,那是監(jiān)聽器先收到還是onTouch函數(shù)先收到
假如你要記錄ListView滾動(dòng)到的位置,要記錄什么信息,view怎樣獲得坐標(biāo)信息
說一下canvas
dialog和popupwindow的應(yīng)用場景 如果popupwindow在沒有dismiss的時(shí)候Activity finish了,會(huì)出現(xiàn)什么情況?
了解過什么三方庫?為什么不用三方庫?
Service和推送通知,通知有沒有可能出現(xiàn)有推送但是通知欄收不到通知?service被kill掉會(huì)如何?如何保證service不被kill掉
了不了解Scrollview scrollview和ListView有什么相似點(diǎn) 有什么不同 那如果這兩個(gè)是繼承關(guān)系 那應(yīng)該是誰繼承誰?
dp sp px各自的應(yīng)用場景是什么 換算關(guān)系是什么 使用sp的時(shí)候如果調(diào)整系統(tǒng)字體,顯示字體會(huì)跟著調(diào)整嗎?
gallery為什么被廢棄?為什么Google推薦使用viewpager代替gallery呢?有什么改進(jìn)?
handler.postAtTime不是延時(shí)post么 那handler怎么延時(shí)處理Message
ListView的優(yōu)化 ;Lru如何實(shí)現(xiàn)的 ;OOM的處理 ;GC原理 ;循環(huán)引用的問題 引用計(jì)數(shù)與可達(dá)性算法 ;LaunchMode
網(wǎng)絡(luò)框架實(shí)現(xiàn),volley原理
線程池原理,java提供了哪些線程池
一個(gè)activity只能有一個(gè)進(jìn)程么【對(duì)進(jìn)程的理解】
activity任務(wù)棧,啟動(dòng)模式相關(guān),四種啟動(dòng)模式
夜間主題的實(shí)現(xiàn)方式
動(dòng)態(tài)加載原理,classloader理解
listview實(shí)現(xiàn)item左滑需要考慮的問題
view的事件分發(fā)與渲染流程
LruCache的理解,原理,以及還有哪些方式實(shí)現(xiàn)緩存調(diào)度
GC原理,實(shí)現(xiàn)方式,能否手動(dòng)去控制GC回收
OOM,內(nèi)存泄漏的問題有沒有遇到過,如何處理
mvp與mvc的區(qū)別,實(shí)現(xiàn),原理
volley原理,發(fā)送五個(gè)請(qǐng)求(相同以及不同)時(shí),內(nèi)部所做處理?如何根據(jù)發(fā)送請(qǐng)求結(jié)束后,剔除相同的等待請(qǐng)求?
圖片緩存技術(shù)的實(shí)現(xiàn),如何結(jié)合volley實(shí)現(xiàn),volley自帶緩存管理還是需要自己去實(shí)現(xiàn),緩存的底層實(shí)現(xiàn)
listview原理,adapter與view是如何綁定的,如何自己設(shè)計(jì)一個(gè)類似listview的自定義view,子item復(fù)用,管理以及getView的實(shí)現(xiàn)
android線程模型,looper,messageQueue一套機(jī)制
線程實(shí)現(xiàn)方式,thread+asynctask+handlerThread+intentService,彼此的應(yīng)用場景以及原理
asynctask底層實(shí)現(xiàn)原理,為何不能在非主線程中實(shí)例化,其實(shí)還是跟onPre and onPost在當(dāng)前線程實(shí)現(xiàn)有關(guān)
手機(jī)唯一標(biāo)識(shí)方式
手機(jī)app耗電量跟什么有關(guān),耗電優(yōu)化
推送服務(wù)原理,心跳機(jī)制
service使用注意事項(xiàng)以及原理
服務(wù)應(yīng)用喚醒實(shí)現(xiàn),aidl 的service更新后如何讓舊的客戶端兼容
多線程實(shí)現(xiàn),通信原理
進(jìn)程通信原理,使用訂閱者模式時(shí),服務(wù)端拿到的binder對(duì)象為何是新的實(shí)例,如何獲取到真正客戶端實(shí)例(RemoteCallbackList)
ssl協(xié)議,握手交換密鑰過程,加密算法,對(duì)稱非對(duì)稱加密原理
lrucache原理實(shí)現(xiàn),linkedhashmap底層,手寫代碼實(shí)現(xiàn)lrucache,對(duì)相關(guān)的bitmap進(jìn)行管理
線程池構(gòu)造函數(shù)傳參意義,手寫代碼實(shí)現(xiàn)線程池,繼承方式,不能用現(xiàn)成的
異步接口實(shí)現(xiàn),實(shí)現(xiàn)跨線程通信,不能用handler,looper那一套機(jī)制
socket編程實(shí)現(xiàn)http請(qǐng)求,手寫代碼實(shí)現(xiàn)
volley原理實(shí)現(xiàn)
Android事件分發(fā)
scrollview特點(diǎn)
處理listview圖片錯(cuò)位方式
Mvp與mvc區(qū)別,實(shí)現(xiàn),架構(gòu)表示
android緩存實(shí)現(xiàn)
Java線程 run與start區(qū)別,原理實(shí)現(xiàn)
打包混淆原理
volley原理,實(shí)現(xiàn)
jar封裝的private方法能否在外部調(diào)用
反編譯方式工具及其原理
網(wǎng)絡(luò)請(qǐng)求方面如何處理
jni使用及其原理
對(duì)稱加密與非對(duì)稱加密
使用圖片緩存但是服務(wù)器改了實(shí)際的圖片,但url一樣,如何在客戶端區(qū)別
線程間通信,進(jìn)程間通信,binder原理
sharepreference原理
事件分發(fā)原理
設(shè)計(jì)模式,延遲加載實(shí)現(xiàn)單例模式,內(nèi)部類來解決,加鎖也不穩(wěn)
mvp與mvc
線程池調(diào)度實(shí)現(xiàn),不能用executor(當(dāng)時(shí)居然以為blockingqueue存線程呢=_=)
動(dòng)態(tài)加載,dex分包,熱修復(fù)
緩存原理實(shí)現(xiàn),內(nèi)存如何分配
如何減小apk體積
性能優(yōu)化從哪幾方面考慮(內(nèi)存,cpu,fps,ddms靈活dump)
looper,handler等原理
activity的啟動(dòng)模式
listview與recycleView的區(qū)別與優(yōu)缺點(diǎn)
A向B發(fā)送消息,A能實(shí)時(shí)看到B的閱讀時(shí)間,問A實(shí)現(xiàn)方式
volley層次結(jié)構(gòu),原理,為什么選用volley,不用其他開源框架,對(duì)開源框架的看法
MVC與MVP的區(qū)別,activity,fragment扮演的角色,presentor之間的通信問題。
進(jìn)程間的通信,binder的原理,intent與aidl的應(yīng)用場景及相關(guān)比較
圖片如何緩存處理,如何處理oom
自定義view實(shí)現(xiàn),注意事項(xiàng)
加載圖片請(qǐng)求的超時(shí)時(shí)間設(shè)置,多少秒合適,原因,大圖如何加載。
線程間的通信,并發(fā)問題解決方案。
快速排序?yàn)槭裁唇凶隹炫?,其算法?fù)雜度,及其實(shí)現(xiàn)原理
應(yīng)用簽名是為了什么,簽名原理是什么
root之后有什么重大的變化,開發(fā)者可以操作什么
給出九游android客戶端程序,解釋下相應(yīng)的布局,listView做大面積的嵌套,下拉刷新的實(shí)現(xiàn)
渠道提示不合法的問題,為何系統(tǒng)能識(shí)別渠道非法
說一下Binder機(jī)制的底層實(shí)現(xiàn)。
Android中進(jìn)程之間通信,除了Binder還有什么?說一下底層實(shí)現(xiàn)原理
說一下Android中的事件處理流程,結(jié)合源碼解釋,不要直接說規(guī)律結(jié)論。
系統(tǒng)調(diào)用的方式?系統(tǒng)調(diào)用發(fā)生的場景?系統(tǒng)調(diào)用常用函數(shù)?系統(tǒng)調(diào)用的具體過程?
Binder的一次拷貝發(fā)生在哪里。
AMS的作用?
一個(gè)Activity啟動(dòng)另一個(gè)Activity時(shí)函數(shù)調(diào)用流程。
Android中Handler機(jī)制?
什么是ThreadLocal,一個(gè)線程可以獲取到另一個(gè)線程的Looper嗎?怎么獲得?
序列化怎么實(shí)現(xiàn)?答安卓端有Serializable和Parcelable。然后問這兩個(gè)有什么區(qū)別,分別怎么實(shí)現(xiàn)。
問fragmentPagerAdapter和fragmentStateAdapter的區(qū)別。
fragment和fragment怎么通信?
listview怎么優(yōu)化?
網(wǎng)絡(luò)通信怎么做的?volley的實(shí)現(xiàn)?
http和https的區(qū)別?
有看過開源第三方庫嗎?
登陸注冊(cè)這塊的邏輯一般怎么做?
canvas畫了個(gè)線,怎么撤銷?
性能優(yōu)化怎么做?
寫了多少代碼?有開源項(xiàng)目嗎?有參與開源項(xiàng)目嗎?
bitmap的本質(zhì)?答到了cpp層。
activity的異常退出和啟動(dòng)調(diào)用的方法
activity和service的區(qū)別
service啟動(dòng)方式以及區(qū)別,以及service的作用
activity的launchmode
過濾規(guī)則在manifest和代碼中注冊(cè)有啥區(qū)別
布局中優(yōu)化常用方法,以及分析工具,我答的時(shí)候基本圍繞層級(jí)優(yōu)化答得,考官建議我從過度繪制等加強(qiáng)學(xué)習(xí)
屏幕適配問題,老生常談啦
bitmap加載一個(gè)100張圖片的優(yōu)化處理
lrucache和disklrucache,其中還問到軟引用和弱引用的使用
listview的優(yōu)化
自己用過什么開源框架,還有看過源碼嗎
React-native的通信機(jī)制
react-native和phonegap的區(qū)別
自己在項(xiàng)目中開發(fā)遇到的坑關(guān)于react-native
有沒有看過react-native的源碼,能否講講最熟悉的源碼
線程和進(jìn)程的區(qū)別,線程自己有沒有自己的內(nèi)存
多線程帶來的影響
binder的機(jī)制
android為什么使用binder進(jìn)行跨進(jìn)程通信
Andorid四大組件
anroid生命周期,opause,onStop區(qū)別
Fragment,是否看過源碼,如何啟動(dòng)
Service有哪幾種
隱式啟動(dòng)和顯示啟動(dòng)
Service兩種啟動(dòng)方式
啟動(dòng)線程方式有哪幾種
handle消息隊(duì)列相關(guān)
幾種常用布局,布局到group樹過程。。。。
weight屬性
布局優(yōu)化相關(guān)
Arraylist LinkList
線程進(jìn)程區(qū)別
一個(gè)app能否是多進(jìn)程?(大概)
converview一些知識(shí)點(diǎn)
oom如何發(fā)現(xiàn)
handler出現(xiàn)oom如何解決
如何開啟多個(gè)網(wǎng)絡(luò)異步請(qǐng)求
線程池內(nèi)線程的數(shù)量如何確定
說說OKHTTP的實(shí)現(xiàn)
UIM的實(shí)現(xiàn)
講一下mvp,mvp和mvc區(qū)別,講一下用過的開源項(xiàng)目,說一下如何實(shí)現(xiàn)
asynctask實(shí)現(xiàn)
線程池如何使用
如何實(shí)現(xiàn)多進(jìn)程,進(jìn)程間如何通信,具體講一下socket
surfaceView
如何進(jìn)行界面優(yōu)化
如何實(shí)現(xiàn)緩存
IOC的思想?
AOP的思想?
為什么android要推出handler???handlder能不能用在線程中創(chuàng)建???
AysnTask的源碼分析,能不能在其他線程中創(chuàng)建的?
一個(gè)關(guān)于android進(jìn)程的問題,哪些android進(jìn)程不能被殺死的?
斷點(diǎn)續(xù)傳的基本原理(問的很細(xì)很細(xì))
圖片壓縮方式
數(shù)據(jù)結(jié)構(gòu)對(duì)一個(gè)基本有序的數(shù)組應(yīng)該采用什么方式進(jìn)行排序,對(duì)一個(gè)亂序的數(shù)組應(yīng)該采用什么方式排序能快速找到前n個(gè)數(shù)?為什么?
Java和JavaScript的區(qū)別
介紹一下restful框架
多線程安全實(shí)現(xiàn)方式,synchronized和lock,信號(hào)量的區(qū)別
http的理解,http中無狀態(tài)的含義是
cookie和session的區(qū)別
虛擬機(jī)相關(guān)知識(shí)
四大組件生命周期
對(duì)我項(xiàng)目中用到一個(gè)開源框架中算法了解嗎?(IK Analyzer)
數(shù)據(jù)緩存處理
斷點(diǎn)續(xù)傳原理
Hashmap和hashtable之間的區(qū)別
四大組件相關(guān)知識(shí)
lrucache的基本原理
三級(jí)緩存的理解
Volley的原理及使用
對(duì)Restful了解
事件分發(fā)機(jī)制(問的很細(xì)很細(xì))
自定義view的繪制方式
Listview的優(yōu)化(問的很細(xì)很細(xì))
Xml解析方式,原理優(yōu)缺點(diǎn)
自定義控件如何繪制,然后現(xiàn)場畫出了一個(gè)控件,問我具體應(yīng)該怎么繪制(如何計(jì)算子view的寬高度等等)問的超級(jí)細(xì)
算法題題目忘了,只記得寫的時(shí)候時(shí)間復(fù)雜度過高。
Activity的生命周期及其他相關(guān)知識(shí)
安卓動(dòng)畫相關(guān)知識(shí)
service中啟動(dòng)方式有哪些區(qū)別是?
線程安全實(shí)現(xiàn)方式,線程池具體原理
Linux和安卓中跨進(jìn)程間通信間的區(qū)別,以及安卓中binder基本原理
四大組件的相關(guān)知識(shí)
java內(nèi)存模型
GC算法具體內(nèi)容
接口和抽象類的區(qū)別
四大組件的生命周期
Hsahmap的底層原理
斷點(diǎn)續(xù)傳的原理