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)對象之間的消息交換
1)Looper: 一個(gè)線程可以產(chǎn)生一個(gè)Looper對象,由它來管理此線程里的MessageQueue(消息隊(duì)列)。
2)Handler: 你可以構(gòu)造Handler對象來與Looper溝通,以便push新消息到MessageQueue里;或者接收Looper從Message Queue取出)所送來的消息。
- Message Queue(消息隊(duì)列):用來存放線程放入的消息。
4)線程:UIthread 通常就是main thread,而Android啟動(dòng)程序時(shí)會替它建立一個(gè)MessageQueue。
文件的上傳?
答:使用HttpURLConnection得到輸入流,將文件的通過IO流的方式上傳到服務(wù)器。可使用第三方Xutils框架。
ListView的源碼和如何優(yōu)化Listview?
答:根據(jù)ConvertView來判斷View的重用還是新建,新建的話通過ViewHolder來存儲所有的控件并設(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對象。
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)。
什么是三級緩存?三級緩存原理
答:網(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)先級
答:android的系統(tǒng)進(jìn)程分為五個(gè)等級, Foreground Process(前臺進(jìn)程), Visible Process(可見進(jìn)程), Service Process(服務(wù)進(jìn)程), Background Process(后臺進(jìn)程), Empty Process(空進(jìn)程)
自定義View相關(guān)知識,下拉刷新的實(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 同步不同頁面間對象狀態(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ù)雜,需要我們處理很多操作:如果圖片的緩存和請求的調(diào)度。
簡單的說下Retrofit的使用流程?
Retrofit2在項(xiàng)目中的完整使用流程:創(chuàng)建Bean類 --> 創(chuàng)建接口形式的http請求方法 --> 通過Retrofit.builder()創(chuàng)建接口對象并調(diào)用http方法請求網(wǎng)絡(luò)數(shù)據(jù) --> 在RxJava的Observable(被觀察者)中異步處理請求結(jié)果!
Volley到底有哪些特點(diǎn)呢?
內(nèi)部封裝了異步線程,可直接在主線程中調(diào)用服務(wù)器端并處理返回結(jié)果,可以取消請求容易擴(kuò)展
缺點(diǎn):大文件下載表現(xiàn)不好,只支持Http。
項(xiàng)目中有沒有見過內(nèi)存泄漏以及OOM?為什么會產(chǎn)生?怎么解決的?
內(nèi)存泄漏它是造成應(yīng)用程序OOM的主要原因之一
在android應(yīng)用開發(fā)中,當(dāng)一個(gè)對象已經(jīng)不需要再使用了,本該被回收時(shí),而另外一個(gè)正在使用的對象持有它的引用從而導(dǎo)致它不能被回收,這就導(dǎo)致本該被回收的對象不能被回收而停留在堆內(nèi)存中,內(nèi)存泄漏就產(chǎn)生了。
全局變量的濫使用,加載對象過大,相應(yīng)資源過多,來不及釋放,資源未關(guān)閉造成的內(nèi)存泄漏。
在內(nèi)存引用上做些處理,常用的有軟引用、強(qiáng)化引用、弱引用
在內(nèi)存中加載圖片時(shí)直接在內(nèi)存中作處理,如邊界壓縮
及時(shí)回收不用的對象如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è)線程,一般在后臺默默運(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圖片緩存之初識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)存溢出問題,圖片的三級緩存
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)程保活
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不被殺死。
廣播的兩種注冊方法,有什么區(qū)別。
Intent的使用方法,可以傳遞哪些數(shù)據(jù)類型。
ContentProvider使用方法。
Thread、AsycTask、IntentService的使用場景與特點(diǎn)。
五種布局:FrameLayout、LinearLayout、AbsoluteLayout、RelativeLayout、TableLayout各自特點(diǎn)及繪制效率對比。
Android的數(shù)據(jù)存儲形式。
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ìn)程級別
activity1啟動(dòng)activity2的過程,是否可以在新的進(jìn)程里面,如果在新的進(jìn)程里面流程有什么不同。啟動(dòng)按返回系統(tǒng)的調(diào)度。
廣播的注冊方式,信息是保存在哪里,發(fā)送廣播是如何回調(diào)廣播接收者。
app安裝過程,每次開機(jī)是否會重新安裝所有的app
Android系統(tǒng)為系統(tǒng)安全性做什么事情
zygote和systemservice的關(guān)系
為什么zygote死掉后會重新啟動(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)會怎么樣做?
Io和nio有沒有了解?
現(xiàn)在需要在四大組件中傳數(shù)據(jù)?如何傳,方法有哪些(需要自己再具體說什么情況)?
緩存算法除了lru還認(rèn)識哪種?
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,你會怎么做?(代碼層面:耗時(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端登陸對比,不過我現(xiàn)在又發(fā)現(xiàn),應(yīng)該大約估計(jì)可能是動(dòng)態(tài)加載的一個(gè)缺陷,如果有找到相關(guān)信息,請務(wù)必跟我說。具體問題就是,當(dāng)在PC端登錄時(shí),Android終端的微信會跳出,即使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請求大數(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庫,然而他也不會)
講一下動(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,里面需要對一個(gè)view更新,會不會內(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
常用的加密算法,對稱加密和非對稱加密
Android里的序列化
Android里的內(nèi)存泄漏
Android里的設(shè)計(jì)模式
兩個(gè)應(yīng)用間Binder通信的原理
OkHttp如何對鏈接進(jìn)行復(fù)用
如何設(shè)計(jì)鎖
內(nèi)存泄漏如何發(fā)現(xiàn)(用什么工具)
Handler+Thread機(jī)制、
View繪制過程、
Activity的啟動(dòng)過程
什么時(shí)候會發(fā)生SOF問題
有用過什么框架,看過他們的源碼沒?
平時(shí)有用過什么開源項(xiàng)目?
AnsycTask的原理?(我的簡歷里提到過AnsycTask)
在紙上寫了個(gè)Activity,然后在類里面定義了一個(gè)Handler,問我這個(gè)會有警告,怎么解決?--static、軟引用
Service的保活
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
廣播的兩種注冊方式
數(shù)據(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的通信問題,這里要對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è)長連接很簡單,為什么長連接會帶來很多麻煩,還提示從耗電量,微信分析
項(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+加密算法); 加密算法是對稱還是非對稱的,,商量秘鑰的過程是對稱還是非對稱
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)彈對話框不能使用applicatuion的上下文
Android中的內(nèi)存泄露遇到過沒?我講了Handler持有Activity泄露以及google建議的嵌套類、弱引用的解決方案、Drawable的setCallback,耗時(shí)的線程可能會持有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è)計(jì)模式,我說,哦,沒有,我知道的有單例模式、工廠模式、代理模式、觀察者模式、裝飾者模式、迭代器模式。然后讓我講一下代理模式,我就大概說了一下,然后說在Android中使用AIDL產(chǎn)生的的代碼中當(dāng)查不到本地的Binder時(shí)asInterface返回的就是一個(gè)代理對象,然后面試官說,那就是你使用過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í)行后會立即回收內(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ò)請求用的框架,在回調(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)建新對象 以及 怎么處理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會怎么樣 ps:會變成空進(jìn)程線程,優(yōu)先級最低 很容易被終止回收
mainfest文件的合并規(guī)則
跨線程通信
講了其中一個(gè)項(xiàng)目是怎么實(shí)現(xiàn)的 問jsoup怎么拼 = =
用過哪些開源庫 講一下他的架構(gòu)是怎樣的
圖片三級緩存 內(nèi)存緩存滿了怎么辦 ps:優(yōu)先級隊(duì)列 滿了后根據(jù)優(yōu)先級主動(dòng)刪除一部分圖片 根據(jù)LRU算法確定優(yōu)先級
講一下JNI開發(fā)的過程 java怎么找到c函數(shù) ps:JNINativeMethod保存函數(shù)對應(yīng)關(guān)系
activity的四中啟動(dòng)模式
service的生命周期
項(xiàng)目中用JNI做什么 為什么要用他呢
什么是OAuth協(xié)議 做什么的
四大組件,詳細(xì)說
handler機(jī)制(深入源碼)
CotentProvider的權(quán)限問題,就是怎么樣使得數(shù)據(jù)對外有選擇性的提供和使用
Android的存儲方式
Handler、Looper、MessageQueue
AsyncTask 為什么java已經(jīng)有線程池的實(shí)現(xiàn)了,還要繼續(xù)使用AsyncTask,AsyncTask相對于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變量如何控制,會不會并發(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漸漸清晰,要怎么編寫頁面?說說你對android:theme的理解,說說你對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掉了,那會有什么情況發(fā)生?會內(nèi)存泄露嗎?會空指針嗎?需要在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了,會出現(xiàn)什么情況?
了解過什么三方庫?為什么不用三方庫?
Service和推送通知,通知有沒有可能出現(xiàn)有推送但是通知欄收不到通知?service被kill掉會如何?如何保證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)字體,顯示字體會跟著調(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)程么【對進(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è)請求(相同以及不同)時(shí),內(nèi)部所做處理?如何根據(jù)發(fā)送請求結(jié)束后,剔除相同的等待請求?
圖片緩存技術(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)識方式
手機(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對象為何是新的實(shí)例,如何獲取到真正客戶端實(shí)例(RemoteCallbackList)
ssl協(xié)議,握手交換密鑰過程,加密算法,對稱非對稱加密原理
lrucache原理實(shí)現(xiàn),linkedhashmap底層,手寫代碼實(shí)現(xiàn)lrucache,對相關(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請求,手寫代碼實(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ò)請求方面如何處理
jni使用及其原理
對稱加密與非對稱加密
使用圖片緩存但是服務(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,不用其他開源框架,對開源框架的看法
MVC與MVP的區(qū)別,activity,fragment扮演的角色,presentor之間的通信問題。
進(jìn)程間的通信,binder的原理,intent與aidl的應(yīng)用場景及相關(guān)比較
圖片如何緩存處理,如何處理oom
自定義view實(shí)現(xiàn),注意事項(xiàng)
加載圖片請求的超時(shí)時(shí)間設(shè)置,多少秒合適,原因,大圖如何加載。
線程間的通信,并發(fā)問題解決方案。
快速排序?yàn)槭裁唇凶隹炫牛渌惴◤?fù)雜度,及其實(shí)現(xiàn)原理
應(yīng)用簽名是為了什么,簽名原理是什么
root之后有什么重大的變化,開發(fā)者可以操作什么
給出九游android客戶端程序,解釋下相應(yīng)的布局,listView做大面積的嵌套,下拉刷新的實(shí)現(xiàn)
渠道提示不合法的問題,為何系統(tǒng)能識別渠道非法
說一下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ū)別?
有看過開源第三方庫嗎?
登陸注冊這塊的邏輯一般怎么做?
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和代碼中注冊有啥區(qū)別
布局中優(yōu)化常用方法,以及分析工具,我答的時(shí)候基本圍繞層級優(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一些知識點(diǎn)
oom如何發(fā)現(xiàn)
handler出現(xiàn)oom如何解決
如何開啟多個(gè)網(wǎng)絡(luò)異步請求
線程池內(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)對一個(gè)基本有序的數(shù)組應(yīng)該采用什么方式進(jìn)行排序,對一個(gè)亂序的數(shù)組應(yīng)該采用什么方式排序能快速找到前n個(gè)數(shù)?為什么?
Java和JavaScript的區(qū)別
介紹一下restful框架
多線程安全實(shí)現(xiàn)方式,synchronized和lock,信號量的區(qū)別
http的理解,http中無狀態(tài)的含義是
cookie和session的區(qū)別
虛擬機(jī)相關(guān)知識
四大組件生命周期
對我項(xiàng)目中用到一個(gè)開源框架中算法了解嗎?(IK Analyzer)
數(shù)據(jù)緩存處理
斷點(diǎn)續(xù)傳原理
Hashmap和hashtable之間的區(qū)別
四大組件相關(guān)知識
lrucache的基本原理
三級緩存的理解
Volley的原理及使用
對Restful了解
事件分發(fā)機(jī)制(問的很細(xì)很細(xì))
自定義view的繪制方式
Listview的優(yōu)化(問的很細(xì)很細(xì))
Xml解析方式,原理優(yōu)缺點(diǎn)
自定義控件如何繪制,然后現(xiàn)場畫出了一個(gè)控件,問我具體應(yīng)該怎么繪制(如何計(jì)算子view的寬高度等等)問的超級細(xì)
算法題題目忘了,只記得寫的時(shí)候時(shí)間復(fù)雜度過高。
Activity的生命周期及其他相關(guān)知識
安卓動(dòng)畫相關(guān)知識
service中啟動(dòng)方式有哪些區(qū)別是?
線程安全實(shí)現(xiàn)方式,線程池具體原理
Linux和安卓中跨進(jìn)程間通信間的區(qū)別,以及安卓中binder基本原理
四大組件的相關(guān)知識
java內(nèi)存模型
GC算法具體內(nèi)容
接口和抽象類的區(qū)別
四大組件的生命周期
Hsahmap的底層原理
斷點(diǎn)續(xù)傳的原理