導航:首頁 > 操作系統 > android面試題及答案

android面試題及答案

發布時間:2022-01-31 01:37:22

android面試題會出現什麼內容

這是一篇介紹android面試題的文章,下面就讓我們一起來了解一下吧!
1.android dvm 的進程和linux的進程,應用程序的進程是否為同一個概念:
答:dvm是dalivk虛擬機。每一個android應用程序都在自己的進程中運行,都擁有一個dalivk虛擬機實例。而每一個dvm都是在linux的一個進程。所以說可以認為是同一個概念。
2.android的動畫有哪幾種?他們的特點和區別是什麼?
答:兩種,一種是tween動畫,一種是frame動畫。tween動畫,這種實現方式可以使視圖組件移動,放大或縮小以及產生透明度的變化。frame動畫,傳統的動畫方法,通過順序的播放排列好的圖片來實現,類似電影。
3.handler進制的原理:
答:android提供了handler和looper來滿足線程間的通信。Handler先進先出原則。looper用來管理特定線程內對象之間的消息交換(message Exchange).
1)looper:一個線程可以產生一個looper對象,由它來管理此線程里的message queue(消息隊列)
2)handler:你可以構造一個handler對象來與looper溝通,以便push新消息到messagequeue里;或者接收looper(從messagequeue里取出)所送來的消息。
3)messagequeue:用來存放線程放入的消息。
4)線程:UI thread 通常就是main thread,而android啟動程序時會為它建立一個message queue.
4.android view的刷新:
答:Android中對View的更新有很多種方式,使用時要區分不同的應用場合。我感覺最要緊的是分清:多線程和雙緩沖的使用情況。
1).不使用多線程和雙緩沖
這種情況最簡單了,一般只是希望在View發生改變時對UI進行重繪。你只需在Activity中顯式地調用View對象中的invalidate()方法即可。系統會自動調用 View的onDraw()方法。
2).使用多線程和不使用雙緩沖
這種情況需要開啟新的線程,新開的線程就不好訪問View對象了。強行訪問的話會報:android.view.ViewRoot$:Only the originalthread that created a view hierarchy can touch its views.
這時候你需要創建一個繼承了android.os.Handler的子類,並重寫handleMessage(Messagemsg)方法。android.os.Handler是能發送和處理消息的,你需要在Activity中發出更新UI的消息,然後再你的Handler(可以使用匿名內部類)中處理消息(因為匿名內部類可以訪問父類變數,你可以直接調用View對象中的invalidate()方法 )。也就是說:在新線程創建並發送一個Message,然後再主線程中捕獲、處理該消息。
3).使用多線程和雙緩沖
Android中SurfaceView是View的子類,她同時也實現了雙緩沖。你可以定義一個她的子類並實現SurfaceHolder.Callback介面。由於實現SurfaceHolder.Callback介面,新線程就不需要android.os.Handler幫忙了。SurfaceHolder中lockCanvas()方法可以鎖定畫布,繪制玩新的圖像後調用unlockCanvasAndPost(canvas)解鎖(顯示),還是比較方便得。
5.說說mvc模式的原理,它在android中的運用:
答:android的官方建議應用程序的開發採用mvc模式。何謂mvc?
mvc是model,view,controller的縮寫,mvc包含三個部分:
l模型(model)對象:是應用程序的主體部分,所有的業務邏輯都應該寫在該層。
2視圖(view)對象:是應用程序中負責生成用戶界面的部分。也是在整個mvc架構中用戶唯一可以看到的一層,接收用戶的輸入,顯示處理結果。
3控制器(control)對象:是根據用戶的輸入,控制用戶界面數據顯示及更新model對象狀態的部分,控制器更重要的一種導航功能,想用用戶出發的相關事件,交給m哦得了處理。
android鼓勵弱耦合和組件的重用,在android中mvc的具體體現如下:
1)視圖層(view):一般採用xml文件進行界面的描述,使用的時候可以非常方便的引入,當然,如何你對android了解的比較的多了話,就一定 可以想到在android中也可以使用javascript+html等的方式作為view層,當然這里需要進行java和javascript之間的通 信,幸運的是,android提供了它們之間非常方便的通信實現。
2)控制層(controller):android的控制層的重 任通常落在了眾多的acitvity的肩上,這句話也就暗含了不要在acitivity中寫代碼,要通過activity交割model業務邏輯層處理, 這樣做的另外一個原因是android中的acitivity的響應時間是5s,如果耗時的操作放在這里,程序就很容易被回收掉。
3)模型層(model):對資料庫的操作、對網路等的操作都應該在model裡面處理,當然對業務計算等操作也是必須放在的該層的。
6.Activity的生命周期:
答:onCreate: 在這里創建界面,做一些數據 的初始化工作
onStart: 到這一步變成用戶可見不可交互的
onResume:變成和用戶可交互 的,(在activity 棧系統通過棧的方式管理這些個Activity的最上面,運行完彈出棧,則回到上一個Activity)
onPause: 到這一步是可見但不可交互的,系統會停止動畫 等消耗CPU 的事情從上文的描述已經知道,應該在這里保存你的一些數據,因為這個時候你的程序的優先順序降低,有可能被系統收回。在這里保存的數據,應該在
onstop: 變得不可見,被下一個activity覆蓋了
onDestroy: 這是activity被幹掉前最後一個被調用方法了,可能是外面類調用finish方法或者是系統為了節省空間將它暫時性的幹掉
7.讓Activity變成一個窗口:
答:Activity屬性設定:有時候會做個應用程序是漂浮在手機主界面的。這個只需要在設置下Activity的主題theme,即在Manifest.xml定義Activity的地方加一句:
android :theme="@android:style/Theme.Dialog"
如果是作半透明的效果:
android:theme="@android:style/Theme.Translucent"
8.Android中常用的五種布局:
答:LinearLayout線性布局;AbsoluteLayout絕對布局;TableLayout表格布局;RelativeLayout相對布局;FrameLayout幀布局;
9.Android的五種數據存儲方式:
答:sharedPreferences;文件;SQLite;contentProvider;網路
10.請解釋下在單線程模型中Message、Handler、Message Queue、Looper之間的關系:
答:Handler獲取當前線程中的looper對象,looper用來從存有Message的Message Queue里取出message,再由Handler進行message的分發和處理。
11.AIDL的全稱是什麼?如何工作?能處理哪些類型的數據?
答:AIDL(AndroidInterface Definition Language)android介面描述語言
12.系統上安裝了多種瀏覽器,能否指定某瀏覽器訪問指定頁面?請說明原由:
答:通過直接發送Uri把參數帶過去,或者通過manifest里的intentfilter里的data屬性。代碼如下:
Intent intent = new Intent();
Intent.setAction(「android.intent.action.View」);
Uri uriBrowsers = Uri.parse(「http://www.sina.com.cn」);
Intent.setData(uriBrowsers);
//包名、要打開的activity
intent.setClassName(「com.android.browser」,」com.android.browser.BrowserActivity」);
startActivity(intent);
13.什麼是ANR,如何避免?
答:ANR的定義:
在android上,如果你的應用程序有一段時間響應不移靈敏,系統會向用戶提示「應用程序無響應」(ANR:application Not Responding)對話框。因此,在程序里對響應性能的設計很重要,這樣,系統不會顯示ANR給用戶。
如何避免:
首先來研究下為什麼它會在android的應用程序里發生和如何最佳構建應用程序來避免ANR.
android應用程序通常是運行在一個單獨的線程(例如:main)里,這就意味你的應用程序所做的事情如果在主線程里佔用了大長時間的話,就會引發ANR對話框,因為你的應用程序並沒有給自己機會來處理輸入事件或者Intent廣播。
因此,運行在主線程里的任何訪求都盡可能少做事情。特別是,activity應該在它的關鍵生命周期方法(onCreate()和onResume())里盡可能少的去作創建操作。潛在的耗時操作,例如網路或資料庫操作,或者高耗時的計算如改變點陣圖尺寸,應該在子線程里(或者以資料庫操作為例,通過非同步請求的方式)來完成。然而,不是說你的主線程阻塞在那裡等待子線程的完成---也不是調用Thread.wait()或者Thread.sleep()。替代的方法是:主線程應該為子線程提供一個Handler,以便完成時能夠提交給主線程。以這種方式設計你的應用程序,將能保證你的主線程保持對輸入的響應性並能避免由5秒輸入事件的超時引發的ANR對話框。這種做法應該在其它顯示UI的線程里效仿,因為它們都受相同的超時影響。
IntentReceiver執行時間的特殊限制意味著它應該做:在後台里做小的、瑣碎的工作,如保存設定或注冊一個Notification。和在主線程里調用的其它方法一樣,應用程序應該避免在BroadcastReceiver里做耗時的操作或計算,但也不是在子線程里做這些任務(因為BroadcastReceiver的生命周期短),替代的是,如果響應Intent廣播需要執行一個耗時的動作的話,應用程序應該啟動一個Service。順便提及一句,你也應該避免在Intent Receiver里啟動一個Activity,因為它會創建一個新的畫面,並從當前用戶正在運行的程序上搶奪焦點。如果你的應用程序在響應Intent廣播時需要向用戶展示什麼,你應該使用Notification Manager來實現。
一般來說,在應用程序里,100到200ms是用戶能感知阻滯的時間閾值,下面總結了一些技巧來避免ANR,並有助於讓你的應用程序看起來有響應性。
如果你的應用程序為響應用戶輸入正在後台工作的話,可以顯示工作的進度(ProgressBar和ProgressDialog對這種情況來說很有用)。特別是游戲,在子線程里做移動的計算。如果你的程序有一個耗時的初始化過程的話,考慮可以顯示一個Splash Screen或者快速顯示主畫面並非同步來填充這些信息。在這兩種情況下,你都應該顯示正在進行的進度,以免用戶認為程序被凍結了。
14.什麼情況會導致Force Close?如何避免?能否捕獲導致其的異常?
答:如空指針等可以導致ForceClose;可以看Logcat,然後找到對應的程序代碼來解決錯誤。
15.橫豎屏切換時候的activity的生命周期:
答:
1) 新建一個activity,並把各個生命周期列印出來
2) 運行activity,得到如下信息:
onCreate()à
onStart()à
onResume()à
3) 按ctrl+F12切換成橫屏時
onSaveInstanceState()à
onPause()à
onStop()à
onDestroy()à
onCreate()à
onStart()à
onRestoreInstanceState()à
onResume()à
4) 再按ctrl+f12切換成豎屏時,發現列印了兩次相同的Log
onSaveInstanceState()à
onPause()à
onStop()à
onDestroyà
onCreate()à
onStart()à
onRestoreInstanceState()à
onResume()à
onSaveInstanceState()à
onPause()à
onStop()à
onDestroyà
onCreate()à
onStart()à
onRestoreInstanceState()à
onResume()à
5) 修改AndroidManifest.xml,把該Activity添加android:configChanges=「orientation」,執行步驟3
onSaveInstanceState()à
onPause()à
onStop()à
onDestroy()à
onCreate()à
onStart()à
onRestoreInstanceState()à
onResume()à
6) 修改AndroidManifest.xml,把該Activity添加android:configChanges=「orientation」,執行步驟4,發現不會再列印相同信息,但多列印了一行onConfigChanged
onSaveInstanceState()à
onPause()à
onStop()à
onDestroy()à
onCreate()à
onStart()à
onRestoreInstanceState()à
onResume()à
onConfigurationChanged()à
7) 把步驟5的android:configChanges=「orientation」改成
android:configChanges=「orientation|keyboradHidden」,執行步驟3,就只列印onConfigChanged
onConfigurationChanged()à
8) 把步驟5的android:configChanges=「orientation」改成
android:configChanges=「orientation|keyboradHidden」,執行步驟4
onConfigurationChanged()à
onConfigurationChanged()à
總結:
1) 不設置activity的android:configChanges時,切屏會重新調用各個生命周期,切橫屏時會執行一次,切豎屏時會執行兩次。
2) 設置activity的android:configChanges=「orientation」時, 切屏會重新調用各個生命周期,切橫屏、豎屏時都只會執行一次,但是豎屏最後多列印一條onConfigurationChanged()
3) 設置activity的android:configChanges=「orientation|keyboardHidden」時,切屏不會重新調用各個生命周期,只會執行onConfigurationChanged(),橫屏一次,豎屏兩次
再總結下整個activity的生命周期:
1) 當前activity產生事件彈出Toast和AlertDialog的時候Activity的生命周期不會有改變
2) Activity運行時按下HOME鍵(跟被完全覆蓋一樣的)
onSavaInstanceStateà
onPauseà
onStopà
onRestartà
onStartà
onResumeà
3) 未被完全覆蓋,只是失去焦點:
onPauseà
onResumeà
16.如何將SQLite資料庫(.db文件)與apk文件一起發布?
答:可以將.db文件復制到Eclipse Android工程中的res aw目錄中。所有在res aw目錄中的文件不會被壓縮,這樣可以直接提取該目錄中的文件。可以將.db文件復制到res aw目錄中
17.如何將打開res aw目錄中的資料庫文件?
答:在Android中不能直接打開res aw目錄中的資料庫文件,而需要在程序第一次啟動時將該文件復制到手機內存或SD卡的某個目錄中,然後再打開該資料庫文件。復制的基本方法是使用getResources().openRawResource方法獲得res aw目錄中資源的 InputStream對象,然後將該InputStream對象中的數據寫入其他的目錄中相應文件中。在Android SDK中可以使用SQLiteDatabase.openOrCreateDatabase方法來打開任意目錄中的SQLite資料庫文件。
18.android 中有哪幾種解析xml的類?官方推薦哪種?以及它們的原理和區別:
答:XML解析主要有三種方式,SAX、DOM、PULL。常規在PC上開發我們使用Dom相對輕鬆些,但一些性能敏感的資料庫或手機上還是主要採用SAX方 式,SAX讀取是單向的,優點:不佔內存空間、解析屬性方便,但缺點就是對於套嵌多個分支來說處理不是很方便。而DOM方式會把整個XML文件載入到內存 中去,這里Android開發網提醒大家該方法在查找方面可以和XPath很好的結合如果數據量不是很大推薦使用,而PULL常常用在J2ME對於節點處 理比較好,類似SAX方式,同樣很節省內存,在J2ME中我們經常使用的KXML庫來解析。
19.DDMS和TraceView的區別?
答:DDMS是一個程序執行查看器,在裡面可以看見線程和堆棧等信息,TraceView是程序性能分析器
20.談談Android的IPC機制:
答:IPC是內部進程通信的簡稱,是共享"命名管道"的資源。Android中的IPC機制是為了讓Activity和Service之間可以隨時的進行交互,故在Android中該機制,只適用於Activity和Service之間的通信,類似於遠程方法調用,類似於C/S模式的訪問。通過定義AIDL介面文件來定義IPC介面。Servier端實現IPC介面,Client端調用IPC介面本地代理。
21.NDK是什麼:
答:NDK是一系列工具的集合
NDK提供了一系列的工具,幫助開發者迅速的開發C/C++的動態庫,並能自動將so和java應用打成apk包
NDK集成了交叉編譯器,並提供了相應的mk文件和隔離cpu,平台等的差異,開發人員只需簡單的修改mk文件就可以創建出so
22.描述一下android的系統架構:
答:android系統架構分從下往上為Linux內核層、運行庫、應用程序框架層和應用程序層。
Linux內核層:負責硬體的驅動程序、網路、電源、系統安全以及內存管理等功能。
運行庫和androidruntion:運行庫:即c/c++函數庫部分,大多數都是開放源代碼的函數庫,例如webkit,該函數庫負責android網頁瀏覽器的運行;例如標準的c函數庫libc、openssl、sqlite等,當然也包括支持游戲開發的2dsgl和3dopengles,在多媒體方面有mediaframework框架來支持各種影音和圖形文件的播放與顯示,如mpeg4、h.264、mp3、aac、amr、jpg和png等眾多的多媒體文件格式。Androidruntion負責解釋和執行生成的dalvik格式的位元組碼
應用軟體架構:java應用程序開發人員主要是使用該層封裝好的api進行快速開發的。
應用程序層:該層是java的應用程序層,android內置的googlemaps、email、IM、瀏覽器等,都處於該層,java開發人員工發的程序也處於該層,而且和內置的應用程序具有平等的地位,可以調用內置的應用程序,也可以替換內置的應用程序

