1. 程式人生 > >2018最新大廠Android面試真題

2018最新大廠Android面試真題

640?wx_fmt=gif&wxfrom=5&wx_lazy=1

熱文導讀 | 點選標題閱讀

作者 : 流船

地址: https://www.jianshu.com/p/b62e23a75d36


前言

又到了金三銀四的面試季,自己也不得不參與到這場戰役中來,其實是從去年底就開始看,android的好機會確實不太多,但也還好,3年+的android開發經歷還是有一些面試機會的,不過確實不像幾年前門檻那麼低了,總的體會就是小的創業公司比較注重你的專案經歷是否和自己的貼合,直接能過來獨當一面。大廠除了看中專案經歷外,還比較注重你知識面的廣度,是廣度、深度和解決方案等多方面的考察,平時夠工作要好好積累臨時刷題只聊點皮毛估計是過不了關的。

下面就總結一些遇到的題目,各種風格的都有。這裡先列舉問題。

面試真題

又座標hz,各廠名字字母表示,自己猜。本題目整理不保證你會遇到相同的問題,根據崗位和麵試官本身情況,問題可能差別很大,比如有做中介軟體的同學被問到熱修復的細節等等。總體說來阿里的面試是很正規的,從android基礎到一定程度的理解總結性問題,然後回到java基礎及原理,主要著重問簡歷上的,或從簡歷出發發散問題,問題會由表及裡逐漸深入,很考察對你負責的專案的理解和其中用到知識原理。因為是憑著記憶後記的,以下問題不分先後。這裡按崗位來分類,能有個漸進的感覺。

一.

tb:電面一

  • dp是什麼,sp呢,有什麼區別

  • 自定義View,ViewGroup注意那些回撥?

  • 介面卡頓的原因以及解決方法

  • android中的儲存型別

  • service用過麼,基本呼叫方法

  • Handler機制

  • LinearLayout、FrameLayout、RelativeLayout效能對比,為什麼

  • Activity的生命週期,finish呼叫後其他生命週期還會走麼?

  • FW層熟悉麼,原始碼看過麼

  • GC回收機制熟悉麼,分代演算法知道麼

  • Java的類類載入原理

  • 記憶體洩漏如何排查,MAT分析方法以及原理,各種洩漏的原因是什麼比如

  • Handler為什麼會洩漏

  • gradle熟悉麼,自動打包知道麼

  • 介紹下先的app架構和通訊

  • 自己負責過哪些模組,跟同事相比自己的優勢是什麼

  • 遇到過什麼印象深刻的問題,怎麼解決的

現場面試:三場
First:

  • 最近都做了哪些工作?

  • 遇到了什麼印象深刻的問題。A:會順著你介紹的專案問下具體實現。

  • 推送訊息有富文字麼?

  • 熱修復瞭解麼,用的什麼?

  • apk包大小有限制麼?怎麼減少包大小?

  • 工作中有沒有用過或者寫過什麼工具?指令碼,外掛等等

  • 比如:多人協同開發可能對一些相同資源都各自放了一份,有沒有方法自動檢測這種重複之類的

  • 寫過native的底層程式碼麼

  • view的繪製熟悉麼,介紹下

  • gc相關的演算法

  • anr是因為什麼產生的,怎麼排查

  • 介面上的話,有什麼優化措施麼?比如列表展示之類的,平時遇到過記憶體問題嗎,怎麼優化的?

  • 平時用過哪些設計模式?

Second:

  • 介紹下最近一年主要做了什麼工作

  • 會對簡歷上突出的技能進行詳情的詢問:
    比如:音訊合成的具體步驟,以及遇到的一些問題和細節處理。
    會根據面試發散一些問題,問到,seek方法播放到末尾後重新播放會有一些卡頓的不流暢問題,怎麼避免,從互動設計或者技術角度。(個人表示沒怎麼關注這種)。

  • 專案團隊多少人,怎麼分配工作

  • 執行緒之間怎麼通訊的?

  • app的架構是怎麼樣的,並且為什麼這樣,有什麼優缺點?

  • 演算法熟悉麼?給了一個二叉排序樹,出了一個給定節點找到它的下一個元素(指的是大小順序的下一個)的演算法題。

  • 為什麼找工作,自己的優勢是什麼

Third:
技術問題不再侷限於簡歷,可能根據簡歷和回答情況漸進並擴散。

感覺各個技術面試官之前並沒有溝通,可能會問到類似的問題

  • 介紹下自己主要負責的工作

  • 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是怎麼回事?

  • 除了日常開發,其他有做過什麼工作?比如持續化整合,自動化測試等等

六.

DiDi:比較全面

  • 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方法之前的相互呼叫怎麼做?

幾點建議

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

2.基礎紮實,android和java相關的知識樹網上有很多資料,看過但讓你講出來未必能說的好。

3.提前總結,你還擅長什麼其他技術?這種開放問題要看知識面了。

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

5.良好的心裡素質,無論遇到什麼情況,面試官遲到、面試官態度冰冷說話不客氣、質疑你的回答等等各種問題都不要慌也不要排斥,一定要沉住氣,耐心積極的思考並回答對方的提問。

6.推薦幾本書,也是好幾次面試後發現裡面涵蓋了大部分答案。《Android開發藝術探索》《Android原始碼設計模式-解析與實戰》《Android進階之光》《深入理解Java虛擬機器》,多看幾遍。

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

最後,歡迎大家加入我們的知識星球,第二期開期起航火熱進行中,已有近1000人加入學習

歡迎大家儘早加入,這期是到2019年3月10日結束,所以越早加入越好,優惠活動結束,現入圈費用由79元提至89元,以後每滿100人費用增加10元~人員到900人時(還有最後2個名額了)將漲為99元,所以快上車!

640?wx_fmt=jpeg

微信掃描或者點選上方二維碼領取Android\Python\AI\Java等高階進階資源

更多學習資料點選下面的“閱讀原文”獲取

640?wx_fmt=gif