1. 程式人生 > >Android程式猿挑戰高薪必會的十大面試題

Android程式猿挑戰高薪必會的十大面試題

1:Android中五種資料儲存方式分別是什麼?他們的特點?

答:Android提供了五種存取資料的方式

1)SharedPreference,存放較少的五種型別的資料,只能在同一個包內使用,生成XML的格式存放在裝置中;
2)SQLite資料庫,存放各種資料,是一個輕量級的嵌入式資料庫;
3)File檔案,通過讀取寫入方式生成檔案存放資料;
4)ContentProvider,主要用於讓其他應用程式使用儲存的資料;
5)通過網路獲取資料和寫入資料到網路儲存空間;

2:說說 android 中 mvc 的具體體現

答:mvc是model,view,controller的縮寫,mvc包含三個部分:

模型(model)物件:是應用程式的主體部分,所有的業務邏輯都應該寫在該層。
檢視(view)物件:是應用程式中負責生成使用者介面的部分。也是在整個mvc架構中使用者唯一可以看到的一層,接收使用者的輸入,顯示處理結果。
控制器(control)物件:是根據使用者的輸入,控制使用者介面資料顯示及更新model物件狀態的部分,控制器更重要的一種導航功能,響應使用者出發的相關事件,交給m層處理。
android鼓勵弱耦合和元件的重用,在android中mvc的具體體現如下:
1)檢視(view):一般採用xml檔案進行介面的描述,使用的時候可以非常方便的引入。
2)控制層(controller):android的控制層的重任通常落在了眾多的acitvity的肩上,這句話也就暗含了不要在acitivity中寫過多的程式碼,要通過activity交割model業務邏輯層處理,這樣做的另外一個原因是android中的acitivity的響應時間是5s,如果耗時的操作放在這裡,程式就很容易被回收掉。
3)模型層(model):對資料庫的操作、對網路等的操作都應該在model裡面處理,當然對業務計算等操作也是必須放在的該層的。

3: 簡述SharedPreferences儲存方式以及SharedPreferences與SQLite資料庫的區別

SharedPreferences也是一種輕型的資料儲存方式,它的本質是基於XML檔案儲存key-value鍵值對資料,通常用來儲存一些簡單的配置資訊。其儲存位置在/data/data/<包名>/shared_prefs目錄下。SharedPreferences物件本身只能讀取資料而不支援寫入資料,儲存修改是通過Editor物件實現。SharedPreferences物件與SQLite資料庫相比,免去了建立資料庫,建立表,寫SQL語句等諸多操作,相對而言更加方便,簡潔。但是SharedPreferences也有其自身缺陷,比如其職能儲存boolean,int,float,long和String五種簡單的資料型別,比如其無法進行條件查詢等。所以不論SharedPreferences的資料儲存操作是如何簡單,它也只能是儲存方式的一種補充,而無法完全替代如SQLite資料庫這樣的其他資料儲存方式。

4:描述handler 機制的原理

andriod提供了 Handler 和 Looper 來滿足執行緒間的通訊。
Handler 先進先出原則。
Looper類用來管理特定執行緒內物件之間的訊息交換(Message Exchange)。
1)Looper: 一個執行緒可以產生一個Looper物件,由它來管理此執行緒裡的Message Queue(訊息佇列)。
2)Handler: 你可以構造Handler物件來與Looper溝通,以便push新訊息到Message Queue裡;或者接收Looper從Message Queue取出)所送來的訊息。
3)Message Queue(訊息佇列):用來存放執行緒放入的訊息。
4)執行緒:UI thread 通常就是main thread,而Android啟動程式時會替它建立一個Message Queue。

5:顯式intent和隱式intent的區別是什麼(android)

答:Intent定義:Intent是一種在不同元件之間傳遞的請求訊息,是應用程式發出的請求和意圖。作為一個完整的訊息傳遞機制,Intent不僅需要傳送端,還需要接收端。
顯式Intent定義:對於明確指出了目標元件名稱的Intent,我們稱之為顯式Intent;
隱式Intent定義:對於沒有明確指出目標元件名稱的Intent,則稱之為隱式Intent。
說明:Android系統使用IntentFilter 來尋找與隱式Intent相關的物件。

