一年Android工作經驗,今日頭條 阿里 百度 網易 美團 小米 快手面經

轉載請註明出處:http://blog.csdn.net/a296777513/article/details/73610719

前言

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

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

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

爲何離開華爲

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

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

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

準備

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

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

投遞簡歷

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

CodeKK說簡歷

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

面試經過

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

作業盒子

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

一面

 1. Android一些優化方案
 2. 什麼是過渡繪製,如何防止過渡繪製
 2. 事件分發機制
 3. ListView的優化
 4. Binder機制
 5. 在多進程中,Application會啓動幾次
 6. 單例模式,雙鎖原理,volatile原理,靜態內部類實現單例的原理。

二面

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

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

三面

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

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

快手

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

一面

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

 1. 問了關於數據庫的一些問題,SQLite的相關操作,沒辦法,我在華爲唯一一個做的和java相關的項目,但是不太擅長數據庫。
 2. 網絡相關的問題,網絡的五層模型,又問了TCP和UDP,還有Android相關的長連接,這裏問的比較深。
 3. 開始Android先關的知識,Handler機制,Acticity的生命週期以及四種啓動模式,各自特點,Service的兩種啓動模式生命週期,如果同時使用兩種啓動模式是否可以,順勢講到Binder,什麼時候可以得到控件的大小,最後寫了一道鏈表反轉的算法題

第一面這就算過關了等待二面。

二面

 1. 問了項目相關的問題,這部分根據自己的項目經驗,由於大家的經驗都不同,這裏我就不詳細說了。
 2. 設定一個場景,怎麼去實現相應的功能,因爲快手這個部門想做社交,因此這裏是問我是如何實現微信的聯繫人頁面(包括與服務端有什麼樣的交互)
 3. 最後也是一個算法,寫出所有數組的子序列

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

三面

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

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

美團外賣

一面

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

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

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

二面

 1. 3次握手和4次揮手的原因,以及爲什麼需要這樣做。
 2. 數據結構,搜索二叉樹的一些特性,平衡二叉樹。
 3. hashmap是如何解決hash衝突的
 4. 進程與線程區別
 5. 寫了一個二分查找和單例模式
 6. http中的同步和異步
 7. 聊了一些項目上做的東西,問了問職業規劃

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

三面

 1. 我認爲Android做的優秀的幾個地方,然後又根據我說的問了問比較深入問題。
 2. Android是如何進行資源管理的。
 3. java比較重要的幾個特性
 4. 網絡五層結構,每一層協議,由於我網絡不是很好,還問了一些其他的問題(例如MAC地址和ip地址的區別等)。
 5. 爲什麼離開原來公司,以及職業規劃,然後因爲面試完大概就晚上8點了,就先讓我回去,下週讓hr跟我聯繫,我想這是應該通過面試了吧。

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

小米TV

一面

可能是因爲一面是我的學長,所以沒有問我很多技術的問題,聊了聊我做的向項目,然後聊了一會OpenGL、GLSurfaceView和Shader,主要聊了OpenGL繪製方法,還有一些Binder相關知識,感覺非常輕鬆,還想着如果面試都這麼輕鬆就好了,然後就直接下一面了。

二面

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

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

三面

leader是一個很有親和力的人,上來就跟我說前面技術已經問的差不多了,這裏就不詢問我詳細的技術了,就出了一道算法題,需要說出時間和空間複雜度,以及有沒有更優解。

 1. 字符串反轉,討論複雜度。
 2. 聊經歷和項目

HR面

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

小米TV在一個獨立的小院子裏,環境還是不錯的,整體的發展也可以,畢竟是小米生態中重要的一個部分。

網易

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

筆試

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

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

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

一面

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

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

面試完後就到12點了,討論了1個半小時,跟我說我這關過了基本上就沒問題了,面試官還是一個很幽默的人,帶我去網易食堂吃了頓飯,的確這裏的飯特別好吃,回來後,休息了一會,就開始Leader面了

二面

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

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

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

hr面

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

小米

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

一面

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

二面

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

三面

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

四面

本來以爲是HR面,結果不是,應該leader面,上來就說技術就不面了,介紹自己的項目中覺得做的最好的幾個部分,大概說了下,接下來就是問了爲什麼離開原來公司,爲什麼選擇小米 bulabula…..面完之後,說今天太晚了(晚上快8點了),hr已經走了,下週讓hr跟你電話聯繫吧,把我送到樓下。

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

