Android面試官感悟:年後跳槽季,這6大技巧教你在面試中大獲成功擠入一線互聯網大廠!

跳槽,這在 IT 互聯網圈是非常普遍的,也是讓自己升職加薪,走上人生巔峯的重要方式。那麼作爲一個普通的Android程序猿,我們如何才能斬獲大廠offer 呢?

工作幾年以來一共經歷過100多場面試,也擔任過50多場面試的面試官,我們一起來看一看他從面試者與面試官雙向的角度總結出的面試經驗。

下面,我將結合我過往的面試經歷來幫大家分析,在Android大廠面試過程中,我們需要注意的關鍵點以及我們需要做怎樣的準備。

本文適合人羣:剛畢業的大學生、缺乏面試經驗的求職者、致力於在大廠社招中尋找Android相關機會的開發者等

文章末尾我將分享幾篇乾貨滿滿的面試文章以及資料給大家,記得一定要好好收藏哦!!

哪些因素有助於取得面試成功?

在我看來,最有利的因素有三個:

  1. 良好的人品;
  2. 適合的技術經驗;
  3. 解決難題的能力。

簡歷

作爲面試官,一般都會在面試前仔細閱讀兩遍簡歷。作爲面試者,我很討厭那些根本不看我簡歷,卻佔用我的時間的面試官。通常,在簡歷中寫:“努力工作,注重結果”之類的言辭,基本沒什麼用。爲了突出自己,你必須更具體:“我參與了項目X,在其中負責工作Y,最後取得了結果Z。”

如果求職者在簡歷中寫明GitHub鏈接,我就會去看他們的GitHub,看看他們都構建了哪些產品。即便他們不是編程高手,但至少證明他們能夠寫代碼,而且能夠與其他人合作,完成工作。

內推

如果你信得過某個人,那麼他的話在你這裏一定很有分量。尤其是當你給某人寫推薦信時,一定要說清楚:“你是否曾經與這個人共事,你覺得他能夠勝任這項工作嗎?”而作爲面試官,我也會打電話給推薦人,問問他們:“他的表現如何?你願意再次和他合作嗎?”

以上是面試之前需要做好的準備,下面我們來看一看實際的面試。

大廠面試中技巧

根據我的經驗,能否給出正確答案與在工作中是否有良好的表現,二者之間的聯繫並不大。然而我發現,面試者找到解決方案的方式之間有一些共同點。我發現,是否掌握了處理複雜數據結構的編程技巧,與實際工作中的長期表現之間幾乎沒有聯繫。通常在日常工作中,你只需要完成基本的工作。

技巧1:準備一份漂亮的簡歷

一份漂亮的簡歷就是你進入大廠的敲門磚。

技巧2:自我介紹要背得滾瓜爛熟

自我介紹可以說是面試的必要環節,無論你參加什麼形式的面試,面試官一定會首先讓你做一個簡單的自我介紹,所以自我介紹這一關一定要準備充分,最好做到爛熟於心。

自我介紹不是簡歷的重複背誦。我們在做自我介紹的時候,一定要把握好重點,切忌過長或者過短。

技巧3:討論各種可行的方式,總結出大致計劃

優秀的面試者不會上來就直接編寫代碼,他們會解釋自己的方法和思維模型。這意味着他們願意在動手編寫代碼之前,與他人合作,探討可行的方式。這個時候,你可以利用白板,或者在紙上畫出來也可以。

大多數的實際問題都需要團隊達成一致。能夠與他人交流你的想法,說明每種方式的優缺點,這一點非常重要。

很多大問題都沒有正確答案,你需要權衡利弊。能夠統一取捨很重要。

技巧4:面試前多刷刷面試題

面試前多刷面試題,是對面試最起碼的尊重。

雖然我在這裏不提倡大家臨時抱佛腳,但是適當地抱一抱佛腳也比那些什麼都不準備,就直接裸面的人要好很多,至少你的態度是端正的。

臨近年終,很多人開始蠢蠢欲動了,這段時間面試的時候,我就經常能夠面到幾個啥都不準備,直接甩兩膀子就過來面試的。面試基本上是一問三不知,要麼就是說之前看過忘了...更有甚者直接就說,我就是出來面個試感受一下面試氣氛以及最新行情的...

技巧5:合理運用表達技巧

