{Android}參加阿里完面試後:一面+二面+三面+HR四面,我的覆盤經驗總結!

Android架構木木發表於2019-05-07

阿里中介軟體團隊一面:

第一步:先自我介紹

首先要介紹自己的專案經驗和個人的擅長點,因為面試官主要考察你的表達能力和語言精簡能力。

簡歷的編寫其實這裡可能需要注意幾點;

1.標題的直接按照姓名-幾年工作經驗-應聘崗位格式來填寫。

例如 黃銘——四年工作經驗——Android開發高階工程師。因為要知道,HR篩選簡歷是非常快的,你要在第一時間就讓他看到他想要看的資訊。HR一開始最關心的就是工作年限和崗位,你直接在標題欄用最大的字型寫出來會比很多人介紹了半天專案最後寫年限要好得多。

2.個人資訊寫最前面。

個人資訊欄其實不用寫很多東西,最主要的就是姓名、聯絡方式、性別、如果學校是名校那麼就寫上,如果本科學的是計算機專業也可以在這裡寫上,如果都不是就最好放到最後去寫,因為最前面的東西永遠是最先看到的內容,也是你最有競爭力和賣弄的資本。

3.有技術部落格和github開源專案的一定寫在最前面。

這是活生生的例子。我在面試華為的時候面試官就特意去看了我的csdn上的部落格。然後說寫的還是不錯的,給他留下了一個不錯的印象,所以這點是絕對的加分項最好就是寫在最前面。 刷面試題這塊其實一開始我並沒有刷特別多,也就是簡單的看了下一些基礎性的知識點。因為我始終覺得看的越多越記不住,而且最重要的是你根本不知道面試官會怎麼問,與其盲目的看知識點倒不如先出去找幾家小公司面試找找感覺,知道面試官會針對哪些地方詢問,再回來針對性的看。

第二步:專案中做了什麼,難點在哪裡?

主要是想了解你本人蔘與過技術難度最大專案的難點,技術難點在什麼地方,你是如何去解決的,考察專案經驗(技術難度)。

第三步:開始切入技術面試正題:

1.Activity的啟動模式、standard、singleTop、singleTask、singleInstance的區別。

這裡需要重點注意的是singleTask啟動時候的回撥onNewIntent以及不同棧之間的Activity如何跳轉。我在面試騰訊的時候就被問到過這個問題。

2.Service的啟動模式和生命週期

會延伸到Binder和IntentService,這裡最好去看下IntentService的原理和原始碼。看了原始碼之後還會延伸到HandThread的問題。推薦我自己的部落格文章,Service 、IntentService

3.Android訊息機制Handler。

這是常問也是必問的問題,除了要知道內部原理和原始碼以外還要清楚造成記憶體洩漏的原因和處理方式。從原始碼的角度來談談面試常客Handler的內部原理

4.事件分發原理。

這裡主要會問事件分發的流程以及進行攔截時候onInterceptTouchEvent返回true時剩下的MOVE與UP如何走,onTouch、onTouchEvent、onClick的先後順序關係。談一談Android中的事件分發

5.AsyncTask內部實現原理。

這個在平安人壽以及投哪兒網二面領導問道過。主要是AsyncTask內部如何實現的,內部處理多工是序列還是並行處理,為什麼是序列處理,如果讓其變成並行處理等。從原始碼角度談談AsyncTask的使用及其原理

6.LruCache演算法如何實現,內部為什麼要用LinkHashMap來實現。 談談LruCache演算法的底層實現原理及其內部原始碼

7.程式之間的通訊方式,IPC原理。 這裡會延伸到AIDL和Binder。

8.程式之間的優先順序。 前臺程式、可見程式、後臺程式、不可見程式與空程式。騰訊面的時候還特意問了我程式的保活措施。

9.圖片的壓縮處理。

這裡會問四種圖片格式的區別(ARGB888、RGB565、RGB444、Alpha_8),以及問給出一張以上格式的圖片如何計算圖片所佔的記憶體大小。

10.Serializable與Parcable的區別。 在什麼情況下需要用到序列化和反序列化,Serializable中為什麼要設定UID,設定UID與不設定UID值的區別和影響。

11.動畫總結。 重點是屬性動畫內部實現原理,差值器和估值器的使用。

12.Android中斷點續傳的原理、熱更新的原理。 珍愛網面試我的時候問了這個,當時沒了解過,很遺憾的沒回答出來。

13.Android的效能優化。 佈局優化(include、merge和viewstub標籤的使用)、繪製優化(不要在onDraw方法裡面建立新的物件)、記憶體洩漏優化,檢測記憶體的方式和記憶體洩露造成的原因等。

14.網路請求原理。 http與https的區別、三次握手和四次揮手,為什麼握手一定要三次?為什麼揮手一定要四次?http的響應碼。http1與http2的區別等。

15.開源框架的使用和原理。 OkHttp內部實現、glide的內部原理、EventBus原始碼和RxJava的使用過程注意事項等。

我印象中差不多就是問這些東西,其實都是很基礎的Android知識,只是問的比較深入,如果不明白內部的實現原理很多問題其實是回答不上來的。所以還是要多看原始碼才能瞭解本質問題。

最後問的就是演算法.這個演算法基本大公司都會問。原因很簡單,一個公司覺得你連演算法這麼難的都會了,那麼其他的知識即便現在不會回去看下學習下很快就能掌握。並且我聽聞有這麼一種傳統,在國外類似於Google、Facebook這種公司,一般面試問的就全是演算法,而且是很難的演算法。只要你演算法過關了,那麼不管你做沒做過Android開發,你都可以去Android部門工作。

