【乾貨】Android 一線網際網路面試題彙總,13模組200+題,征服面試官不是夢!

南方吳彥祖_藍斯發表於2020-10-29

今天分享的面試題,基本都是針對一線網際網路公司的面試題整理的,我這裡就不單獨以公司為單位整理,我自己進行了分類,循序漸進,由基礎到深入,由易到簡。

每個問題的答案我都整理好了一個文件: AndroidBAT面試題整理,這樣就可以節省大家自己去搜尋的時間,把時間用在正確的東西上。

金九銀十,需要跳槽的快快複習和準備吧!

Android BAT 面試題目錄:

1.四大元件
2.Fragment
3.自定義元件、動畫
4.儲存
5.網路
6.圖片
7.佈局
8.效能最佳化
9.JNI
10.程式間通訊(簡稱:IPC)
11.WebView
12.程式保活
13.其他相關面試題

1.四大元件

  • 四大元件是什麼
  • 四大元件的生命週期
  • Activity之間的通訊方式
  • 橫豎屏切換的時候,Activity 各種情況下的生命週期
  • Activity與Fragment之間生命週期比較
  • Activity上有Dialog的時候按Home鍵時的生命週期
  • 兩個Activity 之間跳轉時必然會執行的是哪幾個方法?
  • Activity的四種啟動模式對比以及使用場景
  • Activity狀態儲存與恢復
  • Activity 怎麼和Service 繫結
  • Service和Activity怎麼進行資料互動?
  • Service的開啟方式
  • 請描述一下Service 的生命週期
  • 談談你對ContentProvider的理解
  • ContentProvider、ContentResolver、ContentObserver 之間的關係
  • 請描述一下廣播BroadcastReceiver的理解(實現原理)
  • 廣播的分類
  • 廣播使用的方式和場景
  • 本地廣播和全域性廣播有什麼差別?
  • Application 和 Activity 的 Context 物件的區別

2.Fragment

  • 什麼是Fragment
  • 為什麼要用Fragment
  • Fragment與Activity的通訊方式
  • Fragment各種情況下的生命週期
  • Fragment之間傳遞資料的方式?
  • Fragment的add與replace的區別
  • 用Fragment有遇過什麼坑嗎,怎麼解決
  • getFragmentManager,getSupportFragmentManager ,getChildFragmentManager三者之間的區別
  • FragmentPagerAdapter與FragmentStatePagerAdapter的區別與使用場景

3.自定義元件、動畫

  • 描述一下View的繪製流程
  • 說說自定義view的幾個建構函式
  • View 裡面的 onSavedInstanceState和onRestoreInstanceState的作用
  • onLayout() 和Layout()的區別
  • 描述一下getX、getRawX、getTranslationX
  • Android中的動畫有哪幾類,它們的特點和區別是什麼
  • Interpolator和TypeEvaluator的作用
  • 請描述一下View事件傳遞分發機制
  • 事件分發中的onTouch 和onTouchEvent 有什麼區別,又該如何使用?
  • View和ViewGroup分別有哪些事件分發相關的回撥方法
  • View重新整理機制

4.儲存

  • 描述一下你知道的資料儲存方式
  • SharedPreferences的應用場景,核心原理是什麼
  • SharedPreferences是執行緒安全的嗎?
  • 描述一下圖片儲存在本地的方式
  • sqlite升級,增加欄位的語句
  • 資料庫框架對比和原始碼分析
  • 資料庫的最佳化
  • 資料庫資料遷移問題

5.網路

  • 描述一次網路請求的流程
  • HTTP報文結構
  • HttpClient和HttpURLConnection的區別
  • Volley,okhttp,retrofit之間的區別和核心原理和使用場景
  • 描述一下https
  • https中哪裡用了對稱加密,哪裡用了非對稱加密,對加密演算法(如RSA)等是否有了解?
  • 說一下三次握手,四次揮手的具體細節
  • 描述一下socket是什麼東西
  • 從網路載入一個10M的圖片,說下注意事項
  • TCP與UDP的區別
  • client如何確定自己傳送的訊息被server收到?
  • WebSocket與socket的區別
  • 網路請求快取處理,okhttp如何處理網路快取的
  • 自己去設計網路請求框架,怎麼做?

6.圖片

  • 說一下OOM的原因,如何避免
  • 說一下三級快取的原理
  • 描述一下記憶體快取的容器
  • 圖片庫對比
  • 圖片庫的原始碼分析
  • 圖片框架快取實現
  • LRUCache原理
  • 自己去實現圖片庫,怎麼做?
  • 說說Glide記憶體快取的具體實現?

