Android面試題06

51. 一條最長的短信息約佔多少byte?linux

中文70(包括標點),英文160,160個字節 這個說法不許確,android

要跟手機制式運營商等信息有關. 編程

 

作實驗,看源碼安全

ArrayList<String> msgs =sms.divideMessage(message); socket

        for (String msg : msgs) {  ide

           sms.sendTextMessage(phoneNumber, null, msg, pi, null);       模塊化

}工具

1佈局

52. Linux中跨進程通訊的幾種方式 。post

linux編程

# 管道( pipe )管道是一種半雙工的通訊方式數據只能單向流動並且只能在具備親緣關係的進程間使用。進程的親緣關係一般是指父子進程關係。

# 有名管道 (named pipe) : 有名管道也是半雙工的通訊方式,可是它容許無親緣關係進程間的通訊。

# 信號量( semophore ) : 信號量是一個計數器,能夠用來控制多個進程對共享資源的訪問。它常做爲一種鎖機制,防止某進程正在訪問共享資源時,其餘進程也訪問該資源。所以,主要做爲進程間以及同一進程內不一樣線程之間的同步手段。

# 消息隊列( message queue ) : 消息隊列是由消息的鏈表,存放在內核中並由消息隊列標識符標識。消息隊列克服了信號傳遞信息少、管道只能承載無格式字節流以及緩衝區大小受限等缺點。

# 信號 ( sinal ) : 信號是一種比較複雜的通訊方式,用於通知接收進程某個事件已經發生。

# 共享內存( shared memory ) :共享內存就是映射一段能被其餘進程所訪問的內存,這段共享內存由一個進程建立,但多個進程均可以訪問。共享內存是最快的 IPC 方式,它是針對其餘進程間通訊方式運行效率低而專門設計的。它每每與其餘通訊機制,如信號兩,配合使用,來實現進程間的同步和通訊。

# 套接字( socket ) : 套解口也是一種進程間通訊機制,與其餘通訊機制不一樣的是,它可用於不一樣及其間的進程通訊。

53. 談談對Android NDK的理解。

native develop kit   只是一個交叉編譯的工具  .so

    1.何時用ndk,   實時性要求高,遊戲,圖形渲染,  

opencv (人臉識別) , ffmpeg , rmvb  mp5 avi 高清解碼. ffmpeg,opencore.

 

2.爲何用ndk,ndk的優勢 ,缺點,

 

咱們項目中那些地方用到了ndk, c opengl

 

54. 談談Android的優勢和不足之處。

1、開放性,開源  ophone 阿里雲( 徹底兼容android) 樂os

2、掙脫運營商束縛

3、豐富的硬件選擇 mtk android 

4、不受任何限制的開發商

5、無縫結合的Google應用

 

缺點也有5處:

1、安全問題、隱私問題 

2、賣手機的不是最大運營商

3、運營商對Android手機仍然有影響

4、山寨化嚴重

5、過度依賴開發商,缺少標準配置 版本過多 

 

 

55. Android系統中GC什麼狀況下會出現內存泄露呢?  視頻編解碼/內存泄露

檢測內存泄露   工具 

致使內存泄漏主要的緣由是,先前申請了內存空間而忘記了釋放。若是程序中存在對無用對象的引用,那麼這些對象就會駐留內存,消耗內存,由於沒法讓垃圾回收器GC驗證這些對象是否再也不須要。若是存在對象的引用,這個對象就被定義爲"有效的活動",同時不會被釋放。要肯定對象所佔內存將被回收,咱們就要務必確認該對象再也不會被使用。典型的作法就是把對象數據成員設爲null或者從集合中移除該對象。但當局部變量不須要時,不需明顯的設爲null,由於一個方法執行完畢時,這些引用會自動被清理。

Java帶垃圾回收的機制,爲何還會內存泄露呢?

 

Vector v = new Vector(10);    

 for (int i =1; i < 100; i++)      {     

Object o = new Object();     

v.add(o);     

o = null;     

}//此時,全部的Object對象都沒有被釋放,由於變量v引用這些對象。 

Java 內存泄露的根本緣由就是 保存了不可能再被訪問的變量類型的引用

Jni 開發可能會出現內存泄露


56. Android UI中的View如何刷新。

