Android面試題(四)

若蘭__明月發表於2017-12-13

27、如何簽名** **

應用要想升級必須滿足兩個條件

包名一致

簽名一致

微信    com.weixin

流氓程式   com.weixin

所以:簽名檔案不能丟,簽名密碼也不能忘,

真的丟了:讓原應用下架,重新打包簽名生成新的 apk ,上架

28、大使用者量、大資料量** **

對於大使用者量,大資料量,需要解決的是併發的問題,這個是伺服器需要考慮的事情。Android 客戶端重點是資訊的展示和與使用者的互動。客戶端只能通過其他的方式適當的限制客戶端的訪問伺服器,來減輕伺服器的負擔。比如一秒的時間內不允許使用者點選兩次按鈕提交伺服器資料,這個對使用者體驗是每啥影響的,但是卻可以大大減少伺服器的訪問量。

29、抽象** **

這個可以結合谷歌電子市場專案說一說LoadingPage的抽取。由於每一個介面都需要去載入網路資料,所以每一個介面都有幾種共同的狀態:載入中、載入失敗、空資料、載入成功。而載入中、載入失敗、空資料對於每一個介面來說他們的顯示內容都是一樣的,所以把這些通用的View在父類進行建立。而載入成功之後的佈局每一個介面都不太一樣,所以在LoadingPage中,把建立成功View的這個方法進行抽象,有具體的子類進行實現。

抽取的一般思想為:1、父類不知道如何實現的方法:抽象,讓子類實現方法2、父類不知道什麼資料型別:泛型,T代表的就是一種資料型別,在定義子類的時候確定下來的

30、你是如何使用**SVN **

svn的使用方式一般分為兩種,一種是直接在eclipse上安裝外掛,另外一種就是不使用外掛,讓提交程式碼和編輯程式碼分離開。

32、如何測試程式碼?如何保證程式的健壯性?** **

可以使用Monkey測試工具幫助我們完成程式的健壯性。

命令如下:adb shell monkey -p 包名 --ignore-crashes --ignore-timeouts 10000

具體工作的使用場景將會和logcat命令結合起來。

adb logcat -v time > D:\log.txt

33、為什麼回答的這麼流暢** **

在工作的時候一般我們都是以結果為主的,能解決問題就可以。但是我有一個習慣,就是我經常總結。而且來面試的時候我也適當的準備了一下。

34、說說** MVC 模式的原理,在Android 中的運用。 MVC 是 Model、View、Controller 三部分組成的。其中View 主要由 xml 佈局檔案,或者用程式碼編寫動態佈局來體現。Model 是資料模型,其實類似 javabean,不過這些 JavaBean 封裝了對資料庫、網路等的操作。Controller 一般由 Activity 負責,它根據使用者的輸入,控制使用者介面資料的顯示及更新model 物件的狀態,它通過控制 View 和 Model 跟使用者進行互動。

MVC在Android當中體現的並不是很明顯,在web當中體現的明顯些。

35、你做過支付嗎?支付的流程是怎樣的?** **

主要做過支付寶的支付,在繼承支付寶支付功能的時候,需要先到支付寶平臺上進行線上簽約,得到PID,然後再生成一下公鑰和金鑰。整個支付流程涉及四個物件以及四個重要資訊。

四個重要物件:應用客戶端(電商apk)、公司自己的電商伺服器、支付寶客戶端、支付寶伺服器。

四個重要的資訊:訂單的資料,使用者的支付寶賬戶和密碼,電商公司的支付寶賬戶,電商伺服器的通知連結

具體的支付流程如下:

Paste_Image.png

36、使用到的一些工具** **

比如:adb、ddms、traceview、beyond compare、monkey、mat、hierarchyviewer、draw9patch、heap

traceview:分析程式執行的方法效率,可以圖形化的表現出方法的執行時長。從而幫助開發者優化效能。

logcat如何過濾:新增tag、過濾框

heap:看應用程式記憶體的

beyond compare:文字比較

monkey:壓力測試

mat:記憶體分析工具

hierarchyviewer:分析佈局檢視的

draw9patch:繪製.9圖片的

37javajs互調** **

目前越來越多的Android App 都採用了混合程式設計的架構,也就是Android 原生控制元件+html5,當然html 頁面也必須執行在webview 控制元件中,我們可以簡單吧webview 看成內建到app 中的小型瀏覽器,這裡面最核心的問題就是html 中的js 程式碼如何呼叫java 程式碼,比如js 呼叫java 程式碼,然後開啟一個新的Activity 介面。比如淘寶已經大量採用了h5 來實現其客戶端功能,商品列表是Android 端控制元件,點選商品列表進入某個商品詳情可能就是h5 介面,這裡就存在java 給js 傳遞資料的問題,點選h5 的商品詳情介面的立即購買,可能就又從h5 跳轉到了Activity 介面,這裡又牽扯到js 給java 傳遞數值的問題。

** **

38、**5.0是怎樣對系統效能進行優化的? **

jvm :java虛擬機器

dalvik:在jvm的基礎上進行了對移動裝置的優化

art:新的虛擬機器,效率高。

apk建立執行的一般流程:程式碼--位元組碼class--機器碼

dalvik是實時編譯的,

而art是預先編譯,在安裝的時候就把機器碼編譯出來存起來。

相關文章