大廠面試問題廣?先來看看這些Android高級面試題你都掌握了沒

一、性能優化

1、做過哪些性能優化?是怎麼評測和具體優化的?
2、爲什麼WebView加載會慢呢?
3、如何優化自定義View
4、FC(Force Close)什麼時候會出現?
5、Java多線程引發的性能問題,怎麼解決?

二、Android Framework相關

1、Android系統架構
2、View的事件分發機制?滑動衝突怎麼解決?
3、View的繪製流程?
4、跨進程通信
5、Android系統啓動流程是什麼?(提示:init進程 -> Zygote進程 –> SystemServer進程 –> 各種系統服務 –> 應用進程)
6、啓動一個程序,可以主界面點擊圖標進入,也可以從一個程序中跳轉過去,二者有什麼區別?
7、AMS家族重要術語解釋
8、App啓動流程(Activity的冷啓動流程)
9、ActivityThread工作原理
10、說下四大組件的啓動過程,四大組件的啓動與銷燬的方式
11、AMS是如何管理Activity的?
12、理解Window和WindowManager
13、WMS是如何管理Window的?
14、大體說清一個應用程序安裝到手機上時發生了什麼?
15、Android的打包流程?(即描述清點擊 Android Studio 的 build 按鈕後發生了什麼?)apk裏有哪些東西?簽名算法的原理?
16、說下安卓虛擬機和java虛擬機的原理和不同點?(JVM、Davilk、ART三者的原理和區別)
17、安卓採用自動垃圾回收機制,請說下安卓內存管理的原理?
18、Android中App是如何沙箱化的,爲何要這麼做?
19、一個圖片在app中調用R.id後是如何找到的?
20、JNI
21、請介紹一下NDK?

三、Android優秀三方庫源碼

1、你項目中用到哪些開源庫?說說其實現原理?
2、Android中軟引用與弱引用的應用場景

四、熱修復、插件化、模塊化、組件化、Gradle

1、熱修復和插件化

熱修補技術是怎樣實現的,和插件化有什麼區別?
爲什麼選用插件化?

2、模塊化和組件化

  • 模塊化的好處
  • 組件化原理,組件化中路由(ARouter)的實現
  • Android 組件化的原理,還有一些組件化平時使用的問題。
  • 項目組件化的理解
  • 多模塊開發的時候不同的負責人可能會引入重複資源,相同的字符串,相同的icon等但是文件名並不一樣,怎樣去重?

3、gradle

  • gradle熟悉麼,自動打包知道麼?
  • 如何加快 Gradle 的編譯速度?
  • Gradle的Flavor能否配置sourceset?
  • Gradle生命週期

五、設計模式與架構設計

1、設計模式

  • 談談你對Android設計模式的理解
  • 項目中常用的設計模式
  • 手寫生產者/消費者模式

2、架構設計

  • MVC MVP MVVM原理和區別?
  • MVC的情況下怎麼把Activity的C和V抽離?
  • MVP 架構中 Presenter 定義爲接口有什麼好處;
  • MVP如何管理Presenter的生命週期,何時取消網絡請求?
  • aop思想
  • Fragment如果在Adapter中使用應該如何解耦?
  • 項目框架裏有沒有Base類,BaseActivity和BaseFragment這種封裝導致的問題,以及解決方法?
  • 設計一個音樂播放界面,你會如何實現,用到那些類,如何設計,如何定義接口,如何與後臺交互,如何緩存與下載,如何優化(15分鐘時間)
  • 從0設計一款App整體架構,如何去做?
  • 說一款你認爲當前比較火的應用並設計(比如:直播APP,P2P金融,小視頻等)
  • 實現一個庫,完成日誌的實時上報和延遲上報兩種功能,該從哪些方面考慮?

其它高頻面試題

1、如何保證一個後臺服務不被殺死?(相同問題:如何保證service在後臺不被kill?)比較省電的方式是什麼?
2、Android動畫框架實現原理。
3、Activity-Window-View三者的差別?
4、低版本SDK如何實現高版本api?
5、說說你對Context的理解?
6、Android的生命週期和啓動模式
7、ListView和RecyclerView系列
8、如何實現一個推送,消息推送原理?推送到達率的問題?
9、動態權限系列
10、自定義View系列
11、對谷歌新推出的Room架構
12、沒有給權限如何定位,特定機型定位失敗,如何解決?
13、Debug跟Release的APK的區別?
14、android文件存儲,各版本存儲位置的權限控制的演進,外部存儲,內部存儲
15、有什麼提高編譯速度的方法?
16、Scroller原理
17、Hybrid系列
18、如果在當前線程內使用Handler postdelayed 兩個消息,一個延遲5s,一個延遲10s,然後使當前線程sleep 5秒,以上消息的執行時間會如何變化?
19、Android中進程內存的分配,能不能自己分配定額內存?
20、下拉狀態欄是不是影響activity的生命週期,如果在onStop的時候做了網絡請求,onResume的時候怎麼恢復
21、Android長連接,怎麼處理心跳機制
22、CrashHandler實現原理?
23、SurfaceView和View的最本質的區別?
24、Android程序運行時權限與文件系統權限
25、曲面屏的適配
26、TextView調用setText方法的內部執行流程
27、怎麼控制另外一個進程的View顯示(RemoteView)?
28、如何實現右滑finish activity?
29、如何在整個系統層面實現界面的圓角效果。(即所有的APP打開界面都會是圓角)
30、非UI線程可以更新UI嗎?
31、如何解決git衝突?
32、單元測試有沒有做過,說說熟悉的單元測試框架?
33、實現一個Json解析器(可以通過正則提高速度)。
34、Jenkins持續集成。
35、爲什麼 Google 會推出Fragment ,有什麼好處和用途? 直接用 View 代替不行麼?
36、工作中有沒有用過或者寫過什麼工具?腳本,插件等等;比如:多人協同開發可能對一些相同資源都各自放了一份,有沒有方法自動檢測這種重複之類的。

最後

不用多說,相信大家都有一個共識:無論什麼行業,最牛逼的人肯定是站在金字塔端的人。所以,想做一個牛逼的程序員,那麼就要讓自己站的更高,成爲技術大牛並不是一朝一夕的事情,需要時間的沉澱和技術的積累。

關於這一點,在我當時確立好Android方向時,就已經開始梳理自己的成長路線了,包括技術要怎麼系統地去學習,都列得非常詳細。

這裏最後分享耗時一年多整理的一系列Android學習資源:Android源碼解析、Android第三方庫源碼筆記、Android進階架構師七大專題學習、歷年BAT面試題解析包、Android大佬學習筆記等等,這些內容均免費分享給大家,需要完整版的朋友,點這裏可以看到全部內容

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章