開篇以前,首先說一下,大神就別點進來了。博主只是塵世間一個迷途小開發,二流程序員。
這篇文章並不像其餘面經同樣金光閃閃,只是一個二流Android攻城獅在市場的大潮之下,用一個月時間面試+複習+總結,最終拿到了本身喜歡公司offer(非一線大廠,可是薪資也漲了40%多,對我來講已經很滿意惹)的故事。
固然,大廠誰不想去呢?但是時間緊,生活壓力大,計劃趕不上變化。生活的真諦就是妥協而已。java
出來社會摸爬滾打三年多,不得不認可人是分三六九等的。即使是專一度、努力這些頗爲客觀的因素,也是因人而異的。(沒辦法,我也知道客觀上應該努力啊555~~,可我主觀上只想躺着刷B站~~555)
First,先列一下博主目前的客觀狀況:程序員
我是從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玩一下。也算提早給本身一個心理準備。
如下是一些面試題,供給你們參考:
這是一個比較泛的問題,主要從佈局分析、繪製分析、內存優化幾個大的方面去延伸,如何定位、如何解決,說出本身的理解和經驗便可
由於本身說禿嚕嘴了,提了一句死鎖。就被問到了555,好慘。因此千萬別裝,不會就別提
同窗們,這道題基本必問。敲黑板!
硬繪和軟繪
考驗你的綜合能力
網絡我基本只知道一些概念
好了,以上就是遇到的一些問題。還有些問題涉及到音視頻這方面,由於不具備通用性,我就不提了。
仍是那句老話,面試是一個雙向考察的過程,面試官考察你,同時你也要考察考察公司。要真是不喜歡的話,工做作得也不開心,固然也不會長久。工做畢竟仍是佔據了生活中的大部分時間,找一個本身喜歡並願意投入的工做對本身的成長也好一點。
同時,面試也是一個考察綜合能力的地方。不要覺得技術上準備的很充分了就萬事大吉。在面試的時候,態度、分析問題的能力、自信度、人品這些都決定了你可否拿到offer。
面試通常的時間是在兩三個小時左右,做爲求職者。咱們要在這段時間內,將咱們的價值展示給面試官和HR。就像推銷產品同樣,你得站在旁觀者的角度思考一下,這我的值不值得咱們買入(發offer),他(她)的性格怎麼樣,人品值得信任嗎等等。
站在這個角度想一下的話,有不少問題你本身就想通了。固然你考慮這些問題的前提是你的技術準備已經挺充分的了。
工做上偏重架構設計
,技術上偏重技術實現(實現了什麼牛逼的技術)
做思考狀(手動狗頭)
,若是是特別特別熟的問題,就稍微頓一下,不要太流利。有些點能夠適度說想不起來這個程度本身把握,挑一些不過重要的點
,留給面試官補充,否則你各個問題回答如流,只會加速面試流程。說不定碰到一個軸一點的,就拋出一個史詩大問題給你。固然這個小技巧面試用一次就最多了,千萬別亂用。。。這我的很浮躁,不會在咱們這裏久留
的印象就行了。2019的面試總結下來,比前兩年要難上許多固然大廠仍是一如既往的難~~~
。現在的面試官經驗也豐富不少,不少問題並不會直接問你,而是拋出一個具體的問題由你去分析。有的仍是考察你在產品和開發之間的項目協調問題,好比出了一個客觀上沒法解決的問題,你該如何去協調。還好比會考察你一些對產品的思考。
現現在而言,工程師尤爲是Android工程師是遠不如前兩年火爆了。如今更考察的是一個工程師的綜合能力,你的基礎、交流能力、問題組織能力、有沒有過對產品的思考。
攻城獅!時代在進步,工程師們也要進步,不只僅是技術。工程師更是一個綜合能力的結合,涉及到演技,口才,交流能力,技術基礎,產品思惟等等~~