第一篇:個人面試android面試總結(jié).
本人面試過程部分有價值的題目摘錄如下:仔細(xì)想想答案都很簡單
不全但是有一定的代表性
去的幾家公司都是外包,項目緊急不會去看你項目上的那些小應(yīng)用,能干活就行。
外包IBM:考得很基礎(chǔ),但是沒真正的經(jīng)驗平時不會去記
1>dip設(shè)備獨立像素
這個和設(shè)備硬件有關(guān),一般為了支持WVGA、HVGA和QVGA 推薦使用這個,不依賴像素
480*320(160dpi):10*10dip = 10*10px 840*480(240dpi): 10*10dip = 15*15px Pixs = dips *(density / 160)2> WVGA、HVGA和QVGA 屏幕標(biāo)準(zhǔn)
3>屏幕適配.(實際項目中不會提供三套drawable圖片資源)Android對于屏幕適配的解決方案分析 圖片適配:9.png 其他適配: 1.Android將UI設(shè)計部分和代碼邏輯部分分離開來,獨立成一個XML文件,方便開發(fā)人員修改。
2.使用的長度單位是密度而不是像素。像素是自適應(yīng)的大敵,固定了絕對坐標(biāo)的像素值,就別想再好好安心地讓它自個兒適應(yīng)屏幕了。Android推薦使用dp作為長度單位。dp會根據(jù)手機的分辨率而自動調(diào)整大小。3.布局器功能強大。Android的布局器分為五種:LinearLayout,提供水平/垂直平鋪的布局器;TableLayout,提供行和 列的的布局;FrameLayout,幀布局器,提供分層的布局;AbsoluteLayout,使用絕對坐標(biāo)來定義控件的位 置;RelativeLayout,布局器中的控件用相對位置來布局。布局器的大小有自適應(yīng)內(nèi)容和與父控件相同兩種。這些布局器完全可以承擔(dān)起程序中基本 的布局要求。
4.Android中有一個密度的概念,表示每英寸有多少個顯示點。當(dāng)沒有與手機分辨率相匹配的屏幕適配方案時,會根據(jù)手機的屏幕密度選取一個最接近的屏幕密度的適配方案,這樣會讓圖片的失真達到最低。
5> Include使用與傳參 組件復(fù)用
6>橫屏豎屏切換處理
主要是切換時生命周期方法(結(jié)合你在項目中的應(yīng)用)
7>應(yīng)用程序放在真機什么目錄下 以及常見的目錄有哪些 系統(tǒng)應(yīng)用程序 system/app 自己安裝的應(yīng)用 data/app
8> 你們項目需求怎么做的,請描述下
奧信面試:(主要是他們公司項目中的東西,演示功能問怎么實現(xiàn))ImageView點擊后更改背景色
Xml:selector + item
下載后回到剛剛的頁面更新頁面ListView對應(yīng)Item的圖標(biāo)
1.startActivityForResult
2.下載完成發(fā)送廣播
從網(wǎng)絡(luò)上下載大圖片
(可以作為項目難點陳述)ListView異步加載圖片 +緩存()
Handler + 線程池 + 開啟內(nèi)存緩存(SoftReference)
Handler + 線程池 + 保存文件到SD卡上
書架的實現(xiàn)
平時多線程用到哪些(區(qū)分兩種方法的特點)Handler
AsyncTask
Canvas畫圖用法
自定義控件使用(很經(jīng)常問到)
Android應(yīng)用程序生命周期(區(qū)分與Android組件的生命周期)被請求時實例化,系統(tǒng)內(nèi)存不足被清理
Activity的啟動模式
Standard singleTop singleTask singleInstance 網(wǎng)絡(luò)7層模型 Tcp/ip(分別位于那一層)
應(yīng)用層 表示層 會話層 傳輸層
網(wǎng)絡(luò)層 數(shù)據(jù)鏈路層 物理層
常用設(shè)計模式(非重點 能答更好)簡單工廠,抽象工廠方法,代理模式,…
華訊財經(jīng): 主要是簡歷上寫的項目
由于項目都從頭到尾敲的沒啥好講的屬于閑聊吹牛的公司。
支付寶面試過程(電面主要問j2ee):
Activity中onCreate(),onStart()方法都會執(zhí)行為什么不合并為一個方法
Activity的onCreate()中啟動Service,那么onCreate()中的代碼與Service中onStart()方法中的代碼所在線程關(guān)系
耗時操作問題(主要考慮線程關(guān)系)
項目中的難點
完成??!
Android中MVC設(shè)計模式的理解
UI布局相關(guān)
一口氣說出有哪幾種布局(每種布局特點)對Http協(xié)議的理解 post/get特點 TCP/ip 多線程上傳下載
第二篇:Android面試總結(jié)
1.activity的生命周期。
activity主要生命周期的方法說明:
onCreate(Bundle savedInstanceState):創(chuàng)建activity時調(diào)用。設(shè)置在該方法中,還以Bundle的形式提供對以前儲存的任何狀態(tài)的訪問!
onStart():activity變?yōu)樵谄聊簧蠈τ脩艨梢姇r調(diào)用。
onResume():activity開始與用戶交互時調(diào)用(無論是啟動還是重新啟動一個活動,該方法總是被調(diào)用的)。
onPause():activity被暫?;蚴栈豤pu和其他資源時調(diào)用,該方法用于保存活動狀態(tài)的,也是保護現(xiàn)場,壓棧吧!
onStop():activity被停止并轉(zhuǎn)為不可見階段及后續(xù)的生命周期事件時調(diào)用。
onRestart():重新啟動activity時調(diào)用。該活動仍在棧中,而不是啟動新的活動。
onDestroy():activity被完全從系統(tǒng)內(nèi)存中移除時調(diào)用,該方法被
2.橫豎屏切換時候activity的生命周期
3.android中的動畫有哪幾類,它們的特點和區(qū)別是什么
兩種,一種是Tween動畫、還有一種是Frame動畫。Tween動畫,這種實現(xiàn)方式可以使視圖組件移動、放大、縮小以及產(chǎn)生透明度的變化;另一種Frame動畫,傳統(tǒng)的動畫方法,通過順序的播放排列好的圖片來實現(xiàn),類似電影。
{Android的animation由四種類型組成 XML中
alpha 漸變透明度動畫效果 scale漸變尺寸伸縮動畫效果
translate 畫面轉(zhuǎn)換位置移動動畫效果 rotate 畫面轉(zhuǎn)移旋轉(zhuǎn)動畫效果
JavaCode中
AlphaAnimation ScaleAnimation 漸變透明度動畫效果 漸變尺寸伸縮動畫效果
TranslateAnimation畫面轉(zhuǎn)換位置移動動畫效果 RotateAnimation 畫面轉(zhuǎn)移旋轉(zhuǎn)動畫效果
Android動畫模式
Animation主要有兩種動畫模式: 一種是tweened animation(漸變動畫)XML中 JavaCode alpha AlphaAnimation scaleScaleAnimation
一種是frame by frame(畫面轉(zhuǎn)換動畫)XML中 JavaCode translate TranslateAnimation rotate RotateAnimation
}
4.handler機制的原理:
andriod提供了 Handler 和 Looper 來滿足線程間的通信。Handler 先進先出原則。Looper類用來管理特定線程內(nèi)對象之間的消息交換(Message Exchange)。
1)Looper: 一個線程可以產(chǎn)生一個Looper對象,由它來管理此線程里的Message Queue(消息隊列)。
2)Handler: 你可以構(gòu)造Handler對象來與Looper溝通,以便push新消息到Message Queue里;或者接收Looper從Message Queue取出)所送來的消息。
3)Message Queue(消息隊列):用來存放線程放入的消息。
4)線程:UI thread 通常就是main thread,而Android啟動程序時會替它建立一個Message Queue
5.說說activity,intent,service是什么關(guān)系
[教程] 新手入門之應(yīng)用解析(Activity、Intent、Service等)
Activity, Intent, Service, IntentReceiver, ContentProvider 一般剛開始學(xué)Android時對這些基本的東西還是要明確一下的,下面的東西摘自新版android開發(fā)教程里面的,介紹比較簡單,希望能夠有幫助。
一、Activity
Activity是android中最今本的應(yīng)用程序組件,應(yīng)用程序中,一個Activity通常是一個單獨的屏幕,每一個Activity都被實現(xiàn)為一個單獨的類,這些類都是從Activity基類中繼承來的,Activity類會顯示由視圖控件組成的用戶接口,并對視圖控件的事件做出響應(yīng)。一個復(fù)雜的應(yīng)用是由多個屏幕顯示組成。這里每一個屏幕的顯示就是一個Activity,從一個屏幕的顯示到另一個新屏幕的顯示并完成相關(guān)的事件是很容易實現(xiàn)的,這些屏幕Activity是相互交互的,他們直接通信從而完成相應(yīng)的功能。當(dāng)一個新的屏幕打開時,前一個屏幕將會暫停,并保存在歷史堆棧中,用戶可以從歷史堆棧中返回前一個屏幕。當(dāng)屏幕不再使用時,我們可以從歷史堆棧中刪除它,默認(rèn)情況下,Android會保留從主屏幕到每一個應(yīng)用的運行屏幕。Activity代表一個用戶所能看到的屏幕,Activity主要是處理一個應(yīng)用的整體性工作,如監(jiān)聽系統(tǒng)事件(按鍵、觸摸屏幕等)、為用戶顯示指定的View、啟動其他Activity等,其他的Activity繼承Activity基類后,通過重寫父類的方法來實現(xiàn)各種功能。
二、Intent
Android專有類Intent的調(diào)用是用來進行架構(gòu)屏幕之間的切換的。Intent是描述應(yīng)用想要做什么。Intent數(shù)據(jù)結(jié)構(gòu)中兩個最重要的部分是動作和動作對應(yīng)的數(shù)據(jù),典型的動作類型有:Main(活動的門戶)、View、Pick、Edit等,而動作對應(yīng)的數(shù)據(jù)是應(yīng)URI的形式進行表示的,這里的URI就相當(dāng)于這些動作的ID,一個動作對應(yīng)一個動作數(shù)據(jù)。Android使用了Intent這個特殊類,實現(xiàn)在屏幕與屏幕之間的移動。Intent類用用來描述一個應(yīng)用將會做什么事情。與之有關(guān)系的一個類叫IntentFilter類,相對于intent是一個有效的做事情的請求,一個IntentFilter則用于描述一個Activity(或者IntentReceiver)能夠操作那些intent。一個Activity如果要顯示一個人的聯(lián)系方式時,需要事先聲明一個IntentFilter,這個IntentFilter要知道怎么去處理View動作和表示一個人的URI,IntentFilter需要AndroidManifest.xml中 定義,如AndroidManifest.xml中的:
通過解析各種intent,從一個屏幕導(dǎo)航到另一個屏幕是很簡單的。當(dāng)向前導(dǎo)航時,activity 將會調(diào)用startActivity(IntentmyIntent)方法。然后,系統(tǒng)會在所有安裝的應(yīng)用程序中定義的IntentFilter 中查找,找到最匹配myIntent 的Intent 對應(yīng)的activity。新的activity 接收到myIntent 的通知后,開始運行。當(dāng)startActivity 方法被調(diào)用將觸發(fā)解析myIntent 的動作,這個機制提供了兩個關(guān)鍵好處:
A、Activities 能夠重復(fù)利用從其它組件中以Intent 的形式產(chǎn)生的一個請求;
B、Activities 可以在任何時候被一個具有相同IntentFilter 的新的Activity 取代。
三、IntentReceiver
當(dāng)你希望你的應(yīng)用能夠?qū)σ粋€外部的事件(如當(dāng)電話呼入時,或者數(shù)據(jù)網(wǎng)絡(luò)可用時,或者到了晚上時)做出響應(yīng),你可以使用一個IntentReceiver。雖然IntentReceiver 在感興趣的事件發(fā)生時,會使用NotificationManage通知用戶,但它并不能生成一個UI。IntentReceiver 在AndroidManifest.xml 中注冊,但也可以在代碼中使用Context.registerReceiver()進行注冊。當(dāng)一個intentreceiver 被觸發(fā)時,你的應(yīng)用不必對請求調(diào)用intentreceiver,系統(tǒng)會在需要的時候啟動你的應(yīng)用。各種應(yīng)用還可以通過使用Context.broadcastIntent()將它們自己的intentreceiver 廣播給其它應(yīng)用程序。
四、Service
一個Service 是一段長生命周期的,沒有用戶界面的程序。比較好的一個例子就是一個正在從播放列表中播放歌曲的媒體播放器。在一個媒體播放器的應(yīng)用中,應(yīng)該會有多個activity,讓使用者可以選擇歌曲并播放歌曲。然而,音樂重放這個功能并沒有對應(yīng)的activity,因為使用者當(dāng)然會認(rèn)為在導(dǎo)航到其它屏幕時音樂應(yīng)該還在播放的。在這個例子中,媒體播放器這個activity 會使用Context.startService()來啟動一個service,從而可以在后臺保持音樂的播放。同時,系統(tǒng)也將保持這個service 一直執(zhí)行,直到這個service 運行結(jié)束。另外,我們還可以通過使用Context.bindService()方法,連接到一個service 上(如果這個service 還沒有運行將啟動它)。當(dāng)連接到一個service 之后,我們還可以service 提供的接口與它進行通訊。拿媒體播放器這個例子來說,我們還可以進行暫停、重播等操作。
五、Content Provider
Android 應(yīng)用程序能夠?qū)⑺鼈兊臄?shù)據(jù)保存到文件、SQLite 數(shù)據(jù)庫中,甚至是任何有效的設(shè)備中。當(dāng)你想將你的應(yīng)用數(shù)據(jù)與其它的應(yīng)用共享時,內(nèi)容提供器就可以發(fā)揮作用了。因為內(nèi)容提供器類實現(xiàn)了一組標(biāo)準(zhǔn)的方法,從而能夠讓其它的應(yīng)用保存或讀取此內(nèi)容提供器處理的各種數(shù)據(jù)類型。數(shù)據(jù)是應(yīng)用的核心。在Android 中,默認(rèn)使用鼎鼎大名的SQLite 作為系統(tǒng)DB。但是在Android 中,使用方法有點小小的不一樣。在Android 中每一個應(yīng)用都運行在各自的進程中,當(dāng)你的應(yīng)用需要訪問其他應(yīng)用的數(shù)據(jù)時,也就需要數(shù)據(jù)在不同的虛擬機之間傳遞,這樣的情況操作起來可能有些困難(正常情況下,你不能讀取其他的應(yīng)用的db 文件),ContentProvider 正是用來解決在不同的應(yīng)用包之間共享數(shù)據(jù)的工具。
1、所有被一個Android 應(yīng)用程序創(chuàng)建的偏好設(shè)置,文件和數(shù)據(jù)庫都是私有的。
6.android中線程與線程,進程與進程之間如何通信
1、一個 Android 程序開始運行時,會單獨啟動一個Process。
默認(rèn)情況下,所有這個程序中的Activity或者Service都會跑在這個Process。
默認(rèn)情況下,一個Android程序也只有一個Process,但一個Process下卻可以有許多個
Thread。
2、一個 Android 程序開始運行時,就有一個主線程Main Thread被創(chuàng)建。該線程主要負(fù)責(zé)UI界面的顯示、更新和控件交互,所以又叫UI Thread。
一個Android程序創(chuàng)建之初,一個Process呈現(xiàn)的是單線程模型--即Main Thread,所有的任務(wù)都在一個線程中運行。所以,Main Thread所調(diào)用的每一個函數(shù),其耗時應(yīng)該越短越好。而對于比較費時的工作,應(yīng)該設(shè)法交給子線程去做,以避免阻塞主線程(主線程被阻塞,會導(dǎo)致程序假死現(xiàn)象)。
3、Android單線程模型:Android UI操作并不是線程安全的并且這些操作必須在UI線程中執(zhí)行。如果在子線程中直接修改UI,會導(dǎo)致異常。
Android中Handler、Thread(HanlderThread)、Runnable之間的關(guān)系
首先說明Android的CPU分配的最小單元是線程,Handler一般是在某個線程里創(chuàng)建的,因而Handler和Thread就是相互綁定的,一一對應(yīng)。而Runnable是一個接口,Thread是Runnable的子類。所以說,他倆都算一個進程。HandlerThread顧名思義就是可以處理消息循環(huán)的線程,他是一個擁有Looper的線程,可以處理消息循環(huán)。與其說Handler和一個線程綁定,不如說Handler是和Looper一一對應(yīng)的。最后需要說明的是,在UI線程(主線程)中: mHandler=new Handler();mHandler.post(new Runnable(){ void run(){ //執(zhí)行代碼...} });這個線程其實是在UI線程之內(nèi)運行的,并沒有新建線程。
常見的新建線程的方法是: Thread thread = new Thread();thread.start();HandlerThread thread = new HandlerThread(“string”);thread.start();
7.widget相對位置的完成在antivity的哪個生命周期階段實現(xiàn)
onStart
8.說說mvc模式的原理,它在android中的運用 : MVC(Model_view_contraller)”模型_視圖_控制器”。MVC 應(yīng)用程序總是由這三個部分組成。Event(事件)導(dǎo)致 Controller改變 Model 或View,或者同時改變兩者。只要 Controller改變了 Models 的數(shù)據(jù)或者屬性,所有依賴的 View 都會自動更新。類似的,只要 Controller改變了 View,View會從潛在的 Model 中獲取數(shù)據(jù)來刷新自己。
9.說說在android中有哪幾種數(shù)據(jù)存儲方式
在Android中,可供選擇的存儲方式有SharedPreferences、文件存儲、SQLite數(shù)據(jù)庫方式、內(nèi)容提供器(Content provider)和網(wǎng)絡(luò)
10.android中有哪幾種解析xml的類,官方推薦哪種?以及它們的原理和區(qū)別
DOM、SAX(Simple API for XML)、XmlPullParser
11.listview你是怎么優(yōu)化的。
Adapter的作用就是ListView界面與數(shù)據(jù)之間的橋梁,當(dāng)列表里的每一項顯示到頁面時,都會調(diào)用Adapter的getView方法返回一個View。想過沒有? 在我們的列表有1000000項時會是什么樣的?是不是會占用極大的系統(tǒng)資源?
先看看下面的代碼:
public View getView(int position, View convertView, ViewGroup parent){
View item = mInflater.inflate(R.layout.list_item_icon_text, null);
((TextView)item.findViewById(R.id.text)).setText(DATA[position]);
((ImageView)item.findViewById(R.id.icon)).setImageBitmap((position & 1)== 1 ? mIcon1 : mIcon2);
return item;
}
怎么樣?如果超過1000000項時,后果不堪設(shè)想!您可千萬別這么寫!
我們再來看看下面的代碼:
public View getView(int position, View convertView, ViewGroup parent){
if(convertView == null){
convertView = mInflater.inflate(R.layout.item, null);
}
((TextView)convertView.findViewById(R.id.text)).setText(DATA[position]);
((ImageView)convertView.findViewById(R.id.icon)).setImageBitmap((position & 1)== 1 ? mIcon1 : mIcon2);
return convertView;
}
怎么樣,上面的代碼是不是好了很多?系統(tǒng)將會減少創(chuàng)建很多View。性能得到了很大的提升。
還有沒有優(yōu)化的方法呢? 答案是肯定的:
public View getView(int position, View convertView, ViewGroup parent){
ViewHolder holder;
if(convertView == null){
convertView = mInflater.inflate(R.layout.list_item_icon_text, null);
holder = new ViewHolder();
holder.text =(TextView)convertView.findViewById(R.id.text);
holder.icon =(ImageView)convertView.findViewById(R.id.icon);
convertView.setTag(holder);
} else {
holder =(ViewHolder)convertView.getTag();
}
holder.text.setText(DATA[position]);
holder.icon.setImageBitmap((position & 1)== 1 ? mIcon1 : mIcon2);
return convertView;
}
static class ViewHolder {
TextView text;
ImageView icon;
}
怎么樣?會不會又給您的系統(tǒng)帶來很大的提升呢?看看下面三種方式的性能對比圖您就知道了!
12.view的刷新
Android中對View的更新有很多種方式,使用時要區(qū)分不同的應(yīng)用場合。我感覺最要緊的是分清:多線程和雙緩沖的使用情況。
1.不使用多線程和雙緩沖
這種情況最簡單了,一般只是希望在View發(fā)生改變時對UI進行重繪。你只需在Activity中顯式地調(diào)用View對象中的invalidate()方法即可。系統(tǒng)會自動調(diào)用 View的onDraw()方法。
2.使用多線程和不使用雙緩沖
這種情況需要開啟新的線程,新開的線程就不好訪問View對象了。強行訪問的話會報:android.view.ViewRoot$CalledFromWrongThreadException:Only the original thread that created a view hierarchy can touch its views.這時候你需要創(chuàng)建一個繼承了android.os.Handler的子類,并重寫handleMessage(Message msg)方法。android.os.Handler是能發(fā)送和處理消息的,你需要在Activity中發(fā)出更新UI的消息,然后再你的Handler(可以使用匿名內(nèi)部類)中處理消息(因為匿名內(nèi)部類可以訪問父類變量,你可以直接調(diào)用View對象中的invalidate()方法)。也就是說:在新線程創(chuàng)建并
發(fā)送一個Message,然后再主線程中捕獲、處理該消息。
3.使用多線程和雙緩沖
Android中SurfaceView是View的子類,她同時也實現(xiàn)了雙緩沖。你可以定義一個她的子類并實現(xiàn)SurfaceHolder.Callback接口。由于實現(xiàn)SurfaceHolder.Callback接口,新線程就不需要android.os.Handler幫忙了。SurfaceHolder中l(wèi)ockCanvas()方法可以鎖定畫布,繪制玩新的圖像后調(diào)用unlockCanvasAndPost(canvas)解鎖(顯示),還是比較方便得。
13.IPC及原理
什么是Android操作系統(tǒng),所謂的Android:是基于Linux內(nèi)核的軟件平臺和操作系統(tǒng),早期由Google開發(fā),后由開放手機聯(lián)盟Open Handset Alliance)開發(fā)。
Linux系統(tǒng)中進程間通信的方式有:socket, named pipe,message queque, signal,share memory。Java系統(tǒng)中的進程間通信方式有socket, named pipe等。android應(yīng)用程序理所當(dāng)然可以應(yīng)用JAVA的IPC
機制實現(xiàn)進程間的通信,取而代之的是Binder通信。Google為什么要采用這種方式呢,這取決于Binder通信方式的高效率。Binder通信是通過linux的binder driver來實現(xiàn)的。Binder通信操作類似線程遷移(thread migration),兩個進程間IPC看起來就象是一個進程進入另一個進程執(zhí)行代碼然后帶著執(zhí)行的結(jié)果返回。Binder的用戶空間為每一個進程維護著一個可用的線程池,線程池用于處理到來的IPC以及執(zhí)行進程本地消息,Binder通信是同步而不是異步。Android中的Binder通信是基于Service與Client的,所有需要IBinder通信的進程都必須創(chuàng)建一個IBinder接口。
系統(tǒng)中有一個進程管理所有的system service,Android虛擬機不允許用戶添加非授權(quán)的System service,當(dāng)然現(xiàn)在源碼開發(fā)了,我們可以修改一些代碼來實現(xiàn)添加底層system Service的目的。
對用戶程序來說,我們也要創(chuàng)建server,或者Service用于進程間通信,這里有一ActivityManagerService管理JAVA應(yīng)用層所有的service創(chuàng)建與連接(connect)。disconnect,所有的 Activity也是通過這個service來啟動,加載的。ActivityManagerService也是加載在Systems Servcie中的。
Android虛擬機啟動之前系統(tǒng)會先啟動service Manager進程,service Manager打開binder驅(qū)動,并通知binder kernel驅(qū)動程序這個進程將作為System Service Manager。然后該進程將進入一個循環(huán),等待處理來自其他進程的數(shù)據(jù)。用戶創(chuàng)建一個System service后,通過defaultServiceManager得到一個
遠(yuǎn)程ServiceManager的接口。
通過這個接口我們可以調(diào)用 addService函數(shù)將System service添加到Service Manager進程中,然后client可以通過getService獲取到需要連接的目的Service的IBinder對象。這個IBinder是 Service的BBinder在binder kernel的一個參考,所以service IBinder 在binder kernel中不會存在相同的兩個
IBinder對象。
每一個Client進程同樣需要打開Binder驅(qū)動程序。對用戶程序而言,我們獲得這個對象就可以通過binder kernel訪問service對象中的方法。Client與Service在不同的進程中,通過這種方式實現(xiàn)了類似線程間的遷移的通信方式,對用戶程序而言當(dāng)調(diào)用Service返回的IBinder接口后,訪問Service中的方法就
如同調(diào)用自己的函數(shù)。實現(xiàn)接口時有幾個原則:
拋出的異常不要返回給調(diào)用者.跨進程拋異常處理是不可取的。IPC調(diào)用是同步的。如果你知道一個IPC服務(wù)需要超過幾毫秒的時間才能完成地話,你應(yīng)該避免在Activity的主線程中調(diào)用。
也就是IPC調(diào)用會掛起應(yīng)用程序?qū)е陆缑媸ロ憫?yīng).這種情況應(yīng)該考慮單起一個線程來處理,能在AIDL接口中聲明靜態(tài)屬性。IPC的調(diào)用步驟:
1.聲明一個接口類型的變量,該接口類型在.aidl文件中定義。
2.實現(xiàn)ServiceConnection。
3.調(diào)用ApplicationContext.bindService(),并在ServiceConnection實現(xiàn)中進行傳遞.4.在ServiceConnection.onServiceConnected()實現(xiàn)中,你會接收一個IBinder實例(被調(diào)用的Service).調(diào)用 YourInterfaceName.Stub.asInterface((IBinder)service)將參數(shù)轉(zhuǎn)換YourInterface類型。
5.調(diào)用接口中定義的方法。你總要檢測到DeadObjectException異常,該異常在連接斷開時被拋
出。它只會被遠(yuǎn)程方法拋出。
6.斷開連接,調(diào)用接口實例中的ApplicationContext.unbindService()
14.Android多線程
在Android下面也有多線程的概念,在C/C++中,子線程可以是一個函數(shù),一般都是一個帶有循環(huán)的函數(shù),來處理某些數(shù)據(jù),優(yōu)先線程只是一個復(fù)雜的運算過程,所以可能不需要while循環(huán),運算完成,函數(shù)結(jié)束,線程就銷毀。對于那些需要控制的線程,一般我們都是和互斥鎖相互關(guān)聯(lián),從而來控制線程的進度,一般我們創(chuàng)建子線程,一種線程是很常見的,那就是帶有消息循環(huán)的線程。
消息循環(huán)是一個很有用的線程方式,曾經(jīng)自己用C在Linux下面實現(xiàn)一個消息循環(huán)的機制,往消息隊列里添加數(shù)據(jù),然后異步的等待消息的返回。當(dāng)消息隊列為空的時候就會掛起線程,等待新的消息的加入。這是一個很通用的機制。在Android,這里的線程分為有消息循環(huán)的線程和沒有消息循環(huán)的線程,有消息循環(huán)的線程一般都會有一個Looper,這個事android的新概念。我們的主線程(UI線程)就是一個消息循環(huán)的線程。針對這種消息循環(huán)的機制,我們引入一個新的機制Handle,我們有消息循環(huán),就要往消息循環(huán)里面發(fā)送相應(yīng)的消息,自定義消息一般都會有自己對應(yīng)的處理,消息的發(fā)送和清除,消息的的處理,把這些都封裝在Handle里面,注意Handle只是針對那些有Looper的線程,不管是UI線程還是子線程,只要你有Looper,我就可以往你的消息隊列里面添加?xùn)|西,并做相應(yīng)的處理。
但是這里還有一點,就是只要是關(guān)于UI相關(guān)的東西,就不能放在子線程中,因為子線程是不能操作UI的,只能進行數(shù)據(jù)、系統(tǒng)等其他非UI的操作。
15.Android為什么要設(shè)計4大組件,他們之間的聯(lián)系,不設(shè)計行不行(主要是為了實現(xiàn)MVC模式,然而java中最難的模式也是這個,很少有產(chǎn)品能將這個模式做得很好【Technicolor 的面試官問的這個】
16,service的周期,activity的周期,談下你對Android內(nèi)部應(yīng)用的了解,比如他做電話,以及聯(lián)系人等等應(yīng)用??蚣軐佑泻芏鄸|西還是多看看,熟悉Android怎么做的,不管你做應(yīng)用程開發(fā)還是應(yīng)用框架層開發(fā)很有好處的。在就是你項目經(jīng)驗,突出你遇到什么難點,然后是怎么解決的!盡量將每個技術(shù)點凸顯出來,當(dāng)然面試官有時候會為了體現(xiàn)你是否真正做過,他會問你,你在這個應(yīng)用中做那個模塊,用了多少個類之類的問題。偶爾有的面試官會問你,你用過Android自帶的單元測試了沒,怎么用的?當(dāng)然我面試過很多家單位,有 的是做平板,手機,數(shù)字電視,有的是做出個erp之類的客戶端等等,出于前面的三個,基本上都是將Android的全部改掉,如果真正要做Android的話,大家要學(xué)的還很多??傊?,一句話,什么樣的面試官都有,去面試的時候要做好一切心理準(zhǔn)備,不管是技術(shù)還是基礎(chǔ)都得扎實。一個人的交談能力也很重要,總之不是非常標(biāo)準(zhǔn)的普通話,最起碼你說的得讓別人聽得懂,而且得把面試官講得非常徹底,這樣你獲得offer的機會更大,談工資也有優(yōu)勢~~當(dāng)然曾經(jīng)一家公司的面試官跟我說過,技術(shù)是不惜錢的,只要你有能力,多少錢他都請。_ 確實,來北京求職期間,牛人真的很多,而且有的面試官也非常好,給了很多忠肯的意見。并不是每個面試官都特想為難你的~最主要的還是想知道你的技術(shù),因為他們也是吃公司飯,得為這個負(fù)責(zé)。
Basic:
1.基本的UI控件和布局文件
2.UI配套的Adapter的使用
3.Activity, Intent,Service,broadCast Receiver他們的生命周期管理熟悉一下
4.操作手機上的數(shù)據(jù)庫SQLite應(yīng)用
17.為什么看好 Android
對于開發(fā)人員來講:上手容易,入門簡單,api齊全,適應(yīng)性強 對于用戶來講:軟件豐富,系統(tǒng)穩(wěn)定,功能齊全 對于開發(fā)商來講:可定制性高,開發(fā)成本低,免費。
18.現(xiàn)在在公司做哪些工作(關(guān)于 Android)錯
手機軟件開發(fā)一般是分平臺的,目前比較火的是iPhone和Android手機平臺上的軟件開發(fā)。
一般大學(xué)計算機畢業(yè),都會學(xué)過相應(yīng)的編程語言,比如C或C++,有這兩種語言做為基礎(chǔ),相信你可以快速去掌握其他的編程語言。
如果你想從事iPhone平臺上的開發(fā)就要去學(xué)習(xí)Obj-C語言,想從事Android平臺上的就學(xué)習(xí)Java語言,除了掌握語言以后,還有的就是不同平臺上的開發(fā)工具。
如果你想從事手機軟件開發(fā)方面的工作的話,我建議你可以選擇一家專業(yè)的移動互聯(lián)網(wǎng)開發(fā)培訓(xùn)學(xué)校,參加專業(yè)的培訓(xùn)能幫助你更系統(tǒng)更扎實的掌握目前最先進的技術(shù)
19.Android 的框架以及一些基礎(chǔ)知識
20.Android 一些方面的領(lǐng)悟(如Android框架的 IoC特性,View System 的狀態(tài)機機制等)
21.對多線程的運用和理解,及多線程之間handle的傳值。
22.對android 虛擬機的理解,包括內(nèi)存管理機制垃圾回收機制。
23.framework工作方式及原理,Activity是如何生成一個view的,機制是什么。
24.android本身的一些限制,不如apk包大小限制,讀取大文件時的時間限制。
25.Linux中跨進程通信的集中方式
1.socket;
2.name pipe命名管道; 3.message queue消息隊列; 4.singal信號量;
5.share memory共享內(nèi)存;
26.dvm的進程和Linux的進程, 應(yīng)用程序的進程是否為同一個概念
DVM指dalivk的虛擬機。每一個Android應(yīng)用程序都在它自己的進程中運行,都擁有一個獨立的Dalvik虛擬機實例。而每一個DVM都是在Linux 中的一個進程,所以說可以認(rèn)為是同一個概念。
27.sim卡的EF 文件有何作用
sim卡的文件系統(tǒng)有自己規(guī)范,主要是為了和手機通訊,sim本 身可以有自己的操作系統(tǒng),EF就是作存儲并和手機通訊用的
28.AT命令的User case的概念
1、Use Case的作用:
我個人認(rèn)為Use Case僅僅用來反映用戶需求,并且在對象分析過程中,能夠起到一個查漏補缺的作用。但是使用“先確定Use Case,再指認(rèn)對象”實在是一種愚蠢的方法(恕我直言)。我個人認(rèn)為,指認(rèn)對象使用Yourdon在《Objuect Oriented Analysis》中提到的使用CheckList的方法在實踐中是比較實用的。我近來讀到的幾本書,也印證了我的想法。就我我個人在實踐中的經(jīng)驗,使用“首先確定Use Case”策略,非常容易導(dǎo)致分析員滑入“功能分解”的泥沼。而且從Use Case來導(dǎo)出對象將導(dǎo)致拙劣的分析模型。
2、Use Case之間的關(guān)系:
UML 1.3中,Use Case之間的關(guān)系只有3種,Generalization,Include和Extend,國內(nèi)出版的關(guān)于UML的中文書有兩本,一本是《UML從入門到精通》(其實應(yīng)該叫做Rose入門),一本是北航的《面向?qū)ο蟮目梢暬<夹g(shù)》,后一本書在這個方面起到了很壞的作用(前一本書我沒有怎么看,大概也好不到哪里去),一是使用了比較老的UML標(biāo)準(zhǔn),比如使用了Use關(guān)系,而且對于Extend和Generalization關(guān)系的描述也很混亂,很多人受到了誤導(dǎo)(尤其是Extend關(guān)系)。我建議有條件的網(wǎng)友盡量去看英文原版的著作,比如“UML三劍客”的《Unified Modeling Language User Guide》或者直接去讀UML1.3的規(guī)范。(而且Use Case之間的關(guān)系是用虛線+箭頭表示的,直到Rose 2000對此都沒有支持)
3、Actor和Use Case之間的關(guān)系:
在UML 1.3之中,Actor和Use Case之間的關(guān)系應(yīng)該是沒有箭頭的。雖然規(guī)范中并沒有明確禁止使用箭頭,但是從字句中隱含的意義來看,應(yīng)該是沒有箭頭的,而且規(guī)范中給出的示例是沒有箭頭的。我認(rèn)識的很多人,想當(dāng)然的認(rèn)為Actor和Use Case之間的關(guān)系上的箭頭標(biāo)示信息流向或者主/被動關(guān)系,其實這個關(guān)系僅僅表示某個Actor參與了某個Use Case。
29﹑Android 手機操作系統(tǒng)的四層架構(gòu)?
架構(gòu)框架以此從上到下:
1.Applications
(應(yīng)用程序(應(yīng)用層));
Android 會同一系列核心應(yīng)用程序包一起發(fā)布,該應(yīng)用程序包包括 email 客戶端,SMS 短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。所有的應(yīng)用程序都是使用 JAVA 語 言編寫的。
2.Application FrameWork
(應(yīng)用程序擴展層(框架));
由于 Android 的手機操作系統(tǒng)是,基于 Liunx 2.6 系統(tǒng)之上封裝而成。所以開發(fā)人員可也以直接訪問核心程序所使用的API框架,該核心應(yīng)用程序的API框架設(shè)計簡化了組件的重用,任何一個核心應(yīng)用程序(模塊)都暴露出它的功能作用,并且其他應(yīng)用程序也都可以使用該核心應(yīng)用程序(模塊)的功能(不過的遵守該核心應(yīng)用程序框架的安全性限制)。同樣,該應(yīng)用程序的重用機制也使用戶方便使用應(yīng)程序的相關(guān)組件。API 框架隱藏的核心應(yīng)用程序是一系列的應(yīng)用程序的服務(wù)和系統(tǒng)應(yīng)用,其中包括如下:
(Android 手機中的 View 是最基本的一個 UI 類)豐富而又可擴展的視圖(手機界面所顯示的組件(Activity上所顯示的))組件,可以用來構(gòu)建應(yīng)用程序
如:(視圖)Views, 網(wǎng)格(grids), 文本框(text boxes), 按鈕(button), 放置圖片區(qū)(imageview),文本編輯區(qū)
(edittext), 文本顯示區(qū)(textview),3.Android RunTime Libraries
(Android 系統(tǒng)運行庫);
4.Liunx Kernel
(Android 系統(tǒng)最底層核心系統(tǒng) Liunx)
Android 的核心系統(tǒng)服務(wù)依賴于 Liunx 2.6 內(nèi)核,如系統(tǒng)安全,內(nèi)存管理,進程管理,網(wǎng)絡(luò)協(xié)議棧和驅(qū)動模型。Liunx 內(nèi)核也同時作為硬件和軟件棧之間的抽象層。
30、Android dvm的進程和 Linux 的進程, 應(yīng)用程序的進程是否為同一個概念
DVM 指 dalivk 的虛擬機。每一個 Android 應(yīng)用程序都在它自己的進程中運行,都擁有一個獨立的 Dalvik 虛擬機實例。而每一個 DVM 都是在 Linux 中的一個進程,所以說可以認(rèn)為是同一個概念。
31、sim卡的 EF 文件有何作用
sim 卡的文件系統(tǒng)有自己規(guī)范,主要是為了和手機通訊,sim 本身可以有自己的操作 系統(tǒng),EF就是作存儲并和手機通訊用的
32、嵌入式操作系統(tǒng)內(nèi)存管理有哪幾種,各有何特性
頁式,段式,段頁,用到了 MMU,虛擬空間等技術(shù)
33.什么是嵌入式實時操作系統(tǒng), Android 操作系統(tǒng)屬于實時操作系統(tǒng)嗎?
嵌入式實時操作系統(tǒng)是指當(dāng)外界事件或數(shù)據(jù)產(chǎn)生時,能夠接受并以足夠快的速度予以 處理,其處理的結(jié)果又能在規(guī)定的時間之內(nèi)來控制生產(chǎn)過程或?qū)μ幚硐到y(tǒng)作出快速響應(yīng),并 控制所有實時任務(wù)協(xié)調(diào)一致運行的嵌入式操作系統(tǒng)。主要用于工業(yè)控制、軍事設(shè)備、航空航天等領(lǐng)域?qū)ο到y(tǒng)的響應(yīng)時間有苛刻的要求,這就需要使用實時系統(tǒng)。又可分為軟實時和硬實時兩種,而 android 是基于 linux 內(nèi)核的,因此屬于軟實時。
34、一條最長的短信息約占多少 byte?
中文 70(包括標(biāo)點),英文 160,160 個字節(jié)
1.2.3.4.5.6.7.8.9.10.11.12.13.14.什么是Activity?
請描述一下Activity生命周期。
兩個Activity之間跳轉(zhuǎn)時必然會執(zhí)行的是哪幾個方法。
橫豎屏切換時候Activity的生命周期。
如何將一個Activity設(shè)置成窗口的樣式。
你后臺的Activity被系統(tǒng) 回收怎么辦?
如何退出Activity?如何安全退出已調(diào)用多個Activity的Application?
如果后臺的Activity由于某原因被系統(tǒng)回收了,如何在被系統(tǒng)回收之前保存當(dāng)前狀態(tài)?
兩個Activity之間怎么傳遞數(shù)據(jù)?
怎么讓在啟動一個Activity是就啟動一個service?
同一個程序,但不同的Activity是否可以放在不同的Task任務(wù)棧中?
Activity怎么和service綁定,怎么在activity中啟動自己對應(yīng)的service? 什么是Service以及描述下它的生命周期。
Service有哪些啟動方法,有什么區(qū)別,怎樣停用Service?
15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.不用service,B頁面為音樂播放,從A跳轉(zhuǎn)到B,再返回,如何使音樂繼續(xù)播放?
什么是IntentService?有何優(yōu)點? 什么時候使用Service?
請描述一下Intent 和 Intent Filter。Intent傳遞數(shù)據(jù)時,可以傳遞哪些類型數(shù)據(jù)? 說說Activity,Intent,Service是什么關(guān)系。請描述一下Broadcast Receiver。
在manifest和代碼中如何注冊和使 用 broadcast receiver。請介紹下ContentProvider是如何實現(xiàn)數(shù)據(jù)共享的。請介紹下Android的數(shù)據(jù)存儲方式。
為什么要用ContentProvider?它和sql的實現(xiàn)上有什么差別? 請介紹下Android中常用的五種布局。
談?wù)刄I中,Padding和Margin有什么區(qū)別?
widget相對位置的完成在antivity的哪個生命周期階段實現(xiàn)。
請解釋下在單線程模型中Message、Handler、Message Queue、Looper之間的關(guān)系。AIDL的全稱是什么?如何工作?能處理哪些類型的數(shù)據(jù)?
請解釋下Android程序運行時權(quán)限與文件系統(tǒng)權(quán)限的區(qū)別。
系統(tǒng)上安裝了多種瀏覽器,能否指定某瀏覽器訪問指定頁面?
對多線程的運用和理解,及多線程之間handle的傳值。對android虛擬機的理解,包括內(nèi)存管理機制垃圾回收機制。
Framework工作方式及原理,Activity是如何生成一個view的,機制是什么。android本身的一些限制,比如apk包大小限制,讀取大文件時的時間限。如何加載的音樂信息,如何改善其效率。
ListView如何提高其效率?
啟動應(yīng)用后,改變系統(tǒng)語言,應(yīng)用的語言會改變么?
啟動一個程序,可以主界面點擊圖標(biāo)進入,也可以從一個程序中跳轉(zhuǎn)過去,二者有什么區(qū)別?
Android程序與Java程序的區(qū)別?
Android中Task任務(wù)棧的分配。
在Android中,怎么節(jié)省內(nèi)存的使用,怎么主動回收內(nèi)存?
不同工程中的方法是否可以相互調(diào)用?
在Android中是如何實現(xiàn)判斷區(qū)分通話記錄中的電話狀態(tài),去電,來電、未接來電?
dvm的進程和Linux的進程, 應(yīng)用程序的進程是否為同一個概念
sim卡的EF 文件有何作用
如何判斷是否有SD卡?
嵌入式操作系統(tǒng)內(nèi)存管理有哪幾種,各有何特性。
什么是嵌入式實時操作系統(tǒng), Android 操作系統(tǒng)屬于實時操作系統(tǒng)嗎? 一條最長的短信息約占多少byte? Linux中跨進程通信的幾種方式。談?wù)剬ndroid NDK的理解。
談?wù)凙ndroid的優(yōu)點和不足之處。
Android系統(tǒng)中GC什么情況下會出現(xiàn)內(nèi)存泄露呢? Android UI中的View如何刷新。簡單描述下Android 數(shù)字簽名。什么是ANR 如何避免它?
59.60.61.62.63.64.65.66.android中的動畫有哪幾類,它們的特點和區(qū)別是什么?
handler機制的原理。
android中線程與線程,進程與進程之間如何通信。
說說mvc模式的原理,它在android中的運用。
android中有哪幾種解析xml的類,官方推薦哪種?以及它們的原理和區(qū)別。
DDMS與TraceView的區(qū)別? res目錄有默認(rèn)幾項resource。android的哪個版本是一次重大的升級?
第三篇:android面試指南
1、activity的生命周期。
activity主要生命周期的方法說明:
1)onCreate(Bundle savedInstanceState):創(chuàng)建activity時調(diào)用。設(shè)置在該方法中,還以Bundle的形式提供對以前儲存的任何狀態(tài)的訪問!
2)onStart():activity變?yōu)樵谄聊簧蠈τ脩艨梢姇r調(diào)用。
3)onResume():activity開始與用戶交互時調(diào)用(無論是啟動還是重新啟動一個活動,該方法總是被調(diào)用的)。
4)onPause():activity被暫?;蚴栈豤pu和其他資源時調(diào)用,該方法用于保存活動狀態(tài)的,也是保護現(xiàn)場,壓棧吧!
5)onStop():activity被停止并轉(zhuǎn)為不可見階段及后續(xù)的生命周期事件時調(diào)用。
6)onRestart():重新啟動activity時調(diào)用。該活動仍在棧中,而不是啟動新的活動。
7)onDestroy():activity被完全從系統(tǒng)內(nèi)存中移除時調(diào)用,該方法被
2.橫豎屏切換時候activity的生命周期
3.android中的動畫有哪幾類,它們的特點和區(qū)別是什么
4.handler機制的原理
5.說說activity,intent,service是什么關(guān)系
6.android中線程與線程,進程與進程之間如何通信
7.widget相對位置的完成在antivity的哪個生命周期階段實現(xiàn)
8.說說mvc模式的原理,它在android中的運用
9.說說在android中有哪幾種數(shù)據(jù)存儲方式
10.android中有哪幾種解析xml的類,官方推薦哪種?以及它們的原理和區(qū)別 一,listview你是怎么優(yōu)化的。
二,view的刷新,之前說過
三,IPC及原理
四,Android多線程
五,Android為什么要設(shè)計4大組件,他們之間的聯(lián)系,不設(shè)計行不行(主要是為了實現(xiàn)MVC模式,然而java中最難的模式也是這個,很少有產(chǎn)品能將這個模式做得很好【Technicolor的面試官問的這個】
六,service的周期,activity的周期,談下你對Android內(nèi)部應(yīng)用的了解,比如他做電話,以及聯(lián)系人等等應(yīng)用。框架層有很多東西還是多看看,熟悉Android怎么做的,不管你做應(yīng)用程開發(fā)還是應(yīng)用框架層開發(fā)很有好處的。
在就是你項目經(jīng)驗,突出你遇到什么難點,然后是怎么解決的!盡量將每個技術(shù)點凸顯出來,當(dāng)然面試官有時候會為了體現(xiàn)你是否真正做過,他會問你,你在這個應(yīng)用中做那個模塊,用了多少個類之類的問題。
偶爾有的面試官會問你,你用過Android自帶的單元測試了沒,怎么用的?當(dāng)然我面試過很多家單位,有的是做平板,手機,數(shù)字電視,有的是做出 個erp之類的客戶端等等,出于前面的三個,基本上都是將Android的全部改掉,如果真正要做Android的話,大家要學(xué)的還很多。
總之,一句話,什么樣的面試官都有,去面試的時候要做好一切心理準(zhǔn)備,不管是技術(shù)還是基礎(chǔ)都得扎實。一個人的交談能力也很重要,總之不是非常標(biāo)準(zhǔn) 的普通話,最起碼你說的得讓別人聽得懂,而且得把面試官講得非常徹底,這樣你獲得offer的機會更大,談工資也有優(yōu)勢~~當(dāng)然曾經(jīng)一家公司的面試官跟我 說過,技術(shù)是不惜錢的,只要你有能力,多少錢他都請。_
確實,來北京求職期間,牛人真的很多,而且有的面試官也非常好,給了很多忠肯的意見。并不是每個面試官都特想為難你的~最主要的還是想知道你的技術(shù),因為他們也是吃公司飯,得為這個負(fù)責(zé)。
Basic:
1.基本的UI控件和布局文件
2.UI配套的Adapter的使用
3.Activity, Intent,Service,broadCast Receiver他們的生命周期管理熟悉一下
4.操作手機上的數(shù)據(jù)庫SQLite應(yīng)用
Advanced_1:
1.為什么看好 Android
2.現(xiàn)在在公司做哪些工作(關(guān)于 Android)
3.Android 的框架以及一些基礎(chǔ)知識
4.Android 一些方面的領(lǐng)悟(如Android框架的 IoC特性,View System 的狀態(tài)機機制等)
Advanced_2:
1.對多線程的運用和理解,及多線程之間handle的傳值。
2.對android 虛擬機的理解,包括內(nèi)存管理機制垃圾回收機制。
3.framework工作方式及原理,Activity是如何生成一個view的,機制是什么。
4.android本身的一些限制,不如apk包大小限制,讀取大文件 時的時間限制。
5.Linux中跨進程通信的集中方式
Android_4:
1.dvm的進程和Linux的進程, 應(yīng)用程序的進程是否為同一個概念
2.sim卡的EF 文件有何作用
3.AT命令的User case的概念
4.嵌入式操作系統(tǒng)內(nèi)存管理有哪幾種,各有何特性
5.什么是嵌入式實時操作系統(tǒng), Android 操作系統(tǒng)屬于實時操作系統(tǒng)嗎?
6.一條最長的短信息約占多少byte?
補充:
近期很多公司招聘Android程序員,就一些常見的Android面試基礎(chǔ)題做下總結(jié),看看你能做出多少道?
1.Intent的幾種有關(guān)Activity啟動的方式有哪些,你了解每個含義嗎? 這里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,同時對于android:taskAffinity這些問題大家也要了解,Android開發(fā)網(wǎng)在 以前的文章中講過,不過很多開發(fā)者仍然不是很清楚,這些基礎(chǔ)問題我們以后仍然會再次總結(jié)。
3.通過Intent傳遞一些二進制數(shù)據(jù)的方法有哪些?
1).使用Serializable接口實現(xiàn)序列化,這是Java常用的方法。
2).實現(xiàn)Parcelable接口,這里Android的部分類比如Bitmap類就已經(jīng)實現(xiàn)了,同時Parcelable在Android AIDL中交換數(shù)據(jù)也很常見的。
4.能說下Android應(yīng)用的入口點嗎?
在Google的虛擬機中Application實例中已經(jīng)實現(xiàn)了main方法,有關(guān)具體的Application介紹可以參考 Android程序的入口點是什么,不是Main()嗎
5.Java基礎(chǔ)問題,說說HashSet和HashTable的區(qū)別?
這個相信Java程序員都知道HashSet相對于HashMap就是不能存放重復(fù)的數(shù)據(jù),對于HashTable來說,存放的數(shù)據(jù)不能出現(xiàn)key或value為null這樣的情況。
6.Java基礎(chǔ)問題,用Java的集合類寫下廣度優(yōu)先搜索.這個屬于基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)問題,通過隊列處理一層一層,相對于深度優(yōu)先的棧處理方式來說更實用一些。
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ù),這些每個Android開發(fā)者都應(yīng)該掌握,這也算是和Java SE最大的不同了,具體的實例大家可以查看Android音樂播放器的源代碼Music.git中的,這里不再贅述。
10.你用過哪款A(yù)ndroid手機,有哪些優(yōu)點和不足,相對于iPhone或Symbian又有哪些優(yōu)缺點?
把這個作為面試題也是考察下,可以大概了解到它對Android的了解程度,多移動開發(fā)的認(rèn)識。
轉(zhuǎn)自:
第四篇:Android 個人總結(jié)
Android 個人總結(jié)
通過本學(xué)期的的學(xué)習(xí),我知道了android是由google開發(fā)的一款手機平臺,android的基本架構(gòu)是基于linux內(nèi)核,由內(nèi)核向外的反別為庫和應(yīng)用架構(gòu),然后就是我們手機上的可視化應(yīng)用了,android是一個系統(tǒng),但是并非是操作系統(tǒng)。
在開發(fā)之前,我們首先要搭建一個開發(fā)環(huán)境,用的是java編程的eclipse,我們從網(wǎng)上下載sdk包,里面包含了android開發(fā)常用的工具,android既是手機操作系統(tǒng),也是跨平臺(windows,mac,linux)的開發(fā)工具,雖然是使用linux為核心的平臺,但是你可以在很多地方感覺到類似做網(wǎng)頁開發(fā)的感覺。具有本身獨特的進程管理方式,完整的上網(wǎng)功能,搭配了google地圖,Gmail等服務(wù),即使像我們這些尚未入門的開發(fā)者也能開發(fā)出自己理想的應(yīng)用程序來。
剛開始的時候,得知android開發(fā)需要使用java語言心里了小小的畏懼,但隨著學(xué)習(xí)的漸漸深入就會發(fā)現(xiàn)android平臺只是使用了java的語法而已,所以,即使我們不具備java語言開發(fā)的基礎(chǔ),也可以放心地加入到android開發(fā)當(dāng)中來。
第一節(jié)課,老師向我們詳細(xì)介紹了開發(fā)界面右邊窗口的內(nèi)容,首先是src目錄,里面包含了我們開發(fā)界面的java文件以及各種我們創(chuàng)建的類組成的開發(fā)包。然后是gen目錄,里面涵蓋的是系統(tǒng)的類文件(如R.java,Buidconfig.java)與android系統(tǒng)的依賴文件(Android Dependencies)。再下來是assets(用戶資源文件),里面文件的訪問是通過文件路徑的形式調(diào)用。Bin文件里面包括了res資源文件,android項目配置文件androidmanifest以及我們開發(fā)之后產(chǎn)生的后綴為.apk的應(yīng)用程序文件。Res是系統(tǒng)資源目錄,我們要用到得圖片資源,顏色資源,字符串資源都在里面。一般的開發(fā)都要用到界面文件也包含在里面。
Eclipse具有史上超豪華的手機控件,包括常用的文本文件,文本框,按鈕,進度條等,還有特殊形式的email,gmail文本框,在開發(fā)過程當(dāng)中,很多控件都是以拖拉的形式拖拽到開發(fā)界面上,大大地減少了我們開發(fā)時候的工作量,在配置文件中,我們可以添加各種各樣的系統(tǒng)動作,以及系統(tǒng)服務(wù),還可以建立用戶自己的文件庫。
當(dāng)我們開發(fā)完成的時候,就可以運行手機模擬器,在上面,我們可以像操作當(dāng)今市場上最流行的android手機一樣操作我們的模擬器,可視化的界面可以我們隨心所欲地下載我們開發(fā)的應(yīng)用程序到模擬器上,就可以實現(xiàn)步步跟進,想要修改哪里就一目了然了,模擬器上人性化的設(shè)計界面大大方便了用戶與機器之間的交流。如果我們擁有一部android系統(tǒng)的手機的話,就可以把自己開發(fā)的應(yīng)用程序下到手機上,看到自己的成果,頓生成就感,真的很有樂趣。也加大了我對學(xué)習(xí)android的信心。
總體來說,學(xué)習(xí)android就要不怕困難,迎難而上。Android不久可以滿足自己的成就感,還可以在未來的生活中找到自己理想的工作。用別人準(zhǔn)備好的各種類,包來開發(fā)出自己獨特風(fēng)格的應(yīng)用程序,既省時又省力,何樂而不為呢。在這里,要感謝曾老師對我的栽培和關(guān)懷,他教給了我知識,使我在學(xué)習(xí)的時候少走了很多的彎路,也增加了我對未來工作的信心。
第五篇:面試技巧總結(jié)(個人總結(jié))
銀行面試技巧總結(jié)
問題一:“請你自我介紹一下”(3分鐘)
1、這是面試的必考題目。
2、介紹內(nèi)容要與個人簡歷相一致。
3、要切中要害,不談無關(guān)、無用的內(nèi)容。
4、條理要清晰,層次要分明。
5、事先最好以文字的形式寫好背熟。
問題二:“談?wù)勀愕募彝デ闆r”
1、況對于了解應(yīng)聘者的性格、觀念、心態(tài)等有一定的作用,這是招聘單位問該問題的主要原因。
2、簡單地羅列家庭人口。
3、宜強調(diào)溫馨和睦的家庭氛圍。
4、宜強調(diào)父母對自己教育的重視。
5、宜強調(diào)各位家庭成員的良好狀況。
6、宜強調(diào)家庭成員對自己工作的支持。
7、宜強調(diào)自己對家庭的責(zé)任感。
問題三:“你有什么業(yè)余愛好?”
1、業(yè)余愛好能在一定程度上反映應(yīng)聘者的性格、觀念、心態(tài),這是招聘單位問該問題的主要原因。
2、最好不要說自己沒有業(yè)余愛好。
3、不要說自己有那些庸俗的、令人感覺不好的愛好。
4、最好不要說自己僅限于讀書、聽音樂、上網(wǎng),否則可能令面試官懷疑應(yīng)聘者性格孤僻。
5、最好能有一些戶外的業(yè)余愛好來“點綴”你的形象。
問題四:“你最崇拜誰?”
1、最崇拜的人能在一定程度上反映應(yīng)聘者的性格、觀念、心態(tài),這是面試官問該問題的主要原因。
2、不宜說自己誰都不崇拜。
3、不宜說崇拜自己。
4、不宜說崇拜一個虛幻的、或是不知名的人。
5、不宜說崇拜一個明顯具有負(fù)面形象的人。
6、所崇拜的人人最好與自己所應(yīng)聘的工作能“搭”上關(guān)系。
7、最好說出自己所崇拜的人的哪些品質(zhì)、哪些思想感染著自己、鼓舞著自己。銀行面試問題五:“你的座右銘是什么?”
思路:
1、座右銘能在一定程度上反映應(yīng)聘者的性格、觀念、心態(tài),這是面試官問這個問題的主要原因。
2、不宜說那些醫(yī)引起不好聯(lián)想的座右銘。
3、不宜說那些太抽象的座右銘。
4、座右銘最好能反映出自己某種優(yōu)秀品質(zhì)。
5、參考答案——“只為成功找方法,不為失敗找借口”
銀行面試問題六:“談?wù)勀愕娜秉c”
思路:
1、不宜說自己沒缺點。
2、不宜把那些明顯的優(yōu)點說成缺點。
3、不宜說出嚴(yán)重影響所應(yīng)聘工作的缺點。
4、不宜說出令人不放心、不舒服的缺點。
5、可以說出一些對于所應(yīng)聘工作“無關(guān)緊要”的缺點,甚至是一些表面上看是缺點,從工作的角度看卻是優(yōu)點的缺點。
銀行面試問題七:“談一談你的一次失敗經(jīng)歷”
思路:
1、不宜說自己沒有失敗的經(jīng)歷。
2、不宜把那些明顯的成功說成是失敗。
3、不宜說出嚴(yán)重影響所應(yīng)聘工作的失敗經(jīng)歷,4、所談經(jīng)歷的結(jié)果應(yīng)是失敗的。
5、宜說明失敗之前自己曾信心白倍、盡心盡力。
6、說明僅僅是由于外在客觀原因?qū)е率 ?/p>
7、失敗后自己很快振作起來,以更加飽滿的熱情面對以后的工作。銀行面試問題八:“你為什么選擇我們公司?”
思路:
1、面試官試圖從中了解你求職的動機、愿望以及對此項工作的態(tài)度。
2、建議從行業(yè)、企業(yè)和崗位這三個角度來回答。
3、參考答案——“我十分看好貴公司所在的行業(yè),我認(rèn)為貴公司十分重視人才,而且這項工作很適合我,相信自己一定能做好。”
銀行面試問題十六:“您在前一家公司的離職原因是什么?”
思路:
1、最重要的是:應(yīng)聘者要使找招聘單位相信,應(yīng)聘者在過往的單位的“離職原因”在此家招聘單位里不存在。
2、避免把“離職原因”說得太詳細(xì)、太具體。
3、不能摻雜主觀的負(fù)面感受,如“太幸苦”、“人際關(guān)系復(fù)雜”、“管理太混亂”、“公司不重視人才”、“公司排斥我們某某的員工”等。
4、但也不能躲閃、回避,如“想換換環(huán)境”、“個人原因”等。
5、不能涉及自己負(fù)面的人格特征,如不誠實、懶惰、缺乏責(zé)任感、不隨和等。
6、盡量使解釋的理由為應(yīng)聘者個人形象添彩。
7、如“我離職是因為這家公司倒閉。我在公司工作了三年多,有較深的感情。最后,同一個面試問題并非只有一個答案,而同一個答案并不是在任何面試場合都有效,關(guān)鍵在于應(yīng)聘者掌握了規(guī)律后,對面試的具體情況進行把握,有意識地揣摩面試官提出問題的心理背景,然后投其所好。