一年Android工作經(jīng)驗,阿里 百度 網(wǎng)易 美團 小米 快手面經(jīng)

前言

人生困難重重,在漫長而艱辛的前行路上,堅持不懈、腳踏實地的“低頭拉車”固然重要。但認清形勢、找準目標的“抬頭看路”也很關(guān)鍵,甚至決定著你能否達到成功彼岸。只尋求遠方的夢想,而不付出當下的努力,那是迷夢;只知道埋頭苦干,而不認清方向,那是徒勞。

先簡單說說我最近的面試經(jīng)歷吧。面試的公司很多,大部分最后都能得到令人滿意的結(jié)果,我將這些體會記錄下來,面了這么多公司,如果不留下什么,那豈不是太浪費了。對于我來說,這也是一次自我檢查,在這次面試中總結(jié)經(jīng)驗,認清自己,同時希望這些對即將換工作或者打算看看其他機會的你有一些幫助。

以下的部分有具體的面試經(jīng)歷,也有自己的一些總結(jié)面試必備技能和自己的一些感想。

為何離開華為

來華為的主要原因是:增長自己的見識,很好的發(fā)展自己。很好的發(fā)展自己,就需要一個平臺,通常這個平臺是大公司才能提供,大公司會有一套完整的機制來培養(yǎng)你,讓你有更多的選擇,可以選擇自己喜歡做的事情。所以我建議剛畢業(yè)的同學,最好還是選擇大公司,哪怕以后要跳槽,大公司也是非常好的跳板。在華為的這一年,最大的收獲并不是技術(shù)上的成長,而是自己的見識和思考問題的能力。雖然有很多人不滿華為,公司大了,肯定不可避免會出現(xiàn)很多問題,但是總體來說華為還是一個非常了不起的企業(yè)。

離開華為的主要原因是:我的職業(yè)規(guī)劃與華為給我的規(guī)劃不相符,還有就是流程化的東西太繁瑣,自己有一些不適應,所以選擇離開了華為。非常感謝我高總(直接領(lǐng)導)和邦邦(師傅),在華為的這一年中給予我非常多的幫助,在我跟領(lǐng)導溝通離開的想法時,領(lǐng)導開誠布公的跟我聊了很多,最終我還是下定決定要離開華為,領(lǐng)導建議我先去面試一些公司,等找到合適的再走,裸辭的話社保和心態(tài)上都會有一些問題,這樣的領(lǐng)導真是沒話說了,在華為很多領(lǐng)導都是不放人的,很多都把員工的下一家拖黃了才放人。在這一年獲得的成績:

1. 北京研究所第一屆Hackathon 二等獎
2. 轉(zhuǎn)正績效是A
3. 年終績效 B+,獲得明日之星

準備

其實我很早就開始準備了,準確來說也不算準備,只是一直在總結(jié)Android相關(guān)方面的知識,因為在華為雖然工作有時候比較多,但是還是有大把時間可以自己學習一些感興趣的方向。從過完年回來,我就有計劃的復習和總結(jié)了一些知識。

  • 看過的書籍,這里并不是泛泛的讀一遍,而是詳細理解了大多數(shù)內(nèi)容,通俗一點就是可以用自己的話將相應的知識解讀出來?!禔ndroid開發(fā)藝術(shù)探索》(這本書真心不錯,我反復讀了4、5遍)、《Android群英傳》(比較接近開發(fā)使用,因為做過一些應用開發(fā),讀起來還是比較簡單的,讀了2遍)、《深入理解Java虛擬機》(也是一部神作,可以讓你清晰的理解JVM,讀了2遍,理解的不是很透徹)、《劍指offer》(感覺面試中碰到的算法,80%都能找到相應的題目,保證所有的題都可以手寫出來就行)。4個月精讀了以上書籍,還有其他的都是簡單了解,這里就不列舉了,讀完這些書,應該可以讓你上一個層次吧(媽媽再也不用擔心我面試啦...)。
  • 刷題,主要是LeetCode(大概刷了300道題左右,每天3-6道,堅持下來,需要多復習,因為很多題過一段時間會忘記),還有看過一些牛課網(wǎng)。
  • 看別人的面試經(jīng)驗,主要在網(wǎng)上,這里我列舉兩個比較好的。
  • Android客戶端面試題集錦
  • Android阿里面試題錦集

投遞簡歷

一份好的簡歷是非常有必要的,需要突出你的重點和閃光點,具體怎么寫簡歷可以參考

CodeKK說簡歷