一個人的語言表達藝術標誌着你的成熟和素養。尤其是在大廠中,很多問題其實是可以通過溝通來解決的,所以一個人的語言表達能力往往也是面試官需要考覈的內容。

我們應該學會在面試過程中合理運用表達技巧,去凸顯自己的語言表達能力。

那麼我們應該怎麼做呢,這裏我僅僅是簡單列舉一些供大家參考:

  • 吐字清晰、大方得體、語速適中。
  • 說話的語氣要平和,不可忽高忽低,也不能過於情緒化。
  • 認真聆聽面試官的發言,注意面試官一些細微的表情變化以及手勢動作。
  • 必要時可以使用一些機智、幽默的話術。
  • 當語言並不能完全表達意思的時候,可以加上手勢或者書面的形式加以描述。

技巧6:Android技術面試一般涉及的要素

下面就是簡單講解一下Android技術面試中主要涉及的內容有哪些。

Java基礎

面試Android崗位,Java基礎那是必問的。如果項目中使用kotlin比較多的話,可能還會問一些kotlin相關的問題。

Java, 作爲一門基礎語言,考覈的是應聘者是否具備紮實的基本功。很多培訓班或者非科班出身的人,經常會栽在這一環節。一般這個環節的問題答不上來的話,基本上是提前結束了。

那麼常見面試的Java基礎問題有哪些呢?下面我們簡單列舉一些供大家參考:

  • Java集合類List,Map,Set相關的實現原理。
  • Java線程池的實現原理和使用
  • Java線程同步相關的知識點。
  • Java鎖機制,以及死鎖產生的原因以及解決方案。
  • Java反射、泛型、註解相關的知識點以及使用。
  • Java類加載機制。
  • Java虛擬機的資源回收機制以及算法。

以上基本上是面試Android崗位的常見考點,所以我們必須重視對Java語言的學習和理解,即便你在平時工作中使用kotlin較多,也不能忽視對Java基礎知識的鞏固和學習。

設計模式

設計模式其本身其實也是屬於Java基礎範疇的,只不過部分大廠對設計模式的要求較高,所以會單獨擰出來進行考察。
很多大廠都喜歡招那些對代碼有潔癖,有高追求的人進來。

在他們眼裏,追求的並不是這個功能如何實現,而是這個功能如何更好地實現。只要性能不佳或者擴展性不夠強的話,結局基本上就是推翻重構。

那麼設計模式一般會考察哪些內容呢?下面我們簡單列舉一些供大家參考:

  • java設計模式的六大設計原則以及它們的關係。
  • 單例模式、適配器模式、裝飾者模式、代理模式、外觀模式、策略模式、觀察者模式、責任鏈模式、命令模式、狀態模式、中介者模式。這十一種常用的設計模式是考覈的重點,你需要掌握它們的優缺點以及使用的場景。
  • 適配器模式,裝飾者模式,外觀模式它們之間的區別是什麼。
  • 代理模式、策略模式、狀態模式它們之間的區別是什麼。
  • 外觀模式、中介模式它們之間的區別是什麼。
  • 靜態代理和動態代理的區別,什麼場景使用,實現動態代理的幾種方式。
  • 簡單列舉幾個Android源碼中使用到設計模式的例子。

以上我只是簡單列舉了一些設計模式常見的考點,因爲設計模式的考覈相對靈活,因此還是以實際應用場景爲主。

Android基礎

Android基礎,不用說這是面試Android崗位必須要問的內容。要是連這個都答不上來,基本你的面試就提前結束了。

Android基礎是任何Android面試都需要考覈的內容。不過這也是按級別而定,一般高級開發工程師的面試,Android基礎只是一筆帶過。

那麼Android基礎有哪些呢?下面我們簡單列舉一些供大家參考:

  • Handler機制以及相關知識。
  • Activity和Fragment生命週期。
  • Android四大組件相關的知識。
  • Android進程間通信的方式。
  • Context相關的知識。
  • Activity的啓動模式。
  • Android動畫相關知識。
  • Android自定義組件相關知識。
  • Android事件分發機制以及觸摸事件衝突的處理。
  • ANR產生的原因以及避免ANR的方式。
  • 內存泄漏產生的原因以及定位解決的方式。
  • OOM產生的原因以及解決的方式。
  • Android頁面渲染機制以及優化方式。
  • LinearLayout、FrameLayout、RelativeLayout和ConstraintLayout的理解和性能對比。
  • Android各版本的特性。
  • Android屏幕適配的技巧。
  • MVC,MVP,MVVM的理解與實踐。
  • Android的主題、樣式、屬性相關的內容。
  • JNI相關的知識。

