Android面試題

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取出)所送來的消息。

  1. 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)程常駐筆記

Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide五大Android開源組件加載網(wǎng)絡(luò)圖片的優(yōu)缺點(diǎ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ù)傳的原理

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,505評(píng)論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,556評(píng)論 3 418
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,463評(píng)論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,009評(píng)論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,778評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,218評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,281評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,436評(píng)論 0 288
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,969評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,795評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,993評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,537評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,229評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,659評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,917評(píng)論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,687評(píng)論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,990評(píng)論 2 374

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,661評(píng)論 25 708
  • Android Studio JNI流程首先在java代碼聲明本地方法 用到native關(guān)鍵字 本地方法不用去實(shí)現(xiàn)...
    MigrationUK閱讀 11,919評(píng)論 7 123
  • 時(shí)間 Monster. 凌晨的白晝, 清晨的朝霞, 午時(shí)的烈日, 傍晚的余暉, 夜晚的星空。 落地時(shí)哇哇的哭聲, ...
    PImonsterNK閱讀 200評(píng)論 0 1
  • 煙花一如既往的絢爛整個(gè)遲來的夜空,那一刻,就連暗色的云都如此驚艷。 冷風(fēng)稀釋了都市三月夜雨,在莫斯科郊外的燈紅酒綠...
    醉花令閱讀 304評(píng)論 0 0
  • 裝潢什么的……真是個(gè)大工程…… 光是簡單的明確一下大體方向就感覺相當(dāng)傷神了…… 回頭還有各種材料的選定……種種種種...
    沃雷塔爾閱讀 184評(píng)論 0 0