2016年2月份面試題

1. OkHttp原生取消網絡請求的方法:

Call.Cancel();

2. android事件分發機制:

 3.0  以Button爲例:

onTouch是優先於onClick執行的,並且onTouch執行了兩次,一次是ACTION_DOWN,一次是ACTION_UP(你還可能會有多次ACTION_MOVE的執行,如果你手抖了一下)。因此事件傳遞的順序是先經過onTouch,再傳遞到onClick方法中。

3.1. onTouch和onTouchEvent有什麼區別,又該如何使用?

從源碼中可以看出,這兩個方法都是在View的dispatchTouchEvent中調用的,onTouch優先於onTouchEvent執行。如果在onTouch方法中通過返回true將事件消費掉,onTouchEvent將不會再執行。

另外需要注意的是,onTouch能夠得到執行需要兩個前提條件,第一mOnTouchListener的值不能爲空,第二當前點擊的控件必須是enable的。因此如果你有一個控件是非enable的,那麼給它註冊onTouch事件將永遠得不到執行。對於這一類控件,如果我們想要監聽它的touch事件,就必須通過在該控件中重寫onTouchEvent方法來實現。

  1. 爲什麼給ListView引入了一個滑動菜單的功能,ListView就不能滾動了?

如果你閱讀了Android實現圖片滾動控件,含頁籤功能,讓你的應用像淘寶一樣炫起來 這篇文章。當時我在圖片輪播器裏使用Button,主要就是因爲Button是可點擊的,而ImageView是不可點擊的。如果想要使用ImageView,可以有兩種改法。第一,在ImageView的onTouch方法裏返回true,這樣可以保證ACTION_DOWN之後的其它action都能得到執行,才能實現圖片滾動的效果。第二,在佈局文件裏面給ImageView增加一個android:clickable=”true”的屬性,這樣ImageView變成可點擊的之後,即使在onTouch裏返回了false,ACTION_DOWN之後的其它action也是可以得到執行的。

3 ViewGroup

顧名思義,ViewGroup就是一組View的集合,它包含很多的子View和子VewGroup,是Android中所有佈局的父類或間接父類,像LinearLayout、RelativeLayout等都是繼承自ViewGroup的。但ViewGroup實際上也是一個View,只不過比起View,它多了可以包含子View和定義佈局參數的功能。

4 android 動畫:

  1. 幀動畫:這類動畫可以創建一個Drawable系列,按照一定的時間間歇來顯示圖片
  2. 補間動畫:動畫縮放,旋轉,移動,伸展,淡出等

    1、Alpha:淡入淡出效果
      2、Scale:縮放效果
      3、Rotate:旋轉效果
      4、Translate:移動效果

  3. 屬性動畫

5 activity的四種啓動模式

  1. 單一任務棧

如果開啓a.b.c.d>再開啓b的話,會把b上面的c和d給清除掉

  1. 單一頂部

    如果開啓的activity在最頂部,就不會創建新的activity,而是直接複用已經存在的activity

  2. 單一實例

    如果開啓的activity存在,再次開啓的話,會把其他的activity全部清除掉。然後只留下一個activity。

  3. 標準啓動模式

activity的生命週期:

oncreacte()–>onStart()–>onResume()–>onPasuse()–>onStop()–>onDestroy()

隱藏標題欄

  • 在activity中的onCreate方法中setContentView之前設置requestWindowFeature(Window.FEATURE_NO_TITLE);

加密:RSA 與AES 加密

RSA加密:非對稱加密,

是最流行的的共鑰密碼算法,使用長度可以變化的密鑰,RSA是第一個既可以用於數據加密也能用於數字簽名的算法。
算法原理:

  • 1 。隨機選擇兩個大質數P和Q,P不等於Q,計算N=PQ;
  • 2 。選擇一個大於1小於N的自然數e,e必須與(P-1)(Q-1)互素。
  • 3 。 用公式計算出D:dXe = 1(mod(p-1)(q-1)).
  • 4 。銷燬P和Q。

    最終得到的N和e就是“公鑰”,d就是”私鑰“,發送方便使用N去加密數據,接收方只有使用D才能解開數據內容。

RSA的安全性依賴於大數分解,小於1024位的N已經被證明是不安全的,而且由於RSA算法進行的都是大數計算,使得RSA最快的情況也比DES慢上幾倍,這是RSA最大的缺陷,因此通常用於加密少量數據或者加密密鑰,但RSA也算一種高強度的算法。

AES加密:對稱加密

定義:高級加密標準(Advanced Encryption Standard)

  • 1 AES 是android自帶了包的。Base64 MD5 基於J2SE平臺的。

    I/加密結果爲 ( 190): BFB77D8F1E1EE9D5E252926A12659DE8
    I/解密結果( 190): 0123456789

LeakCanary

leakCanary是Square開源框架,是一個Android和Java的內存泄露檢測庫,如果檢測到某個 activity 有內存泄露,LeakCanary 就是自動地顯示一個通知,所以可以把它理解爲傻瓜式的內存泄露檢測工具。通過它可以大幅度減少開發中遇到的oom問題,大大提高APP的質量。

內存泄露的種類:

  • 1 錯誤使用單例造成的內存泄漏(Context)
  • 2 Handler造成的內存泄漏
  • 3 線程造成的內存泄漏(Activity銷燬時候也應該取消相應的任務AsyncTask.cancel()方法)
  • 4 非靜態內部類創建靜態實例造成的內存泄漏(靜態內部類不再持有外在activity的引用)
  • 5 由WebView引起的內存泄漏(Native堆內存用於保存頁面元素,加載圖片,內存佔用更嚴重)
  • 6 資源未關閉造成的內存泄漏(Broadcastreceiver,ContentObserver,File,Cursor,Stream,Bitmap)應該在activity銷燬時進行關閉或者註銷,否則這些資源不會被回收,造成內存泄露。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章