㈡ 好程序員android面試都面試哪些問題,不知道難不難。

  1. 根據公司的項目需求,比如公司做的是一個涉及到地圖定位,支付和聊天的項目,那一般就會找在這方面有開發經驗的人。

  2. 根據面試者簡歷上的項目經驗,看看這個人做了哪些項目,根據這些項目問一些相關的技術問題。

  3. 假設一些工作情況和條件,問面試者是如何面對和解決的。

有些公司確實會很刁難人,但這不能怪人家,畢竟他們想找一個能真正勝任工作的人,而你也想這樣的工作。所以,面試的時候最重要的還是做你自己。讓他們了解你,你自己也去了解他們。遇上自己很喜歡的工作但是人家又不要你,那你就努力提升自己。

㈢ 面試時,問哪些問題能試出一個Android應用開發者真正的水平

首先,面試官們一定要知道,每個人由於經歷不同,擅長的方向是千差萬別的,所以一定不要抓住自己擅長的某個方面去問的很深,覺得「如果連這個都不會還算毛程序員啊」。

所以我問問題的時候,往往是「兩步走」的循環:
1. 問他做過什麼,如果有成品的話,我能看看更好。
2. 從他做過的東西裡面,找到問題進行提問。具體的問題要看情況,可以是界面或效果的實現方式、相關bug的排除、該部分原理的分析。

