筆/面試題雜記

  • Android系統(tǒng)對下列哪些對象提供了資源池
    答案:Messagehe,AsyncTask。
  • getMetrics用于獲取屏幕的高和寬。
  • DVM指dalvik的虛擬機.每一個Android應用程序都在它自己的進程中運行,都擁有一個獨立的 Dalvik虛擬機實例.而每一個DVM都是在Linux 中的一個進程,所以說可以認為是同一個概念.
  • Activity和Task的啟動模式有哪些?

答:standard、singleTop、singleTasksingleInstance。
解析:

  • “拿來主義”standard模式。哪里需要調用我我就去哪里,可以多次實例化,可以幾個相同的Activity重疊。
  • “拒絕堆疊”singleTop模式。可以多次實例化,但是不可以多個相同的Activity重疊,當堆棧的頂部為相同的Activity時,會調用onNewIntent函數(shù)。
  • “獨立門戶”singleTask模式。同一個應用中調用該Activity時,如果該Activity沒有被實例化,會在本應用程序的Task內實例 化,如果已經實例化,會將Task中其上的Activity銷毀后,調用onNewIntent;其它應用程序調用該Activity時,如果該 Activity沒有被實例化,會創(chuàng)建新的Task并實例化后入棧,如果已經實例化,會銷毀其上的Activity,并調用onNewIntent。一句 話,singleTask就是“獨立門戶”,在自己的Task里,并且啟動時不允許其他Activity凌駕于自己之上。
  • “孤獨寂寞”singleInstance模式。加載該Activity時如果沒有實例化,他會創(chuàng)建新的Task后,實例化入棧,如果已經存在,直接調用 onNewIntent,該Activity的Task中不允許啟動其它的Activity,任何從該Activity啟動的其他Activity都將被 放到其他task中,先檢查是否有本應用的task,沒有的話就創(chuàng)建。
  • 對于一個已經存在的SharedPreferences對象setting,想向其中存入一個字符串"person",setting應該先調用什么方法( ).

答:edit()
解析:

//實例化SharedPreferences對象(第一步)
SharedPreferences mySharedPreferences= getSharedPreferences("test", Activity.MODE_PRIVATE); 

//實例化SharedPreferences.Editor對象(第二步)(android.content.SharedPreferences.Editor)
SharedPreferences.Editor editor = mySharedPreferences.edit(); 

//用putString的方法保存數(shù)據(jù) 
editor.putString("name", "Karl"); 
editor.putString("habit", "sleep"); 

//提交當前數(shù)據(jù)
editor.commit();
  • 編寫AIDL文件時,需要注意以下幾點:

1.接口名和aidl文件名相同。
2.接口和方法前不用加訪問權限修飾符public,private,protected等,也不能用final,static。
3.Aidl默認支持的類型包話java基本類型(int、long、boolean等)和(String、List、Map、 CharSequence),使用這些類型時不需要import聲明。對于List和Map中的元素類型必須是Aidl支持的類型。如果使用自定義類型作 為參數(shù)或返回值,自定義類型必須實現(xiàn)Parcelable接口。
4.自定義類型和AIDL生成的其它接口類型在aidl描述文件中,應該顯式import,即便在該類和定義的包在同一個包中。
5.在aidl文件中所有非Java基本類型參數(shù)必須加上in、out、inout標記,以指明參數(shù)是輸入?yún)?shù)、輸出參數(shù)還是輸入輸出參數(shù)。
6.Java原始類型默認的標記為in,不能為其它標記。
持續(xù)更新...

  • ANR(Application Not Responding)

在Android中,如果你的應用程序有一段時間響應不夠靈敏,系統(tǒng)會向用戶顯示一個對話框,這個對話框稱作應用程序無響應(ANR:Application Not Responding)對話框。用戶可以選擇“等待”而讓程序繼續(xù)運行,也可以選擇“強制關閉”。
默認情況下,Activity的最長執(zhí)行時間是5秒,BroadcastReceiver的最長執(zhí)行時間是10秒。超出就會提示應用無響應。
三種常見類型:

  • KeyDispath Timeout(5 seconds) -- 主要類型
    按鍵或觸摸事件在特定時間內無響應。
  • BroadcastTimeout(10 seconds)
    BroadcastReceiver在特定時間內無法處理完成。
  • Service Timeout(20 seconds) --小概率類型
    Service在特定的時間內無法處理完成。
  • 從架構圖看,Android分為5個層

Linux Kernel(Linux內核)、Hardware Abstraction Layer(硬件抽象層)、Libraries(系統(tǒng)運行庫或者是c/c++ 核心庫)、Application Framework(開發(fā)框架包 )、Applications(核心應用程序)


image
  • Android系統(tǒng)對下列哪些對象提供了資源池

答案:Message和AsyncTask。
Message有靜態(tài)方法Obtaion從消息池中取對象。AsynTask是線程池改造的,池里默認提供(核數(shù) + 1)個線程進行并發(fā)操作,最大支持(核數(shù) * 2 + 1)個線程,超過后會丟棄塔塔任務;

  • 請介紹一下,socket編程的三種通信模型,BIO,NIO,AIO
  • BIO是同步阻塞IO,是一個客戶端對應一個線程
  • NIO是同步非阻塞IO,多個客戶端對應一個線程,服務端和客戶端均使用緩沖區(qū)的方式進行讀寫。
  • AIO是異步非阻塞IO,AIO的簡化是NIO
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容