6:如何優化ListView

1)如果自定義介面卡,那麼在getView方法中要考慮方法傳進來的引數contentView是否為null,如果為null就建立contentView並返回,如果不為null則直接使用。在這個方法中儘可能少建立view;
2)給contentView設定tag(setTag()),傳入一個viewHolder物件,用於快取要顯示的資料,可以達到影象資料非同步載入的效果;
3)如果listview需要顯示的item很多,就要考慮分頁載入。比如一共要顯示100條或者更多的時候,我們可以考慮先載入20條,等使用者拉到列表底部的時候再去載入接下來的20條。

7:簡述通過contentResolver獲取ContentProvider內容的基本步驟

1)得到ContentResolver類物件:ContentResolver cr = getContentResolver();
2)定義要查詢的欄位String陣列;
3)使用cr.query();返回一個Cursor物件;
4)使用while迴圈得到Cursor裡面的內容。

8:描述4 種 activity 的啟動模式

1)standard :系統的預設模式,一次跳轉即會生成一個新的例項。假設有一個activity命名為MainActivity,執行語句:
startActivity(new Intent(MainActivity.this, MainActivity.class))後,MainActivity將跳轉到另外一個MainActivity,也就是現在的Task棧裡面有MainActivity的兩個例項。按返回鍵後你會發現仍然是在MainActivity(第一個)裡面。
2)singleTop:singleTop 跟standard 模式比較類似。如果已經有一個例項位於Activity棧的頂部時,就不產生新的例項,而只是呼叫Activity中的newInstance()方法。如果不位於棧頂,會產生一個新的例項。例:當MainActivity為 singleTop 模式時,執行跳轉後棧裡面依舊只有一個例項,如果現在按返回鍵程式將直接退出。
3)singleTask: singleTask模式和後面的singleInstance模式都是隻建立一個例項的。在這種模式下,無論跳轉的物件是不是位於棧頂的activity,程式都不會生成一個新的例項(當然前提是棧裡面已經有這個例項)。這種模式相當有用,在以後的多activity開發中,經常會因為跳轉的關係導致同個頁面生成多個例項,這個在使用者體驗上始終有點不好,而如果你將對應的activity宣告為 singleTask 模式,這種問題將不復存在。
4)singleInstance: 設定為 singleInstance 模式的 activity 將獨佔一個task(感覺task可以理解為程序),獨佔一個task的activity與其說是activity,倒不如說是一個應用,這個應用與其他activity是獨立的,它有自己的上下文activity。

9:Android中如何訪問自定義ContentProvider?

通過ContentProvider的Uri訪問開放的資料。
1)ContenResolver物件通過Context提供的方法getContenResolver()來獲得。
2)ContenResolver提供了以下方法來操作:insert delete update query這些方法分別會呼叫ContenProvider中與之對應的方法並得到返回的結果。

10:android中的動畫有哪幾類,它們的特點和區別是什麼?

答:Android中動畫可以分為兩大類:幀動畫、補間動畫
1)補間動畫:你定義一個開始和結束,中間的部分由程式運算得到。主要有:旋轉、平移、放縮和漸變;AlphaAnimation(漸變型動畫)、scaleAnimation(縮放型動畫)、 TranslateAnimation(平移型動畫)、 RotateAnimation(旋轉型動畫)、
2)逐幀動畫:Frame(把一連串的圖片進行系列化連續播放,如同放電影的效果),它是通過播放一張一張圖片來達到動畫的效果;

轉載自:IT藍豹

相關推薦

Android程式挑戰高薪大面試題

1:Android中五種資料儲存方式分別是什麼?他們的特點? 答:Android提供了五種存取資料的方式 1)SharedPreference,存放較少的五種型別的資料,只能在同一個包內使用,生成XML的格式存放在裝置中; 2)SQLite資料庫,存放各種資料,是一個輕量級