舉一次面試時的對話作為例子吧:
我先開始:
「這份簡歷和網上投過來的那份是一樣的吧?」
「嗯,應該是一樣的。」
「嗯好。你在之前的團隊的位置是什麼?」
「中高級吧。」
「具體的工作呢?」
「寫框架,讓新人比較容易上手,能夠輕松工作。」
「你說的框架具體包括什麼呢?」
「一些會共用的東西,寫出來可以讓新人就算是剛來也能很好的完成工作。」
「聯網是你封裝的嗎?」
「是。」
「你們聯網用的是什麼?」
「就是……安卓自帶的……HttpClient。」
「直接用的?」
「嗯。」
「那你們的網路請求是怎麼做的非同步呢?」
「嗯……用Handler嘛,還有AsyncTask。」
「能具體一點嗎?」
「嗯……就是……額……」
「例如什麼情況下用Handler,什麼情況下用AsyncTask,你是怎麼決定的呢?」
「嗯……」
「或者說,他們有什麼區別呢?谷歌為什麼要造他們兩個出來,而不是只造一個呢?」
「區別……區別……他們肯定是有區別的,不然谷歌不可能造兩個。嗯……」(到這里,這個問題就可以結束了。評級減一。)
「這樣吧,你的簡歷上提到『熟悉大圖片的載入』,能說一下大圖片載入有什麼需要注意的嗎?」
「緩存嘛。」
「緩存?」
「嗯,大圖片的載入不就是ListView裡面的大圖片載入嗎?要防止內存溢出。」
「ListView裡面一定是大圖?」
「嗯……」(不了解的東西卻說自己熟悉,評級減一。繼續順著問。)
「那麼ListView中圖片的緩存你是怎麼做的呢?」
「三級緩存嘛。」
「哪三級?」
「如果內存裡面有,就用內存裡面的;如果沒有就用本地的;如果本地也沒有就從網路上取。三級。」
「網路上的也叫緩存?」
「啊。你可以把他看作緩存,也可以不看作緩存嘛。」(這個……)
「內存緩存你是怎麼實現的?」
「用的一個HashMap。」
「直接用的HashMap嗎?」
「嗯……嗯。」
「直接用HashMap的話,怎麼防止你剛才提到的內存溢出呢?」
「你可以用軟引用嘛。」(首先答案有問題,另外當聽到關鍵詞「你可以」,多數情況下這個問題也可以結束了——八成是不會,僅僅聽說過。不過出於謹慎還是繼續問了)
「軟引用就能防止內存溢出嗎?」
「還有……還有谷歌出的一個叫LRUCache的。」(迴避正面回答,確認他是不會。這個問題結束。評級減一。到此就再沒必要聊下去了。)
然後簡單過渡一下,就結束了面試。

