2019年下半年最接地氣的Android面經

摘要

開篇以前,首先說一下,大神就別點進來了。博主只是塵世間一個迷途小開發,二流程序員。
這篇文章並不像其餘面經同樣金光閃閃,只是一個二流Android攻城獅在市場的大潮之下,用一個月時間面試+複習+總結,最終拿到了本身喜歡公司offer(非一線大廠,可是薪資也漲了40%多,對我來講已經很滿意惹)的故事。
固然,大廠誰不想去呢?但是時間緊,生活壓力大,計劃趕不上變化。生活的真諦就是妥協而已。java

前提

出來社會摸爬滾打三年多,不得不認可人是分三六九等的。即使是專一度、努力這些頗爲客觀的因素,也是因人而異的。(沒辦法,我也知道客觀上應該努力啊555~~,可我主觀上只想躺着刷B站~~555)
First,先列一下博主目前的客觀狀況:程序員

  • 雙非本科,非計算機專業。本專業是機械
  • 工做三年,都是小廠,小組最多沒超過4我的
  • 算法基礎一丟丟(翻書‘馬冬梅’,合書‘什麼梅’)
  • 英語水平半文盲
  • 有一個本身常年維護的博客,GitHub全部項目加起來有200多個star
  • 懂一點應用層方面的音視頻編解碼知識

如何準備

我是從8月接近中旬開始面試的,一直到9月初結束,整個面試週期滿打滿算有一個月的時間(我是至關於裸辭找工做的)。此次面試採用的策略是以戰代練,就是邊面邊複習。面試的話,主要是朋友內推,Boss和拉勾。但Boss的話,初期不建議把簡歷可見,我就在這方面吃了苦頭(別提了都是淚)。
接下來我將這一個月內我接觸的知識點鋪展開來,也給你們一點參考。
書籍:《Android開發藝術探索》、《Android進階之光》、《Android進階解密》、《圖解Http》面試

書是不能不看的,以上這幾本,除了圖解Http以外,都要大體讀一遍。固然時間可能沒那麼充裕,因此要跟着目錄,挑一些本身的弱項好好複習一下。
Http這本書是由於有幾家公司面試問到了網絡相關的知識,因此我纔去閱讀的算法

算法:LeetCode,把鏈表、排序、樹標籤裏全部簡單類型的題目練一下手。特別是排序,冒泡、快速、二分、選擇、歸併必定要達到手寫的水平!canvas

數據結構:Java的HashMap——7和8的區別、ArrayList、LinkeList。Android的ArrayMap、SparseArray系列。還有阻塞隊列ArrayBlockingQueue、LinkedBlockingQueue。HashMap的結構和細節是遇到最多,建議仔細看一下源碼,必定要有本身的理解(劃重點)。把HashMap如何存儲、如何查找。hash碰撞,以及內存利用率這些問題理解一下設計模式

設計模式和架構:準備一些本身拿手的模式,在網上查一下資料。準備一些套話,關鍵詞耦合,二次修改方便,外部不用關心內部實現等等。MVC、MVP、MVVM三種,起碼要了解兩種,而且能清晰明確的說出,兩種架構間的優缺點。數組

我自己經歷過一次MVC -> MVP的過渡,因此面試的時候就只提了這兩種。MVVM沒接觸過,就實話實說沒搞過,面試官也不會再問。千萬不要打腫臉充胖子,沒接觸過就說不會就能夠了。
關鍵詞:UI邏輯業務邏輯不影響對方的前提下修改邏輯清晰,方便定位緩存

簡歷:這個就8用提了,面試的敲門磚。個人簡歷也寫的不是很好,但由於會一點音視頻的知識,因此仍是有一點加分項的。簡歷要注意簡潔明瞭,star法則;諸如:我作了A工做,將效率提升200%、我優化了xxx,把速度優化了10~20倍。1 ~ 2頁最佳性能優化

最開始寫簡歷的時候,實在不知道該如何動筆。磨磨蹭蹭憋了好幾天沒整出來。其實這個時候就要平心靜氣,把本身的思惟拔高一點。站在整個項目的角度去細細查看,這個時候就會發現項目中仍是有很多亮點的。網絡

Android基礎:這個就很重要了,固然涉及面也至關廣。四大組件,生命週期這個啥都不說了,直接衝就是了,基本都會問到。Handler、View繪製流程、事件分發,這些都是老生常談。

Android框架基礎:AMS,Activity的啓動過程。Android繪製流程(這個看我的了,由於我簡歷上寫了熟悉Canvas哭,手動狗頭)

Java基礎:多線程、線程池、鎖機制,這兩個知識點問到的還挺多的。其餘的包括,內存區域、內存泄漏、垃圾回收。。。(這些懂個概念便可,不深究)

面試

