android面試題及答案
android面試題你有了解了嗎?面試之前的準(zhǔn)備很有必要,以下是小編幫你們整理的android面試題及答案,一起來學(xué)習(xí)啦。
android面試題及答案篇一
1. Intent的幾種有關(guān)Activity啟動的方式有哪些,你了解每個(gè)含義嗎?
這里Android123提示大家,Intent的一些標(biāo)記有FLAG_ACTIVITY_BROUGHT_TO_FRONT 、FLAG_ACTIVITY_CLEAR_TOP、FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET、FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS、FLAG_ACTIVITY_MULTIPLE_TASK和FLAG_ACTIVITY_NEW_TASK 等。每種含義大家看SDK文檔和具體跑下這樣你的記憶會更深刻些。
2. Activity和Task的啟動模式有哪些? 每種含義是什么?
有關(guān)在AndroidManifest.xml中的android:launchMode定義,主要有standard、singleTop、singleTask和singleInstance,同時(shí)對于android:taskAffinity這些問題大家也要了解,Android開發(fā)網(wǎng)在以前的文章中講過,不過很多開發(fā)者仍然不是很清楚,這些基礎(chǔ)問題我們以后仍然會再次總結(jié)。
3. 通過Intent傳遞一些二進(jìn)制數(shù)據(jù)的方法有哪些?
1). 使用Serializable接口實(shí)現(xiàn)序列化,這是Java常用的方法。
2). 實(shí)現(xiàn)Parcelable接口,這里Android的部分類比如Bitmap類就已經(jīng)實(shí)現(xiàn)了,同時(shí)Parcelable在Android AIDL中交換數(shù)據(jù)也很常見的。
4. 能說下Android應(yīng)用的入口點(diǎn)嗎?
在Google的虛擬機(jī)中Application實(shí)例中已經(jīng)實(shí)現(xiàn)了main方法,有關(guān)具體的Application介紹可以參考 Android程序的入口點(diǎn)是什么,不是Main()嗎
5. Java基礎(chǔ)問題,說說HashSet和HashTable的區(qū)別?
這個(gè)相信Java程序員都知道HashSet相對于HashMap就是不能存放重復(fù)的數(shù)據(jù),對于HashTable來說,存放的數(shù)據(jù)不能出現(xiàn)key或value為null這樣的情況。
6. Java基礎(chǔ)問題,用Java的集合類寫下廣度優(yōu)先搜索.
這個(gè)屬于基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)問題,通過隊(duì)列處理一層一層,相對于深度優(yōu)先的棧處理方式來說更實(shí)用一些。
7. Android都有哪些XML解析器,都熟練掌握嗎?
這里XmlPull、SAX和DOM相信做過Web開發(fā)的都已經(jīng)滾瓜爛熟了。
8. SQLite支持事務(wù)嗎? 添加刪除如何提高性能?
SQLite作為輕量級的數(shù)據(jù)庫,比MySQL還小,但支持SQL語句查詢,提高性能可以考慮通過原始經(jīng)過優(yōu)化的SQL查詢語句方式處理。
9. Android Service和Binder、AIDL你都熟練嗎?
作為Android重要的后臺服務(wù),這些每個(gè)Android開發(fā)者都應(yīng)該掌握,這也算是和Java SE最大的不同了,具體的實(shí)例大家可以查看Android音樂播放器的源代碼Music.git中的,這里不再贅述。
10. 你用過哪款A(yù)ndroid手機(jī),有哪些優(yōu)點(diǎn)和不足,相對于iPhone或Symbian又有哪些優(yōu)缺點(diǎn)?
把這個(gè)作為面試題也是考察下,可以大概了解到它對Android的了解程度,多移動開發(fā)的認(rèn)識。
android面試題及答案篇二
1、 Android的四大組件是哪些,它們的作用?
答:Activity:Activity是Android程序與用戶交互的窗口,是Android構(gòu)造塊中最基本的一種,它需要為保持各界面的狀態(tài),做很多持久化的事情,妥善管理生命周期以及一些跳轉(zhuǎn)邏輯
service:后臺服務(wù)于Activity,封裝有一個(gè)完整的功能邏輯實(shí)現(xiàn),接受上層指令,完成相關(guān)的食物,定義好需要接受的Intent提供同步和異步的接口
Content Provider:是Android提供的第三方應(yīng)用數(shù)據(jù)的訪問方案,可以派生Content
Provider類,對外提供數(shù)據(jù),可以像數(shù)據(jù)庫一樣進(jìn)行選擇排序,屏蔽內(nèi)部數(shù)據(jù)的存儲細(xì)節(jié),向外提供統(tǒng)一的借口模型,大大簡化上層應(yīng)用,對數(shù)據(jù)的整合提供了更方便的途徑
BroadCast Receiver:接受一種或者多種Intent作觸發(fā)事件,接受相關(guān)消息,做一些簡單處理,轉(zhuǎn)換成一條Notification,統(tǒng)一了Android的事件廣播模型
2、 請介紹下Android中常用的五種布局。
常用五種布局方式,分別是:FrameLayout(框架布局),LinearLayout (線性布局),AbsoluteLayout(絕對布局),RelativeLayout(相對布局),TableLayout(表格布局)。
一、FrameLayout:所有東西依次都放在左上角,會重疊,這個(gè)布局比較簡單,也只能放一點(diǎn)比較簡單的東西。
二、LinearLayout:線性布局,每一個(gè)LinearLayout里面又可分為垂直布局(android:orientation=”vertical”)和水平布局(android:orientation=”horizontal” )。當(dāng)垂直布局時(shí),每一行就只有一個(gè)元素,多個(gè)元素依次垂直往下;水平布局時(shí),只有一行,每一個(gè)元素依次向右排列。
三、AbsoluteLayout:絕對布局用X,Y坐標(biāo)來指定元素的位置,這種布局方式也比較簡單,但是在屏幕旋轉(zhuǎn)時(shí),往往會出問題,而且多個(gè)元素的時(shí)候,計(jì)算比較麻煩。
四、RelativeLayout:相對布局可以理解為某一個(gè)元素為參照物,來定位的布局方式。主要屬性有:相對于某一個(gè)元素android:layout_below、 android:layout_toLeftOf相對于父元素的地方android:layout_alignParentLeft、android:layout_alignParentRigh;
五、TableLayout:表格布局,每一個(gè)TableLayout里面有表格行TableRow,TableRow里面可以具體定義每一個(gè)元素。每一個(gè)布局都有自己適合的方式,這五個(gè)布局元素可以相互嵌套應(yīng)用,做出美觀的界面。
3、 android中的動畫有哪幾類,它們的特點(diǎn)和區(qū)別是什么
答:兩種,一種是Tween動畫、還有一種是Frame動畫。
Tween動畫,這種實(shí)現(xiàn)方式可以使視圖組件移動、放大、縮小以及產(chǎn)生透明度的變化; 另一種Frame動畫,傳統(tǒng)的動畫方法,通過順序的播放排列好的圖片來實(shí)現(xiàn),類似電影。
4、 android 中有哪幾種解析xml的類?官方推薦哪種?以及它們的原理和區(qū)別。
答:XML解析主要有三種方式,SAX、DOM、PULL。常規(guī)在PC上開發(fā)我們使用Dom相對輕松些,但一些性能敏感的數(shù)據(jù)庫或手機(jī)上還是主要采用SAX方式,SAX讀取是單向的,優(yōu)點(diǎn):不占內(nèi)存空間、解析屬性方便,但缺點(diǎn)就是對于套嵌多個(gè)分支來說處理不是很方便。而DOM方式會把整個(gè)XML文件加載到內(nèi)存中去,這里Android開發(fā)網(wǎng)提醒大家該方法在查找方面可以和XPath很好的結(jié)合如果數(shù)據(jù)量不是很大推薦使用,而PULL常常用在J2ME對于節(jié)點(diǎn)處理比較好,類似SAX方式,同樣很節(jié)省內(nèi)存,在J2ME中我們經(jīng)常使用的KXML庫來解析。
5、 ListView的優(yōu)化方案
答:1、如果自定義適配器,那么在getView方法中要考慮方法傳進(jìn)來的參數(shù)contentView是否為null,如果為null就創(chuàng)建contentView并返回,如果不為null則直接使用。在這個(gè)方法中盡可能少創(chuàng)建view。
2、給contentView設(shè)置tag(setTag()),傳入一個(gè)viewHolder對象,用于緩存要顯示的數(shù)據(jù),可以達(dá)到圖像數(shù)據(jù)異步加載的效果。
3、如果listview需要顯示的item很多,就要考慮分頁加載。比如一共要顯示100條或者更多的時(shí)候,我們可以考慮先加載20條,等用戶拉到列表底部的時(shí)候再去加載接下來的20條。
android面試題及答案篇三
1. 橫豎屏切換時(shí)候 activity 的生命周期
1). 不設(shè)置 Activity 的 android:configChanges 時(shí) , 切屏?xí)匦抡{(diào)用各個(gè)生命周期 , 切橫屏?xí)r會執(zhí)行一次 , 切豎屏?xí)r會執(zhí)行兩次 .
2). 設(shè)置 Activity 的 Android:configChanges=‖orientation‖ 時(shí) , 切屏還是會重新調(diào)用各個(gè)生命周期 , 切橫、豎屏?xí)r只會執(zhí)行一次 .
3). 設(shè)置 Activity 的 Android:configChanges=‖orientation|keyboardHidden‖ 時(shí) , 切屏不會重新調(diào)用各個(gè)生命周期 , 只會執(zhí)行 onConfigurationChanged 方法 .
2.android 中的動畫有哪幾類,它們的特點(diǎn)和區(qū)別是什么 ?
兩種,一種是 Tween 動畫、還有一種是 Frame 動畫。 Tween 動畫,這種實(shí)現(xiàn)方式可以使視圖組件移動、放大、縮小以及產(chǎn)生透明度的變化 ; 另一種 Frame 動畫,傳統(tǒng)的動畫方法,通過順序的播放排列好的圖片來實(shí)現(xiàn),類似電影。
3. 一條最長的短信息約占多少 byte?
中文70( 包括標(biāo)點(diǎn)) ,英文160 ,160 個(gè)字節(jié)。
4.handler 機(jī)制的原理
andriod 提供了 Handler 和 Looper 來滿足線程間的通信。 Handler 先進(jìn)先出原則。 Looper 類用來管理特定線程內(nèi)對象之間的消息交換 (Message Exchange) 。
1)Looper: 一個(gè)線程可以產(chǎn)生一個(gè) Looper 對象,由它來管理此線程里的 Message Queue( 消息隊(duì)列 ) 。
2)Handler: 你可以構(gòu)造 Handler 對象來與 Looper 溝通,以便 push 新消息到 Message Queue 里; 或者接收 Looper 從 Message Queue 取出 ) 所送來的消息。
3) Message Queue( 消息隊(duì)列 ): 用來存放線程放入的消息。
4) 線程: UI thread 通常就是 main thread ,而 Android 啟動程序時(shí)會替它建立一個(gè) Message Queue 。
5. 什么是嵌入式實(shí)時(shí)操作系統(tǒng) , Android 操作系統(tǒng)屬于實(shí)時(shí)操作系統(tǒng)嗎 ?
嵌入式實(shí)時(shí)操作系統(tǒng)是指當(dāng)外界事件或數(shù)據(jù)產(chǎn)生時(shí),能夠接受并以足夠快的速度予以處理,其處理的結(jié)果又能在規(guī)定的時(shí)間之內(nèi)來控制生產(chǎn)過程或?qū)μ幚硐到y(tǒng)作出快速響應(yīng),并控制所有實(shí)時(shí)任務(wù)協(xié)調(diào)一致運(yùn)行的嵌入式操作系統(tǒng)。主要用于工業(yè)控制、軍事設(shè)備、航空航天等領(lǐng)域?qū)ο到y(tǒng)的響應(yīng)時(shí)間有苛刻的要求,這就需要使用實(shí)時(shí)系統(tǒng)。又可分為軟實(shí)時(shí)和硬實(shí)時(shí)兩種,而 android 是基于linux 內(nèi)核的,因此屬于軟實(shí)時(shí)。
看了“android面試題及答案”的人還看過:
1.
2.
3.
4.
5.