Android程序員終極面試總結+經驗(文末有終極大招) 一、給大家的建議 二、面試的知識點 三、春招實習面試面經(面經都是先後記的,不分先後) 四、秋招面試面經 五、面試經驗 六、終極大招

2019也過了一大半,作爲一個已經“混跡多年”的本科生,十分感謝Android開發交流羣的大牛給我帶來的幫助。從2018年2月開始進行春招的準備,拿了騰訊、阿里、華爲、YY等公司的實習生offer,到暑假入職騰訊成爲一名實習生,再到秋招經歷了幾家公司,拿到了阿里、騰訊sp和華爲sp offer,自己確實也是感慨萬千。雖然前路漫漫,但及時總結自己的經歷,讓自己成長是我覺得在我們的學習路上很重要的一點。

(注:本片文章的所有內容以及更多內容都可以在文末免費獲取)

一、給大家的建議

在大家的學習、招聘的過程中,我覺得第一點也是最重要的,就是心態要放好,不管你處在任何一個階段,都要有一個良好的心態,特別是在面試這個最難、最緊張的階段,不要懷疑自己,保持自信去迎接每一次面試,從面試中去學習就可以了。特別是剛開始面試,難免會有很多不會的東西,用查漏補缺的心態去面對。

每個人都會有失落和低潮的時候,迷茫、緊張都是我們面試過程中很正常的心態,希望大家用平常心去面對。給大家一些面經和資料整理都是能夠幫助到大家學習的,但資料也有解決不了的問題,爲此我也和一些同事做了一些行動,我們聯合騰訊組建了一個Android開發交流羣,歡迎大家進羣交流~

二、面試的知識點

任何一個方向的校招,知識點都來自於兩個方面:基礎知識+專業方向知識

Android方向主要就是

(1)計算機基礎知識:數據結構、計算機網絡和操作系統;

(2)Android方向的知識:從基礎到開源框架到更深入的一些簡單的系統機制。

這些方向我之前也總結過,放在了百度網盤上,我自己結合我的經驗做了一個非常詳細的總結,希望大家喜歡~

三、春招實習面試面經(面經都是先後記的,不分先後)

(1)YY

歡聚時代是內推的,不過感覺內推不內推沒有任何區別了,反正沒有筆試還不錯,那天一早就到了YY的大廈下面,感覺是個挺豪華的地方,內部裝潢比較的好,給人感覺很好。但由於是第一次面試還是有點緊張的,門口交了簡歷就在那等,沒一會就進去一面了。

一面:是個挺好挺年輕的面試官,在一個感覺很小的房間裏,不過光線很好,進去就讓我坐下了。

(1)介紹一下java內存模型吧,正好有紙筆,我就畫了圖一個一個介紹,他也沒有催促我,就讓我慢慢說,我從內存模型又扯到GC上面,然後囉裏囉嗦的說了不少JVM的內容,他說你這塊感覺挺了解的,就過了;

(2)ArrayList和LinkedList的區別,這個也很簡單,從實現上說一說,他說那java我就不問了,就開始問項目;

(3)問我項目中一個功能怎麼實現的,主要從自定義View的角度問我,我就說了一下動畫的具體算法,然後給他演示了一下App,他又問我維護上怎麼做的,這個我確實不是特別瞭解,就說了說自己的看法;

(4)之後開始狂問開源框架知識,Retrofit,EventBus這些簡歷裏面寫的框架,他就問我怎麼它們是實現的,源碼看過沒有之類的,之前準備了一些所以答得自己感覺還不錯,畢竟準備了,網上的博客分析的也很多,這裏講了蠻長時間,還說到了內存泄漏的出現和怎麼解決。

(5)最後問了設計模式,我就說了一個責任鏈模式,說到了觸摸傳遞機制,和他說了說,他好像覺得還不錯。然後讓我問問題,我就隨便問了一點,什麼適配怎麼做的,最後問他表現怎麼樣,他說覺得你不錯,我當時就很開心,覺得一面應該過了。

