面試一線互聯網公司中高級安卓開發工程師總結,你急需掌握這些必備技能!

序言

今天我們說說中高級安卓開發工程師崗位在大公司應聘中的複習方向:

用人單位對中高級安卓開發工程師方面的要求

安卓已經火了這麼多年了。現在如果還從事安卓開發,基本上都是中高級安卓開發工程師。

那麼用人單位在對中高級安卓開發工程師方面的要求要達到什麼程度呢?

在回答這個問題之前,我先說一下中高級安卓開發工程師的薪資水平吧。至於爲什麼,先說這個。因爲我怕接下來你沒有動力去看,去學習,去提高。所以先給你一點動力。

貝殼,汽車之家,這些中高級安卓開發工程師的薪資範圍是30K-50K,並且有可能達到14薪。美團,百度,京東,滴滴(現在正值全民抵制滴滴的時候,博主也拿到了滴滴的offer,因爲滴滴順風車造成多起治安事件,引起全國人民的憤怒,所以,博主本人決定不去滴滴履任,以後也拒絕再投或給滴滴推薦簡歷。除非滴滴做到如下所有滴滴注冊司機必須按照出租車司機標準審覈,並且滴滴內置一鍵報警功能,同時滴滴客服業務自己經營管理。)的薪資範圍是 18K-35K,可以拿到16薪,並且有年終獎。如果分到比較好的項目組,年終或者季度分紅的獎勵買房買車也是有的(比如華爲榮耀,騰訊王者榮耀和吃雞手遊,季度分紅達到100薪以上。各位吃瓜羣衆還是要有夢想的)。

回到之前的那個問題,用人單位在對中高級安卓開發工程師方面的要求要達到什麼程度呢?

舉例說明:百度,汽車之家有筆試。筆試大多都比較簡單,會有幾個不好回答的。不過筆試其實真的沒有多大關係,主要還是面試

面試官一般會從最簡單的入手(博主本人因爲是自學的,4個月就自學完了Java。所以基礎很差,也最怕問這些。),比如會問object有哪些方法?我回答完後,面試官就會繼續問,那equals方法的比較原理是什麼?hashCode的原理,跟equals的區別。隨即轉到Map中的hashMap的相關原理。

有問listview(recycleview)有哪些方法,然後每一個方法的作用(這裏的方法會根據你前面回答的不斷的深問),參數的作用。問到這,還有公司會問,由於一個項目中需要用到的這2個控件太多了,每次都要寫,會很麻煩,並且要寫很多次,怎麼解決這個問題。

這個問題的解答,各位可以百度一下。一般我的解決方式是自定義一個帶泛型和不指定參數個數的adapter。然後再定義一些方法,這樣就不需要再adapter裏面做太多的操作。具體自定義封裝的會在後面的博文中詳細說明這裏的自定義封裝方式和應用方式。當然鼓勵大家自己發掘,並且給我留言,我好補充完整這個問題。

第二種問題:你經常用到的第三方庫有哪些?然後開始考你對第三方庫的源碼的熟悉程度,熟練使用能力,和擴展能力。

比如博主遇到過面試官問我gson解析的多方面問題。因爲博主項目中有硬件交互,所以服務端接口返回的有對象,有不是對象的,有字段的,有連字段都沒有,直接返回的,有返回是字符串的,有直接返回是二進制(或16進制)的。所以在回答這方面問題的時候,對使用面試官很滿意。但是接下來的一個問題,讓我很難受。面試官是這麼說的:假如後臺給你了一個錯誤的數據類型,我們作爲前端,怎麼做一個容錯處理來保證APP的正常使用(根據接口文檔,後臺就是給錯了,前端也必須能做兼容這種錯誤數據的解析。)。這道題也是很多大公司要面臨的問題,尤其是發展很快的創業公司。在創業中前端和後臺人事變化大,並且開發需求變化也比較大。後臺API和前端的版本沒有做到同步更新會導致這些問題。所以各位想跳槽的,心裏有一個類似這種兼容,容錯問題的準備。(備註:這道題可以用泛型,反射。但是還是有一定的問題。一般問這種問題的,也是公司當前面臨這個問題亟待需要解決的問題。通常問這種問題的面試官,會不僅僅只問一個這種問題,他會前後循序漸進都這種類型的問題,圍繞這個主題問,所以面試時遇到這種沒有準備的,又不知道怎麼做的,可以前後思考一下面試官前後的幾個問題和引導方向,綜合這幾個問題,思考一下解決思路)。

關注私信回覆我【面試】獲取面試以及更多Android進階開發大綱及資料!

第三種:算法。這個從各個大公司的招聘來看,都有這個方向的要求。並且博主在去面試的過程中,真的有問算法方面的問題。這個主要考察一個人的解決問題的能力,思路能力,是否開闊,活躍。

並且這種題有2種考法。第一種是用Java或者安卓代碼能實現的方法去解決。第二,可以不考慮具體用代碼怎麼實現,而是要看你的分析問題,解決問題的能力。當然第二種的情況比較少。

