Android 面試

Android 基礎(chǔ)

  • Android 系統(tǒng)架構(gòu)


    安卓系統(tǒng)架構(gòu)
  • Applications:應(yīng)用程序
  • Application Framework:組件和服務(wù)API
  • Libraries琅关、Runtime:即 c/c++ 函數(shù)庫(kù)部分芙扎,大多數(shù)都是開放源代碼的函數(shù)庫(kù)啸澡,例如 webkit惰爬;android 的 runtime 負(fù)責(zé)解釋和執(zhí)行生成的dalvik格式的字節(jié)碼
  • Linux Kernal:硬件驅(qū)動(dòng)程序:網(wǎng)絡(luò)毡咏、電源各谚、系統(tǒng)安全以及內(nèi)存管理等功能
  • 簡(jiǎn)單介紹Android四大組件
  • Activity:Activity 是 Android 程序與用戶交互的窗口固以,主要做界面展示和一些持久化的事情
  • Service:后臺(tái)服務(wù)扰藕,定義好需要接受的 Intent 提供同步和異步的接口,常用于處理一些常駐校摩、耗時(shí)的操作
  • Content Provider:是 Android 提供的第三方應(yīng)用數(shù)據(jù)的訪問(wèn)方案看峻,可以派生 Content Provider 類,對(duì)外提供數(shù)據(jù)衙吩,可以像數(shù)據(jù)庫(kù)一樣進(jìn)行選擇排序互妓,屏蔽內(nèi)部數(shù)據(jù)的存儲(chǔ)細(xì)節(jié),向外提供統(tǒng)一的接口模型
  • BroadCast Receiver:廣播坤塞,接收一種或者多種 Intent 作觸發(fā)事件冯勉,接受相關(guān)消息,做一些簡(jiǎn)單處理摹芙,轉(zhuǎn)換成一條 Notification灼狰,統(tǒng)一了Android的事件廣播模型
  • Android中常用的五種布局
  • FrameLayout:框架布局,所有東西依次都放在左上角浮禾,會(huì)重疊
  • LinearLayout:線性布局交胚,可垂直和水平布局
  • AbsoluteLayout:絕對(duì)布局,絕對(duì)布局用X,Y坐標(biāo)來(lái)指定元素的位置
  • RelativeLayout:相對(duì)布局盈电,按參照物布局
  • TableLayout:表格布局蝴簇,每一個(gè)TableLayout里面有表格行TableRow
  • Activity 生命周期
Activity生命周期
  • Fragment 生命周期

  • Service 如何使用?生命周期匆帚?

  • 如何使用:
* 繼承熬词。 XXService extends Service
* 配置。在 AndroidManifest 文件中的<application>節(jié)點(diǎn)里對(duì) XXService 進(jìn)行配置
* 啟動(dòng)。Context.startService() 或者 Context.bindService()
  • 生命周期:

    • startService():生命周期直至stopService互拾;如果調(diào)用startService() 方法前服務(wù)已經(jīng)被創(chuàng)建歪今,多次調(diào)用startService() 方法并不會(huì)導(dǎo)致多次創(chuàng)建服務(wù),但會(huì)導(dǎo)致多次調(diào)用 onStart() 方法
    • bindService():生命周期直至unbindService()颜矿;調(diào)用者退出時(shí)會(huì)自動(dòng)調(diào)用unbindService()寄猩;如果調(diào)用bindService()方法前服務(wù)已經(jīng)被綁定,多次調(diào)用bindService()方法并不會(huì)導(dǎo)致多次創(chuàng)建服務(wù)及綁定(也就是說(shuō)onCreate()和onBind()方法并不會(huì)被多次調(diào)用)
  • BroadCast Receiver 注冊(cè)方式或衡、不同之處

  • 注冊(cè)方式:XXXReceiver extends BroadcastReceiver
* 第一種:全局廣播:AndroidManifest 中注冊(cè)
       <receive android:name=".XXXReceiver " >
         <intent-filter>
           <action android:name="android.provider.Telephony.SMS_RECEIVED")
         <intent-filter>
       <receiver>
