1. 程式人生 > >Android 面試精華題目總結

Android 面試精華題目總結

轉載請標明出處:http://blog.csdn.NET/lmj623565791/article/details/24015867

下面的題目都是樓主在Android交流群大家面試時遇到的,如果大家有好的題目或者好的見解歡迎分享,樓主將長期維護此帖。

某公司高階面試題(2015-03-14)【感謝helder分享】

1、詳述Android系統架構,包括層與層之間呼叫、binder、jni、底層檔案讀寫方法

2、描述自己的一個專案,要求畫出結構圖,UML圖,詳細描述專案種的技術點,技術難點以及解決方案

3、一道演算法

4、談談自己專案管理的方法、對敏捷軟體開發的理解

基礎面試題(2014-04-18)

1、請解釋下在單執行緒模型中Message,Handler,Message Queue,Looper之間的關係。

拿主執行緒來說,主執行緒啟動時會呼叫Looper.prepare()方法,會初始化一個Looper,放入Threadlocal中,接著呼叫Looper.loop()不斷遍歷Message Queue,

Handler的建立依賴與當前執行緒中的Looper,如果當前執行緒沒有Looper則必須呼叫Looper.prepare()。Handler , sendMessage到MessageQueue,Looper不斷

從MessageQueue中取出訊息,回撥handleMessage方法。

2、如果有個100M大的檔案,需要上傳至伺服器中,而伺服器form表單最大隻能上傳2M,可以用什麼方法。

這個問題不是很明確我覺得,首先來說使用http協議上傳資料,特別在android下,跟form沒什麼關係。傳統的在web中,在form中寫檔案上傳,其實瀏覽器所做

的就是將我們的資料進行解析組拼成字串,以流的方式傳送到伺服器,且上傳檔案用的都是POST方式,POST方式對大小沒什麼限制。

回到題目,可以說假設每次真的只能上傳2M,那麼可能我們只能把檔案截斷,然後分別上傳了。

3、記憶體溢位和記憶體洩漏有什麼區別?何時會產生記憶體洩漏?記憶體優化有哪些方法?

記憶體溢位通俗理解就是軟體(應用)執行需要的記憶體,超出了它可用的最大記憶體。

記憶體洩漏就是我們對某一記憶體空間的使用,使用完成後沒有釋放。

記憶體優化:Android中容易記憶體溢位的部分,就是圖片的載入,我們可以使用圖片的壓縮加上使用LruCache快取的目的來控制圖片所能夠使用的記憶體。

還有對於比較耗資源的物件及時的關閉,例如Database Conn , 各種感測器 , Service 等等。

4、AsyncTask使用在哪些場景?它的缺陷是什麼?如何解決?

AsyncTask 運用的場景就是我們需要進行一些耗時的操作,耗時操作完成後更新主執行緒,或者在操作過程中對主執行緒的UI進行更新。

缺陷:AsyncTask中維護著一個長度為128的執行緒池,同時可以執行5個工作執行緒,還有一個緩衝佇列,當執行緒池中已有128個執行緒,緩衝佇列已滿時,如果

此時向執行緒提交任務,將會丟擲RejectedExecutionException。

解決:由一個控制執行緒來處理AsyncTask的呼叫判斷執行緒池是否滿了,如果滿了則執行緒睡眠否則請求AsyncTask繼續處理。

5、Activity用SharedPreferences儲存資料,大小有木有限制?

這個真心查不到。。。

6、Activity間通過Intent傳遞資料大小有沒有限制?

貌似是40K。

7、assest資料夾裡放檔案,對於檔案的大小有沒有限制?22

assets目錄更像一個附錄型別的目錄,Android不會為這個目錄中的檔案生成ID並儲存在R類當中,因此它與Android中的一些類和方法相容度更低。

同時,由於你需要一個字串路徑來獲取這個目錄下的檔案描述符,訪問的速度會更慢。但是把一些檔案放在這個目錄下會使一些操作更加方便,

比方說拷貝一個資料庫檔案到系統記憶體中。要注意的是,你無法在Android XML檔案中引用到assets目錄下的檔案,只能通過AssetManager來訪問

