Android面試題集

Android面試題集(來自網絡整理)javascript

1、幾點建議java

  1. 簡歷要如實寫,相關的知識點必定要爛熟於心。
  2. 基礎紮實,android和java相關的知識樹網上有不少資料,看過但讓你講出來未必能說的好。
  3. 提早總結,你還擅長什麼其餘技術?這種開放問題要看知識面了。
  4. 學會提問,你有什麼問題要問我嗎?這種禮貌性問題也是一個瞭解對方的好機會。
  5. 良好的內心素質,不管遇到什麼狀況,面試官遲到、面試官態度冰冷說話不客氣、質疑你的回答等等各類問題都不要慌也不要排斥,必定要沉住氣,耐心積極的思考並回答對方的提問。
  6. 推薦幾本書,也是好幾回面試後發現裏面涵蓋了大部分答案。《Android開發藝術探索》《Android源碼設計模式-解析與實戰》《Android進階之光》《深刻理解Java虛擬機》,《Android音視頻開發》多看幾遍。

2、HashMap相關android

包含知識點:散列表,散列衝突,散列均衡,散列擴充,哈希算法,哈希算法怎麼應用在散列表上,負載因子;jdk1.8後HashMap引入了紅黑樹git

  1. HashMap源碼,SpareArray原理
  2. HashMap實現原理,ConcurrentHashMap的實現原理,原子類
  3. jdk1.5?SparseArray和ArrayMap各自的數據結構,前者的查找是怎麼實現的,與HashMap的區別
  4. HashMap是如何解決Hash衝突的?
  5. HashMap和HashTable區別?
  6. Android對HashMap作了優化後推出的新的容器類是什麼?好比使用SparseArray和ArrayMap
  7. HashSet和HashMap怎麼判斷集合元素重複
  8. LruCache底層實現原理
  9. ArrayList,LinkedList源碼要看

3、哈希、加密相關github

  1. MD5是加密方法麼?Base64呢

4、架構、框架web

  1. MVC,MVP,MVVM分別是什麼?
  2. 項目組件化的理解
  3. app的架構是怎麼樣的,而且爲何這樣,有什麼優缺點?
  4. MVP、MVVM、MVC解釋和實踐
  5. Jetpack
  6. app的架構是怎麼樣的,而且爲何這樣,有什麼優缺點?
  7. MVP、MVVM、MVC解釋和實踐
  8. 若是用了一些解耦的策略,怎麼管理生命週期的?
  9. 有用什麼模式麼,邏輯什麼的都在Activity層?怎麼分離的
  10. MVC,MVP,MVVM分別是什麼?

5、UI面試

  1. 講解Activity和Window,View的關係,以及DecorView結構
  2. 計算一個view的嵌套層級
  3. 封裝view的時候怎麼知道view的大小(ps:多是寬高?)
  4. 自定義View如何考慮機型適配
  5. view渲染
  6. 自定義View裏面OnMeasure參數的意義
  7. 自定義View,ViewGroup注意哪些回調?
  8. View繪製熟悉麼,介紹下,能說下實現原理麼
  9. Canvas的底層機制,繪製框架,硬件加速是什麼原理,canvas lock的緩衝區是怎麼回事
  10. surfaceview, suface,surfacetexure等相關的,以及底層原理
  11. View 事件傳遞機制
  12. down、move、up事件的傳遞
  13. 事件的傳遞方式,View,ViewGroup
  14. ACTION_CANCEL何時觸發,觸摸button而後滑動到外部擡起會觸發點擊事件嗎,再滑動回去擡起會麼
  15. 怎麼處理嵌套View的滑動衝突問題
  16. Scroller有什麼方法,怎麼使用的。
  17. TextView調用setText方法的內部執行流程。
  18. RecyclerView 和Listview的區別,性能
  19. CoordinatorLayout、CollapsingToolbarLayout原理以及使用
  20. 介紹下SurfView

6、圖片算法

  1. 圖片加載庫相關,bitmap如何處理大圖,如一張30M的大圖,如何預防OOM
  2. listview圖片加載錯亂的原理和解決方案
  3. 圖片加載原理
  4. 基於自身工做經驗和計算機相關知識,給出 移動端地圖局部加載 瓦片大小的像素大小估值
  5. 圖片加載三級緩存,有一個功能,作一個能放大縮小的圖片查看器,加載一張巨大的圖片,怎麼作
  6. 圖片加載框架優劣比較,以及以前項目選用加載框架時候的考慮
  7. glide緩存策略?同一個圖片跟size有關麼?