以上內容是作爲一名合格Android開發工程師所必備的知識點,也是常見的考點,請務必每條都要清楚掌握,這樣你在面試過程中才能遊刃有餘。

Android源碼分析

Android源碼分析,算是要求較高的考覈。不過這在大廠面試中非常普遍,因爲很多大廠對Android源碼的分析和理解都有相當高的要求。

那麼常見的Android源碼分析有哪些呢?下面我們簡單列舉一些供大家參考:

  • Android系統的啓動流程分析。
  • APP啓動的流程分析。
  • Activity的啓動流程分析。
  • Zygote進程的創建和啓動流程分析。
  • Window窗口創建和加載的流程分析。
  • Dalvik和ART的理解。
  • RecyclerView的源碼分析。

閱讀源碼是一件相對枯燥的事情,如果平時工作中涉及不到的話就很難堅持下去,因此需要非常強的毅力。不過話又說回來,如果你能夠熟練地掌握Android源碼的話,那麼就非常有機會進入大廠了。

Android進階技能

這部分一般是對Android高級開發工程師的考覈,主要涉及的點主要是一些性能優化,技術細節方面的問題。

要想成爲一名高級開發工程師,性能優化以及架構設計永遠都是繞不開的話題。做技術如果只是廣而不深的話,是不可能成爲一名高級開發工程師的。只有不斷提升自己的不可替代性,才能提高自己的價值。

那麼常見的Android進階技能有哪些呢?下面我們簡單列舉一些供大家參考:

  • App穩定性優化(crash、性能以及體驗等)
  • App啓動速度優化
  • App內存優化
  • App界面繪製優化
  • App瘦身優化
  • App安全優化
  • 網絡請求優化
  • WebView使用優化
  • RecyclerView的緩存刷新優化
  • AOP技術的原理和實踐
  • gradle腳本持續集成技術
  • App進程保活

以上只是Android進階技能的一小部分通用性技術,除此之外還有很多細分領域相關的進階技能。總之,如果這項技術是你掌握而其他人普遍不瞭解的,那麼它就屬於進階技能。

新技術研究

Android這些年的技術發展基本上已經趨向成熟,所以對於新技術的研究也並不是那麼看中,可能面試官就是隨口問一下,想要知道你的學習慾望強不強罷了。

那麼有什麼新的技術可以在業餘時間進行研究呢?下面我們簡單列舉一些供大家參考:

  • Android組件化
  • Android插件化
  • Android熱更新技術
  • Android JetPack框架技術
  • Kotlin開發技術
  • Android Hook技術
  • AOP技術
  • 依賴注入技術IoC
  • 跨平臺開發技術:ReactNative、Flutter等

上面的內容,其實很多已經算不上新技術了,如果你現在還不瞭解的話,那麼你最好花點時間瞭解一下,否則我只能說你是真的out了。

開源項目源碼分析

開源項目源碼分析和Android源碼分析一樣,也是考覈應聘者對原理的理解。如果僅僅只是會使用而不對其原理加以瞭解的話,那麼你也只能算是達到初級水平,這樣是無法進入到大廠的。

那麼有哪些優質的開源項目值得我們去研究其源碼呢?下面我們簡單列舉一些供大家參考:

  • OkHttp
  • Retrofit
  • Glide
  • LeakCanary
  • RxJava
  • ARouter
  • EventBus
  • ButterKnife
  • GreenDao
  • Dagger2

以上我列舉的基本上都是我們平時開發過程中經常使用到的開源項目,認真研究和分析他們的設計思想和精髓,並積極運用到我們平時的編碼當中去,可以讓我們的技術得到質的飛躍!

算法

部分大廠對Android開發工程師的算法也是有一定要求的,這部分沒有什麼好說的,打開LeetCode去多刷刷題就可以了。

雖說Android開發工程師也需要掌握一定的算法,不過和那些專業做算法的相比肯定是沒那麼高的要求的,我們並不需要把LeetCode的每道題都刷一遍,只要把一些簡單和中等難度的題刷一遍就可以了。

