·靜態布局、事件派發、視圖刷新(屬性動畫)
x4 你熟練掌握的導航方式都有哪些?·兩種不同方式的側滑菜單(SlidingMenu、DrawerLayout、NavigationView);·ViewPager + Fragment + 標簽切換;·標簽切換可以是RadioGroup/RadioButton,可以是TabLayout,可以是HorizontalScrollView嵌套線性布局,等等;·ActionBar/Toolbar搭配選項菜單(OptionsMenu);·其它;x7 說說你都用過哪些第三方框架?為什么要使用第三方框架?·框架的優勢包括:強大、便捷、健壯;·強大即框架有豐富的拓展功能;·便捷即調用簡單;·健壯指考慮周全、例如線程管理、緩存管理、異常處理等等;x8 網絡通信框架的好處是什么?·便捷:調用起來比HttpUrlConnectiony要容易;·強大:get、post、上傳、下載、通知回調等等;·健壯:線程管理、緩存管理、異常處理等;xA 圖片加載框架究竟選用哪一款,你是如何取舍的?·綜合考慮效果和易用性;·例如要求使用動畫效果,優選Glide或Fresco;·側重效率,則Glide優于Picasso,側重效果,則PiCSSo略優;·側重易用性,可能就不會選擇Fresco;·等等;xB 使用圖片加載框架的好處有哪些?·便捷:往往一兩行代碼就實現了圖片的加載;·強大:豐富的配置如占位圖、風格化顯示、加工裁剪、動畫效果等;·健壯:線程管理、緩存管理、異常處理等;xC 事件總線的好處是什么?·進程內的無障礙輕松通信:跨線程、跨組件;·事件類型可以是任意Object;·支持延時處理;xD 像黃油刀這類注解式框架,在混淆時要注意什么?·保留注解類;·保留注解類作用對象的名稱,否則運行時找不到;xE ORM數據庫框架的好處是什么?·直接將實體類映射為數據表;·直接以對象的方式操作增刪改查,無需寫SQL語句;xF 你有沒有接觸過藍牙開發?其連接和通信的原理是什么?跟Socket有何異同?·配置權限;·搜索設備:【找到設備】和【搜索結束】都是以系統廣播的形式接收和處理的;·準備連接:找到設備時,廣播Intent會攜帶有設備的信息,包括其地址和名稱等,記錄下來;·連接設備:又稱配對,通過遠程設備的地址(類似ip),和約定的UUID(類似端口)進行連接;·連接設備使用的API類為BluetoothSocket/BluetoothServerSocket;·互傳信息:一旦與遠程BluetoothSocket連接建立后,就能夠從中獲取輸入輸出流,實現通信;------------------------------·相同點:基于IP和端口(僅僅只是類比),基于長連接,從連接中獲取流實現數據傳遞;·不同點:設備不同,協議不同(Socket基于TCP/IP),也沒有父子類關系,編碼思路相似而已;xH 你都集成過哪些第三方的服務?·極光推送、ShareSDK分享、支付寶、百度地圖、Bmob后端云;xI 對稱加密和非對稱加密的原理分別是什么?·對稱加密:加密和解密的秘鑰相同;·非對稱加密:加密和解密的秘鑰不同,公鑰加密,私鑰解密;·非對稱的原理是:兩個大素數的乘積很難被因式分解;xJ 你在集成百度地圖的時候遇到過哪些坑?·在配置AppKey時,要明白AppKey是由包名和簽名共同決定的;·因此該AppKey當且僅當【工程的包名和簽名文件】都與申請時所使用的一致時,才是有效的;xK 混淆的目的是什么?·使你的代碼難以被反編譯;xL 為什么要給APK簽名?·簽名和包名功能決定應用的唯一身份;·在應用升級時,只有簽名和包名都相同時,高版本才能覆蓋低版本,否則會報簽名沖突;·簽名文件相當于開發者的身份證(因為有唯一的消息摘要/指紋),因此要妥善保管;xM 你有在github上發布過代碼嗎?該代碼有何亮點?·開放式問題,預則立,請有所準備;xN WebView中java和JS如何實現互調?·Java調JS:通過webView.loadUrl("Javascript:methodName()")的方式,前提是承載這一JS方法的頁面已經加載好;·JS調Java:通過window.javaObject.showToast()方式調用;·javaObject為Java代碼中聲明的實例;·該實例有公共的showToast()方法可供調用;·showToast()方法有@JavaScriptInterface注解;xO NDK開發中JAVA和C是如何實現互調的?其原理是什么?·Java調C:聲明native方法,在C代碼文件中對native方法做具體實現;·C代碼中方法的名稱須遵從Java_包名_類名_方法名的規范;·C回調Java:通過JNIEnv指針變量,以反射的方式獲取到要調用的Java類名和方法名,動態該類的實例并調用方法;·如果要回調的Java類正好是C方法的主調類,則無須創建Java類實例,直接以jinnstance參數作為回調實例即可;xP 一個帶有so庫的APK容易反編譯并調用so中的方法嗎?·理論上是可以的,因為Java代碼中的JNI類和方法聲明是不能混淆的;·那么我們可以通過new這個JNI類的對象來調用其中的方法;xQ Retrofit的好處是什么?·將所有網絡通信接口統一管理在一起,分層清晰;·以注解的方式區分GET,POST,上傳和下載;·以注解的方式實現地址和參數的注入,代碼的可讀性和可維護性都得以提升;·配合ConverterFactory可以將返回結果輕松轉化為實體類;·配合RxJavaCallAdapterFactory可以直接返回Observalbe對象,引爆響應式編程;xR 你有用過RxJava嗎?響應式編程有何好處?·鏈式編程,代碼簡潔易讀;·順序邏輯:在一條響應鏈中,執行順序是完全從上到下的,比之無邊無際的回調(callback hell),要更好讀好理解;·豐富的操作符:可以將原始事件進行近乎任意的轉化;·便捷的異常處理:有訂閱者的onError方法統一處理所有異常,代碼得到極大簡化;·便捷的線程調度:使用線程調度器可以方便地在線程間來回切換,避免了無盡的handler傳遞,代碼得到極大簡化;·調用鏈的注銷:可以在任意時間終止一整條正在執行中的響應鏈;xS 說說你對MVP設計模式的理解;它與MVC模式有何異同?·數據Model,視圖View,調度器PResenter;·傳統的MVC模式中,Activity職責重合,即同時扮演V和C的角色,代碼很混亂、耦合、難以管理;·MVP模式是將M和V徹底分層,Activity專注扮演View的角色,而將調度整合的工作交由Presenter;·Presenter在執行調度整合之前,須預先獲取M和V的實例;·Presenter的創建和初始化工作仍由Activity來做;------------------------------·如果實際界面存在于Fragment中,則Fragment充當View;·此時Activity負責裝配Fragment和初始化Presenter;
新聞熱點
疑難解答