7、網絡數據庫

  1. 網絡請求緩存處理,okhttp如何處理網絡緩存
  2. https相關,如何驗證證書的合法性,https中哪裏用到了對稱加密,哪裏用來非對稱加密,對加密算法(如RSA)等是否有了解
  3. 視頻加密傳輸
  4. https請求慢的解決辦法,DNS,攜帶數據,直接訪問IP
  5. TCP與UDP區別與應用(三次握手和四次揮手)涉及到部分細節(如client如何肯定本身發送的消息被server收到) HTTP相關 提到過Websocket 問了WebSocket相關以及與socket的區別
  6. 網絡請求相關,主要是網絡請求優化。網絡請求的時候遇到的問題
  7. 網絡請求的開源框架:OKHttp介紹,寫過攔截器麼
  8. 數據層有統一的管理麼,數據緩存是怎麼作的,http請求等有提供統一管理麼?
  9. HttpClient和HttpConnection的區別
  10. Https是怎麼回事?
  11. Android長鏈接,怎麼處理心跳機制。

8、Android基礎canvas

8.1 啓動流程

  1. 答題說清一個應用程序安裝到手機時發生了什麼
  2. App是如何沙箱化,爲何要這麼作
  3. 權限管理系統(底層的權限是如何進行grant的)
  4. App啓動流程,從點擊桌面開始
  5. 系統啓動流程Zygote進程 ->SystemServer進程 ->各類系統服務 ->應用進程
  6. Manifests原理,APP啓動流程,APK打包流程
  7. FW(Framework) 層熟悉麼,源碼看過麼
  8. 介紹下app架構和通訊

8.2 四大組件

  1. 畫出Android的大致架構圖
  2. BroadcastReceiver,LocalBroadcastReceiver區別
  3. 廣播(動態註冊和靜態註冊的區別,有序廣播和標準廣播)
  4. 怎麼啓動service,service和activity怎麼進行數據交互
  5. Service基礎概念,生命週期,通訊。四大組件是基礎,常見問題都要掌握
  6. service用過麼,基本調用方法
  7. IntentService生命週期是怎樣的,使用場合等
  8. activity棧
  9. intent-filter
  10. 下拉狀態欄是否是影響activity的生命週期,若是在onStop的時候作了網絡請求,onResume的時候怎麼恢復
  11. Activity的四種啓動模式以及相關概念,Activity棧,常見情境下的生命週期分析,異常關閉頁面以後的恢復
  12. Activity的生命週期,finish調用後其餘生命週期還會走麼
  13. ActivityA跳轉ActivityB而後B按back返回A,各自的生命週期順序,A與B均不透明。
  14. Activity的生命週期有哪些,知道onRestart麼,介紹下
  15. Activity的啓動模式有哪些?棧裏A-B-C,先想直接到A,BC都清理掉,有幾種方法能夠作到?這幾種方法產生的結果是有幾個A的實例?
  16. 都熟悉哪些命令?知道怎麼用命令啓動一個Activity麼?
  17. 非UI線程能夠更新UI嗎?
  18. 有什麼工具能夠看到Activity棧信息麼?多個棧的話,有方法分別獲得各個棧的Activity列表麼

8.3 控件

  1. 想改變listview的高度,怎麼作
  2. RecyclerView和ListView有什麼區別?局部刷新?前者使用時多重type場景下怎麼避免滑動卡頓。懶加載怎麼實現,怎麼優化滑動體驗。
  3. SurfaceView和View的最本質的區別?
  4. 如何實現右滑finish activity?
  5. 如何在整個系統層面實現界面的圓角效果。(即全部的APP打開界面都會是圓角)
  6. LinearLyout、FrameLayout、RelativeLayout性能對比,爲何

8.4 存儲

  1. android文件存儲,各版本存儲位置的權限控制的演進,外部存儲,內部存儲
  2. Android中的存儲類型
  3. android文件存儲,各版本存儲位置的權限控制的演進,外部存儲,內部存儲

