Android開發者去大廠面試,竟然還問這些問題!學到了

做者:流船

前言

立刻又到了金三銀四的面試季,本身也不得不參與到這場戰役中來,實際上是從去年末就開始看,android的好機會確實不太多,但也還好,3年+的android開發經歷仍是有一些面試機會的,不過確實不像幾年前門檻那麼低了,總的體會就是小的創業公司比較注重你的項目經歷是否和本身的貼合,直接能過來獨當一面。大廠除了看中項目經歷外,還比較注重你知識面的廣度,是廣度、深度和解決方案等多方面的考察,平時夠工做要好好積累臨時刷題只聊點皮毛估計是過不了關的。下面就總結一些遇到的題目,各類風格的都有。這裏先列舉問題。javascript

面試真題

又座標hz,各廠名字字母表示,本身猜。本題目整理不保證你會遇到相同的問題,根據崗位和麪試官自己狀況,問題可能差異很大,好比有作中間件的同窗被問到熱修復的細節等等。整體說來阿里的面試是很正規的,從android基礎到必定程度的理解總結性問題,而後回到java基礎及原理,主要着重問簡歷上的,或從簡歷出發發散問題,問題會由表及裏逐漸深刻,很考察對你負責的項目的理解和其中用到知識原理。由於是憑着記憶後記的,如下問題不分前後。這裏按崗位來分類,能有個漸進的感受。java

tb:電面一

  • dp是什麼,sp呢,有什麼區別
  • 自定義View,ViewGroup注意那些回調?
  • 界面卡頓的緣由以及解決方法
  • android中的存儲類型
  • service用過麼,基本調用方法
  • Handler機制
  • LinearLayout、FrameLayout、RelativeLayout性能對比,爲何
  • Activity的生命週期,finish調用後其餘生命週期還會走麼?
  • FW層熟悉麼,源碼看過麼
  • GC回收機制熟悉麼,分代算法知道麼
  • Java的類類加載原理
  • 內存泄漏如何排查,MAT分析方法以及原理,各類泄漏的緣由是什麼好比
  • Handler爲何會泄漏
  • gradle熟悉麼,自動打包知道麼
  • 介紹下先的app架構和通訊
  • 本身負責過哪些模塊,跟同事相比本身的優點是什麼
  • 遇到過什麼印象深入的問題,怎麼解決的

現場面試:三場

First:android

  • 最近都作了哪些工做?
  • 遇到了什麼印象深入的問題。A:會順着你介紹的項目問下具體實現。
  • 推送消息有富文本麼?
  • 熱修復瞭解麼,用的什麼?
  • apk包大小有限制麼?怎麼減小包大小?
  • 工做中有沒有用過或者寫過什麼工具?腳本,插件等等
  • 好比:多人協同開發可能對一些相同資源都各自放了一份,有沒有方法自動檢測這種重複之類的
  • 寫過native的底層代碼麼
  • view的繪製熟悉麼,介紹下
  • gc相關的算法
  • anr是由於什麼產生的,怎麼排查
  • 界面上的話,有什麼優化措施麼?好比列表展現之類的,平時遇到過內存問題嗎,怎麼優化的?
  • 平時用過哪些設計模式?

Secondgit

  • 介紹下最近一年主要作了什麼工做
  • 會對簡歷上突出的技能進行詳情的詢問:好比:音頻合成的具體步驟,以及遇到的一些問題和細節處理。會根據面試發散一些問題,問到,seek方法播放到末尾後從新播放會有一些卡頓的不流暢問題,怎麼避免,從交互設計或者技術角度。(我的表示沒怎麼關注這種)。
  • 項目團隊多少人,怎麼分配工做
  • 線程之間怎麼通訊的?
  • app的架構是怎麼樣的,而且爲何這樣,有什麼優缺點?
  • 算法熟悉麼?給了一個二叉排序樹,出了一個給定節點找到它的下一個元素(指的是大小順序的下一個)的算法題。
  • 爲何找工做,本身的優點是什麼

Third:github

  • 技術問題再也不侷限於簡歷,可能根據簡歷和回答狀況漸進並擴散。
  • 感受各個技術面試官以前並無溝通,可能會問到相似的問題
  • 介紹下本身主要負責的工做
  • Activity的生命週期有哪些,知道onRestart麼,介紹下
  • savedInstanceState知道麼,幹什麼用的,何時有值,何時爲空,平時是怎麼用的
  • View繪製熟悉麼,介紹下,能說下是實現原理麼?
  • 平時用過什麼開發工具,分析工具?
  • ANR是怎麼回事?怎麼查?Service會引發ANR麼?
  • Activity的啓動模式有哪些?棧裏是A-B-C,先想直接到A,BC都清理掉,有幾種方法能夠作到?這幾種方法產生的結果是有幾個A的實例?
  • 有什麼工具能夠看到Activity棧信息麼?多個棧話,有方法分別獲得各個棧的Activity列表麼
  • 都熟悉哪些命令?知道怎麼用命令啓動一個Activity麼?
  • SharedPrefrences的apply和commit有什麼區別
  • java裏帶$的函數見過麼,是什麼意思
  • MD5是加密方法麼,Base64呢
  • 有博客和github,主要是寫的什麼?有哪些關注
  • android 8.0 有哪些新特性
  • 差很少就這些吧。。最後每一個面試官都會讓你問他問題。

某公司

  • glide緩存策略?同一個圖片跟size有關麼
  • android中的動畫有哪些
  • View事件傳遞機制
  • 界面卡頓怎麼排查和優化?
  • Fragment的replace和end??的區別?
  • MVP,MVVM,MVC解釋和實踐
  • 項目以外的,對技術的看法,拓展知識