㈣ android 面試作品

關注Android已經很久了,去年Android職位還是寥寥無幾,現在已經如雨後春筍一般涌現,去各招聘網站,在職位一欄里輸入Android關鍵字,你將會發現有很多的空缺職位.這無疑給廣大程序員帶來了新的機遇,你只要有半年或者一年相關Android相驗你會很搶手.我相信只要你投簡歷,我不敢說每投必"應",最起碼十有四五的概率還是有的.

那麼每個公司招聘Android開發人員,到底看重什麼呢,下面我將以個人的觀點,講一下應聘Android開發人員應該具備的條件.

說實話,對於搞過java的程序員來說,轉到android是一件很容易的事,兩三個月研究研究就足已了,世面上的android書買一本入入門就OK了,做Android應用個人認為比較簡單,但是有創意的還是比較難的.如果你只是想做簡單的android應用開發人員,你只要准備一下Java知識(多線程,Socket通信等),然後在對Android略知一二(如Android架構,Activity的理解,以及一個應用的生命周期等等).這些我相信可以應付過去了.

但是如果你想做更底層的開發,比如嵌入式開發(Android驅動開發等),那麼你就要懂得多一些知識了,畢竟這年頭Arm+Android還是很有搞頭的.這個你就要懂Linux,Arm,C,C++等知識了,畢竟這方面的要求還是蠻高的.大家可以買個arm開發板,然後自己把android移植進去,做一些驅動開發,和應用開發,這樣你去應聘直接把你的東西帶過去,還是更有說頭的.