8.5 Fagment及其餘

  1. savedInstanceState知道麼,幹什麼用的,何時有值,何時爲空,平時是怎麼用的
  2. Android中main方法入口在哪裏
  3. 爲何 Google 會推出Fragment ,有什麼好處和用途? 直接用 View 代替不行麼?
  4. Fragment的replace和end的區別?
  5. SharedPrefrences的apply和commit有什麼區別?
  6. Bundle機制
  7. 動態加載
  8. android api層的源碼熟悉哪些?解釋一下
  9. 推送消息有富文本麼
  10. 是否熟悉Android jni開發,jni如何調用java層代碼
  11. webwiew瞭解?怎麼實現和javascript的通訊?相互雙方的通訊。@JavascriptInterface在?版本有bug,除了這個還有其餘調用android方法的方案嗎?
  12. ReactiveNative瞭解多少

8.6 gradle、打包、編譯

  1. 描述點擊Android Studio的build按鈕後發生了什麼
  2. gradle熟悉麼,自動打包知道麼
  3. gradle打包流程熟悉麼

9、進程、線程、協程

  1. synchronize用法
  2. volatile用法
  3. 進程保活
  4. TreadLocal原理
  5. SP是進程同步的嗎?有什麼方法作到同步
  6. 線程間操做List
  7. 進程和Application的生命週期
  8. handler機制(須要關注細節:如何線程如何創建和退出消息循環等)
  9. 多線程(關於AsyncTask缺陷引起的思考)
  10. 進程間通訊的方式
  11. 多線程斷點續傳原理
  12. Android系統爲何會設計ContentProvider,進程共享和線程安全問題
  13. 線程掛起,休眠,釋放資源相關,喚醒,線程同步,數據傳遞,問了不少線程的問題,問了20分鐘大概
  14. static synchronized 方法的多線程訪問和做用,同一個類裏面兩個synchronized方法,兩個線程同時訪問的問題
  15. handler發消息給子線程,looper怎麼啓動
  16. BC三個線程,C線程要等A和B線程的結果,AB並行,問,跟什麼數據結構相似....,不是問生產者消費者或者信號量什麼的,>
  17. 線程同步的問題,經常使用的線程同步
  18. AsyncTask內部實現,關注默認線程池是一個串行的線程池;
  19. 講解一下HandlerThread
  20. 同步的問題,常見的那些,鎖機制,sychronized關鍵字,concurrent包下的數據結構,atom包下的數據結構
  21. 線程之間怎麼通訊
  22. 對應用裏的線程有作統一管理麼?
  23. 進程間通訊方式?Binder的構成有幾部分?
  24. Synchronize關鍵字後面跟類或者對象有什麼不一樣。
  25. ThreadLocal是什麼?Looper中的消息死循環爲何沒有ANR?
  26. Runnable與Callable、Future、FutureTask的區別,AsyncTask用到哪一個?- AsyncTask是順序執行麼,for循環中執行200次new AsyncTask並execute,會有異常嗎
  27. 若是在當前線程內使用Handler postdelayed 兩個消息,一個延遲5s,一個延遲10s,而後使當前線程sleep 5秒,以上消息的執行時間會如何變化?
  28. Android中進程內存的分配,能不能本身分配定額內存?
  29. 下拉狀態欄是否是影響activity的生命週期,若是在onStop的時候作了網絡請求,onResume的時候怎麼恢復
  30. CrashHandler實現原理?
  31. 怎麼控制另一個進程的View顯示(RemoteView)?

10、性能優化

  1. 統計啓動時長,標準
  2. 如何保持應用的穩定性
  3. 性能優化,如何保證應用啓動不卡頓
  4. 怎麼去除重複代碼
  5. Android相關優化(如內存優化、網絡優化、佈局優化、電量優化、業務優化)
  6. 界面卡頓的緣由以及解決辦法
  7. 內存泄漏如何派出,MAT分析方法以及原理,各類泄漏的緣由是什麼好比
  8. Handler爲何會泄漏
  9. apk包大小有限制麼?怎麼減小包大小
  10. ANR是怎麼回事,怎麼查?Service會引發ANR麼?
  11. anr是什麼緣由產生的,怎麼排查
  12. 界面卡頓怎麼排查和優化
  13. 界面上的話,有什麼優化措施麼?好比列表展現之類,平時遇到過內存問題嗎?怎麼優化
  14. 有什麼提升編譯速度的方法?
  15. 上線後的app性能分析檢測有作麼
  16. 內存優化,OOM的緣由和排查方法

