先介紹一下自己的情況,2013年java轉到Android開發,在小廠待過,也去過華爲,OPPO等大廠待過,18年四月份進了阿里一直到現在。被人面試過,也面試過很多人,有實習生的,也有社招的,也有校招的,下面就從這三個來說吧:
實習生
對於實習生而言的話,可能對於android方面的要求並不是特別的高,比較注重基礎,但是基本的得會,比如:
四大組件基本的概念以及使用。
Activity的生命週期流程,這是最基本的,但是你得清楚到底是啥時候調用各個方法,如一個頁面(A)當前正在跟用戶交互,彈出一個Dialog後,A的各個回調方法的流程調用情況等。
數據存儲的方式,五大存儲方式的基本使用。
掌握網絡通信中httpClient和HttpUrlConnection基本使用,任何網絡框架都是從最簡單的寫起,所以這個必須要知道。
熟悉json解析,JsonObject,JsonArray等等的各種使用。
會導入第三方庫。
線程(Thread,Runnable)的使用。
主線程和其他線程的交互(Handler,AsyncTask)。
校招
對於校招而言的話,主要是對於計算機基礎能力的考察,尤其bat等公司更甚,當然android方面也是需要的,主要考察的方面是:
熟練掌握操作系統原理
熟練掌握計算機網絡
熟練掌握數據結構以及算法
良好的java基礎
Android基本的都要會,在此基礎上需要掌握一定的源碼方面的知識,比如handler源碼,AsyncTask源碼,觸摸事件機制,view的事件分發機制,清楚他們是如何由0到1完成各自的工作的。
閱讀過相關開源項目,對開源項目做過校正或者貢獻的,Github好多小星星的~
社招
再講之前先吐槽一下某大型互聯網照片處理類公司(B)的HR,說好的校招,結果把我安排到社招相關去了,嗶了狗了。
對於社招方面,個人瞭解的也比較少,主要是經歷了B這個公司的面試,所以就面試的內容來講講吧,拋磚引玉好了,個人覺得社招尤其注重你在工作項目中的對於代碼整體框架的整體認識以及熟練掌握程度:
對於源碼有一定的研究,Binder機制的理解,熟練自定View,能夠對開源庫進行再次的封裝,改寫等等,AWS,WWS等等有一定的認識。
閱讀過開源項目源碼,清楚開源項目的構建歷程,優缺點等。
設計模式的理解與運用。
對於上任公司項目的理解,能夠清楚的講解自己編寫代碼的思路。
獨立解決Bug的能力,優化代碼的能力,重構代碼的能力。
良好的計算機基礎。
最最重要的一點,我覺得是:對於技術是否有熱情,有求知慾,願意去嘗試,去了解新的技術,這是我認爲最重要的一點。
面試時需要掌握的一些技巧
一、語言表達能力
不管是在開發的過程中,還是平時的工作,大家都需要把問題描述清楚,交流無障礙,不然會給雙方乃至多方造成困擾。
二、獨立思考能力
開發過程中,問題是少不了的,我們一般會出些題考量一下面試者的思維方式和思維能力。
比如:出一些智力題和算法題。有時候我們還會問應試的人一個問題有多少種解法。
三、技術專業能力
包括java、Android、算法什麼的,最好是既有技術的深度又有技術的廣度,即“T型人才”,瞭解的多,而且有自己的專精領域。
技術方面主要從以下幾個方向進行考察:
java:抽象類、接口、自動裝配、反射、異常、註解、文件讀寫、線性安全、java 虛擬機、代碼規範相關等等。
Android:handler的機制、自定義View、進程通信、事件處理、網絡處理、內存優化、插件化思想、設計模式、類加載器等等。
算法:幾大排序選一個、鏈表、二叉樹等等。
具體問什麼問題,怎麼問,這個是不固定的,得根據應聘者的簡歷上面的面的描述,比如做過哪些項目,讀過哪些源碼,個人博客這些。然後就是要結合我們公司的項目和應聘者的意向崗位來進行提問。
以上僅僅針對個人情況寫的,有什麼寫的不對的地方還請大家多多指正。
面試複習資料
針對以上情況,我這裏把我花費大半年整理的系統學習資料及路線分享出來,希望寒冬的環境下也能帶去一份溫暖。
那麼重點就來了,怎麼複習呢?
首先你需要有一個知識點輪廓,對着這個輪廓不停的擴展、延伸,自己查漏補缺。因爲雖然知識點就這麼多,但是面試官的提問方式還是千奇百怪的,所以你需要通過知識點做相應的延伸,才能融會貫通。
道理其實大家都知道,但是實施起來就遇到了問題,所以這裏我推薦最簡單的方式:
腦圖 + 書 + 視頻
什麼意思呢?具體解釋一下,首先你需要有一個全面的知識點腦圖,然後遇到不懂的地方就看書,千萬不要去看博客,畢竟博客門檻真的太低了,最後要配合一些高質量的視頻,用來鞏固知識和開拓視野。
腦圖已經給你整理好了,可以根據這個圖自行進行查漏補缺和規劃:
接下來就需要梳理知識,提升儲備了!(Android高級面試進階學習需要的電子書也已經給你整理好了)
架構師築基必備技能:深入Java泛型+註解深入淺出+併發編程+數據傳輸與序列化+Java虛擬機原理+反射與類加載+動態代理+高效IO
Android高級UI與FrameWork源碼:高級UI晉升+Framework內核解析+Android組件內核+數據持久化
360°全方面性能調優:設計思想與代碼質量優化+程序性能優化+開發效率優化
解讀開源框架設計思想:熱修復設計+插件化框架解讀+組件化框架設計+圖片加載框架+網絡訪問框架設計+RXJava響應式編程框架設計+IOC架構設計+Android架構組件Jetpack
NDK模塊開發:NDK基礎知識體系+底層圖片處理+音視頻開發
微信小程序:小程序介紹+UI開發+API操作+微信對接
Hybrid 開發與Flutter:Html5項目實戰+Flutter進階
知識梳理完之後,就需要進行查漏補缺,所以針對這些知識點,我手頭上也準備了不少的電子書和筆記,這些筆記將各個知識點進行了完美的總結。
然後再是通過源碼來系統性地學習
只要是程序員,不管是Java還是Android,如果不去閱讀源碼,只看API文檔,那就只是停留於皮毛,這對我們知識體系的建立和完備以及實戰技術的提升都是不利的。
真正最能鍛鍊能力的便是直接去閱讀源碼,不僅限於閱讀各大系統源碼,還包括各種優秀的開源庫。
刷大廠面試題備戰,增加大廠通過率
歷時半年,整理了這份市面上最全面的安卓面試題解析大全。
1.可以通過目錄索引直接翻看需要的知識點,查漏補缺。
2.五角星數表示面試問到的頻率,代表重要推薦指數
視頻呢?也給你整理了,夠意思吧。
視頻包含:
1、IPC機制相關面試題視頻解析
2、項目相關視頻解析
3、性能優化相關面試題視頻解析
4、JVM從入門到着迷
5、源碼相關試題視頻解析
6、BAT面試總結分析
…
以上內容均放在了開源項目:【github】 中已收錄,大家可以自行獲取(或者關注主頁掃描加微信獲取)也可以【簡信】我獲取。