金三銀四,衝擊大廠,你值得擁有的一份2019初中級Android開發社招面試總結+解答

引言

2017年初Android市場飽和的傳言一度甚囂塵上。2018年經濟寒潮下,衆多大廠和曾經風口上的互聯網企業也不得不裁人自保,經過小程序、前端渲染以達到原生的實現。前端

面對外界的紛繁複雜和技術棧的突飛猛進,咱們更應該清楚認識到自身技術的短板來進行知識鞏固。目前移動端Android初中級人才大量涌入,正所謂僧多粥少,但樓主始終認爲 苦心人,天不負,只要自身有過硬的知識廣度和深度儲備,在寒冬之下,一樣也能站穩腳跟。android

樓主年前走了一波社招試試水,一番廝殺後最終拿到多家offer,回味之餘,不得不感嘆如今的98五、211出身的技術人才真的強(樓主只是普通本科),爲了踐行社會主義核心價值觀,因而總結本身的面試經歷,結合參考其餘社招面試總結整理出這一份面試解答,承蒙你們不棄,文中知識點若有描述錯誤,還望提出探討糾正。面試

再此感謝如下博主,文章部分知識點有引用,他們的文章使我獲得不少啓發算法

郭霖 鴻洋 任玉剛 Android開發官方文檔 Carson_Ho小程序

注:答案在最下面,由於實際開發與參考答案會有所不一樣,再者怕誤導你們的理解,因此這些面試題答案仍是本身去理解!面試官會針對簡歷中提到的知識點由淺入深提問,因此不要背答案,多理解。設計模式

Android篇

Activity

  • 說下Activity生命週期 ?
  • Activity A 啓動另外一個Activity B 會調用哪些方法?若是B是透明主題的又或則是個DialogActivity呢 ?
  • 說下onSaveInstanceState()方法的做用 ? 什麼時候會被調用?
  • 說下 Activity的四種啓動模式、應用場景 ?
  • 瞭解哪些Activity經常使用的標記位Flags?
  • 說下 Activity跟window,view之間的關係?
  • 橫豎屏切換的Activity生命週期變化?
  • 如何啓動其餘應用的Activity?
  • Activity的啓動過程?(重點)

Fragment

  • 談一談Fragment的生命週期 ?與Activity生命週期的不一樣 ?
  • 談談Activity和Fragment的區別?
  • Fragment中add與replace的區別(Fragment重疊)
  • getFragmentManager、getSupportFragmentManager 、getChildFragmentManager之間的區別?
  • FragmentPagerAdapter與FragmentStatePagerAdapter的區別與使用場景

Service

  • 談一談Service的生命週期?
  • Service的兩種啓動方式?區別在哪?
  • 如何保證Service不被殺死 ?
  • 可否在Service開啓耗時操做 ? 怎麼作 ?
  • 用過哪些系統Service ?
  • 瞭解ActivityManagerService嗎?發揮什麼做用(重點)

Broadcast Receiver

  • 廣播有幾種形式 ? 都有什麼特色 ?
  • 廣播的兩種註冊方式 ?
  • 廣播發送和接收的原理了解嗎 ?(Binder機制、AMS)

ContentProvider

  • ContentProvider瞭解多少?
  • ContentProvider的權限管理?
  • 說說ContentProvider、ContentResolver、ContentObserver 之間的關係?

數據存儲

  • 描述一下Android數據持久存儲方式?
  • SharedPreferences的應用場景?注意事項?
  • SharedPrefrences的apply和commit有什麼區別?
  • 瞭解SQLite中的事務操做嗎?是如何作的
  • 使用SQLite作批量操做有什麼好的方法嗎?
  • 如何刪除SQLite中表的個別字段?
  • 使用SQLite時會有哪些優化操做?

IPC(重點)

  • Android中進程和線程的關係? 區別?
  • 如何開啓多進程 ? 應用是否能夠開啓N個進程 ?
  • 爲什麼須要IPC?多進程通訊可能會出現的問題?
  • Android中IPC方式、各類方式優缺點,爲何選擇Binder?
  • Binder機制的做用和原理?
  • Binder框架中ServiceManager的做用?
  • Bundle傳遞對象爲何須要序列化?Serialzable和Parcelable的區別?
  • 講講AIDL?原理是什麼?如何優化多模塊都使用AIDL的狀況?

View

  • 講下View的繪製流程?
  • MotionEvent是什麼?包含幾種事件?什麼條件下會產生?
  • 描述一下View事件傳遞分發機制?
  • 如何解決View的事件衝突 ? 舉個開發中遇到的例子 ?
  • scrollTo()和scollBy()的區別?
  • Scroller是怎麼實現View的彈性滑動?
  • invalidate()和postInvalidate()的區別 ?
  • SurfaceView和View的區別?
  • 自定義View如何考慮機型適配 ?