這些檔案。資料庫檔案和遊戲資料等放在這個目錄下是比較合適的。另外,網上關於assets和raw的資料都千篇一律了,因此關於這兩者中單個檔案

大小不能超過1M的**錯誤**描述也在傳播,即如果讀取超過1M的檔案會報"Data exceeds UNCOMPRESS_DATA_MAX (1314625 vs 1048576)"的

IOException,還引申出種種解決方案。個人認為不應該有這樣的限制,為了驗證這個說法寫了個Demo,發現將近5M的壓縮包在assets和raw中

都能正常訪問,因此在這裡糾正一下,理論上只要打包不超過Android APK 50M大小的限制都是沒有問題的。當然了,不排除是Android很早期的

時候因為裝置硬體原因aapt在編譯的時候對這兩個資料夾大小做出了限制,如果是這樣,較新版的ADT應該不會出現這種情況。

來自:http://my.eoe.cn/futurexiong/archive/5350.html

8、 啟動一個程式,可以主介面點選圖示進入,也可以從一個程式中跳轉過去,二者有什麼區別?

是因為啟動程式(主介面也是一個app),發現了在這個程式中存在一個設定為<category android:name="android.intent.category.LAUNCHER" />的activity,

所以這個launcher會把icon提出來,放在主介面上。當用戶點選icon的時候,發出一個Intent:

Intent intent = mActivity.getPackageManager().getLaunchIntentForPackage(packageName);

mActivity.startActivity(intent);   

跳過去可以跳到任意允許的頁面,如一個程式可以下載,那麼真正下載的頁面可能不是首頁(也有可能是首頁),這時還是構造一個Intent,startActivity.

這個intent中的action可能有多種view,download都有可能。系統會根據第三方程式向系統註冊的功能,為你的Intent選擇可以開啟的程式或者頁面。所以唯一的一點

不同的是從icon的點選啟動的intent的action是相對單一的,從程式中跳轉或者啟動可能樣式更多一些。本質是相同的。

9、程式之間的親和性的理解。

1、預設情況下一個應用的所有Activity都是具有相同的affinity,都是從application中繼承,application的affinity預設就是manifest的包名。

2、affinity對Activity來說,就像是身份證一樣,可以告訴所在的Task,自己屬於其中的一員。

3、應用場合:

a:根據affinity重新為Activity選擇合適的宿主Task;

b:與allowTaskReparenting屬性配合;

c:啟動Activity使用Intent設定了FLAG_ACTIVITY_NEW_TASK標記。

10、同一個程式,但不同的Activity是否可以放在不同的Task任務棧中?

可以放在不同的Task中。需要為不同的activity設定不同的affinity屬性,啟動activity的Intent需要包含FLAG_ACTIVITY_NEW_TASK標記。

11、橫豎屏切換時候Activity的生命週期。

1、不設定Activity的android:configChanges時,切屏會重新呼叫各個生命週期,切橫屏時會執行一次,切豎屏時會執行兩次

2、設定Activity的android:configChanges="orientation"時,切屏還是會重新呼叫各個生命週期,切橫、豎屏時只會執行一次

3、設定Activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新呼叫各個生命週期,只會執行onConfigurationChanged方法

12、AIDL的全稱是什麼?如何工作?

全稱是:Android Interface Define Language

在Android中, 每個應用程式都可以有自己的程序. 在寫UI應用的時候, 經常要用到Service. 在不同的程序中, 怎樣傳遞物件呢? 顯然, Java中不允許跨程序記憶體共享.

 因此傳遞物件, 只能把物件拆分成作業系統能理解的簡單形式, 以達到跨界物件訪問的目的. 在J2EE中,採用RMI的方式, 可以通過序列化傳遞物件. 在Android中, 則

採用AIDL的方式. 理論上AIDL可以傳遞Bundle,實際上做起來卻比較麻煩。

AIDL(AndRoid介面描述語言)是一種藉口描述語言; 編譯器可以通過aidl檔案生成一段程式碼,通過預先定義的介面達到兩個程序內部通訊程序的目的. 如果需要

