行業凜冬,Android開發怎樣準備一場完美的面試?

前言

做爲一名程序員,想必你們都應該經歷過跳槽和麪試,這也是咱們職業生涯中升職加薪的重要組成部分。特別是在今年來行情並不怎麼景氣的Android開發,崗位職能被小程序或前端所代替,可謂是「一坑難求」。由此來講,當找到合適的「坑位」時,面試便尤其重要。前端

那麼,是否有不少小夥伴,由於面試過程當中沒有發揮到本身的最佳水平,而錯失offer留下了遺憾呢?git

因此,此次的分享,我想和你們聊聊:怎樣準備一場完美的Android面試。怎樣調整心態,該有哪些知識儲備,發揮本身的所有實力。程序員

本文不會講不少的技術細節,而是從面試方法入手,讓你們掌握一個正確的面試準備流程。github

一、面試可不是「說走就走的旅行」

首先想告訴你們的是,跳槽以前至少要留出多長的時間作準備。具體多長時間根據本身的工做年限、面試崗位要求來決定。面試某家公司前(特別是大廠),最好是要先了解你所面試的工做崗位,公司的業務,主要是作哪一個方面的,這樣能夠更加具備針對性的複習和準備。面試

好比說面試的是字節頭條部,確定要着重準備高級UI,自定義view,卡頓優化,頁面佈局屏幕適配等等這些方面 好比面試的是華爲海思這種,面試確定着重於底層,framework層各類原理,Linux內核這些。小程序

我見過太多的程序員,有好的工做崗位,或者獵頭忽然打來電話,腦子一熱,今天還在上班,明天就跑去面試了,沒有任何準備,可能平時在公司作業務駕輕就熟,面試被問到一些基礎知識都支支吾吾,平日裏沒怎麼用到,都已經淡忘了。面試完後一陣懊惱,跟我吐槽:面試問的其實挺簡單的,但凡我準備個兩天,這面試確定能過的。架構

世上沒有後悔藥,面試前必定要給本身充分的準備時間,把最佳的水平展示出來,征服面試官,這是對本身也是對面試公司負責。工具

這個時候估計會有不少小夥伴會說天天上班已經很忙了,哪裏還有時間準備啊。那就須要充分發揮本身的主觀能動性了,爲了一份你嚮往的工做,必須佔用一些你「free time」,克服本身的惰性,爲之努力。時間就像海綿裏的水,擠一擠老是會有的嘛。佈局

二、準備什麼內容

去面試前確定是要有本身的知識儲備、技能樹之類的,必定要將零散的知識點概括總結起來,造成知識體系。學習

若是你複習的時候沒有任何題綱,眉毛鬍子一把抓的話,那很是容易是不分主次,無法很好的跟蹤本身的複習進度。我建議你們使用思惟導圖的方式來造成本身的知識體系,不要隨便從網上找一個Android知識圖譜內容就看起來,每一個人接觸的內容和項目都不同,因此每一個人都應該要有本身的體系架構,正好你還能夠寫這個提供的過程當中,好好總結,本身學習過哪些內容。

思惟導圖你們都或多或少的接觸過, 它是表達發散性思惟的有效圖形思惟工具 ,它簡單卻又頗有效,是一種實用性的思惟工具。簡單展現一下我造成的思惟導圖,這是比較適合初中級Android開發的技能樹,高級工程師、架構師的技能體系導圖過大了,就不在此展現了,有興趣的小夥伴,我把進階Android開發高級工程師、架構師的完整知識體系+思惟導圖放在個人GitHub了,還有一些對應的學習資料你們也能夠去看看,今天主要講面試方法,就不過去擴展延伸了。

三、注重底層、基礎

大多數的面試官面試都喜歡由淺及深的問,因此底層知識就很是重要了。

舉個栗子,關於Activity 生命週期的問題,想必你們都比較瞭解。前陣子有個朋友去字節面試。面試官首先會問:A Activity 打開 B Activity 時都有哪些生命週期回調。 很簡單,大多數人都能回答出來:A.onPause -> B.onCreate -> B.onStart -> B.onResume -> A.onStop . Naive ! 注意!這樣的回答並非考官想要的標準答案,由於僅在 B Activity 的 launchMode 爲 standard 或者 B Activity 沒有可複用的實例時是這樣的。

  • 當 B Activity 的 launchMode 爲 singleTop 且 B Activity 已經在棧頂時(一些特殊狀況如通知欄點擊、連點),此時只有 B 頁面本身有生命週期變化: B.onPause -> B.onNewIntent -> B.onResume
  • 當 B Activity 的 launchMode 爲 singleInstance ,singleTask 且對應的 B Activity 有可複用的實例時,生命週期回調是這樣的: A.onPause -> B.onNewIntent -> B.onRestart -> B.onStart -> B.onResume -> A.onStop -> ( 若是 A 被移出棧的話還有一個 A.onDestory)