二面:

  • 微信跳一跳外掛怎麼實現,檢測怎麼作的?
  • 一張純色背景下怎麼有效檢測各個矩形?
  • 對接的so算法瞭解麼,有接觸過相關的庫麼?
  • 三個算法題選一個並寫出測試用例:打印n-m之間全部的素數;計算n-m之間1出現的次數;指定數字序列的排序;
  • android api層的源碼熟悉哪些?解釋一下
  • ACTION_CANCEL何時觸發,觸摸button而後滑動到外部擡起會觸發點擊事件嗎,在+ + 滑動回去擡起會麼
  • 怎麼處理嵌套View的滑動衝突問題
  • 熱修復相關的原理,框架熟悉麼
  • gradle打包流程熟悉麼
  • 任意提問環節:其實能夠問以前面試中遇到的問題:好比,多模塊開發的時候不一樣的負責人可能會引入重複資源,相同的字符串,相同的icon等可是文件名並不同,怎樣去重?

NetBase:

  • Canvas的底層機制,繪製框架,硬件加速是什麼原理,canvas lock的緩衝區是怎麼回事
  • surfaceview, suface,surfacetexure等相關的,以及底層原理
  • android文件存儲,各版本存儲位置的權限控制的演進,外部存儲,內部存儲
  • 上層業務activity和fragment的遇到什麼坑??頁面展現上的一些坑和優化經驗
  • 網絡請求的開源框架:OKHttp介紹,寫過攔截器麼

Netbase:AI

  • 數據層有統一的管理麼,數據緩存是怎麼作的,http請求等有提供統一管理麼?
  • 有用什麼模式麼,邏輯什麼的都在Activity層?怎麼分離的
  • 若是用了一些解耦的策略,怎麼管理生命週期的?
  • 有什麼提升編譯速度的方法?
  • 對應用裏的線程有作統一管理麼?
  • jni的算法提供都是主線程的?是否是想問服務類的啊
  • 邊沿檢測用的啥?深度學習相關的有了解麼?
  • 上線後的app性能分析檢測有作麼

yz

  • 進程間通訊方式?Binder的構成有幾部分?
  • HttpClient和HttpConnection的區別
  • View的事件傳遞機制
  • MVC,MVP,MVVM分別是什麼?
  • Android中經常使用的設計模式,說三個比較高級的?
  • 內存優化,OOM的緣由和排查方法
  • 想改變listview的高度,怎麼作
  • Https是怎麼回事?
  • 除了平常開發,其餘有作過什麼工做?好比持續化集成,自動化測試等等

dd

  • ActivityA跳轉ActivityB而後B按back返回A,各自的生命週期順序,A與B均不透明。
  • Synchronize關鍵字後面跟類或者對象有什麼不一樣。
  • 單例的DCL方式下,那個單例的私有變量要不要加volatile關鍵字,這個關鍵字有什麼用
  • JVM的引用樹,什麼變量能做爲GCRoot?GC垃圾回收的幾種方法
  • ThreadLocal是什麼?Looper中的消息死循環爲何沒有ANR?
  • Android中main方法入口在哪裏
  • jdk1.5?SparseArray和ArrayMap各自的數據結構,前者的查找是怎麼實現的,與HashMap的區別
  • Runnable與Callable、Future、FutureTask的區別,AsyncTask用到哪一個?- AsyncTask是順序執行麼,for循環中執行200次new AsyncTask並execute,會有異常嗎
  • IntentService生命週期是怎樣的,使用場合等
  • RecyclerView和ListView有什麼區別?局部刷新?前者使用時多重type場景下怎麼避免滑動卡頓。懶加載怎麼實現,怎麼優化滑動體驗。
  • SQLite的數據庫升級用過麼
  • 開放問題:若是提升啓動速度,設計一個延遲加載框架或者sdk的方法和注意的問題。
  • Scroller有什麼方法,怎麼使用的。
  • 分享下項目中遇到的問題
  • webwiew瞭解?怎麼實現和javascript的通訊?相互雙方的通訊。@JavascriptInterface在?版本有bug,除了這個還有其餘調用android方法的方案嗎?
  • ReactiveNative瞭解多少
  • JNI和NDK熟悉麼?Java和C方法以前的相互調用怎麼作?

幾點建議

一、簡歷要如實寫,相關的知識點必定要爛熟於心。web

二、基礎紮實,android和java相關的知識樹網上有不少資料,看過但讓你講出來未必能說的好。面試

三、提早總結,你還擅長什麼其餘技術?這種開放問題要看知識面了。算法

四、學會提問,你有什麼問題要問我嗎?這種禮貌性問題也是一個瞭解對方的好機會。數據庫

五、良好的內心素質,不管遇到什麼狀況,面試官遲到、面試官態度冰冷說話不客氣、質疑你的回答等等各類問題都不要慌也不要排斥,必定要沉住氣,耐心積極的思考並回答對方的提問。canvas

六、推薦幾本書,也是好幾回面試後發現裏面涵蓋了大部分答案。《Android開發藝術探索》《Android源碼設計模式-解析與實戰》《Android進階之光》《深刻理解Java虛擬機》《Android音視頻開發》《Android進階解密》多看幾遍。

Android學習PDF+架構視頻+面試文檔+源碼筆記

大廠的面試流程比較長,面試是一場全面大考驗,若是想換個工做,最好提早充分準備。


在這也推薦一份大佬本身收錄整理的 Android學習PDF+架構視頻+面試文檔+源碼筆記 ,還有高級架構技術進階腦圖、Android開發面試專題資料,高級進階架構資料幫助你們學習提高進階,也節省你們在網上搜索資料的時間來學習,也能夠分享給身邊好友一塊兒學習

若是你有須要的話,能夠點贊+評論關注我加Vx:15388039515(備註思否,須要資料)

相關文章
相關標籤/搜索