* 第二種:局部廣播:代碼注冊(cè)
       IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
       XXXReceiver receiver = new XXXReceiver();
       registerReceiver(receiver, filter);
  • 優(yōu)缺點(diǎn)

    • 第一種:全局有效
    • 第二種:局部有效
  • Activity啟動(dòng)模式

    可以通過(guò)AndroidManifest.xml中的android:launchMode屬性設(shè)置

    • standard:默認(rèn)模式焦影。在這個(gè)模式下,都會(huì)默認(rèn)創(chuàng)建一個(gè)新的實(shí)例封断。
  • singleTop:可以多個(gè)示例斯辰。如果Activity在棧頂?shù)臅r(shí)候,啟動(dòng)相同的Activity坡疼,不會(huì)創(chuàng)建新的實(shí)例彬呻,而會(huì)調(diào)用其onNewIntent方法。

  • singleTask:只有一個(gè)實(shí)例柄瑰。在同一個(gè)應(yīng)用程序中啟動(dòng)他的時(shí)候闸氮,若Activity不存在,則會(huì)在當(dāng)前task創(chuàng)建一個(gè)新的實(shí)例教沾,若存在蒲跨,則會(huì)把task中在其之上的其它Activity destory掉并調(diào)用它的onNewIntent方法。

  • singleInstance:只有一個(gè)實(shí)例授翻。并且這個(gè)實(shí)例獨(dú)立運(yùn)行在一個(gè)task中或悲,這個(gè)task只有這個(gè)實(shí)例,不允許有別的Activity存在堪唐。

  • 橫豎屏切換時(shí)候Activity發(fā)生了什么巡语?
  • 不設(shè)置Activity的android:configChanges時(shí),切屏?xí)匦抡{(diào)用各個(gè)生命周期淮菠,切橫屏?xí)r會(huì)執(zhí)行一次男公,切豎屏?xí)r會(huì)執(zhí)行兩次
  • 設(shè)置Activity的android:configChanges="orientation"時(shí),切屏還是會(huì)重新調(diào)用各個(gè)生命周期合陵,切橫枢赔、豎屏?xí)r只會(huì)執(zhí)行一次
  • 設(shè)置Activity的android:configChanges="orientation|keyboardHidden"時(shí),切屏不會(huì)重新調(diào)用各個(gè)生命周期拥知,只會(huì)執(zhí)行onConfigurationChanged方法
  • 如果后臺(tái)的Activity由于某原因被系統(tǒng)回收了糠爬,如何在被系統(tǒng)回收之前保存當(dāng)前狀態(tài)?
  • 保存:重寫onSaveInstanceState()方法举庶,在此方法中保存需要保存的數(shù)據(jù),該方法將會(huì)在activity被回收之前調(diào)用
  • 獲瓤铡:通過(guò)重寫onRestoreInstanceState()方法可以從中提取保存好的數(shù)據(jù)
  • Android 的數(shù)據(jù)存儲(chǔ)方式

使用 SharedPreferences 存儲(chǔ)數(shù)據(jù)户侥、文件存儲(chǔ)數(shù)據(jù)镀琉、SQLite 數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)、使用 ContentProvider 存儲(chǔ)數(shù)據(jù)蕊唐、網(wǎng)絡(luò)存儲(chǔ)數(shù)據(jù)

  • SharedPreferences 存放目錄:/data/data/Package Name/Shared_Pref屋摔。以鍵值對(duì)形式存儲(chǔ)簡(jiǎn)單配置信息

  • 文件存儲(chǔ)目錄:/data/data/Package Name/files。 I / O 讀寫

  • SQLite存儲(chǔ)目錄:/data/data/Package Name/database

  • CP:向其它應(yīng)用共享數(shù)據(jù)替梨,基于Uri

  • 網(wǎng)絡(luò)存儲(chǔ):post钓试,get請(qǐng)求同步數(shù)據(jù)

  • Android 中的動(dòng)畫有哪幾類,它們的特點(diǎn)和區(qū)別是什么

兩種副瀑,一種是 Tween 動(dòng)畫弓熏、還有一種是 Frame 動(dòng)畫

  • Tween 動(dòng)畫:這種實(shí)現(xiàn)方式可以使視圖組件移動(dòng)、放大糠睡、縮小以及產(chǎn)生透明度的變化
  • Frame 動(dòng)畫:傳統(tǒng)的動(dòng)畫方法挽鞠,通過(guò)順序的播放排列好的圖片來(lái)實(shí)現(xiàn),類似電影

Android 進(jìn)階

  • 單線程模型中 Message狈孔、Handler信认、Message Queue、Looper 之間的關(guān)系