㈤ Android面試遇到這樣的問題該怎樣回答

面試題
面試官:「 我給你出一道非常簡單的題,不算技術題,是這樣的:你給我在玻璃板上畫一幅畫,場景是這樣的,有一顆樹,樹上有三個蘋果,樹下面有一片草,非常簡單吧,好了你畫吧。」
遇到這樣的問題,你會怎麼做呢?
我當時毫不猶豫的就隨手畫出來了,隨便花了一棵樹,樹上掛著三個蘋果,樹下面畫了一些草。
面試官評論
面試官:這么模糊和簡單的需求你都給畫出來了,你怎麼不問我樹是什麼樹,長什麼樣,蘋果是什麼樣的蘋果,草又是什麼草呢?你畫的不是我想要的,是不是得重新返工呢?

經驗總結
其實這道題考的就是作為一個開發者要善於找到需求中的不足,並提出來,讓需求更完善,再去做,這樣做出來的東西才是客戶想要的,才不會經常返工或重做。

㈥ Android面試題一道

面介紹一下RelativeLayout用到的一些重要的屬性: 第一類:屬性值為true或false android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 android:layout_centerInparent 相對於父元素完全居中 android:layout_alignPar..

㈦ android 面試題

1、前言 
  6 月  26  日,  Google Android  發布了  NDK  ,引起了很多發人員的興趣。  NDK  全