7.佈局

  • 說一下佈局效能的排序,誰的效率最高
  • 描述一下約束佈局
  • 關於佈局最佳化的方案
  • 怎麼檢測佈局深度
  • LinearLayout、RelativeLayout、FrameLayout的特性及對比,並介紹使用場景。

8.效能最佳化

效能最佳化包括:記憶體,處理效率,視覺流暢度,CPU,電量,流量等方面,針對手機的效能去做相應的方案。個人認為更應該把握好記憶體最佳化、處理效率(程式碼質量)、視覺流暢度(佈局最佳化)。

  • ANR產生的原因是什麼?
  • oom是什麼?
  • 什麼情況導致oom?
  • 有什麼解決方法可以避免OOM?
  • Oom 是否可以try catch?為什麼?
  • 記憶體洩漏是什麼?
  • 什麼情況導致記憶體洩漏?
  • 如何防止執行緒的記憶體洩漏?
  • 記憶體洩露的解決方法
  • 記憶體洩漏和記憶體溢位區別?
  • 如何對Android 應用進行效能分析以及最佳化?
  • 怎麼去除無用程式碼?
  • 效能最佳化如何分析systrace?
  • 用IDE如何分析記憶體洩漏?
  • Java多執行緒引發的效能問題,怎麼解決?
  • 啟動頁白屏及黑屏解決?
  • 啟動太慢怎麼解決?
  • 怎麼保證應用啟動不卡頓?
  • App啟動崩潰異常捕捉
  • 自定義View注意事項
  • 現在下載速度很慢,試從網路協議的角度分析原因,並最佳化(提示:網路的5層都可以涉及)。
  • Https請求慢的解決辦法(提示:DNS,攜帶資料,直接訪問IP)
  • 如何保持應用的穩定性
  • RecyclerView和ListView的效能對比
  • ListView的最佳化
  • RecycleView最佳化
  • View渲染
  • Bitmap如何處理大圖,如一張30M的大圖,如何預防OOM
  • java中的四種引用的區別以及使用場景
  • 強引用置為null,會不會被回收?

9.JNI

  • 請介紹一下NDK
  • 什麼是NDK庫?
  • 如何在JNI中註冊native函式,有幾種註冊方式?
  • Java如何呼叫c、c++語言?
  • JNI如何呼叫java層程式碼?
  • 你用JNI來實現過什麼功能嗎?怎麼實現的?

10.程式間通訊(簡稱:IPC)

  • 程式間通訊的方式?
  • Binder機制的作用和原理
  • 簡述IPC?
  • 什麼是AIDL?
  • AIDL解決了什麼問題?
  • AIDL如何使用?
  • Android程式分類?
  • 程式和 Application 的生命週期?
  • 程式排程
  • 談談對程式共享和執行緒安全的認識

11.WebView

  • 描述一下Webview的作用
  • WebView的核心是什麼
  • 描述一下WebView與js的互動方式
  • 描述一下WebView的快取機制
  • 關於WebView的最佳化你知道哪些
  • 有沒有用過第三方WebView元件?講一講優勢

12.程式保活

  • 做過程式保活嗎?
  • 5.0下和5.0上的保活方式瞭解嗎?
  • 描述一下程式回收的過程
  • 如何降低程式的oom_adj