簡(jiǎn)單的說(shuō)均抽,Handler 獲取當(dāng)前線程中的 Looper 對(duì)象嫁赏,Looper 用來(lái)從存放 Message 的 MessageQueue 中取出 Message,交由 Handler 進(jìn)行 Message 的分發(fā)和處理

  • Handler 獲取當(dāng)前線程中的 Looper 對(duì)象油挥,調(diào)用 Looper.prepare() 方法
  • Handler sendMessage() 到 MessageQueue
  • Handler 調(diào)用 Looper.loop()不斷遍歷 Message Queue潦蝇,取出Message
  • Handler 回調(diào) handleMessage() 處理這個(gè)Message
  • Handler 處理完該 Message 后,Looper 則設(shè)置該 Message 為NULL喘漏,以便回
    ![Uploading MVC 模式_824399.png . . .]
  • 備注:當(dāng) Handler 對(duì)象的構(gòu)造函數(shù)的參數(shù)為空护蝶,則為當(dāng)前所在線程的 Looper; Looper.getMainLooper() 得到的是主線程的 Looper 對(duì)象翩迈,Looper.myLooper() 得到的是當(dāng)前線程的 Looper 對(duì)象
  • Activity 是如何生成一個(gè) view 的持灰?
  • Activity在attch方法的時(shí)候,會(huì)創(chuàng)建一個(gè)phonewindow(window的子類)
  • onCreate中的setContentView方法负饲,會(huì)創(chuàng)建DecorView

  • DecorView 的 addview() 方法堤魁,會(huì)把 layout 中的布局加載進(jìn)來(lái)

  • Android 中如何捕獲未捕獲的異常

  • 關(guān)鍵是實(shí)現(xiàn)Thread.UncaughtExceptionHandler
  • MVC、MVP返十、MVVM差異
  • MVC(環(huán)形通信)
    MVC 是 Model妥泉,View,Controller的縮寫洞坑,MVC包含三個(gè)部分
  • M:數(shù)據(jù)加工盲链,耗時(shí)操作、網(wǎng)絡(luò)操作等,eg:util
  • V:用戶界面刽沾,接收用戶的輸入本慕,顯示處理結(jié)果,eg:xml
  • C:橋梁作用侧漓,接收V層數(shù)據(jù)锅尘,交由M層處理,eg:activity