稱:   Native  Development  Kit  。下載地址為: 
http://developer.android.com/sdk/ndk/1.5_r1/index.html  。 
2、誤解 
  新出生的事物,除了驚喜外,也會給我們帶來一定的迷惑、誤解。 
2.1、誤解一:  NDK  發布之前,  Android  不支持進行  C  開發 
  在 Google  中搜索  「NDK」  ,很多  「Android  終於可以使用  C++  開發  」  之類
的標題,這是一種對  Android  平台編程方式的誤解。其實,  Android  平台從誕生起,就已
經支持  C  、   C++  開發。眾所周知,   Android  的  SDK  基於  Java  實現, 這意味著基於  Android 
SDK  進行開發的第三方應用都必須使用  Java  語言。但這並不等同於 「  第三方應用只能使
用  Java」  。在  Android  SDK  首次發布時,  Google  就宣稱其虛擬機  Dalvik  支持  JNI  編程
方式,也就是第三方應用完全可以通過  JNI  調用自己的  C  動態庫,即在  Android  平台上,  
「Java+C」  的編程方式是一直都可以實現的。 
  當然這種誤解的產生是有根源的:在 Android SDK  文檔里,找不到任何  JNI  方面的
幫助。即使第三方應用開發者使用  JNI  完成了自己的  C  動態鏈接庫(  so  )開發,但是  so 
如何和應用程序一起打包成  apk  並發布?這裡面也存在技術障礙。我曾經花了不少時間,
安裝交叉編譯器創建  so  ,並通過  asset (資源)方式,實現捆綁  so  發布。但這種方式只
能屬於取巧的方式,並非官方支持。所以,在  NDK  出來之前,我們將  「Java+C」  的開發
模式稱之為灰色模式,即官方既不聲明 「  支持這種方式  」  ,也不聲明 「  不支持這種方
式  」  。 
2.2、誤解二:有了  NDK  ,我們可以使用純  C  開發  Android  應用 
  Android SDK 採用  Java  語言發布,把眾多的  C  開發人員排除在第三方應用開發外