如上,面試官給你挖了個小坑,你以爲本身這麼簡單問題你隨便就答出來了,其實面試官固然不是傻子,只是想考驗你是否真的對底層有較多的瞭解。

再舉一個栗子,binder基本上是Android面試中不管大小廠的必問點。比較聰明的小夥伴會在簡歷裏面寫上「熟悉 AIDL」

面試官固然不僅是會問你AIDL 原理這種背爛了的問題,他可能會問你:AIDL 接口的方法能夠用 oneway 修飾符來修飾,瞭解過這個修飾符的做用嗎?

你回答出來了:用 oneway 修飾的 AIDL 接口方法,是單向調用,不須要等待另外一個進程的返回結果,因此方法的返回類型也只容許是 void.

面試官會點點頭,接着問:怎麼理解 "單向調用" ,有了解過它的實現原理嗎?有了解過相關的 binder 協議嗎?怎麼理解客戶端線程掛起等待呢?有沒有實際佔用 CPU 的調度?

這些深刻底層的問題,你都能答上來嗎?若是你能答出來,那麼,這場面試,你在面試官心中至少已經有90分了。

經過上述栗子,想必你們能大體明白底層、源碼在面試中有多麼重要了,在此給帶給你們兩份資料:Android framework底層精編內核解析Android開發核心源碼精編解析,對源碼和底層掌握不夠紮實的小夥伴強烈建議去個人GitHub獲取讀一讀。無償分享的。

四、一份漂亮的簡歷

面試的一切固然是從簡歷開始,你的簡歷決定了你可否收到面試邀請。簡歷美觀的重要性就不用我多說了,提幾個小建議:

一、不要太過複雜臃腫。能儘可能精簡就儘可能簡單些,最好的是整個簡歷上沒有一個多餘的字眼,面試官看到的每個字都是對你自身的表達。切記!千萬不要那種一個名字,一個電話就佔個一行,一頁紙上零零散散幾個字,簡歷給整個好幾頁。你覺得頁數越多逼格越高,其實在面試官眼裏,這人就是個nc,華而不實,不腳踏實地。

二、本身的優勢,擅長,要儘可能寫上去,哪怕是個小小的英語四級證。作過哪些項目,哪些公司經歷,有哪些收穫。

三、千萬不要不懂裝懂!不會的技術千萬不要寫進簡歷裏。面試官面試你的時候大多都是根據你的簡從來提問相關的技術點,你不會的技術,你寫進去,那不是給本身挖坑呢,並且別人會感受到你這我的不誠實,那面試大機率就涼了。

四、分享一個小套路你們能夠小小嚐試一下。大公司的面試官一天可能要看幾十上百份簡歷,一份簡歷絕對不會看超過十秒!**而怎樣能讓你的簡歷在千篇一概的簡歷堆裏讓面試官一眼就注意到多看幾眼呢?那就是,在你簡歷的左上角印上你要面試公司的logo。**多的我就很少說了,你懂的~~~

下面是我看過的一份很是美觀的簡歷,讓人一眼看上去就很舒服的簡歷,會大大提升你得到面試的機會。

文末

我一直以爲技術面試不是考試,考前背背題,發給你一張考卷,答完交卷等通知。

首先,技術面試是一個 認識本身 的過程,知道本身和外面世界的差距。

更重要的是,技術面試是一個雙向瞭解的過程,要讓對方發現你的閃光點,同時也要 試圖去找到對方的閃光點,由於他之後可能就是你的同事或者領導,因此,面試官問你有什麼問題的時候,不要說沒有了,要去試圖瞭解他的工做內容、瞭解這個團隊的氛圍。

找工做無非就是看三點:和什麼人、作什麼事、給多少錢,要給這三者在本身的內心劃分一個比例。

最後,祝願你們在這並不友好的環境下都能找到本身心儀的歸宿!

歡迎關注個人簡書,分享Android乾貨,交流Android技術。 對文章有何看法,或者有何技術問題,均可以在評論區一塊兒留言討論,我會虔誠爲你解答。 也歡迎你們來個人B站找我玩,有各種Android架構師進階技術難點的視頻講解,只爲助你早日升職加薪。 B站直通車:https://space.bilibili.com/544650554

相關文章
相關標籤/搜索