![MVC 模式](http://upload-images.jianshu.io/upload_images/3688153-44f8efc13bb57971.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/800)
  • MVP(雙向通信)

    • View 與 Model 不發(fā)生聯(lián)系布蔗,都通過(guò) Presenter 傳遞
    • View 非常薄藤违,不部署任何業(yè)務(wù)邏輯,稱為”被動(dòng)視圖”(Passive View)纵揍,即沒(méi)有任何主動(dòng)性顿乒,而 Presenter非常厚,所有邏輯都部署在那里
    MVP 模式
  • MVVM

    • 基本上與 MVP 模式完全一致
    • 唯一的區(qū)別是骡男,它采用雙向綁定:View的變動(dòng)淆游,自動(dòng)反映在 ViewModel,反之亦然


      MVVM.png
  • 什么是ANR隔盛,產(chǎn)生原因犹菱,如何避免?

Android ANR

  • AIDL的全稱是什么吮炕?如何工作腊脱?

全稱是:Android Interface Define Language
在Android中, 每個(gè)應(yīng)用程序都可以有自己的進(jìn)程. 在寫UI應(yīng)用的時(shí)候, 經(jīng)常要用到Service. 在不同的進(jìn)程中, 怎樣傳遞對(duì)象呢? 顯然, Java中不允許跨進(jìn)程內(nèi)存共享.
因此傳遞對(duì)象, 只能把對(duì)象拆分成操作系統(tǒng)能理解的簡(jiǎn)單形式, 以達(dá)到跨界對(duì)象訪問(wèn)的目的. 在J2EE中,采用RMI的方式, 可以通過(guò)序列化傳遞對(duì)象. 在Android中, 則
采用AIDL的方式. 理論上AIDL可以傳遞Bundle,實(shí)際上做起來(lái)卻比較麻煩。
AIDL(AndRoid接口描述語(yǔ)言)是一種借口描述語(yǔ)言; 編譯器可以通過(guò)aidl文件生成一段代碼龙亲,通過(guò)預(yù)先定義的接口達(dá)到兩個(gè)進(jìn)程內(nèi)部通信進(jìn)程的目的. 如果需要
在一個(gè)Activity中, 訪問(wèn)另一個(gè)Service中的某個(gè)對(duì)象, 需要先將對(duì)象轉(zhuǎn)化成AIDL可識(shí)別的參數(shù)(可能是多個(gè)參數(shù)), 然后使用AIDL來(lái)傳遞這些參數(shù), 在消息的接收端, 使用
這些參數(shù)組裝成自己需要的對(duì)象.AIDL的IPC的機(jī)制和COM或CORBA類似, 是基于接口的陕凹,但它是輕量級(jí)的。它使用代理類在客戶端和實(shí)現(xiàn)層間傳遞值. 如果要使用AIDL,
需要完成2件事情: 1. 引入AIDL的相關(guān)類.; 2. 調(diào)用aidl產(chǎn)生的class.
AIDL的創(chuàng)建方法:
AIDL語(yǔ)法很簡(jiǎn)單,可以用來(lái)聲明一個(gè)帶一個(gè)或多個(gè)方法的接口鳄炉,也可以傳遞參數(shù)和返回值杜耙。 由于遠(yuǎn)程調(diào)用的需要, 這些參數(shù)和返回值并不是任何類型.
下面是些AIDL支持的數(shù)據(jù)類型:
1.不需要import聲明的簡(jiǎn)單Java編程語(yǔ)言類型(int,boolean等)
2.String, CharSequence不需要特殊聲明
3.List, Map和Parcelables類型, 這些類型內(nèi)所包含的數(shù)據(jù)成員也只能是簡(jiǎn)單數(shù)據(jù)類型, String等其他比支持的類型.

  • NDK 是什么

NDK是一些列工具的集合,NDK提供了一系列的工具拂盯,幫助開發(fā)者迅速的開發(fā)C/C++的動(dòng)態(tài)庫(kù)佑女,并能自動(dòng)將so和java 應(yīng)用打成apk包。
NDK集成了交叉編譯器谈竿,并提供了相應(yīng)的mk文件和隔離cpu团驱、平臺(tái)等的差異,開發(fā)人員只需簡(jiǎn)單的修改mk文件就可以創(chuàng)建出so

  • 持續(xù)更新中空凸。嚎花。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市呀洲,隨后出現(xiàn)的幾起案子紊选,更是在濱河造成了極大的恐慌啼止,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丛楚,死亡現(xiàn)場(chǎng)離奇詭異族壳,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)趣些,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)贰您,“玉大人坏平,你說(shuō)我怎么就攤上這事撩匕∮昱” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵播揪,是天一觀的道長(zhǎng)杠园。 經(jīng)常有香客問(wèn)我顾瞪,道長(zhǎng),這世上最難降的妖魔是什么抛蚁? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任陈醒,我火速辦了婚禮,結(jié)果婚禮上瞧甩,老公的妹妹穿的比我還像新娘钉跷。我一直安慰自己,他們只是感情好肚逸,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布爷辙。 她就那樣靜靜地躺著,像睡著了一般朦促。 火紅的嫁衣襯著肌膚如雪膝晾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天务冕,我揣著相機(jī)與錄音血当,去河邊找鬼。 笑死洒疚,一個(gè)胖子當(dāng)著我的面吹牛歹颓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播油湖,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼巍扛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了乏德?” 一聲冷哼從身側(cè)響起撤奸,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤吠昭,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后胧瓜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體矢棚,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年府喳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蒲肋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡钝满,死狀恐怖兜粘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情弯蚜,我是刑警寧澤孔轴,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站碎捺,受9級(jí)特大地震影響路鹰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜收厨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一晋柱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧帽氓,春花似錦趣斤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至势腮,卻和暖如春联贩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背捎拯。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工泪幌, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人署照。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓祸泪,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親建芙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子没隘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,498評(píng)論 25 707
  • 內(nèi)容來(lái)之網(wǎng)絡(luò),因?yàn)榭吹讲季痔珌y禁荸,重新整理下右蒲,并對(duì)答案做了一些修改阀湿。如果有侵權(quán),請(qǐng)給我私信瑰妄。謝謝陷嘴。 1.下列哪些語(yǔ)句...
    蝴蝶之夢(mèng)天使閱讀 1,526評(píng)論 2 22
  • 1, 英才匯聚文學(xué)院 俺們來(lái)自大滑縣 今天展示來(lái)點(diǎn)啥 三句半 2 倆月國(guó)培來(lái)置換 心系學(xué)生兩為難 糾結(jié)痛苦不能走 ...
    幸福人生云閱讀 308評(píng)論 0 0
  • NSTimer: self 持有 timer间坐,timer 在初始化時(shí)持有 self灾挨,造成循環(huán)引用。 解決的方法就是...
    sundancer閱讀 754評(píng)論 0 1
  • 今天參加了光明書院的活動(dòng)竹宋,感覺(jué)很不錯(cuò)涨醋,說(shuō)不錯(cuò)感覺(jué)跟我平時(shí)練的不一樣,平時(shí)練功我總是挺舒服的逝撬,這次完全不一樣,不過(guò)好...
    心我聽你說(shuō)閱讀 148評(píng)論 0 0