(  注意:我們所有討論都是基於「  第三方應用開發  」  ,  Android  系統基於  Linux  ,系
統級別的開發肯定是支持  C  語言的。   )。 NDK  的發布,許多人會誤以為,類似於  Symbian  、 
WM  ,在  Android  平台上終於可以使用純  C  、  C++  開發第三方應用了!其實不然,  NDK 
文檔明確說明:  it is not a good way  。因為  NDK  並沒有提供各種系統事件處理支持,也沒
有提供應用程序生命周期維護。此外,在本次發布的  NDK  中,應用程序  UI  方面的  API  也
沒有提供。至少目前來說,使用純  C  、  C++  開發一個完整應用的條件還不完備。 
 
3、NDK  是什麼 
 
對 NDK  進行了粗略的研究後,我對  「NDK  是什麼  」  的理解如下: 
 
1、NDK  是一系列工具的集合。 
 
NDK 提供了一系列的工具,幫助開發者快速開發  C  (或  C++  )的動態庫,並能自動
將  so  和  java  應用一起打包成  apk  。這些工具對開發者的幫助是巨大的。 
NDK 集成了交叉編譯器,並提供了相應的  mk  文件隔離  CPU  、平台、  ABI  等差異,
開發人員只需要簡單修改  mk  文件(指出 「  哪些文件需要編譯  」  、 「  編譯特性要求  」 
等),就可以創建出  so  。 
NDK 可以自動地將  so  和  Java  應用一起打包,極大地減輕了開發人員的打包工作。 
2、NDK  提供了一份穩定、功能有限的  API  頭文件聲明。
 
  oogle 明確聲明該  API  是穩定的,在後續所有版本中都穩定支持當前發布的  API  。