有了一份好簡歷,接下來就是投遞簡歷,一般是:拉鉤+BOSS直聘+內(nèi)推,從我這次面試機會來看,三者比例是2:2:1,也可能我工作經(jīng)驗還不到一年,內(nèi)推滴滴、阿里和騰訊直接就把我的簡歷刷掉了,但是內(nèi)推也是具體到某個部門,如果被刷掉也不要灰心,現(xiàn)在大公司基本上各個部門都有自己的hr,可以在拉頭和BOSS上多投遞一些,萬一其他部門看中你呢?

面試經(jīng)過

這里我僅僅記錄一些問過的題目(能記住的),答案我就不寫出來,基本上都可以在網(wǎng)上找到相應的答案。

作業(yè)盒子

時間有點久,很多問題記得不太清,大概有以下內(nèi)容。

一面

 1. Android一些優(yōu)化方案
 2. 什么是過渡繪制,如何防止過渡繪制
 2. 事件分發(fā)機制
 3. ListView的優(yōu)化
 4. Binder機制
 5. 在多進程中,Application會啟動幾次
 6. 單例模式,雙鎖原理,volatile原理,靜態(tài)內(nèi)部類實現(xiàn)單例的原理。

二面

二面面試官是leader?反正應該不是做Android的,Android的相關(guān)知識問的也不多,大多是項目上的東西。

 1. Java多線程,synchronized
 2. 聊項目,都具體做了什么。
 3. Binder機制

三面

應該是leader吧,主要了解一些個人的情況,以及一些項目,最后問了期望的薪資,然后當場就給了offer。

畢竟1年多沒有面試了,第一場面試還是給我了很大的自信,也知道現(xiàn)在自己大概能要多少工資是合適的,所以同學們準備跳槽的時候,最好先面幾家小公司,盒子還是一個很不錯的公司,整體的辦公環(huán)境挺好的,現(xiàn)在也處于盈利狀態(tài),在教育類的app中也排的上名次。

快手

快手就在五道口地鐵站出口不遠地方,能看到很顯眼的LOGO,看上去很霸氣的樣子,但是當我進入到快手前臺的時候,連一個標示符都沒有, 一度以為自己走進了假快手,好吧,我是來面試,這些都不重要,接下來接待的人員把我領(lǐng)進了一個小屋里,等待面試的開始。

一面

面試官是一個很fashion的人,是從小米核心部門過來的,是Android小組的領(lǐng)導。

 1. 問了關(guān)于數(shù)據(jù)庫的一些問題,SQLite的相關(guān)操作,沒辦法,我在華為唯一一個做的和java相關(guān)的項目,但是不太擅長數(shù)據(jù)庫。
 2. 網(wǎng)絡(luò)相關(guān)的問題,網(wǎng)絡(luò)的五層模型,又問了TCP和UDP,還有Android相關(guān)的長連接,這里問的比較深。
 3. 開始Android先關(guān)的知識,Handler機制,Acticity的生命周期以及四種啟動模式,各自特點,Service的兩種啟動模式生命周期,如果同時使用兩種啟動模式是否可以,順勢講到Binder,什么時候可以得到控件的大小,最后寫了一道鏈表反轉(zhuǎn)的算法題

第一面這就算過關(guān)了等待二面。

二面

 1. 問了項目相關(guān)的問題,這部分根據(jù)自己的項目經(jīng)驗,由于大家的經(jīng)驗都不同,這里我就不詳細說了。
 2. 設(shè)定一個場景,怎么去實現(xiàn)相應的功能,因為快手這個部門想做社交,因此這里是問我是如何實現(xiàn)微信的聯(lián)系人頁面(包括與服務端有什么樣的交互)
 3. 最后也是一個算法,寫出所有數(shù)組的子序列

二面面試官是這個組的leader,跟我講了現(xiàn)在這個組的發(fā)展情況和快手現(xiàn)在的情況,由于快手成長很快,所以不能僅僅依靠一個APP,還需要在其他方面進行一些嘗試,而這個組的任務就是在一些方面做一些嘗試,大概就是這個樣子。
二面也順利通過,接下來就是HR面了,這時候正好是12點,他們要去吃飯,不過快手是提供午餐和晚餐的,第一個面試官帶給我一份飯,還不錯,后來HR跟我說,現(xiàn)在只是過渡時期,后面午餐和晚餐會改成自助餐的形式。

三面

HR上來很親切,問了我一些面試的情況,難不難之類的,然后又聊了聊我大學和研究生情況,我只想說我“too simple , too naive ",大概了解我后,只跟我聊我的不足,以此來壓低我期望的薪水。說了一下薪資期望,加了微信,讓我回去等待,說發(fā)offer大概是2周時間,因為需要走各種審批流程,讓我不要著急。