一個屌絲程式的人生(八二)

  林蕭面試當天回去以後,並沒有去培訓機構,所以關於張建的事情,林蕭也是第二天到了培訓機構才知道。   作為班裡的兩大學霸,林蕭和張建的應聘情況,一直都比較受人關注,而且私底下也有不少人,會拿二人來做對比。   本來在眾人的心目中,大家對於林蕭的期望,是要略高於張建一些的。   不過,如今

一個屌絲程式的人生(八一)

  其實面試官的這個問題,第一問並不難,只要瞭解過SSH框架的人,就算是猜,也基本能猜到,spring框架是最重要的一個,但這個問題的難點在於第二問,要回答好“為什麼”這一點,就比較考驗一個人對於SSH框架理解的深度了。   第一種人,也是最差的一種人,當面試官問他為什麼的時候,他或許只能尷尬

一個屌絲程式的人生(八

  林蕭心中微微忐忑的跟著面試官,二人剛走出幾步,面試官便帶著林蕭,來到了一間會議室。   會議室的面積不大,約莫只有10平米的樣子,除了一張桌子和幾把椅子以外,就沒有別的東西了。   二人進來的時候,會議室裡還有一個年紀和林蕭相仿的青年,看上去應該也是個應聘者,看到林蕭和麵試官進來,青年朝

一個屌絲程式的人生(七九)

  第二天,林蕭還不到7點,就從床上爬了起來。   雖說和公司約好的面試時間是10點,距離開始還有3個多小時,但林蕭昨天查了下路線,路上要轉一趟公交車,而且要途徑差不多15個公交站,雖說地圖上寫的預估時間是1個小時,但林蕭對於北京的交通實在沒什麼信心,為了避免第一次面試就遲到,也只能提早出發了

一個屌絲程式的人生(七八)

  “親愛的林蕭同學您好,您在西安考場的筆試已經通過,我們後續會聯絡您進行面試,請您保持手機暢通......”   徐博輕聲唸叨著簡訊的內容,不禁疑惑的說道:“不對啊,林蕭。這上面怎麼寫的是西安考場?”   林蕭本來心中正在琢磨著面試的事,被徐博這麼一提醒,不由得把簡訊又仔細看了一遍,這一看

一個屌絲程式的人生(七七)

  林蕭一邊排隊的同時,也在觀看旁邊立著的公司簡介。   這家公司的名字比較特別,全名叫艾特佳禾資訊科技有限公司,面試官是兩男一女,三人看上去年紀大約都在二十六七歲的樣子,其中一個男面試官雖然是坐在那,但一眼就能看出,其身材肯定是人高馬大的那種,面試人的時候也是唾沫橫飛,似乎很能說的樣子。

一個屌絲程式的人生(七六)

  擁友的面試官接過林蕭的簡歷,凝神的看了片刻,隨後先是把林蕭的簡歷放了下來,然後才擡頭對著林蕭說道:“不錯,你的簡歷我們收下了。後面我們會再聯絡你的。”   林蕭聞言心中略微有些失望,不過還是微笑的說了句“好的”,這才轉頭離開了。   不過林蕭不知道的是,擁友這家公司和其它公司最大的區別是

一個屌絲程式的人生(七五)

  “簡歷我們收下了,下午三點半我們在這裡有一場筆試,你願意來參加嗎?”   林蕭聞言微微愣了片刻,筆試這事兒林蕭還真沒準備過,不過事到如今,林蕭自然也不會拒絕,便一口答應了下來。   緊接著,林蕭便看到,度娘負責招聘的人,在他的簡歷上右上角,畫了一個大大的對號,顯然這應該是參加筆試的面試者

一個屌絲程式的人生(七二)

  一日過去。   林蕭一早就爬了起來。   明天就要參加招聘會了,而他今天最重要的任務,就是寫簡歷。   說起寫簡歷,林蕭這二十多年來,也就寫過一次,就是當初在鄭州霸面的時候,林蕭費盡心思的寫過一次簡歷。   那一次寫簡歷的過程,林蕭可謂是絞盡了腦汁。   原因很簡單,一個對於技術一

一個屌絲程式的人生(六九)

  “同學們,這次的專案演示已經結束了。對於這一次演示的結果,我非常滿意。特別是最後的提問環節,大家都回答的非常出色。看的出來,這次同學們都是下了功夫的,這十分難得。為此,我請同學們舉起雙手,為你們的努力獻上熱烈的掌聲。”   “啪啪啪......”   臺下一陣雷鳴般的掌聲響起,眾人的眼中

一個屌絲程式的人生(七一)

  “同學們,招聘會的事,我想大家應該都得到訊息了吧?”   鄭忠科在輔導完大家專案以後,此刻已經離開了教室,現在站在講臺上說話的,是一個身著正裝,體型有些微胖的女老師。   “老師!我們的專案還沒做完呢!怎麼去面試呀?”   “對呀!才做了不到一半啊!”   “可不是嗎!老師,我們不想

一個屌絲程式的人生(七

  第二輪專案演示結束了,大家又回到了看視訊學習的平淡日子。   值得一提的是,張建派的人自那以後,不僅沒有再提過林蕭玩貓膩的事,反而一個個都對林蕭畢恭畢敬。   這倒是讓林蕭派的人開了眼,雖然林蕭派的人都知道,對方一定是看到了U盤裡林蕭的專案,也肯定會被林蕭那專案中滿屏的註釋所震撼。  

一個屌絲程式的人生(七四)

  中關村核心校區。   看著頭頂龍飛鳳舞的七個大字,林蕭知道,這就是今天招聘會舉辦的地方了。   本來林蕭下了公交車以後,準備直奔這裡而來的。但一看時間還早,便先在下車的附近飽餐了一頓,這才不慌不忙的趕了過來。   這所謂的中關村核心校區,並不是林蕭平時上課的地方,兩者距離大約有500米

一個屌絲程式的人生(八六)

  第二天上班,林蕭和昨天一樣,早早的就來到了公司。   這一次林蕭就沒再像昨天一樣在外面乾等了,看公司門兒開著,林蕭直接就走了進來。   不過讓林蕭意外的是,公司裡比他先到的就只有一個人,而這個人,竟然是小魏!   要知道,小魏昨晚可是最後一個走的,早上又是第一個到的。   工作如此積極,難道這個公

一個屌絲程式的人生(八五)

  到了10點左右的時候,公司裡的人已經全部到齊。   這期間,林蕭一邊安裝著軟體,一邊接收著後來的同事好奇的目光,畢竟公司就這麼幾個人,突然來了個新人,大家自然一眼就注意到了林蕭。   人到齊後沒多久,程剛便從辦公室走了出來,他先是掃視了一圈,隨後來到林蕭身邊說道:“來

一個屌絲程式的人生(二四)

韓霞聞言心中一顫,試探的問道:“怎麼了?為什麼不取了?”   林蕭看母親的表情,就知道母親肯定誤解了自己的意思,出言解釋道:“放心吧,媽。我沒反悔。只是我覺得這一家有點不太靠譜,咱們換一家吧。”   “怎麼就不靠譜了?你看你小武叔就在這站著呢,他就是這麼學過來的。”韓霞指著一

一個屌絲程式的人生(五五)

  林蕭聞言有些意外,剛才朱昊沒有告訴自己這件事,看來朱昊是不知道了。想來張建應該是把程式碼給了自己熟絡的人了,而朱昊,看來是不在此列了。  “張建已經寫完了?你確定?”徐博一臉驚訝的看著剛才說話的同學,顯然是覺得有些不可思議。  林蕭倒是淡定的很,從上週三他就偶然間聽到人說

【JAVA】java中實現map集合的資料存取詳解三種方法。Android程式設計師也是要寫的

長期維護的Android專案,裡面包括常用功能實現,以及知識點詳解, 當然還有java中的知識點。具體請看github: https://github.com/QQ986945193/DavidAndroidProjectTools 好了,說正題

一個屌絲程式的人生(六五)

  專案演示當天!  教室裡一大早就熱鬧非凡。  張建派的人此刻已經聚集在一起,開始探討起接下來的戰術。  “弟兄們,今天就要開戰了啊。”  “是啊!想想還真有些小激動呢!”  “對了,張建人呢?”  “出去接電話了。待會兒林蕭那邊的人演示的時候,大家一定要記得提問啊。”