二面:二面和一面之間隔了很短的時間,很快就二面了,當是還是很緊張,進去簡單自我介紹一下就開始了

(1)讓我介紹項目,這裏我覺得一旦讓你介紹你簡歷上的項目,你需要保證一點,誠實。我很實在地說第三個第四個項目都是自己隨便做的,效果肯定不好,他雖然很嚴肅,但表示能夠理解,說學生確實也能力有限。我介紹了App和實驗室的項目;

(2)和一面面試官一樣,開始問框架實現,我也巴拉巴拉說了一堆,這裏確實是準備過的,所以他好像比較滿意;

(3)問我做項目時遇到的困難,這個我沒有準備,不過我就從簡單的滑動衝突開始說,然後又說網絡訪問的解決,他一直就是聽,也沒有打斷我,我也就厚着臉皮一直說啊說;

(4)最後他說問點基礎,就問了Java同步機制,我就從鎖的實現原理開始說,剛說到“膨脹機制”,他就說停,說了一句看來你很瞭解啊,那我就不問了,你去找hr吧。

就這樣糊里糊塗的結束了二面,覺得有紙筆還是很重要的,並且自己對於熟悉的領域一定要提前想好畫圖怎麼描述,這樣你講的清晰面試官也會比較的滿意,然後看到了評分覺得還不錯,就去等hr了。

hr面:喫完飯就在那等,等了一個多小時終於到我了,hr我感覺不是很願意聊吧,有點冷漠,問了一些常見的問題,什麼準備在哪裏發展,實習工資要求等等,就讓我回去等通知了。

等了一個多星期,終於在下一週的週五來了offer電話,自己還在考慮,因爲是第一個offer,覺得需要分享出來也攢攢人品,繼續加油吧!

(2)騰訊

騰訊的內推簡歷沒有被挑起來,當是還挺沮喪的,不過還有正式流程。騰訊面試都是現場,總體給人感覺不錯,因爲都是去酒店面試,整體感覺很平易近人,面試官也沒有什麼架子,都很樂於交流。所以面試還是看面試官,這句話是真的。

一面

一面就是去希爾頓,沒等一會就開始面試了,主要提問如下:

自我介紹;

問了jvm內存模型,我說了蠻多的,面試官可能覺得我java這塊不錯,就沒繼續問別的了;

說一說項目,感覺面試官不感興趣;

說一說EventBus的實現(這個經常被問),然後就扯到自己怎麼實現了一個類似這個的開源庫,面試官沒怎麼提問;

寫一個冒泡排序;

說一說On的排序,這個當時蒙了,沒答出來,其實不就是hash嘛;

寫一個二叉樹中兩個節點的最近公共父節點,這個題我做過,但當時腦子一片空白,只想到最弱智的方法,算法題讓我一定手寫,所以兩個算法題手寫了好久,過了很久的感覺。

有什麼問題想問。

一面讓我當時就感覺騰訊真的是注重基礎,基本上不問任何應用的問題,就是算法、基礎,但由於算法題寫的太差,雖然寫出來但方法比較弱智,所以覺得估計是掛了,但運氣還不錯,僥倖進入了第二輪。

二面

二面又去了喜來登面試,當是還是很緊張的。主要問題如下:

自我介紹;

介紹一下項目,你覺得最好的項目是哪一個?

做的過程中遇到什麼困難沒有?怎麼解決的;

爲什麼學習安卓?對這個方向怎麼看;

你簡歷說你看過部分框架源碼,看過什麼部分?

能說說安卓應用啓動過程嗎?

瞭解機器學習嗎?瞭解哪些?(這個當時確實不會,如實說了,我覺得不懂的話還是不要逞強,面試官後來也說他這個也就是問一下,看我瞭解不瞭解而已)

你對設計模式瞭解嗎?說說常見的設計模式,你項目中的MVP架構有什麼優缺點呢?它是什麼設計模式?