快手是一個很年輕的公司,技術(shù)還是需要一定的積累,希望不要像小咖秀一樣曇花一現(xiàn)。

美團外賣

一面

簡歷上寫的項目問了一遍,然后開始問知識點。

 1. volley的源代碼,在圖片緩存部分討論了挺長時間,http中緩存機制,Last-Modify的作用等。
 2. fragment的生命周期
 3. service一些知識
 4. 事件分發(fā)機制
 5. Binder實現(xiàn)機制,Stub類中asInterface函數(shù)作用,BnBinder和BpBinder區(qū)別。
 6. gradle中buildToolsVersion和TargetSdkVersion的區(qū)別是什么
 7. 手機適配一些方案
 8. hashmap的實現(xiàn)原理
 9. 靜態(tài)方法是否能被重寫

這些大概聊了1個半小時,開始的時候還有些緊張,慢慢聊開了,就好多了,面試官的語速有點快,老是需要面試官重復一遍,我也不經(jīng)意間語速也變快了,不過能看出來面試官還是很厲害的。

二面

 1. 3次握手和4次揮手的原因,以及為什么需要這樣做。
 2. 數(shù)據(jù)結(jié)構(gòu),搜索二叉樹的一些特性,平衡二叉樹。
 3. hashmap是如何解決hash沖突的
 4. 進程與線程區(qū)別
 5. 寫了一個二分查找和單例模式
 6. http中的同步和異步
 7. 聊了一些項目上做的東西,問了問職業(yè)規(guī)劃

由于二面面試官不是做Android,本來面試我的人臨時開會去了,所以這一輪面試沒怎么問android相關(guān)知識,不過二面面試官一直是微笑,所以這一輪很輕松,更像是一起討論問題。
面試完已經(jīng)是下午4:30了,由于面試當天是星期五,而周五美團的會議比較多,所以等了會,二面面試官說三面面試官在開會,面試另約時間,我還是說這次一次面試完吧,這一等就等了2個半小時,期間hr跟我說三面面試官是個大牛。

三面

 1. 我認為Android做的優(yōu)秀的幾個地方,然后又根據(jù)我說的問了問比較深入問題。
 2. Android是如何進行資源管理的。
 3. java比較重要的幾個特性
 4. 網(wǎng)絡(luò)五層結(jié)構(gòu),每一層協(xié)議,由于我網(wǎng)絡(luò)不是很好,還問了一些其他的問題(例如MAC地址和ip地址的區(qū)別等)。
 5. 為什么離開原來公司,以及職業(yè)規(guī)劃,然后因為面試完大概就晚上8點了,就先讓我回去,下周讓hr跟我聯(lián)系,我想這是應該通過面試了吧。

美團技術(shù)還是很厲害的,從面試官的水平就可以看出來,尤其是外賣核心部門,辦公環(huán)境是不錯,但是感覺就是有點亂,不知道是不是因為今天面試的人很多,基本上一直有很多人來回走動,有一些嘈雜。

小米TV

一面

可能是因為一面是我的學長,所以沒有問我很多技術(shù)的問題,聊了聊我做的向項目,然后聊了一會OpenGL、GLSurfaceView和Shader,主要聊了OpenGL繪制方法,還有一些Binder相關(guān)知識,感覺非常輕松,還想著如果面試都這么輕松就好了,然后就直接下一面了。

二面

二面面試官看上去很斯文,但是還是一個對技術(shù)精益求精的人,問的問題都很細,具體問題的順序擠不太清楚了,大概問了下面幾個問題。

 1. 單例,快排,回型打印二維數(shù)組
 2. 寫一個死鎖,死鎖是怎樣產(chǎn)生的,怎樣防止死鎖
 3. Acticity啟動模式有幾種,分別代表什么意思
 4. 聊項目都做了些什么

三面

leader是一個很有親和力的人,上來就跟我說前面技術(shù)已經(jīng)問的差不多了,這里就不詢問我詳細的技術(shù)了,就出了一道算法題,需要說出時間和空間復雜度,以及有沒有更優(yōu)解。

 1. 字符串反轉(zhuǎn),討論復雜度。
 2. 聊經(jīng)歷和項目

HR面

HR面問問題都是一個模板刻出來,都是例行公事的詢問,bulabula......然后就算完成面試。
從整體來說,TV更需要一個測試開發(fā),但是我還是想做開發(fā),暫時不想做測試,所以我估計TV是不會給我offer了,雖然說了過幾天會正式給我發(fā)offer,最后也沒法。