第四步: 你是想做業務還是研究?

主要是想考察你對技術是否有深入的研究興趣,建議回答喜歡研究,畢竟招聘的是技術崗位。

阿里二面:你有什麼要問我的嗎?

這是我們大部分面試者都會遇到或者都會被問到的問題。如果你回答 “ 沒有 ”,這往往被一些面試官理解為:你對應聘公司、工作崗位沒有太大的興趣。可能會讓面試官產生誤解,而影響面試評判。 如果你回答 “ 有 ”,一時間又容易腦子短路,可能會不知道該問以下哪個問題:

問企業發展?怕面試官覺得這個人好虛,有點不切實際

問薪資待遇、假期福利?又怕面試官覺得這個人沒有事業心,入職了也不會呆太久的,整天就想著休息…… 那怎麼辦?

首先,你必須提問

面試往往是互相瞭解過後,面試者處於被動狀態,這個時候面試官將問題丟擲,你必須把握住主動權,讓面試官知道你是認真對待這次面試,而不是敷衍的流水線面試。 那麼,問什麼呢? 不管面試官是HR、部門領導,還是老闆,以下問題都可以幫你輕鬆度過難關,而且你還能從面試官的回答中得到很多意外收穫:

你在公司的一天是如何度過的?

這個簡單的問題可以讓對方滔滔不絕的講述他一天的工作,面試官會說一些比較自豪和有意義的事情,同時也會有一些瑣碎的事情。在聽的過程中,你也能感受到未來工作中是否有你的興趣點,以及最無聊的那個部分你是不是可以接受。同時也可以從中推估到你的未來發展,因為升職後也會有一天成為他。我去騰訊面試的時候就問了這個問題,然後他說了下他一天干的活,我才知道騰訊的加班是有多嚴重,我曾跟他說我每週一二四加班,本以為他會說你加班真多啊,結果沒想到他來一句說你加班也不多呀,我們很多都是十二點以後走的。我當時就懵逼。這樣比你直接問他公司加班多嗎要好很多。

能否給我簡單介紹下貴公司業務與戰略的未來發展?

在實際運用時,要取決於公司的業務範圍。聽聽面試官的計劃,這可顯出你關注公司整體和未來的發展。同時也可以從他們的談論中瞭解到不同公司在同一個行業的情況,對你準備其他公司的面試也會有所幫助。面試一些小公司的時候我就喜歡去問這個問題,通過這個問題我就大概能清楚知道這些公司適合不適合我還有就是可以知道老闆到底是喜歡扯淡還是真正的一個實幹家。

貴公司最讓你自豪的企業文化是什麼?

注意!一般情況下,這個問題比較適合用在面試大公司的職位時,當然現在有不少創業公司也是非常看重企業文化的。通過這個問題,你可以從面試官口中瞭解到公司的工作氛圍和一些非硬體的環境情況,同時也可以在面試官表達的過程中去留意他的肢體、感情的表達。如果從身體語言上都表達出認同公司的文化,那說明該公司在企業文化建設方面做得不錯。同時你也可以自我假設一下是否可以融入這種氛圍。

團隊、公司現在面臨的最大挑戰是什麼?

這個問題比較安全,也是一個可以引起面試官興趣的話題。一來這個問題不會暴露你對公司的不瞭解,二來也能讓你對未來工作的挑戰或困難有一個提前的預期。除此之外 ,這類問題用的好,會很容易增加印象分。特別當面試官是外國或海歸人士時,比較直接一點絕對不是壞事兒!

對於未來加入這個團隊,你對我的期望是什麼?

如果面試官將會是你的直屬上司,那麼這個問題會讓你的利益相關者一開始就有一個感覺,你是一個非常在乎他或者團隊,並且願意傾聽的候選人。這樣對於快速的培養起一段專業的合作關係是很有幫助的,同時也可以更理解他對你的期望值。也可以初步判斷出他是一個成果導向,還是過程導向的上司;是一個由上至下思考,還是一個下至上思考的領導。如果把握準確會更會令面試官覺得:你是一個會做好準備並且有同理心的人,這絕對是加分項。

我期望參與團隊合作達成共同目標,您可以給我舉一個公司中團隊合作的例項嗎?

這一問題也是要根據你面試的企業情況來定奪,如果面試的是大企業,同時又是外企,那麼合作對於他們來說是必須的,因為很多事情你一個人是不可能完成,所以自然會非常看重你對合作的態度。通過這個問題,可以讓面試官知道你有強烈的合作傾向。同時從回答中,你也可以感受到這個公司團隊合作的情況如何。

通過剛才的面試交流,您覺得我還有那些不足?

這幾乎是我面試都會回問的問題。通過這個問題,我就能夠知道自己在他們眼裡的不足之處,回去可以做好的修改。例如,我在面珍愛網的時候,他們給我的評價是基礎還行,但是深度不夠並且對自己未來的職業規劃不清晰。因為我回答了我想做大前端,然後轉管理。他們就覺得你一下想做技術一下又想做管理,這目標不清晰。所以後來我就直接說自己想做大前端,就沒有說再後來轉管理的事情了。

阿里技術三面:

三面不是面試,而是筆試,耗時三個小時,考的是Android核心的基礎。

大概說一下就是有幾個考點:

1.Activity的生命週期。

2.顯式Intent和隱式Intent的區別?

3.Android的系統結構。

4.講講Android開發中的效能優化。

5.給了一個Logcat列印的錯誤資訊,解釋錯誤是什麼原因?

阿里HR面:

聊人生談理想,主要還是考察你對工作是否持積極的態度,以及你是否穩定,自信發揮就可以了。

面試耗時將近30分鐘。

相關文章