舉個栗子:比如博主在去知乎的時候,面試官出了2個關於這方面的題。第一:比如一張圖片,有很多顏色,那麼在打開這個圖片的時候,這個圖片下邊會有這張圖片上有顏色的色塊。(可參見蘋果手機系統的圖片編輯)。這個題用最原始的方法實現(不要說用python,不要說用現在有了一個這個類palette)。第二個題:一篇新聞,點贊(或評論),2個維度時間和點贊,用什麼樣的函數來做到時間的新鮮度和點讚的數量來決定這篇新聞的排名。(面試官說現在只讓我考慮2個維度,時間和點贊數。從原則上來講,時間約大,點贊越多,排名越靠前。),然後面試官給我畫了一個函數圖線。我一看,像是對數函數的大致走勢,然後就說用對數函數。但是由於很多年沒有在看數學,真的忘了這些。線性函數,對數,指數,凸優化,統計,微積分,真的忘了。不過靠這個的不多。因爲大公司會有專門的算法工程師。這裏只是做一個強調:大公司會很看着一個人的邏輯思維和解題能力。答案是否夠完美,不重要。

第四種:混合開發經驗。這個是目前很火的一種安卓開發工程師的需求。Hybrid開發經驗。由於本人是native和App的混合開發。我去面試的時候,可能對方的HR沒有跟技術人員溝通好,臨時2個一線開發人員面試。所以對方也很緊張,很匆忙。然後從最基礎的面試開始,沒有涉及有深度的問題。我很不舒服,發表了一句,你們面試都這麼基礎嗎?對方回懟:那你認爲什麼是高端問題?我回懟:不是說那個問題高端和low的問題。你們問的問題本身就很不明確,我不知道你想問的知識點是什麼。對方說:我們一般由淺入深。我繼續回懟:那我回答後,爲什麼不繼續問,而是不停的跳轉其他基礎問題。對方在問問題的時候,也暴露出很多知識點的不確定和知識點的範圍不夠廣。舉個例子,問的最確定的一個問題是:說說安卓的4大組件。然後沒有深問其中任何一個組件。又問:activity的啓動。就這幾個字。我很懵,這個要問我activity的啓動模式,還是就是問activity怎麼啓動的。如果是後者,我還需要明確我是否需要回答啓動的調用方法過程(這個過程20多步,我沒有全部記住,我只記得大概)。然後問二維碼你用的什麼。我說這個用zxing。對方很懵。事件分發,問的是:手勢衝突。就這幾個字。基本上,說着說着我也懶得說了。不知道爲什麼,我沒有繼續說下去的慾望了。最後他們說,我們需要的是hybrid開發經驗。我說簡歷,我沒有投你們,是你們給我打的面試要求電話。簡歷,你們的技術大佬肯定看過。你說的hybrid開發經驗,你們偏web。而我偏native。關於網絡請求,你全程就問了我我的網絡請求用的什麼。我說retorfit2+OKHTTP3。你也沒有再深問了。你沒有問過我web方面的,沒有問過我webkit。我也很委屈。然後他們的技術大佬不在,然後就沒有然後了。中午1點趕到面試的。竟然來了一個這。中間還有一個插曲是我說,activity的生命週期你別問嗎?對方也很尷尬。我說沒有一個深入,我該怎麼回答這個問題呢?是回答6個生命週期,還是12個生命週期,還是更多?我回答6個沒什麼意義,回答12個我不確定你們希望是否認可,是否知道activity的其他生命週期及其作用。

扯了一會淡,迴歸正題。目前互聯網大公司大多還是偏純應用,偏web方面的,所以,hybrid開發經驗在目前還是比較好找工作的。沒有這個方面知識的,要開始狂補了。

總結:目前想換一個18K以上,尤其是想拿到25K以上的;想從一個初級安卓開發工程師進階到中高級安卓開發的。這幾個方面的知識點要開始狂補了:

第一:Java基礎,要有深度,原理要知道。

第二:源碼是否經常看,是否能自己封裝,擴展一些第三方類庫。比如常用的listview,recycleview,gson,okhttp,圖片加載框架,內存優化,內存溢出,傳感器(sensormanager),兼容性(分兩個方面,第一UI適配(今日頭條適配方案),第二性能適配(so文件))。

(備註:以上2個方面在下文中有具體方向說明)

第三:算法,邏輯思維能力。這個可以大公司都會問一些這方面的問題。多想想爲什麼。數據結構,幾個排序要會寫。還有就是多看看常用APP他們的有些算法是怎麼做的,琢磨琢磨

第四:目前非常火的就是hybrid混合開發(偏前端),這個要開始寫一個項目了。簡單的都行。從Github上下載一個項目,自己再敲一遍。

第五:很重要。就是據我所知,很多應用都準備加入小視頻的功能。很多大公司的APP也是。所以,視頻音頻,這個必須會。GitHub上很多這方面的源碼,可以下載自己看看,不說自己敲一遍,至少要知道用什麼,怎麼做。

基礎知識 – 四大組件(生命週期,使用場景,如何啓動)

java基礎 – 數據結構,線程,mvc/MVP/MVVM框架

通信 – 網絡連接(HttpClient,HttpUrlConnetion),Socket

數據持久化 – SQLite,SharedPreferences,ContentProvider

性能優化 – 佈局優化,內存優化,電量優化

安全 – 數據加密,代碼混淆,WebView/Js調用,https

UI– 動畫,view自定義,adapter的泛型和不指定參數數量的優化,滑動控件的深度優化,圖表

其他 – JNI,AIDL,Handler,Intent等

開源框架 – OKHTTP,Gilde,RxJava,Gson等

說了這麼多,那應聘中高級安卓開發工程師,要做哪些面試準備呢?

在這裏,博主也準備好了幾個方面的知識點

關注私信回覆我【面試】獲取面試以及更多Android進階開發大綱及資料!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章