如何面試 Android 工程師?
如何面試android工程師?要求有哪些基本素質?
其實知乎的「Android 開發」話題下有很多問題是適合做面試題的:
http://www.zhihu.com/topic/Android-%E5%BC%80%E5%8F%91
可以翻一翻,開放式的和實操類的都有。舉例:
Android 中線程與線程,進程與進程之間如何通信?
activity,intent 和 service 是什麼關係?
handler 機制的原理是什麼?
橫豎屏切換時候 activity 的生命周期?拿自身來舉個栗子把= ̄ω ̄=~
先介紹一下自己的情況,我是一名2016應屆畢業生,自學的android開發,面試過好多公司(目前待業/(ㄒoㄒ)/),有實習生的,也有社招的,也有校招的,下面就從這三個來說吧:實習生: 對於實習生而言的話,可能對於android方面的要求並不是特別的高,比較注重基礎,但是基本的得會,比如:- 四大組件基本的概念以及使用。
- activity的生命周期流程,這是最基本的,但是你得清楚到底是啥時候調用各個方法,如一個頁面(A)當前正在跟用戶交互,彈出一個Dialog後,A的各個回調方法的流程調用情況等。
- 數據存儲的方式,五大存儲方式的基本使用。
- 掌握網路通信中httpClient和HttpUrlConnection基本使用,任何網路框架都是從最簡單的寫起,所以這個必須要知道。
- 熟悉json解析,JsonObject,JsonArray等等的各種使用。
- 會導入第三方庫。
- 線程(Thread,Runnable)的使用。
- 主線程和其他線程的交互(Handler,AsyncTask)。
對於校招而言的話,主要是對於計算機基礎能力的考察,尤其bat等公司更甚,當然android方面也是需要的,主要考察的方面是:
- 熟練掌握操作系統原理
- 熟練掌握計算機網路
- 熟練掌握數據結構以及演算法
- 良好的java基礎
- android基本的都要會,在此基礎上需要掌握一定的源碼方面的知識,比如handler源碼,AsyncTask源碼,觸摸事件機制,view的事件分發機制,清楚他們是如何由0到1完成各自的工作的。
- 閱讀過相關開源項目,對開源項目做過校正或者貢獻的,Github好多小星星的~
- 對於源碼有一定的研究,Binder機制的理解,熟練自定View,能夠對開源庫進行再次的封裝,改寫等等,AWS,WWS等等有一定的認識。
- 閱讀過開源項目源碼,清楚開源項目的構建歷程,優缺點等。
- 設計模式的理解與運用。
- 對於上任公司項目的理解,能夠清楚的講解自己編寫代碼的思路。
- 獨立解決Bug的能力,優化代碼的能力,重構代碼的能力。
- 良好的計算機基礎。
最最重要的一點,我覺得是:
對於技術是否有熱情,有求知慾,願意去嘗試,去了解新的技術,這是我認為最重要的一點。
僅僅針對個人情況寫的,有什麼寫的不對的地方還請大家多多指正
另:Jerry Chan 博客地址,有興趣的朋友可以看看,共同進步~可以從各個方面來看,技術方面,可以問問android系統的一些基礎知識,如果對方是有項目經驗的,可以舉實例來讓對方給出技術解決方案,我個人比較喜歡問實例,因為來面試的人把基礎知識都背的差不多了,再怎麼問都差不多,只有實例才可以看出對方到底有沒有實際項目經驗,和知識點的運用能力。工作能力方面,可以看看對方解決問題的方法,面對問題的態度,責任心等。往往對方面試的時候,從回答你問題的方式,就可以看出這個人是否有自信,是否敢於承擔責任,問其A,答曰B的基本可以無視之。技術能力很重要,但是我覺得態度更重要。
先看看他用神馬手機
說一下我面試過程中,覺得幾個有意思且夠有深度的問題吧。
一: 如果打包過程中apk的體積過大了你有什麼好的瘦身方法?(一針見血,沒有實際項目的人是不會有這種經驗的,只有在項目後期中實際遇到了才會考慮到這個問題!)
二:利用第三方工具過程中,是不是有重構過第三方代碼來解決或是預防65535的經歷?三:說一下你項目中使用到的第三方平台。四:(公司主要是研究哪方面的就側重哪方面去問, 舉個栗子,如果公司是做視頻的,那麼就問有沒有對直播、彈幕有過研究? 如果有,具體研究的哪方面?)五:展示下自己的項目, 然後去問怎麼實現,實現的過程中遇到了什麼困難或者問題,怎麼解決的, 當然過去很久了很有可能就會忘記了, 這個時候再問在github或者是csdn再或者其他的平台有過記錄沒有?隨心動筆,聊勝於無。每一家公司都不同,這個無法判斷的。
自己本身要有本事
有能力的話是很好應聘的呢,,
我覺得
第一:是否真的有投身於這個行業的覺悟,是否真的喜歡編程。
第二:Java基礎要有,具體的依據每個公司的招聘需求而定,至少,多線程,網路編程要會。第三:Android的主要組件是基礎,一定要會,越熟悉越好。如activity就有很多點可以考察,比如啟動模式,與fragment的交互,橫豎屏切換,Intent和Intent-Filter的使用等。還有Handler原理至少要懂。第四:對於三方庫的使用和熟悉程度第五:實際項目開發經驗,要問他最擅長什麼,然後讓他表述出來。第六:有需要的話應該還是根據實際情況考驗下實際操作能力,最好是可以看出他的敲碼能力和對工具的熟悉程度。最後一點,在以上技術指標滿足的情況下,個人的性格,德行,追求是否是和公司一致,如果是我,太沖的人和沒有自信的人,即使以上條件滿足,我也不一定會要首先必須來一套全英文的筆試題吧,不考別的,就考java基礎,線程,io流,異常。
數據結構與演算法來簡單的,排序,搜索,棧,隊列,二叉樹等比較基礎的。筆試完你就知道應聘者的基礎了。
面試再問應聘者的作品,項目,有無寫博客,有沒有給github開源項目貢獻過代碼,都可以參考。
以個人的經驗可以從以幾個方面參考一、語言表達能力。 語言表達能力很重要。在開發的過程中,需要把問題描述清楚,交流無障礙。二、獨立思考問題 開發過程中,終會遇到問題的,可以考量一下面試者的思考方式。比如 出一些演算法題。三、技術相關的 包括java、Android、演算法。 java: 抽象類、介面、自動裝配、反射、異常、註解、文件讀寫、線性安全、java 虛擬機、代碼規範相關等等。Android:handler的機制、自定義View、進程通信、事件處理、網路處理、內存優化、插件化思想、設計模式、類載入器等等
具體要問怎麼樣的,根據項目來。
演算法:幾大排序選一個、鏈表、二叉樹等等。推薦閱讀:
※pwa的出現會對移動端原生開發造成什麼影響?
※Android系統的後台程序和後台自啟動程序和後台推送到底是個什麼關係?
※如何評價「微軟仍未放棄Win10兼容安卓應用」的新聞?
※如何評價 LG G5 手機及家族系列產品?
※Android 4.0 需要殺進程的軟體嗎?
TAG:Android |