小米TV在一個獨立的小院子里,環(huán)境還是不錯的,整體的發(fā)展也可以,畢竟是小米生態(tài)中重要的一個部分。

網(wǎng)易

網(wǎng)易大樓是在百度大樓的旁邊,感覺還是不錯的,來的稍微有點早,在前臺等了20分鐘左右的樣子,面試官就帶我去面試了。

筆試

具體的內(nèi)容記不太清楚了,大概有以下幾個類型,都還是比較基本的。
選擇題、程序輸出題、四道算法、簡答

 1. 給定一個int型 n,輸出1~n的字符串例如 n = 4 輸出“1 2 3 4”
 2. 輸出所有的笛卡爾積組合
 3. 單例模式
 4. 最長上升子序列

都不是很難,基本上都能作出來。

一面

一面面試官是資深的Android開發(fā)工程師,的確水平很高。所有的問題問的都很詳細,很多細節(jié),面試官都能清晰的說出來,的確水平很高。
屬于循序漸進的問題方式,從簡單的知識入手,逐漸深入,直到你回答不出來而且問的都是你自認為很擅長的知識點,可見面試官的功力有多深厚,深深的佩服。
我下面大概說一些問題,但是到最后總能問到很深入的地方。

 1. 對剛才做的題,一些錯的地方做了討論,主要是類的加載和內(nèi)部類方面的知識,尤其一些深入到JVM層的知識的確自己有一些不足,不過大部分都還是能答出來。
 2. 雙親委托機制,類的五個加載過程。
 3. java類加載器的加載流程。
 4. Binder機制,從java到framework再到kenral層,面試官問的都很詳細,遇到不會的也都會跟我解釋。
 5. Serializable和Parcelable的區(qū)別。
 6. View的繪制流程,詳細到framework代碼,討論到不確定的地方,立馬打開電腦和我一起看源碼。
 7. 事件分發(fā)機制。
 8. 常用設(shè)計模式,使用靜態(tài)內(nèi)部類實現(xiàn)單例的原理是什么。
 9. 線程同步,CopyOnWriteArrayList怎樣實現(xiàn)。
 10. Volley源碼,EventBus源碼。

面試完后就到12點了,討論了1個半小時,跟我說我這關(guān)過了基本上就沒問題了,面試官還是一個很幽默的人,帶我去網(wǎng)易食堂吃了頓飯,的確這里的飯?zhí)貏e好吃,回來后,休息了一會,就開始Leader面了

二面

Leader面,我還以為至少要3輪技術(shù)面呢,沒想到直接就到leader面試了,后來才知道第一輪面試的結(jié)果還是很重要的,一面面試官是非常資深的工程師,只要通過一面了基本就沒問題了。

 1. 項目介紹,聊一些項目上的問題
 2. 下拉listview的實現(xiàn),需要注意的地方和優(yōu)化的地方(不是lsitview的優(yōu)化,是下拉的優(yōu)化)。
 3. Android上一些優(yōu)化方案
 4. 介紹了一下現(xiàn)在做的項目,大體說明了現(xiàn)在所用到的技術(shù)。

總體感覺網(wǎng)易的氛圍還是非常好的,技術(shù)實力非常雄厚,leader技術(shù)能力也很強,并且一面面試官告訴我,leader有時候還會自己寫一些代碼,一般到了leader很少有寫代碼的了。

hr面

一樣的流程,各種談,說面試官對我評價非常高,希望我能來之類的話,然后就算面試結(jié)束了。

小米

這是第二次面試消息,這次是小米的核心部門,MUI部門,主要做閱讀類app,聽說發(fā)展還是很不錯的,為什么要面試兩次小米呢,因為之前內(nèi)推過小米,一周都沒有消息,我就在網(wǎng)上投了簡歷,等面試了小米TV,這邊又叫我去面試。到了小米前臺,前臺沒人,我問保安,保安讓我打HR電話,結(jié)果HR也不接電話,就這樣等了半個多小時,HR終于回過來電話,打電話讓面試官把我接上去了,一面面試官還以為我不來了。

一面

 1. 聊項目,GLSufaceView,OpengGL,Shader相關(guān)一些知識,在項目中做的優(yōu)化
 2. gc是根據(jù)什么來回收一個對象的,引用計數(shù)和gc root分別怎么實現(xiàn)。
 3. 怎樣會產(chǎn)生內(nèi)存泄露,舉一個具體的例子,使用什么檢查內(nèi)存泄露
 4. 自定義View的繪制流程
 5. 給出二叉樹和一個值,找出所有和為這個值的路徑;{1,3}{3,6}{3,4}{6,8}區(qū)間去重,最少去掉幾個集合,可以讓這個集合沒有交集。