問問基礎吧,你瞭解虛擬內存嗎?然後讓我畫圖表示虛擬內存是如何實現的,就是頁表、轉換過程等,這個考的還是很細;

最後做了一道智力題,不難。

二面結束之後很久狀態都沒變,當是周圍同學都變了,第二天中午狀態才變化,最後很開心去面了hr。

hr面

hr面沒有問什麼刁鑽的,都是hr面的老套路,自己也記不太清了。

(3)阿里

阿里的面試是我最早開始的,全程電話面,感覺也不錯,二面三面比較水,最後放棄的原因還是因爲要去北京,太遠了,而且問了很多過來人,阿里轉正率確實比較低,個人還是比較看重這個,所以最後拒絕了,因爲面的比較久遠,很多內容記不得了,想起來再添上。

一面

一面突然打來的電話,當是自己在圖書館,是第一次面試,非常緊張,內容記得還是比較清晰的,如下:

自我介紹一下;

自己主要做了什麼項目?介紹一下;

項目最出彩的地方是什麼,用了什麼方法解決的;

EventBus怎麼實現的?

你用了Retrofit,看過它的源碼嗎?Okhttp呢?

常見的設計模式有哪些?介紹一個

有什麼問題要問我?

一面問的比較深入,自己也比較緊張,但是很多問題都答得斷斷續續的,面試官讓我不要急,慢慢說,最後說你通過了,後面會有人再通知你,也算是爲我後面的面試開了一個好頭。

二面

二面就一個字,水。全程問項目,項目做了哪些,幹嘛的,怎麼用的,12分鐘就結束了。

三面

三面是交叉面,也沒問什麼問題,基礎知識問的如下:

EventBus怎麼實現的?你做的那個有什麼問題,它有什麼缺點和優點?

MVP架構有什麼作用?介紹一下;

爲什麼TCP要三次握手?兩次可以嗎?

剩下的都是一些閒聊,問我看什麼書,爲什麼學習安卓之類的。

全程大概30分鐘,面試官那邊信號不好,但可能是交叉面的緣故,問的不難。

hr面

都說阿里hr很刁鑽,我這個hr面全程10分鐘,問了幾個很正常的問題,家在哪,未來什麼打算之類的,有什麼愛好,然後就結束了。

(4)華爲

華爲面試就一個感覺,水,而且是特別水。現場面,和CVTE一個酒店,全程沒有問任何算法、基礎等,全是聊了聊項目就結束,總共就兩次面試,華爲可能是面試最看臉的一個公司了吧。

一面

由於太水,我腦中都記不得他問了什麼內容了,記得的就這幾個,:

自我介紹;

做過什麼項目,爲什麼要做這個?

做項目遇到什麼困難,怎麼解決的。

華爲最奇怪的就是你的面試官不是你方向的,這個是非常非常奇怪的一點,所以全程就只問項目。

二面

二面一開始問了一些項目,後面就是成績普查,這個多少分,那個多少分,簡單記錄一下:

自我介紹;

說說項目吧;

xxx是怎麼實現的,說一說;

你成績怎麼樣?排名多少?

拿過獎學金嗎?有多少人拿?爲什麼10%只有三等獎學金?(這個當時真的是蒙了,我們學校就這樣啊)

數據結構多少分,計網多少分,操作系統多少分,數學多少分。數學說滿分他竟然笑了一下,說大學還可以有滿分啊,很尷尬哈哈。

問完成績就讓我回去了,最後竟然還過了,感覺華爲真的是看臉啊。

(5)CVTE

在海投策略下投了CVTE,因爲有了YY的offer,心態上還算放鬆,抱着試試看的態度開始了筆試面試,週六一面二面,週日終面,剛剛收到終面通過的通知,記錄一下經歷。

1、筆試

筆試挺簡單的,但題目確實不記得什麼了,編程題兩道也比較簡單。這裏吐槽一下,不能調試的編程題,很好奇題目通過率有多少,連包都要手打,覺得設計這個筆試系統的人應該不是程序員吧……

2、面試