在主線程中  拿到view調用Invalide()方法,查看畫畫板裏面更新imageview的方法

 

在子線程裏面能夠經過postInvalide()方法;

    iv.invalidate();

      

       new Thread(){

           public void run(){

              iv.postInvalidate();

           }

       }.start();

 

57. 簡單描述下Android 數字簽名。

Android 數字簽名

       在Android系統中,全部安裝到系統的應用程序都必有一個數字證書,此數字證書用於標識應用程序的做者和在應用程序之間創建信任關係

Android系統要求每個安裝進系統的應用程序都是通過數字證書籤名的,數字證書的私鑰則保存在程序開發者的手中。Android將數字證書用來標識應用程序的做者和在應用程序之間創建信任關係,不是用來決定最終用戶能夠安裝哪些應用程序。

這個數字證書並不須要權威的數字證書籤名機構認證(CA),它只是用來讓應用程序包自我認證的。

同一個開發者的多個程序儘量使用同一個數字證書,這能夠帶來如下好處。

(1)有利於程序升級,當新版程序和舊版程序的數字證書相同時,Android系統纔會認爲這兩個程序是同一個程序的不一樣版本。若是新版程序和舊版程序的數字證書不相同,則Android系統認爲他們是不一樣的程序,併產生衝突,會要求新程序更改包名。

 

(2)有利於程序的模塊化設計和開發。Android系統容許擁有同一個數字簽名的程序運行在一個進程中,Android程序會將他們視爲同一個程序。因此開發者能夠將本身的程序分模塊開發,而用戶只須要在須要的時候下載適當的模塊。

在簽名時,須要考慮數字證書的有效期:

(1)數字證書的有效期要包含程序的預計生命週期,一旦數字證書失效,持有改數字證書的程序將不能正常升級。

(2)若是多個程序使用同一個數字證書,則該數字證書的有效期要包含全部程序的預計生命週期。

(3)Android Market強制要求全部應用程序數字證書的有效期要持續到2033年10月22日之後。

Android數字證書包含如下幾個要點:

 (1)全部的應用程序都必須有數字證書,Android系統不會安裝一個沒有數字證書的應用程序

 (2)Android程序包使用的數字證書能夠是自簽名的,不須要一個權威的數字證書機構簽名認證

 (3)若是要正式發佈一個Android ,必須使用一個合適的私鑰生成的數字證書來給程序簽名,而不能使用adt插件或者ant工具生成的調試證書來發布。

 (4)數字證書都是有有效期的,Android只是在應用程序安裝的時候纔會檢查證書的有效期。若是程序已經安裝在系統中,即便證書過時也不會影響程序的正常功能。

 

 

58. 什麼是ANR 如何避免它?

在Android上,若是你的應用程序有一段時間響應不夠靈敏,系統會向用戶顯示一個對話框,這個對話框稱做應用程序無響應(ANR:Application Not Responding)對話框。用戶能夠選擇讓程序繼續運行,可是,他們在使用你的應用程序時,並不但願每次都要處理這個對話框。所以,在程序裏對響應性能的設計很重要,這樣,系統不會顯示ANR給用戶。

Activity 5秒  broadcast10

 

耗時的操做 worker thread裏面完成,

 handlermessage…AsynsTask , intentservice.等…

 

59. android中的動畫有哪幾類,它們的特色和區別是什麼?

兩種,一種是Tween動畫、還有一種是Frame動畫。

Tween動畫,這種實現方式可使視圖組件移動、放大、縮小以及產生透明度的變化;

能夠經過佈局文件,能夠經過代碼

  1、   控制View的動畫

a)  alpha(AlphaAnimation)

漸變透明   

b)  scale(ScaleAnimation)

漸變尺寸伸縮   

c)  translate(TranslateAnimation)

畫面轉換、位置移動 

d)  rotate(RotateAnimation)

畫面轉移,旋轉動畫 

 

2控制一個Layout裏面子View的動畫效果

a)  layoutAnimation(LayoutAnimationController)

b)  gridAnimation(GridLayoutAnimationController)

另外一種Frame動畫,傳統的動畫方法,經過順序的播放排列好的圖片來實現,相似電影。

相關文章
相關標籤/搜索