以上是一些複習的知識點,由於要準備的東西仍是蠻多的。因此時間上的安排必定要靈活,我是早上覆習Java基礎,中午看Android,晚上覆習算法和數據結構。有面試的話,就提早去了解一下公司的產品,去官網上衝一衝浪,下個APP玩一下。也算提早給本身一個心理準備。
如下是一些面試題,供給你們參考:

  • RecycleView複用機制
  • RecyclerView的LayoutManager如何佈局
  • 設計模式:觀察者模式
  • APP啓動優化
  • 註解原理
  • java內存模型
  • 內存泄漏處理;可能出現的內存泄漏問題
  • 性能優化如何作——這是一個比較泛的問題,主要從佈局分析、繪製分析、內存優化幾個大的方面去延伸,如何定位、如何解決,說出本身的理解和經驗便可
  • 鏈表和數組比較
  • 死鎖和多線程——由於本身說禿嚕嘴了,提了一句死鎖。就被問到了555,好慘。因此千萬別裝,不會就別提
  • 自定義view。要具體到在onMeasure裏怎麼處理,onLayout怎麼處理
  • 矩陣原理,由於我說了我熟悉Canvas
  • 事件處理,事件分發。同窗們,這道題基本必問。敲黑板!
  • 差值器原理
  • 線程池原理,涉及到阻塞隊列
  • Kotlin,apply和let區別
  • AS如何檢查內存泄漏——考察你的工具使用熟練度
  • canvas的繪製是如何實現的——硬繪和軟繪
  • 遇到的印象最深一次的內存問題
  • 如何寫一套圖片加載庫——考驗你的綜合能力
  • Bitmap的緩存,軟引用、Lrucache。recycle如何實現
  • view的post如何實現
  • Fragment和View的區別
  • Http的請求方式,RestFul熟悉嗎——網絡我基本只知道一些概念
  • linearlayou 和relativelayou性能比較
  • MessageQueue 和message 的建立
  • 手寫快速排序,手寫二分查找

好了,以上就是遇到的一些問題。還有些問題涉及到音視頻這方面,由於不具備通用性,我就不提了。
仍是那句老話,面試是一個雙向考察的過程,面試官考察你,同時你也要考察考察公司。要真是不喜歡的話,工做作得也不開心,固然也不會長久。工做畢竟仍是佔據了生活中的大部分時間,找一個本身喜歡並願意投入的工做對本身的成長也好一點。
同時,面試也是一個考察綜合能力的地方。不要覺得技術上準備的很充分了就萬事大吉。在面試的時候,態度、分析問題的能力、自信度、人品這些都決定了你可否拿到offer。

其餘細節

面試通常的時間是在兩三個小時左右,做爲求職者。咱們要在這段時間內,將咱們的價值展示給面試官和HR。就像推銷產品同樣,你得站在旁觀者的角度思考一下,這我的值不值得咱們買入(發offer),他(她)的性格怎麼樣,人品值得信任嗎等等。
站在這個角度想一下的話,有不少問題你本身就想通了。固然你考慮這些問題的前提是你的技術準備已經挺充分的了。

  • 自我介紹;準備一段兩三分鐘的自我介紹,挑一些有亮點的東西說一下。面試官也是人,你長篇大論五六分鐘,他記住的點也不會太多。因此要精簡,要學會提煉關鍵字。譬如:工做上偏重架構設計技術上偏重技術實現(實現了什麼牛逼的技術)
  • 語氣腔調:這個也有必要練習一下(不要笑,這個很重要),你能夠本身錄音聽一下,試試有沒有一個合適的語速讓別人能聽清楚你說的話。還有說話要自信,不要結結巴巴,不會的東西就直接說沒接觸過就好了,切忌扭扭捏捏~~還有回答問題的時候,不要等面試官問完就立馬回答。停頓個幾秒鐘做思考狀(手動狗頭),若是是特別特別熟的問題,就稍微頓一下,不要太流利。有些點能夠適度說想不起來這個程度本身把握,挑一些不過重要的點,留給面試官補充,否則你各個問題回答如流,只會加速面試流程。說不定碰到一個軸一點的,就拋出一個史詩大問題給你。固然這個小技巧面試用一次就最多了,千萬別亂用。。。
  • 離職緣由:這個有的技術官不會問,有的會問。HR會比較看重這個問題,這個就本身斟酌吧。反正不要給人留下這我的很浮躁,不會在咱們這裏久留的印象就行了。
  • 技術思考:這也是一個很泛的點,要具象的話。就是你在項目中如何寫你的代碼,有的面試官會看重這個問題。這個嘛,就純是看我的了~~~

總結

2019的面試總結下來,比前兩年要難上許多固然大廠仍是一如既往的難~~~。現在的面試官經驗也豐富不少,不少問題並不會直接問你,而是拋出一個具體的問題由你去分析。有的仍是考察你在產品和開發之間的項目協調問題,好比出了一個客觀上沒法解決的問題,你該如何去協調。還好比會考察你一些對產品的思考。
現現在而言,工程師尤爲是Android工程師是遠不如前兩年火爆了。如今更考察的是一個工程師的綜合能力,你的基礎、交流能力、問題組織能力、有沒有過對產品的思考。
攻城獅!時代在進步,工程師們也要進步,不只僅是技術。工程師更是一個綜合能力的結合,涉及到演技,口才,交流能力,技術基礎,產品思惟等等~~

與君共勉mua~

相關文章
相關標籤/搜索