在一個Activity中, 訪問另一個Service中的某個物件, 需要先將物件轉化成AIDL可識別的引數(可能是多個引數), 然後使用AIDL來傳遞這些引數, 在訊息的接收端, 使用

這些引數組裝成自己需要的物件.AIDL的IPC的機制和COM或CORBA類似, 是基於介面的,但它是輕量級的。它使用代理類在客戶端和實現層間傳遞值. 如果要使用AIDL, 

需要完成2件事情: 1. 引入AIDL的相關類.; 2. 呼叫aidl產生的class.

AIDL的建立方法:

AIDL語法很簡單,可以用來宣告一個帶一個或多個方法的介面,也可以傳遞引數和返回值。 由於遠端呼叫的需要, 這些引數和返回值並不是任何型別.

下面是些AIDL支援的資料型別:

1. 不需要import宣告的簡單Java程式語言型別(int,boolean等)

2. String, CharSequence不需要特殊宣告

3. List, Map和Parcelables型別, 這些型別內所包含的資料成員也只能是簡單資料型別, String等其他比支援的型別.

(另外: 我沒嘗試Parcelables, 在Eclipse+ADT下編譯不過, 或許以後會有所支援

13、dvm的程序和Linux的程序, 應用程式的程序是否為同一個概念

      Dvm的程序是dalivk虛擬機器程序,每個android程式都執行在自己的程序裡面,每個android程式系統都會給他分配一個單獨的liunx uid(user id),
每個dvm都是linux裡面的一個程序.所以說這兩個程序是一個程序.

相關推薦

Android 面試精華題目總結

轉載請標明出處:http://blog.csdn.NET/lmj623565791/article/details/24015867 下面的題目都是樓主在Android交流群大家面試時遇到的,如果大家有好的題目或者好的見解歡迎分享,樓主將長期維護此帖。 某公司高階面試題(2015-03-14)【感謝

面試筆試題目總結

        總結一下以前面試和筆試時的題目,找工作要用的,說不定哪天就又遇上了。 1.連結串列與陣列的區別(這個題目遇到了兩次)     答:(1)陣列要事前定義固定的長度,不能動態的刪減    &n

今年Android面試的經歷總結

此文希望能給那些想跳槽的朋友一些參考。 隨著工作時間的增加和技術經驗的積累。原先的公司不一定能提供給你想要的發展空間與前景。說直接點,家裡還有老婆孩子還有老父母,我們需要更高的薪酬讓他們過上更好的生活。所以跳槽是個不錯的選擇。 夏末的時候我就有了跳槽的想法。然後就是不斷的跑了很多家公司面試。前後花了將近兩

Android面試基礎知識總結(一)

狀態:未完成 Android面試基礎知識總結。 Activity 生命週期 啟動Activity:onCreate->onStart->onResume鎖屏或被其它Activity覆蓋:onPause->onStop解鎖或由被覆蓋狀態再回到前臺:onRes

基於上次騰訊遠端面試題目總結與回答(精心總結回顧) 下

6. 簡單說一說盒模型,W3C和IE怪異盒模型。 W3C標準的盒模型:width == content_width(不包括padding+border+margin) IE怪異盒模型: width == content_width+padding+bor

連結串列面試筆試題目總結

連結串列是最基本的資料結構,凡是學計算機的必須的掌握的,在面試的時候經常被問到,關於連結串列的實現,百度一下就知道了。在此可以討論一下與連結串列相關的練習題。 1、在單鏈表上插入一個元素,要求時間複雜度為O(1) 解答:一般情況在連結串列中插入一元素是在末尾插入的,這樣

基於上次騰訊遠端面試題目總結與回答(精心總結回顧) 上

這篇部落格同步更新於我的GitHub部落格:我的GitHub部落格 1.js中ajax傳送請求的步驟 在js中,有一個用於非同步請求的物件,XMLHttpRquest物件,使用該物件可以向服務端傳送請求(post,get,put...)。原生的方法步

PYTHON 一些基礎面試題目總結

外部 刪除一個文件 tel 信息 mpi seq break list 請求 PYTHON 一些基礎面試題目總結http://www.bieryun.com/1191.html1. Python是如何進行內存管理的?答:從三個方面來說,一對象的引用計數機制,二垃

Android面試收集錄16 Android動畫總結

ont 定義 其中 自定義動畫 替代 通過 1.0 日誌 action 一、Android 動畫分類 總的來說,Android動畫可以分為兩類,最初的傳統動畫和Android3.0 之後出現的屬性動畫; 傳統動畫又包括 幀動畫(Frame Animation)和補

java面試常考題目總結

幾個月的校招,終於面試可以面不改色,剛開始去面試的時候,每次問問題,以前學的東西都淡忘的差不多了,惡補基礎知識。下面是我總結的一些常考題目。 java和javac的作用:javac 是將java原始檔編譯為class位元組碼檔案,如javac HelloWorld.java。執行javac

面試,筆試題目總結練習

7.反轉整數 給定一個 32 位有符號整數,將整數中的數字進行反轉。 示例 1: 輸入: 123 輸出: 321  示例 2: 輸入: -123 輸出: -321 示例 3: 輸入: 120 輸出: 21 #include<stdio.h>

今年Android面試經歷的一些總結

此文希望能給想跳槽的朋友一些參考。 我們隨著工作時間的增加和技術經驗的積累。原先的公司不一定能技術提供給你想要的發展空間與前景。說直白點,家裡還有老婆孩子還有老父母,我們需要更高的薪酬讓他們過上更好的日子。所以跳槽是個不錯的選擇。 夏末的時候我就有了跳槽的想法。然後就是不斷的跑了很多家公司面

今年Android面試的一些經歷總結

此文希望能給那些想跳槽的朋友一些參考。 我們隨著工作時間的增加和技術經驗的積累。原先的公司不一定能提供給你想要的發展空間與前景。說直接點,家裡還有老婆孩子還有老父母,我們需要更高的薪酬來讓他們過上更好的生活。所以跳槽是個不錯的選擇。 夏末的時候我就有了跳槽的想法。然後就是不斷的跑了很多家公司面試。前後

Android面試題目持續更新中

Java部分 基礎 String buffer 與string builder 的區別? hashmap資料結構? arraylist 與 linkedlist 異同? object類的equal 和hashcode 方法重寫,為什麼? hashm

Android面試總結--Android

Activity生命週期 圖中需要注意一下幾點: 1.Activity例項是由系統自動建立,並在不同的狀態期間回撥相應的方法。一個最簡單的完整的Activity生命週期會按照如下順序回撥:onCreate -> onStart -> onResum

Android 面試總結之佈局常見問題

1、Android 中常用的佈局都有哪些?  FrameLayout RelativeLayout LinearLayout AbsoluteLayout TableLayout GrideLayout(Android 4.0 推出) 2、談談 UI 中, Paddin

Android面試總結

1、自我介紹     建議事先打個腹稿。不要念簡歷,主要介紹自己的經歷,讓自己脫穎而出。首先貼標籤,講故事,談願景。標籤:給自己貼的標籤要有點特色。看著像是缺點,細想還是有點。講故事:舉例說明。 2、專案介紹     技術難點,亮點。這個在平時的開發過程中要做好總結。面

人事面試題目總結

面試官問的時候,我們需要毫不猶豫的回答出來,這一點非常的重要,一但回答猶豫不決,面試官會認為你正準備編故事,所以不管你後面說什麼,都會持懷疑的態度,一但他對你有懷疑,你覺的他還會要你嗎? 1、請你自我介紹一下你自己? 回答提示:一般人回答這個問題過於平常,只說姓名、年齡、

"Fragment"-Android面試必問"精華技能點"彙總

Fragment技能點彙總總結: 目錄: 一.Fragment跟Activity如何傳值? 一.getActivity() 1.從Fragment獲取Ativity的資訊 2.就可以呼叫Ativity的方法了 二.setArgum

Android面試總結系列之面試技巧

文章目錄 面試官:Android動畫用過嗎? 我:用過一些簡單的。 面試官:那就簡單講一下吧!!! 本篇文章將根據我這些年面試和被面試的經驗來總結面試技巧,給各位迷茫的同學做個參考。 我認為面試問題一般都可以被分兩大類: 一類是公司專