那麼常見的Android算法題有哪些呢?下面我們簡單列舉一些供大家參考:

  • 各類排序(尤其二分法插入排序、歸併排序需要着重掌握其思想)
  • 手寫反轉鏈表、鏈表複製、鏈表合併
  • 手寫隊列或者鏈表等數據結構的實現
  • 字符串匹配、去重問題
  • 雙指針算法問題
  • 數組查重問題
  • 二叉樹的遍歷和序列化
  • 貪心算法相關問題

一個好的算法可能極大地提升應用的性能,如果你平時有心的話就會發現在Android源碼中也經常能看到算法的身影,感興趣的可以閱讀一下SparseArray的源碼。

Android面試資料分享

資料不在於多,而在於精。下面我就簡單分享一下曾經對我幫助比較大的幾個面試複習資料。

多餘的話就不講了,接下來將分享面試的一個複習路線,如果你也在準備面試但是不知道怎麼高效複習,可以參考一下我的複習路線,有任何問題也歡迎一起互相交流,加油吧!

簡歷+社招解答+經典HR面試解析

以上是整理總結的Android中高級面試遇到的真題解析,希望對大家有幫助;同時很多人經常也會遇到很多關於簡歷製作,職業困惑、HR經典面試問題回答等有關面試的問題。同樣我也蒐集整理了全套簡歷製作、金三銀四社招困惑、HR面試等問題解析,有疑問,可以提供專業的解答。

1、看視頻進行系統學習

前幾年的Crud經歷,讓我明白自己真的算是菜雞中的戰鬥機,也正因爲Crud,導致自己技術比較零散,也不夠深入不夠系統,所以重新進行學習是很有必要的。我差的是系統知識,差的結構框架和思路,所以通過視頻來學習,效果更好,也更全面。關於視頻學習,個人可以推薦去B站進行學習,B站上有很多學習視頻,唯一的缺點就是免費的容易過時。

另外,我自己也珍藏了好幾套視頻,有需要的我也可以分享給你。

2、進行系統梳理知識,提升儲備

客戶端開發的知識點就那麼多,面試問來問去還是那麼點東西。所以面試沒有其他的訣竅,只看你對這些知識點準備的充分程度。so,出去面試時先看看自己複習到了哪個階段就好。

  • 架構師築基必備技能:深入Java泛型+註解深入淺出+併發編程+數據傳輸與序列化+Java虛擬機原理+反射與類加載+動態代理+高效IO
  • Android高級UI與FrameWork源碼:高級UI晉升+Framework內核解析+Android組件內核+數據持久化
  • 360°全方面性能調優:設計思想與代碼質量優化+程序性能優化+開發效率優化
  • 解讀開源框架設計思想:熱修復設計+插件化框架解讀+組件化框架設計+圖片加載框架+網絡訪問框架設計+RXJava響應式編程框架設計+IOC架構設計+Android架構組件Jetpack
  • NDK模塊開發:NDK基礎知識體系+底層圖片處理+音視頻開發
  • 微信小程序:小程序介紹+UI開發+API操作+微信對接
  • Hybrid 開發與Flutter:Html5項目實戰+Flutter進階

知識梳理完之後,就需要進行查漏補缺,所以針對這些知識點,我手頭上也準備了不少的電子書和筆記,這些筆記將各個知識點進行了完美的總結。

3、讀源碼,看實戰筆記,學習大神思路

“編程語言是程序員的表達的方式,而架構是程序員對世界的認知”。所以,程序員要想快速認知並學習架構,讀源碼是必不可少的。閱讀源碼,是解決問題 + 理解事物,更重要的:看到源碼背後的想法;程序員說:讀萬行源碼,行萬種實踐。

主要內含微信 MMKV 源碼、AsyncTask 源碼、Volley 源碼、Retrofit源碼、OkHttp 源碼等等。

4、面試前夕,刷題衝刺

面試的前一週時間內,就可以開始刷題衝刺了。請記住,刷題的時候,技術的優先,算法的看些基本的,比如排序等即可,而智力題,除非是校招,否則一般不怎麼會問。

關於面試刷題,我個人也準備了一套系統的面試題,幫助你舉一反三:

以上內容均免費分享給大家,需要完整版的朋友,點這裏可以看到全部內容。或者關注主頁掃描加 微信 獲取。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章