百度

一面

一面面試官的思維非常跳躍,經常我說到一半的問題,突然詢問其他相關問題,然後回答完再繼續之前的說下去,有些許不適應這個節奏。順序可能不太對。

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

二面

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

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

三面

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

 1. 項目相關。
 2. Android優化.。
 3. 插件化相關技術,熱修補技術是怎樣實現的,和插件化有什麼區別。

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

四面

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

阿里

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

一面

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

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

今日頭條

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

筆試

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

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

一面

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

一面結束後就到了12點,跟着一面面試官去今日頭條吃了頓午餐,午餐還是很豐盛的(竟然還有扇貝,果然是很有錢啊)。吃完飯後在空着的工位上休息了一會,因爲頭條中午是要休息到1:30的。

二面

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

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

之前一直以爲沒有通過,在第二週hr給我打電話告訴我通過面試,現在約一下leader面,原來真的是leader不在,因爲leader最近經常出差,hr也不知道leader什麼時候有時間,所以一直就沒有跟我約時間,現在確定了。看來有時候沒有面到第三面,需要根據自己前面面試感覺,如果自己感覺還不錯,那多半是可以繼續面試的。

三面

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

 1. 集合相關的知識,List,Set,Map具體的實現類,以及相應的區別,ConcurrentHashMap實現原理。
 2. 多線程知識,例如,volatile原理
 3. 內部類和靜態內部類的區別,以及使用場景。
 4. 一道關於多線程的設計題,下載一本書的章節1.下載一個list列表。2.從列表中並行下載相應的內容。3.顯示下載後的章節。要求:並行下載、章節有順序,需要儘早顯示出來,出現異常錯誤立馬停止下載。

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

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

今日頭條

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

一面

  1. 自我介紹,大體聊了以下項目中做的東西。
  2. Top K度算法題,給定一個數組,求前n個最大的數,堆排序。 3. 判斷一個view的父類或者父父類是否爲listview
  3. listivew的優化,使用複用機制,最多需要創建多少個view。 5. activity的啓動模式。
  4. 如何計算Bitmap在內存中的大小?
  5. serizalable和parcelable的區別
  6. volley源碼,HTTP緩存機制。
    大體就是上面的問題,聊了將近一個小時,一面面試官還是非常追求細節的,往往是詢問到非常細緻地方。

二面

  1. 自我介紹
  2. 實現map接口的幾個類,以及各自的特點和區別。
  3. ConcurrentHashMap實現原理,Volatile原理。
  4. 快排
  5. Binder機制
  6. 單例模式實現方式,靜態內部類實現單例的原理,內部類和靜態內部類的區別等 7. 插件化一些問題
    二面大概就這些問題,聊了40多分鐘,到了飯點,跟着二面面試官到食堂吃了頓飯。

三面

  1. 自我介紹,聊了聊項目。
  2. 繪製OpenGL過程,Shader語言,GLSurfaceView等,說了說在渲染視頻的時候做的優化。
  3. JVM相關知識。
  4. 又說了一遍Binder機制。
  5. Android中一些優化方案。
  6. 插件化原理,主要是DL和 360 DroidPlugin的區別,因爲我只看了DL源碼,對DroidPlugin瞭解的不深,就大體聊了下DL實現的過程。
    三面面試官跟我聊了很多,他是履歷非常牛,給了我很多建議。

hr面

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

leader面

  1. 自我介紹,項目介紹了一下。 2. GC原理
  2. 插件化
  3. 職業發展
    大體就上面介個話題,聊了聊,然後就算面試完了。 這次面試時間從早上10:30到下午3點,時間跨度最長的一次,面試完感覺整個人都不好使了,非常疲憊,面試 是知識儲備和體力的雙重考察啊。

面試結果

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

總結

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

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

筆試

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

一、二面

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

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

三、四面

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

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

hr面

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

選擇公司

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

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

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

PS:(2018.7.18)已經來頭條1年了,一直在做抖音產品,見證了抖音從默默無聞到月活突破5億,很是自豪。如果大家想來抖音,我可以內推,客戶端、後端、前端、產品都可以。[email protected]

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