從該版本的  NDK  中看出,這些  API  支持的功能非常有限,包含有:  C  標准庫(  libc  )、
標准數學庫(  libm  )、壓縮庫(  libz  )、  Log  庫(  liblog  )。 
G
 
4、NDK  帶來什麼 
 
1、NDK  的發布,使  「Java+C」  的開發方式終於轉正,成為官方支持的開發方式。 
使用 NDK  ,我們可以將要求高性能的應用邏輯使用  C  開發,從而提高應用程序的執
行效率。 
使用 NDK  ,我們可以將需要保密的應用邏輯使用  C  開發。畢竟,  Java  包都是可以反
編譯的。 
NDK 促使專業  so  組件商的出現。(樂觀猜想,要視乎  Android  用戶的數量) 
2、NDK  將是  Android  平台支持  C  開發的開端。 
  NDK 提供了的開發工具集合,使開發人員可以便捷地開發、發布  C  組件。同時,  
Google 承諾在  NDK  後續版本中提高  「  可調式  」  能力,即提供遠程的  gdb  工具,使我
們可以便捷地調試  C  源碼。在支持  Android  平台  C  開發,我們能感覺到  Google  花費了
很大精力,我們有理由憧憬 「C  組件支持  」  只是  Google Android  平台上 C  開發的開端。
畢竟,   C  程序員仍然是碼農陣營中的絕對主力,將這部分人排除在  Android  應用開發之外,
顯然是不利於  Android  平台繁榮昌盛的。

㈧ 我今天android去面試。先是筆試然後是技術部門過來給我面試然後是人事過來給我面試。

筆試測試技術
技術的面試應該是就筆試答案來詢問一些答題的思路
人事的面試應該是問一些團隊協作 過往經歷的事情 待遇要求
最後還有復試只有兩種可能1.最後剩下幾個同等優秀的人,需要通過這次復試淘汰掉其他人
2.你已經被錄取了,只是走個形式,放輕松。
當然還有一種可能就是我所說的以上任何一點內容如果沒有問過,那麼就可能是對這個內容進行提問。
如果是上面第一種情況的話 現在的面試官很喜歡問的一些問題就是 你對於其他應聘者的看法;你覺得自己與其他人相比在那裡更優秀缺點在哪裡;如果讓你選擇你會淘汰誰。
當然也可能會問一些曾經網路上出現過的經典奇葩招聘題目:比如說請說出北京有多少汽車站台,並給出理由之類的,這類問題只要能自圓其說,基本就是通過了。
總之明天這場不用過於去准備什麼,既然他能阻止第四場測試,那麼必然有著你無法事先遇料到的內容,總之早點睡,就看你明天的應變能力了。
祝你好運!

㈨ android開發面試題:android 4.0以上版本需要注意哪些問題

不能在主線程進行網路請求

閱讀全文

與android面試題及答案相關的資料

熱點內容
安卓手機如何關閉app後台 瀏覽:154
安卓數字密碼忘記怎麼破解 瀏覽:252
pythonzmq模式 瀏覽:180
linux運行php網站 瀏覽:865
實驗室無油壓縮機 瀏覽:805
哪裡可以免費看動畫app 瀏覽:53
文本加密咋解 瀏覽:485
tomcat做伺服器怎麼設置 瀏覽:252
非對稱加密會增大網路包嗎 瀏覽:703
為什麼不能編譯c 瀏覽:261
數據伺服器不能啟動是什麼意思 瀏覽:556
java以什麼開頭 瀏覽:820
蘋果手機相冊文件夾如何清理 瀏覽:405
伺服器雲電腦搭建教程 瀏覽:410
eco怎麼搭建伺服器 瀏覽:468
周轉材料核演算法 瀏覽:356
學nodejs還是php好 瀏覽:279
電信營業廳app怎麼買q幣 瀏覽:917
linux退出登陸 瀏覽:534
python查找相似圖片的代碼 瀏覽:336