一面:一面是兩個面試官,給我的感覺是挺難的,起碼和我面過的YY和阿里相比,問的內容深入程度都很高,但是兩個面試官左邊的很明顯不懂android,我猜是java後臺方向的,而右邊的很明顯是android方向的,問題一個接一個。

(1)說說自己最滿意的項目,我就說和同學做的指南針app,他們說你畫一下架構圖吧,我說這app總共沒幾個頁面沒什麼好畫的,他們好像有點不爽,這也是爲什麼我覺得一面不太好的緣故。然後就跳過了,說那你講講項目中的難點吧,我就講了動畫的實現,左邊的那個很明顯聽不懂,不時地望着右邊的面試官,讓我感覺不是很好…沒講一會他們就說可以了。

(2)讓我講講項目中用的框架,我就說了Retrofit和Eventbus,和以往面試都很像的是果然都開始問實現的過程,問題一般都是xxx是怎麼實現的請你說說看,這個我準備的比較多,就一直說說說,左邊那個面試官也就是聽吧…右邊面試官不時記錄着一些什麼,後來我偷看到了,是各項能力的評分。

(3)我說了兩個框架他們都沒有提問,然後突然問我RxJava用過嗎,我說用過,他說flatMap和map有什麼區別,我當時就覺得這個問題不好說,因爲是個理解性的問題,我自己當是也不能說完全理解了,就說應該是一對一和一對多的關係,然後說我也不是很明白。他緊接着就問,你舉個實際的例子吧,我就說我真的舉不出來,因爲確實用的比較少,然後他說那你覺得什麼例子可以用呢?我說應該是一個學生多個課程的時候,他就說你對這個的理解有點問題,當是就覺得GG了哈哈。

(4)問了我做項目時候遇到的困難,我就說了滑動衝突上的解決,然後就問我常見的設計模式有哪些,讓我舉個例子,我就說了單例模式,說讓我手寫一個線程安全的單例模式,我就說DCL是有問題的所以不太好,要用靜態內部類,這裏我當時覺得左邊的面試官很奇怪,他問我DCL是什麼,我就說二次檢查鎖定,他就說是鎖兩次?我說不是,是爲了防止每次都要加鎖的一種優化,他就感覺完全沒有聽過一樣,硬要我寫給他看,寫完了之後還說你這樣會死鎖吧…我說不會啊,不是加兩次鎖,是在初始化的時候才加鎖,他顯得不能理解一樣,讓我有點奇怪哈哈。

(5)之後就完全問java基礎知識,鎖有哪些,有哪些作用和實現,有什麼優勢,具體來說就是synchronized和lock的區別,我又說到synchronized怎麼實現的(二面問了同樣的問題);然後問我volatile有什麼作用,我就從兩個語義上來說,還問了幾個我記不太清了,想起來了就補充吧。

(6)然後就說了一道題讓我手寫,String表示的數字轉成int,不能用系統api,這個題我記得leetcode上有,應該是很easy的題,很快就寫完了,結果寫完了他一看,你考慮正負號了嗎?我說我忘了,當是覺得gg了,這麼簡單的題連這個都忘了,瞬間覺得可以回去了。然後我就說我是第一次現場寫算法,有點緊張,沒有考慮周全,他們倆直接笑了,說第一次啊,那你出去等二面吧,我說完謝謝就出來了,一面就這樣結束了。

二面:二面等了一個多小時終於到我,是個中年大叔,我估計挺有資歷的,面的還不錯,挺愉快的。

(1)讓我自我介紹,我就簡單地說了說學校專業年級,做過什麼項目

(2)問我指南針app做的過程中的實現,我就說了動畫的實現,畫了圖解釋了很多,他也就聽一聽,感覺不怎麼提問

(3)問了我Retrofit怎麼實現的,我說動態代理,然後解釋了動態代理的實現方式,他也沒有提什麼問,後來我覺得應該他不是android方向的吧,只是技術總監之類的。