二面

 1. 什么是ANR,Activity、BroadcastReceiver、Service對ANR時間限制分別是多少,怎么處理ANR,除了系統(tǒng)生成trace.txt文件,怎么在程序中檢測ANR。寫出偽代碼。
 2. 編解碼一些知識,I幀,B幀,P幀區(qū)別。
 3. Android一些優(yōu)化方案。
 4. 算法 n/m,怎么判斷得數(shù)是無限循環(huán)小數(shù)。

三面

三面面試官看上去很年輕,人也特別幽默,不過技術(shù)還是沒得說。
1. 介紹項目。
2. 事件分發(fā)機制。
3. 算法,將一個字符串轉(zhuǎn)換成int型數(shù)字,考慮 錯誤輸入,溢出,正負值等一些條件,考細心。
4. 給出一個搜索二叉樹,輸出一個排序好的雙向鏈表。

四面

本來以為是HR面,結(jié)果不是,應該leader面,上來就說技術(shù)就不面了,介紹自己的項目中覺得做的最好的幾個部分,大概說了下,接下來就是問了為什么離開原來公司,為什么選擇小米 bulabula.....面完之后,說今天太晚了(晚上快8點了),hr已經(jīng)走了,下周讓hr跟你電話聯(lián)系吧,把我送到樓下。

第二周小米就發(fā)來了面試通過的消息,具體談了一些薪資待遇問題。

百度

一面

一面面試官的思維非常跳躍,經(jīng)常我說到一半的問題,突然詢問其他相關(guān)問題,然后回答完再繼續(xù)之前的說下去,有些許不適應這個節(jié)奏。順序可能不太對。

  1. 類的加載過程,Person person = new Person();為例進行說明。
  2. JVM相關(guān)知識,GC機制。
  3. 類的加載器,雙親機制,Android的類加載器。
  4. Android中進程的級別,以及各自的區(qū)別。
  5. 插件化原理。
  6. 集合框架,list,map,set都有哪些具體的實現(xiàn)類,區(qū)別都是什么。
  7. concurrentHashmap原理,原子類。
  8. volatile原理。
  9. Binder機制。
  10. View的繪制流程,事件傳遞機制,Handler異步消息機制。
  11. Interger中的128(-128~127),這里考的是常量池的概念,這個沒回答上來。
  12. 線程池的相關(guān)知識。
  13. Handler機制,HandlerThread實現(xiàn)等等。
  14. LRUCache算法是怎樣實現(xiàn)的。

二面

二面面試官看上去挺面善的,所以氣氛就不那么緊張了,說實話來百度還是有點小小的緊張的。

  1. 說了說項目中相關(guān)的知識。
  2. 聊了聊之前做過的項目。
  3. 內(nèi)存泄露,怎樣查找,怎么產(chǎn)生的內(nèi)存泄露。
  4. 怎樣計算一張圖片的大小,加載bitmap過程(怎樣保證不產(chǎn)生內(nèi)存溢出),二級緩存,LRUCache算法。
  5. 簡單介紹一下java中的泛型,泛型擦除以及相關(guān)的概念。
  6. Android優(yōu)化相關(guān)的只是,布局優(yōu)化、內(nèi)存優(yōu)化等等。
  7. SQL相關(guān)的知識優(yōu)化的方案,這里我直接說不太了解,就過了。
  8. 算法題,m * n的矩陣,能形成幾個正方形(2 * 2能形成1個正方形,2 * 3 2個,3 * 3 6個)

三面

因為每次面試都是有記錄的,所以三面面試官問題的技術(shù)問題就不那么細節(jié)了,大體以討論的方式跟我聊,大體聊了以下幾個方面,當然越深入,面試官對你的評價就越高

 1. 項目相關(guān)。
 2. Android優(yōu)化.。
 3. 插件化相關(guān)技術(shù),熱修補技術(shù)是怎樣實現(xiàn)的,和插件化有什么區(qū)別。

其他的都記不太清楚了,總體來說聊的還是不錯的,本來以為百度會有很多算法題,結(jié)果只出了一道(僥幸。。。),本來還要有l(wèi)eader面,三面面試官還是非常好的,跟我說他們幾個技術(shù)覺得我還是不錯的,就看leader了,結(jié)果leader有事,出去了,不知道什么時候回來,就約當周的下班時間過去就好,然后面試官親自把我送到了門口,跟我聊了很多,挺不錯的。

四面