Handler

  • 談談消息機制Handler ? 做用 ?有哪些要素 ?流程是怎樣的 ?
  • 一個線程可否建立多個Handler,Handler跟Looper之間的對應關係 ?
  • 軟引用跟弱引用的區別
  • Handler 引發的內存泄露緣由以及最佳解決方案
  • 爲何系統不建議在子線程訪問UI
  • Looper死循環爲何不會致使應用卡死
  • 使用Handler的postDealy後消息隊列會有什麼變化 ?
  • 能夠在子線程直接new一個Handler嗎 ?怎麼作 ?
  • Message能夠如何建立 ? 哪一種效果更好 ? 爲何 ?

線程(重點)

  • 線程池的好處? 線程池的幾個參數的理解,四種線程池的使用場景
  • Android中還了解哪些方便線程切換的類?
  • 講講AsyncTask的原理
  • IntentService有什麼用 ?
  • 直接在Activity中建立一個thread跟在service中建立一個thread之間的區別
  • ThreadPoolExecutor的工做策略 ?
  • Handler、Thread和HandlerThread的差異?
  • ThreadLocal的原理
  • 多線程是否必定會高效(優缺點)
  • 多線程中,讓你作一個單例,你會怎麼作
  • 除了notify還有什麼方式能夠喚醒線程
  • 什麼是ANR ? 什麼狀況會出現ANR ?如何避免 ? 在不看代碼的狀況下如何快速定位出現ANR問題所在 ?

Bitmap

  • Bitmap使用須要注意哪些問題 ?
  • Bitmap.recycle()會當即回收麼?何時會回收?若是沒有地方使用這個Bitmap,爲何垃圾回收不會直接回收?
  • 一張Bitmap所佔內存以及內存佔用的計算
  • Android中緩存更新策略 ?
  • LRU的原理 ?

性能優化(重點)

  • 圖片的三級緩存中,圖片加載到內存中,若是內存快爆了,會發生什麼?怎麼處理?
  • 內存中若是加載一張500*500的png高清圖片.應該是佔用多少的內存?
  • WebView的性能優化 ?
  • Bitmap如何處理大圖,如一張30M的大圖,如何預防OOM
  • 內存回收機制與GC算法(各類算法的優缺點以及應用場景);GC原理時機以及GC對象
  • 內存泄露和內存溢出的區別 ?AS有什麼工具能夠檢測內存泄露
  • 性能優化,怎麼保證應用啓動不卡頓? 黑白屏怎麼處理?
  • 強引用置爲null,會不會被回收?
  • ListView跟RecyclerView的區別
  • ListView的adapter是什麼adapter ?
  • LinearLayout、FrameLayout、RelativeLayout性能對比,爲何?

JNI

  • 對JNI是否瞭解
  • 如何加載NDK庫 ?如何在JNI中註冊Native函數,有幾種註冊方法 ?
  • 你用JNI來實現過什麼功能 ? 怎麼實現的 ?(加密處理、影音方面、圖形圖像處理)

設計模式

  • 你所知道的設計模式有哪些?
  • 談談MVC、MVP和MVVM,好在哪裏,很差在哪裏 ?
  • 封裝p層以後.若是p層數據過大,如何解決
  • 是否能從Android中舉幾個例子說說用到了什麼設計模式 ?
  • 裝飾模式和代理模式有哪些區別 ?
  • 實現單例模式有幾種方法 ?懶漢式中雙層鎖的目的是什麼 ?兩次判空的目的又是什麼?
  • 用到的一些開源框架,介紹一個看過源碼的,內部實現過程。
  • Fragment若是在Adapter中使用應該如何解耦?

Android進階延伸點

  • 如何進行單元測試,如何保證App穩定
  • Android中如何查看一個對象的回收狀況
  • APK的大小如何壓縮 ?
  • 如何經過Gradle配置多渠道包?
  • 插件化原理分析
  • 組建化原理
  • 跨組件通訊
  • 組件化中路由、埋點的實現
  • Hook以及插樁技術
  • Android的簽名機制
  • v3簽名key和v2還有v1有什麼區別
  • Android5.0~10.0之間大的變化 ?
  • 說下Measurepec這個類
  • 請例舉Android中經常使用佈局類型,並簡述其用法以及排版效率
  • 區別Animation和Animator的用法,概述其原理
  • 使用過什麼圖片加載庫 ?Glide的源碼設計哪裏很微妙 ?
  • 如何繞過9.0限制?
  • 用過哪些網絡加載庫 ?OkHttp、Retrofit實現原理 ?
  • 對於應用更新這塊是如何作的 ? (灰度,強制更新、分區域更新)
  • 會用Kotlin、Fultter嗎 ? 談談你的理解

解答篇

因爲知識點涉及較廣,所以將解答篇分爲上中下三篇,稍後呈上緩存

Android篇:2019初中級Android開發社招面試解答(上)性能優化

Android篇:2019初中級Android開發社招面試解答(中)markdown

Android篇:2019初中級Android開發社招面試解答(下)網絡

相關文章
相關標籤/搜索