11、JVM

  1. 談談classLoader
  2. 類加載器
  3. GC回收策略
  4. 對Dalvik、ART虛擬機有基本的瞭解
  5. DexClassLoader和PathClassLoader的區別
  6. 直接引用和符號引用相關
  7. GC回收機制熟悉麼,分代算法知道麼
  8. java的類加載原理
  9. gc相關的算法
  10. JVM的引用樹,什麼變量能做爲GCRoot?GC垃圾回收的幾種方法

12、Java

  1. 內部類和靜態內部類和匿名內部類,以及項目中的應用
  2. 泛型是什麼以及在項目中的應用
  3. JNI和NDK熟悉麼?Java和C方法以前的相互調用怎麼作?
  4. java裏帶$的函數見過麼,是什麼意思

十3、數據庫

  1. 數據庫數據遷移問題
  2. 微信的聊天數據再本地都是加密處理的(防止root了被破解),設計一個相似的本地數據存儲系統
  3. SQLite的數據庫升級用過麼

十4、項目相關

  1. 問項目,根據項目引伸:主要有Asynctask和線程池,多進程以及IPC,GC相關(四種引用,怎麼判斷哪些內存該GC,GC算法),why,when,how 這些都是要從項目裏面舉出來例子

十5、適配

  1. dp是什麼,sp呢,有什麼區別
  2. Android8.0有哪些新特性
  3. 曲面屏的適配

十6、數據結構+算法

  1. 快速排序
  2. JSON字符串解析算法及優化
  3. 求一個字符串的最長迴文
  4. 給定一個數,以及有序數組,求出來數組裏面兩個數的和等於給定數的下標
  5. 二叉樹中序遍歷,深度優先廣度優先,不用遞歸算法的方法
  6. 求二叉樹第k層節點個數;
  7. 實現一個棧push,pop,getMaxElementValue,時間複雜度要求0(1)
  8. 有序數組0(n)時間複雜度求一組和爲sum的數組下標
  9. 算法熟悉麼?給了一個二叉排序樹,出了個給定結點找到它的下一個元素(只的是大小順序的下一個)的算法題
  10. 三個算法題選一個並寫出測試用例:打印n-m之間全部的素數;計算n-m之間1出現的次數;指定數字序列的排序;
  11. 微信跳一跳外掛怎麼實現,檢測怎麼作的?
  12. 一張純色背景下怎麼有效檢測各個矩形?

十7、開源庫

  1. EventBus實現原理

十8、衍生話題

  1. Android相關你最擅長哪一塊
  2. 本身負責過哪些模塊,跟同事相比本身的優點是什麼
  3. 遇到過什麼印象深入的問題,怎麼解決的
  4. 項目團隊多少人,怎麼分配工做
  5. 好比:多人協同開發可能對一些相同資源都各自放了一份,有沒有辦法自動檢測這些重複之類
  6. 爲何找工做,本身的優點是什麼
  7. 平時用過什麼開發工具,分析工具
  8. 有博客和github,主要是寫的什麼?有哪些關注
  9. 任意提問環節:其實能夠問以前面試中遇到的問題:好比,多模塊開發的時候不一樣的負責人可能會引入重複資源,相同的字符串,相同的icon等可是文件名並不同,怎樣去重?
  10. 工做中有沒有用過或者寫過什麼工具?腳本,插件等等
  11. 除了平常開發,其餘有作過什麼工做?好比持續化集成,自動化測試等等
  12. 開放問題:若是提升啓動速度,設計一個延遲加載框架或者sdk的方法和注意的問題。
  13. 分享下項目中遇到的問題

十9、動畫

  1. Android中的動畫有哪些

二10、JNI

  1. 寫過native的底層代碼
  2. 對接的so算法瞭解麼,有接觸過相關的庫麼
  3. jni的算法提供都是主線程的?是否是想問服務類的啊

二11、設計模式

  1. 平時用過哪些設計模式
  2. Android中經常使用的設計模式,說三個比較高級的?
  3. 單例的DCL方式下,那個單例的私有變量要不要加volatile關鍵字,這個關鍵字有什麼用

二12、熱修復

  1. 熱修復相關的原理,框架熟悉麼

二十3、權限

  1. 沒有給權限如何定位,特定機型定位失敗,如何解決?
  2. Android程序運行時權限與文件系統權限

二十4、Json

  1. 實現一個Json解析器(能夠經過正則提升速度)。

二十5、版本控制工具

  1. 如何解決git衝突?

二十6、雜

  1. Jenkins持續集成。

二十7、gradle和打包

  1. Debug跟Release的APK的區別?
相關文章
相關標籤/搜索