其他

  • Handler機制和底層實現
  • Handler、Thread和HandlerThread的差別
  • handler發訊息給子執行緒,looper怎麼啟動?
  • 關於Handler,在任何地方new Handler 都是什麼執行緒下?
  • ThreadLocal原理,實現及如何保證Local屬性?
  • 請解釋下在單執行緒模型中Message、Handler、Message Queue、Looper之間的關係
  • AsyncTask機制
  • AsyncTask原理及不足
  • 如何取消AsyncTask?
  • 為什麼不能在子執行緒更新UI?
  • LruCache預設記憶體快取大小
  • ContentProvider的許可權管理(解答:讀寫分離,許可權控制-精確到表級,URL控制)
  • 如何透過廣播攔截和abort一條簡訊?
  • 廣播是否可以請求網路?
  • 廣播引起anr的時間限制是多少?
  • 描述一下Activity棧
  • Android執行緒有沒有上限?
  • 執行緒池有沒有上限?
  • ListView重用的是什麼?
  • Android為什麼引入Parcelable?
  • 有沒有嘗試簡化Parcelable的使用?
  • 混合開發有了解嗎?
  • 知道哪些混合開發的方式?說出它們的優缺點和各自使用場景?(解答:比如:RN,weex,H5,小程式,WPA等)
  • 螢幕適配的處理技巧都有哪些?
  • 伺服器只提供資料接收介面,在多執行緒或多程式條件下,如何保證資料的有序到達?
  • 動態佈局的理解
  • 畫出 Android 的大體架構圖
  • Recycleview和ListView的區別
  • ListView圖片載入錯亂的原理和解決方案
  • 動態許可權適配 方案,許可權組的概念
  • Android系統為什麼會設計ContentProvider?
  • 下拉狀態列是不是影響activity的生命週期
  • Bitmap 使用時候注意什麼?
  • Bitmap的recycler()
  • Android中開啟攝像頭的主要步驟
  • ViewPager使用細節,如何設定成每次只初始化當前的
  • 點選事件被攔截,但是想傳到下面的View,如何操作?
  • 描述一下微信主頁面的實現方式
  • invalidate和postInvalidate的區別及使用
  • Activity-Window-View三者的差別
  • 談談對Volley的理解
  • ActivityThread,AMS,WMS的工作原理
  • LaunchMode應用場景
  • SpareArray原理
  • 請介紹下ContentProvider 是如何實現資料共享的?
  • IntentService原理及作用是什麼?
  • ApplicationContext和ActivityContext的區別
  • 封裝View的時候怎麼知道view的大小
  • AndroidManifest的作用與理解

結尾

去好公司面試,能答出來只是第一步,延伸問答、靈活運用才是面試官的目的,你越能答,他們越能問。我希望讀者們能知道深入瞭解的含義,這真的是一個過程。

自己的知識準備得怎麼樣,這直接決定了你能否順利透過一面和二面,所以在面試前來一個知識梳理,看需不需要提升自己的知識儲備是很有必要的。

關於 知識梳理,這裡再分享一下我面試這段時間的複習路線:(以下體系的複習資料是我從各路大佬收集整理好的)

【乾貨】Android 一線網際網路面試題彙總,13模組200+題,征服面試官不是夢!

知識梳理完之後,就需要進行查漏補缺,所以針對這些知識點,我手頭上也準備了不少的電子書和筆記,這些筆記將各個知識點進行了完美的總結:

【乾貨】Android 一線網際網路面試題彙總,13模組200+題,征服面試官不是夢!
Android開發七大模組核心知識筆記

《379頁Android開發面試寶典》

歷時半年,我們整理了這份市面上最全面的安卓面試題解析大全
包含了騰訊、百度、小米、阿里、樂視、美團、58、360、新浪、搜狐等一線網際網路公司面試被問到的題目。熟悉本文中列出的知識點會大大增加透過前兩輪技術面試的機率。

如何使用它?

1.可以透過目錄索引直接翻看需要的知識點,查漏補缺。
2.五角星數表示面試問到的頻率,代表重要推薦指數

【乾貨】Android 一線網際網路面試題彙總,13模組200+題,征服面試官不是夢!

《507頁Android開發相關原始碼解析》

只要是程式設計師,不管是Java還是Android,如果不去閱讀原始碼,只看API文件,那就只是停留於皮毛,這對我們知識體系的建立和完備以及實戰技術的提升都是不利的。

真正最能鍛鍊能力的便是直接去閱讀原始碼,不僅限於閱讀各大系統原始碼,還包括各種優秀的開源庫。

【乾貨】Android 一線網際網路面試題彙總,13模組200+題,征服面試官不是夢!

資料太多,全部展示會影響篇幅,暫時就先列舉這些部分截圖,以上資源均免費分享,以上內容均放在了開源專案: github  中已收錄,大家可以自行獲取(或者 關注主頁掃描加微信獲取)。

最後複習的差不多的同學,請花一兩個小時認真準備這些東西:

1.你工作中最牛逼or最成功or最有貢獻的一件事是什麼?
2.專案中的亮點是哪些?怎麼實現的?(實在沒有的自己去找,只能用別人的案例了)
3.做專案的過程中有沒有遇到過困難?怎麼克服的?

Last Thing:
面試不過不要灰心,life always sucks,一切會好起來的!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69983917/viewspace-2731004/,如需轉載,請註明出處,否則將追究法律責任。

相關文章