(4)讓我介紹我的實驗室項目會議系統,這是第一個問我業務的面試官…我就說了主要的功能,我負責的部分等等,他問我信息安全怎麼保證的,我就實話實說信息安全沒怎麼做,用的json,加密由於能力有限做不了,他就笑了,我說學生項目考慮的比較少希望能理解。

(5)最後問我java裏面鎖的實現,我就從鎖的膨脹來說,偏向鎖、輕量級和重量級鎖,然後介紹了一下使用用的情況,他也沒提問,讓我說完就結束了聊天的部分

(6)最後還是老樣子,算法題,三個String敏感詞同出現的字母和次數,這個題比較簡單,直接用數組簡單哈希就做出來了,解釋就解釋了半天…他似乎一直不能理解爲什麼x-('a'-0)就能哈希到對應的位置上,解釋了半天才聽明白,然後就結束了二面。

當晚就出了結果,第二天(週日)去參加了hr面。

hr面(終面):三個人一起面,一直都是聊人生,聊成長經歷,沒什麼好說的,不過我覺得hr面還是應該自信一些,不知道我旁邊的同學來自哪裏,不過我覺得應該自信一些吧,該說就說不要擔心太多。

3、offer通知

剛剛查到了結果,終面通過,應該不久就會聯繫,cvte完全是抱着參加玩玩的心態去的,也知道了知識上的一些缺漏,也算是有所收穫吧。最重要的一點就是心態,在求職路上我們會經歷很多失敗,一個良好的心態是很重要的,好好準備不後悔就好,加油吧~

四、秋招面試面經

(1)阿里

秋招面試只面了阿里和華爲,先記錄一下阿里吧,只不過比較久遠,有些記不太清

一面:那時候還在實習,所以問的東西也不多

(1)在實習中做了什麼工作

(2)對於啓動優化的思路,你是怎麼做的?爲什麼使用aop來進行啓動時間的計算,有什麼問題?和android自帶的工具呢?(都是與我的簡歷相關的)

(3)對於壓縮算法瞭解嗎

(4)eventbus瞭解嗎?具體實現說說看?還問了eventbus3.0之後的優化思路,沒答上來

(5)對於網絡框架的瞭解

反正一面答的不好,可能由於沒複習的緣故,很多點沒答好,不過最後還是給過了

二面:應該是主管,問的問題不多

(1)在實習中做了什麼工作,學到了什麼

(2)關於簡歷裏面說的優化,怎麼做的,爲什麼這麼做

(3)網絡框架了解嗎?mars有什麼特殊的地方,這個當時正好看到了,說的還比較詳細,關於xlog的優化等等

(4)對於未來工作的打算和想法

三面:最水的一面,全程十來分鐘

(1)自己爲什麼做安卓

(2)對於未來的工作中的一些看法

(3)如果工作中遇到問題如何解決

五、面試經驗

從我的經驗來說,面試春招和秋招差距不算太大,只不過秋招大部分面試官可能更感興趣的是你的實習經歷(從我和同學的經歷來看),所以對於明年的春招,學弟學妹們一定要抓緊,一個好的實習可以給你秋招帶來很大的好處,這點非常重要。

另外關於簡歷的重要性,很多人都忽視了,在我看來面試官有7成問題都來自於你的簡歷,所以認真的寫好簡歷並且掌握簡歷的內容是非常重要的,不過在我看來簡歷的門道太多,一時半會說不太清楚,後面整理好了再進行分享。

面試我覺得就是準備+簡歷+表達+運氣的綜合,所以在面試過程中有很多可以進行優化和學習的點,後面等有空了就及時總結出來分享給大家!就在終極大招中~

六、終極大招

本篇文章的所有內容和額外知識點總結下載地址就在我們的Android開發交流羣(820198451)中,趕緊點贊+關注我,包括自己打出來的超詳細知識點整理~

——————分割線——————
最近剛留意到簡書點贊可以有好幾種贊,長按點贊按鈕就會有選項,大家點讚的時候,麻煩點個超讚,讓我感受下這個功能……

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