四面是經(jīng)理面,感覺經(jīng)理已經(jīng)不做技術(shù)了,技術(shù)基本上沒有詢問,大體問了一下項目,以及自己在項目中都做了一些什么,聊了聊其他的話題,就完事了,然后就讓我回去了,
大老遠的跑過來,就談了不到半個小時,好吧,誰讓人家是百度呢,回去等hr電話吧。
過了幾天,hr聯(lián)系我談薪資待遇等,又讓我跑了一趟,面試這么多家,最累的一次,誰讓百度是牛*呢,一頓說,bulabula......
感覺近幾年百度發(fā)展的不是很好,一直在走下坡路,不知道是不是在憋大招,很多百度人都出來了,不過百度畢竟是百度,還是很厲害的。

阿里

夢寐以求的阿里終于找我來面試了,之前不管是內(nèi)推還是網(wǎng)絡(luò)上投遞都被拒絕了,原因是我工作不到一年,沒辦法誰讓馬云爸爸太厲害,我投遞的是杭州的天貓,是做虛擬現(xiàn)實的小組(剛聽到這個名字感覺和自己不太相符),這是我到面試完后,才知道的,面試官也跟我說Android上的需求可能不會很多,更多的是VR技術(shù)在Android上的應用,包含OpenGL等技術(shù)。

一面

 1. 詢問了我博客上寫的一些東西,從項目立意談起,到設(shè)計,再到詳細的技術(shù)實現(xiàn),可謂是面面俱到,由于自己寫的博客還是比較熟悉,回答的還不錯。
 2. GLSurfaceView的相關(guān)知識,OpenGL,Shader,繪制流程。
 3. 詢問當前做的項目,以及到具體的實現(xiàn)和優(yōu)化。
 4. 多進程間的通訊,Binder機制。
 5. 詢問看過哪些框架源碼,EventBus,Volley講了一下。

大概聊了一個小時左右,聊得還可以,基本上都回答上了,中間給了我很多建議,不懂的地方,也會仔細跟我講解一番,其實有一半的時間都是跟我聊產(chǎn)品,為什么這個產(chǎn)品好,怎樣做才能迎合市場,然后怎么設(shè)計整個產(chǎn)品等,感覺跟我現(xiàn)在水平不是一個層次的,果然,第二天就給我發(fā)了一封郵件,說我現(xiàn)在暫時不太合適投遞的崗位。

今日頭條

來面試的部門是今日頭條的效率部門,是做內(nèi)部IM(及時通訊工具)的。整個工作環(huán)境還是不錯的。

筆試

 1. hashmap實現(xiàn)原理
 2. 自定義view流程
 3. 事件機制
 4. activity生命周期
 5. handler機制
 6. 鏈表加法  例如 1->2->3  +   4->5->6->7 =  4->6->9->0
 7. 設(shè)計題

筆試題算是中規(guī)中矩 ,沒有太難的,基本都可以答出來,主要的還是面試。

一面

 1. view繪制流程
 2. 事件機制
 3. activity生命周期
 4. service兩種啟動方式,如果多次綁定,會有什么結(jié)果
 5. binder機制
 6. volley框架
 7. 查找兩個鏈表的共同節(jié)點
 8. Rxjava、Retrofit、okhttp相關(guān)的,這些我了解的不是很深。

一面結(jié)束后就到了12點,跟著一面面試官去今日頭條吃了頓午餐,午餐還是很豐盛的(竟然還有扇貝,果然是很有錢?。3酝觑埡笤诳罩墓の簧闲菹⒘艘粫?,因為頭條中午是要休息到1:30的。

二面

 1. apk是打包過程,資源文件生成id的規(guī)則,xml文件打包后放在哪里?
 2. 聊了聊之前做的項目
 3. Android中的引用以及使用場景
 4. Volley框架,okHttp
 5. 數(shù)組實現(xiàn)隊列,快排
 6. fragment生命周期

和二面面試官聊的一般,中間有一個問題我記得不太清楚(fragment在attach時是否能獲得Activity的對象,我的回答是可以),但是應該是對的,然后就詢問面試官,他說不對,然后詢問是否能跟我講下,哪里說得不對,面試官讓我自己回去查資料,后來回來仔細看了一下,是可以得到Activity的對象,二面完了,等了會,前臺過來告訴我今天面試到這里就結(jié)束了,如果有接下來面試,會再通知,到這里我以為是掛了,但是我感覺聊的都還可以,不知道問題出在哪里,郁悶。

之前一直以為沒有通過,在第二周hr給我打電話告訴我通過面試,現(xiàn)在約一下leader面,原來真的是leader不在,因為leader最近經(jīng)常出差,hr也不知道leader什么時候有時間,所以一直就沒有跟我約時間,現(xiàn)在確定了??磥碛袝r候沒有面到第三面,需要根據(jù)自己前面面試感覺,如果自己感覺還不錯,那多半是可以繼續(xù)面試的。

三面

來的時候,leader還是很驚奇的,說我這個面試時間拖了有2周,不過的確是他出差了一周,閑聊了幾句,然后就正式進入面試了。
主要聊了一些java相關(guān)的知識

 1. 集合相關(guān)的知識,List,Set,Map具體的實現(xiàn)類,以及相應的區(qū)別,ConcurrentHashMap實現(xiàn)原理。
 2. 多線程知識,例如,volatile原理
 3. 內(nèi)部類和靜態(tài)內(nèi)部類的區(qū)別,以及使用場景。
 4. 一道關(guān)于多線程的設(shè)計題,下載一本書的章節(jié)1.下載一個list列表。2.從列表中并行下載相應的內(nèi)容。3.顯示下載后的章節(jié)。要求:并行下載、章節(jié)有順序,需要盡早顯示出來,出現(xiàn)異常錯誤立馬停止下載。

大概就是這樣一道設(shè)計題,具體說的不是很好,很多細節(jié)沒有考慮到。

接下來就是hr面,基本上都是一個模板。

今日頭條

由于一些個人原因,雖然那邊已經(jīng)準備給我發(fā)offer,我需要換部門,從效率工程到IES(抖音產(chǎn)品線),所以要重新走一遍面試流程。

一面

1. 自我介紹,大體聊了以下項目中做的東西。
2. Top K度算法題,給定一個數(shù)組,求前n個最大的數(shù),堆排序。 3. 判斷一個view的父類或者父父類是否為listview
4. listivew的優(yōu)化,使用復用機制,最多需要創(chuàng)建多少個view。 5. activity的啟動模式。
6. 如何計算Bitmap在內(nèi)存中的大小?
7. serizalable和parcelable的區(qū)別
8. volley源碼,HTTP緩存機制。

大體就是上面的問題,聊了將近一個小時,一面面試官還是非常追求細節(jié)的,往往是詢問到非常細致地方。

二面

1. 自我介紹
2. 實現(xiàn)map接口的幾個類,以及各自的特點和區(qū)別。
3. ConcurrentHashMap實現(xiàn)原理,Volatile原理。
4. 快排
5. Binder機制
6. 單例模式實現(xiàn)方式,靜態(tài)內(nèi)部類實現(xiàn)單例的原理,內(nèi)部類和靜態(tài)內(nèi)部類的區(qū)別等 7. 插件化一些問題

二面大概就這些問題,聊了40多分鐘,到了飯點,跟著二面面試官到食堂吃了頓飯。

三面

1. 自我介紹,聊了聊項目。
2. 繪制OpenGL過程,Shader語言,GLSurfaceView等,說了說在渲染視頻的時候做的優(yōu)化。
3. JVM相關(guān)知識。
4. 又說了一遍Binder機制。
5. Android中一些優(yōu)化方案。
6. 插件化原理,主要是DL和 360 DroidPlugin的區(qū)別,因為我只看了DL源碼,對DroidPlugin了解的不深,就大體聊了下DL實現(xiàn)的過程。

三面面試官跟我聊了很多,他是履歷非常牛,給了我很多建議。

hr面

hr面,一個模板,這里就不詳細說明了,因為這邊是個朋友介紹我來的,hr之后,又跟朋友聊了會,就走了, 剛走到樓下,朋友又跟我說,leader想再跟我聊聊,我就回來了。

leader面

1. 自我介紹,項目介紹了一下。
2. GC原理
3. 插件化
4. 職業(yè)發(fā)展

大體就上面介個話題,聊了聊,然后就算面試完了。 這次面試時間從早上10:30到下午3點,時間跨度最長的一次,面試完感覺整個人都不好使了,非常疲憊,面試 是知識儲備和體力的雙重考察啊。

面試結(jié)果

除了阿里淘寶外,其他的公司基本都拿到offer,這段時間把華為這邊的工作都交接完,休息幾天,如果有空的話回家停幾天。

總結(jié)

自己對于互聯(lián)網(wǎng)有一些小小的見解:隨著資本的冷卻,整個互聯(lián)網(wǎng)市場也逐漸的冷靜下來。Android應用開發(fā)從一開始能說幾個四大組件的名詞,能隨便寫個監(jiān)聽事件,就能拿到高達上萬的月薪的時代了。歸根到底并不是工作難找了,而是Android應用開發(fā)工程師這個職位已經(jīng)趨于正常,再也不是沒什么技術(shù)也能拿高工資的香餑餑。當然這個也不是絕對的,對于中高級的開發(fā)人員來說,市場還是比較缺少的,尤其是知名企業(yè)對于招聘員工來說,不僅要求有過硬的技術(shù),還要求有高素質(zhì),好的教育背景等等??偟膩碚f,高工資可以給你,但是前提條件是你要足夠優(yōu)秀,或者說讓面試官覺得你很優(yōu)秀。

其實面試過程就是一個把你自己推銷給別人的過程,對于我們(畢業(yè)不久的同學,因為我畢業(yè)不到一年)來說就是要讓面試官感覺你技術(shù)好,有培養(yǎng)價值。感慨有點多了,還是來點干貨吧,大概列舉一下每一輪面試的大概范圍和深度,但是也不是絕對的,還是要看具體情況。

筆試

對于社招的同學來說,基本上不需要筆試,但是也有公司是需要的,例如 今日頭條和網(wǎng)易都有筆試。筆試都是比較基礎(chǔ)的一些知識,Java、Android等方面的,一般不會有網(wǎng)絡(luò),計算機等方面的筆試,一般情況下大家都能答出來。

一、二面

近一段時間的面試經(jīng)歷來說,一、二面的問題沒有什么很大的區(qū)別(公司基本上都有3面技術(shù)面,但是也有例外,我在網(wǎng)易就是2面技術(shù)面。),基本上都是一線開發(fā)人員。主要考察你是否有牢固的基礎(chǔ)知識和是否在平常開發(fā)中能熟練使用。

  • 是否能講解清楚你所做的項目,以及使用到的相關(guān)知識。
  • Android基礎(chǔ)知識
  • Java基礎(chǔ)知識,大概是多線程,線程安全,集合類,JVM,類相關(guān)知識等。
  • Android一些源碼的閱讀
  • 優(yōu)秀的第三方框架源碼閱讀

三、四面

一般公司都是三輪技術(shù)面,但是也有四輪技術(shù)面的,不過不多。很多公司基本上每一輪面試官都會記錄他所詢問的問題,以便給下一輪面試官作參考,還有就是避免對同一個知識點多次詢問。所以到了這輪面試,基本上不會再詢問比較基礎(chǔ)的知識。

  • 會從兩個方面考察,
    • 廣度:比較新的技術(shù)(Rxjava,插件化等),JVM,GC,網(wǎng)絡(luò),數(shù)據(jù)庫,Android(一般不會詢問之前面試官問過的問題)。
    • 深度:一般會通過1或2個問題來考察,例如:map接口下都有什么子類->hashmap和hashtable區(qū)別->hashmap實現(xiàn)原理->怎么解決hash沖突->是否了解concurrentHashmap->concurrentHashmap實現(xiàn)原理->volatile實現(xiàn)原理(concurrentHashmap讀是不加鎖的,使用到了volatile)。
  • 項目中的貢獻,所做的優(yōu)化。
  • 設(shè)計能力,基本上不多,這個要看面試的崗位,因為我這里面試的只是高級開發(fā),并不是架構(gòu)。
  • 工作中的亮點和突出。

hr面

基本上到了這輪,你就算通過面試了。hr會詢問一些你的經(jīng)歷,最主要的還是和你商定薪資待遇。在這輪,大家應該要對自己的薪資水平有一個大體的了解,一般都是在原來的工資基礎(chǔ)上增長20%~30%的樣子,當然,如果你在面試過程中表現(xiàn)非常優(yōu)秀,也可以不受這個限制。當然如果公司誠心要你,就算你要的工資過高,hr也會委婉的告訴你,不會直接把你pass。

選擇公司

由于很多小伙伴都在詢問我,最后選擇了哪家公司,因為之前在寫這篇博客的時候,剛剛面試完不久,還沒有決定去哪家公司,所以就沒有寫上去。最后我選擇今日頭條,這邊的發(fā)展更適合自己,當然這個不是唯一的選擇標準,我覺得選擇公司應該從以下幾個方面來考慮:

  • 公司是否在上升期。
  • 所做的東西是否有市場價值,自己是否感興趣。
  • 通過面試基本了解將要共事的同事技術(shù)情況,畢竟如果你周圍的人很優(yōu)秀,那么你肯定也不會差,一定要跟優(yōu)秀的人一起共事,你會獲得很大的成長。
  • 薪資待遇,畢竟我們找工作就是為了養(yǎng)家糊口,我相信這一條也是很多人決定一家公司的重要理由之一。

以上就是我個人對于如何選擇一家公司的一些想法,不足之處希望大家能指出。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容