Android面經分享:開發4年裸辭面試20天收割8個offer,終於入職阿里,全是細節!
各位朋友這是一篇面試總結文,是一篇從我本身出發,把面試過程中遇到的問題,以及一些小小的建議闡述出來,希望對正在面試或者將要面試的你有一些小幫助。
背景描述
首先描述下背景,樓主是一個4年多經驗的Android開發工程師,先後服務於3家網際網路公司,均從事於Android開發的工作。離職前我在最後這家公司已經工作了將近3年的時間。
那為什麼要離職呢?
其實這個問題一直都不是一個單一性的問題,它一定是一個多元化多維度的問題。對於我來說,主要體現在以下幾個方面。
1、當前所使用的技術對自身成大不是很大了。 2、當前所負責的專案發展空間到了瓶頸。 3、認為自己的職場履歷需要一段大廠經歷。 4、這一點本來不太想說,但是確實也是自己比較在意的一點,那就是組織架構頻繁變動,導致業務線頻繁變更,這一點對業務很不利,需要一直磨合。
面試目標:
其實當時的面試目標也不是單一的,比如我的面試目標按以下排序
- 阿里巴巴 > 頭條 > 美團 > 小米
面試時間:
2021-03-01 ~ 2021-03-24 總共24天的時間,此處貼一張圖來證明。
準備週期:
2020-12-01 ~ 2021-02-28 總共2個月多一點的時間
面試經歷
我先後面試了大概20家公司,最後拿到了8個offer左右,最後選擇了自己最想去的公司 阿里巴巴,面試內容也進行了簡單總結,分為兩個部分。
- 高頻問題區
- 公司面試經歷分享
高頻問題
- HashMap 1.7,1.8的差異,1.8中什麼情況下轉換為紅黑樹,建構函式中引數代表的意思
- 用什麼Map可以保證執行緒安全,為什麼?ConcurrentHashMap為什麼能保證執行緒安全?1.7和1.8原理有什麼差異。
- 有多少種單例模式,列舉算不算單例,單例模式中不用volatile會導致什麼問題?volatile特性是什麼?為什麼android中不推薦使用列舉。
- Glide中怎麼實現圖片的載入進度條,Glide的快取是怎麼設計的?為什麼要用弱引用。
- implementation 和 api的區別是什麼?
- 事件分發的流程,以及怎麼解決滑動衝突?
- 事件是怎麼產生的?mFirstTarget 為什麼是一個連結串列?
- 自定義View需要經歷哪幾個過程?
- A 跳轉到 B頁面,兩個頁面的生命週期怎麼走?什麼情況下A的stop()不會執行。
- Activity 的4中啟動模式分別是什麼,有什麼不同。
- okhttp中有幾個佇列?分別幹什麼用的?怎麼取消一個請求?
- Rxjava中map和flatMap有什麼區別,都用過什麼運算子。
- 如果Rxjava組合傳送任務,中間任務出現異常,其他任務該怎麼處理。
- 哪個場景會發生記憶體洩露,記憶體洩露怎麼檢測,怎麼解決。以及leak cannery內部原理是什麼?為什麼新版本的不需要在Application中註冊了。
- 手機適配問題怎麼處理,都有什麼方案。
- Android9 10 11 都更新了什麼新特性,新版本中無法獲取IMEI怎麼處理。
- 資料序列話有那倆種方式,Serialization和Parcelable區別,如果持久化需要用哪一個
- 元件化怎麼分層,各個元件之間怎麼通訊。
- 怎防止程式崩潰,如果已經到了Thread.UncaughtExceptionHandler是否可以讓程式繼續執行。
- Handler Looper mesaageQueue message 之間的關係。
- 子執行緒一定不能更新ui麼?什麼時候可以?什麼時候不可以。檢測邏輯是在什麼階段初始化的。
- ANR發生的原理是什麼, 怎麼排查。
- 程式怎麼保活。
- 說下路由ARoute的實現原理,怎麼處理頁面過多記憶體佔用過大問題。
- 執行緒池都什麼時候用,怎麼建立,建構函式中的引數分別代表什麼意思?
- 程式優先順序
- 反向輸出字串
- 兩個有序連結串列合併
- 字串移除多餘空格,且技術單詞首字元大寫。
- 二叉樹中和為某一值的路徑
- 本地廣播和正常廣播的區別
- 二進位制低位轉高位
- 字串陣列判重
- 二叉樹 判斷是否為搜尋二叉樹
- Activity啟動流程,Launcher啟動流程
下面是每個公司面試經歷分享:
天眼查(大小周,小周1.2倍)
面試體驗 ★★★★
這公司面試體驗很好,一共三輪面試,技術面二面,HR一面。
一面的面試官技術水平非常可以,跟大廠是同一級別,考察的細節很到位,都是比較注意的點,並非故意刁難,溝透過程也是非常愉快。
二面是leader面,相對注重整體架構考察,溝通也相對順利。
HR面其實體驗不是很好,介紹公司政策不是很專業,總是靠挖掘,有點像擠牙膏溝通,薪資說實話一般般。中等偏下。
總體下來體驗比較好,因為這個是第一家面試的公司,屬於熱身,學到了很多,尤其感謝1面面試官。
58同城
面試體驗 ★★★★
面試的是58同城的58學車部門,一共四輪面試,3輪技術面,一輪HR面 他們應該是交叉面試,因此技術面相對比較全面,體驗很好,交流很順利,尤其是三面,思維方式,以及考察問題都很專業。 HR面也很專業,介紹公司情況,部門前景,以及政策制度都很透徹,給了Offer,薪資相對也偏低。
以下幾個是58特殊考察的幾個題目:
1.thread wait sleep join 有什麼區別,主要考察wait sleep相關區別。 2.mvvp 和mvp的區別,細節裡怎麼實現的雙向繫結。 3.打渠道包 怎麼寫入渠道資料(app簽名在哪)這裡涉及V1,V2,V3簽名差異。 4.rgb565和rgb888有什麼區別,主要考察資料儲存位。 5.自定義view,實現一個自定義View,且支援按下放大,鬆開縮小動畫。
美團優選(大小周,且每天晚上9點後下班)
面試體驗 ★★★★★
一共三輪面試,全是影片面。
一面: 基礎面試,面試官比較憨厚,基礎部分不在贅述,特殊性考察有:兩個有序連結串列合併。字串移除多餘空格,且技術單詞首字元大寫。
二面: 主要考察專案,解決方案,溝通都很絲滑。
HR: 沒想到這個流程比較慢,可能他們候選人比較多,最後給了Offer定級L7,最後也是因為選擇了阿里放棄了。
位元組跳動(大小周)
面試體驗 ★★★★★
位元組跳動,我是連被幹翻2次,面試官確實是牛逼。
我第一次投的是抖音部門,過了一面,二面掛,面試評語是 基礎相對紮實,但是專案架構略有欠缺,因此掛在二面。
正在失望之餘,位元組的懂車帝又打來電話,說簡歷又被撈起來了,又去面了懂車帝,又掛了。
懂車帝一面確實比較牛逼,比如我記錄了部分問題:
- 如果想統一專案的執行緒池,包括三方引入包的執行緒池,怎麼處理。(最後解答可透過位元組碼修改實現)
- 如果想監控某一執行緒的耗時超過300毫秒的任務需要怎麼操作。(可反射獲取Handler抓取每個Message的執行耗時)
- 如果專案出現未捕獲的異常,怎麼預操作可以防止Crash。
- 如果設計一個App的啟動框架,需要考慮什麼問題,怎麼處理同步非同步的載入任務排程。
- glide 載入原理,怎麼感知載入和暫停。
- okhttp載入原理,怎麼控制同步和非同步任務。
- 說一個專案難點,具體怎麼解決的。
- 都用過什麼設計模式。
- mvp mvvm都在什麼場景下使用。
- 一個int陣列怎麼判斷是搜尋二叉樹的後續遍歷。
小米
面試體驗 ★★★
小米麵試體驗不是很好,一開始HR溝通是面試小米的IOT部門,從投簡歷到面試大概經歷了一個星期。
一面: 體驗很好,面試官很謙和,問題也很有質量,大概持續了1小時20分鐘,面試官對我也比較滿意。
二面: 二面跟一面差不多又過了一個多星期,這個效率真是有點差勁,關鍵是二面是小米電視部門來面的,跟之前的IOT不相關了。
三面: 還是小米電視的人,聊了一堆專案相關的內容。
其實我是一個老米粉,從米1一直到米10,一路走來對小米這家公司是有情懷的,但是有點搞不懂為啥面試鏈路是這樣的。希望多多改進啊,面試體檢有點差。
作業幫(每天晚上9點以後下班)
面試體驗 ★★★
這個公司是同事推薦的,因此面試流程相對迅速,第一天內推,第二天面試,面試分為三輪。
一面:同事面,問的範圍比較廣,面試官也比較善於溝通,很愉快。
二面:leader面,這個leader就是我同事的前同事,之前360搞瀏覽器核心的,不知道為啥搞Android了,性格相對比較悶,溝通反饋很差,溝通效率比較低。
為了緩解溝通尷尬,我儘量將問題回答對映到生活場景,還被他懟了,說:技術不用舉例子。。。。臥槽。。。
百度
面試體驗 ★★★
這個公司是聽說也是內推,但是我不知道是誰推的,一共四面
一面: 影片面,面試官非常nice,比較謙和。
二面: 提前約定的是2點開始,結果郵件就發成了3點,後來溝通改回了2點,結果我到了以後讓我等了半個多小時,這也就算了。面試官下來的時候應該是沒睡醒,所以面試帶有情緒。
回答完問題以後面試官習慣性問你 你覺得你說的對麼?有不太確定的我一般喜歡反問下 有沒有更好的解決方案,這個面試官真是一個方案都沒給,所以這沒啥可聊的。
百度這個面試體驗真的比較差,也許是我運氣不好遇到了比較差的人,但是這對於一個面試者產生的印象都會掛在百度公司上,誒。。。真難。。
阿里巴巴
面試體驗 ★★★★★
阿里巴巴,我面試的是阿里媽媽部門,是阿里比較賺錢的部門,一共5輪面試。
一面: 純演算法,大概寫了一個半小時,3道演算法題,每一行程式碼都評審解讀,面試官就是我現在的同事,上兩天我已經嘲諷他了,並且勸他以後要懂得善良。
二面: Android相關,面試官涉獵比較廣,聊了很多,最後聊到面試官說,我們今天差不多了已經一個半小時了,等你入職了我們繼續聊。
三面: leader面,這個leader不是吹,太特麼能砍了, 從生活到工作,到技術,到發展,整體扯了一遍,我倆又幹了一個半小時。
四面: P9大Boss面,這個主要聊了一些發展規劃相關的,聊了半小時左右。
五面: HR面,大概聊了1小時左右,主要問了一些之前公司的為人處事方式,還有一些基本資訊,介紹了阿里的政策制度,福利待遇等等。
阿里的Leader真的是非常有誠意,由於阿里Offer審批流程比較長,所以中途給我打了7-8個電話,每次都聊很多,讓我放心,因此最後我決定退掉其他所有Offer,加入阿里巴巴大家庭。
面試思路
面試過程即是一個 自我考察 的過程,同是也是一個 非常講究方式方法 的過程,接下來透過這兩個方面來展開闡述。
自我考察
技術實力是面試的大前提,你需要非常清晰的瞭解自己,瞭解自己所要面試崗位,這是決定面試是否成功的先決條件。
比如我工作時間4年多,我要面試的崗位是高階Android工程師,那我這個自身素質是否能滿足面試崗位所要求的條件?
其實這一點在我剛剛面試的時候也是拿不準的,因為在公司已經3年,這段時間對外界的發展其實是不瞭解的,所以我做了以下幾件事。
1、把自己負責的專案業務進行整體總結。 2、把專案中用到的所有技術進行整體總結。 3、複習常用 框架/系統 原始碼,比如Glide,Okhttp,Reteofit,Activity啟動流程,Hander,HashMap,鎖等等常用的原始碼原理。 4、檢視BOSS,拉勾對應崗位所要求的技能。
方式方法
面試環節中即便你技術很好,專案經驗很豐富,你也不乏有知識盲區,也有未能顧及的技術點,當這些點集中出現的時候你面試的成功率也會大大降低。所以針對面試我總結了以下幾個流程。
1、面試分為3個階段(初期,中期,高offer期)
初期 主要透過(BOSS,拉勾投遞即可),初期主要投遞小公司,這部分公司有兩個目的。 第一是相互交流技術點,不斷完善自己的技術覆蓋度。 第二是瞭解當前市場的需求點。
中期 主要透過獵頭去投遞,這個階段主要投遞中場,這類公司要求技術深度會比初期公司要深一些,演算法的考察會加重,同時面試官的技術水平也會偏高一些,甚至有的中場面試難度會達到大場的水平,這個中期儘可能的持續長一些,非常有利於後續的面試經驗總結。
高offer期 這個階段主要投遞你的目標企業,切記面試優先順序從最不意向的公司開始投遞。投遞的方式也是透過獵頭,這樣可以加快面試流程。以上的初中期更多的是完善你的技術覆蓋度,以及你的面試感。為了是讓你以最好的姿態去挑戰你最想去的企業,這樣一路走來你面試的成功率會大大提高。
2、溝通能力
面試除了考察你的技術實力以外,還有一點是比較重要的,那就是溝通能力,你面試的崗位越高,對你溝通能力的要求也就越高。
溝通是特別重要的一個點,這決定你是否能非常清晰的把你所知所想完整的闡述出來。
我們面試的過程就是自我營銷的一個過程,所以當你覺得自己溝通能力不是很強的時候,那麼你就需要定向的去總結幾個點。
比如 一個出色的自我介紹, 專案中遇到的最難解決的一個問題, 如果讓你設計一個架構你應該怎麼設計, 簡單的介紹一下你負責的業務 等....
3、面試頻率
面試週期我建議15-30天。
初期 小公司,我建議一天面試3個,如果有精力的話可以4個,這裡需要注意一點,小公司有很多不靠譜的,比如還用Eclipse的,比如上來還沒問技術就先打擊你的,這種可以找機會離開,不要浪費時間。面試時長建議控制在60分鐘以內,不要太摳細節。有條件的可以開啟錄音器,方便結束後晚上覆盤。你覆盤3-4天的時候你會發現面試內容開始大批次重複了。
中期 這個時期我建議一天最多2個公司,因為中場一般都是3輪或者以上的面試,有一部分是一路走完的。所以你需要給二面三面留出時間以方便充分溝通。千萬不要一面完就打算走,因為一二三面所考察的完全不同,一面主要是基礎,二面主要是框架/原始碼/簡歷裡的技術,三面一般會聊專案,方案或者思路。
高offer期 這個環節需要你按實際情況伺機而動,因為有的大廠是一條龍面完,有的是每一次面試都單獨約,但是大廠一般的流程都比較慢,都在1周以上才能完成整場面試。一般都在4-6面之間。但是建議一天最多安排2場面試,這個面試時長不確定性因素會比較多。如果面試官不是很討厭你,一般都會在60分鐘以上。
各位朋友,一定記得面試是一個雙向選擇的過程,面試者和招聘方一定是站在平等的溝通條件下進行面試溝通的,在此過程中雙方都不要帶有情緒或者有色眼鏡去看待對方。
都帶著誠意去溝通才是最和諧最節約時間的面試過程,最後希望正在面試的你能順利找到心意的工作。
技能儲備
Android學習是一條漫長的道路,我們要學習的東西不僅僅只有表面的 技術,還要深入底層,弄明白下面的 原理,只有這樣,我們才能夠提高自己的競爭力,在當今這個競爭激烈的世界裡立足。
如果你覺得自己學習效率低,缺乏正確的指導,可以參考下下面分享我多年工作以來收集整理的學習路線,給大家做個參考:
1、確定好方向,梳理成長路線圖
不用多說,相信大家都有一個共識:無論什麼行業,最牛逼的人肯定是站在金字塔端的人。所以,想做一個牛逼的程式設計師,那麼就要讓自己站的更高,成為技術大牛並不是一朝一夕的事情,需要時間的沉澱和技術的積累。
關於這一點,在我當時確立好Android方向時,就已經開始梳理自己的成長路線了,包括技術要怎麼系統地去學習,都列得非常詳細。
知識梳理完之後,就需要進行查漏補缺,所以針對這些知識點,我手頭上也準備了不少的電子書和筆記,這些筆記將各個知識點進行了完美的總結。
2、看影片進行系統學習
前幾年的Crud經歷,讓我明白自己真的算是菜雞中的戰鬥機,也正因為Crud,導致自己技術比較零散,也不夠深入不夠系統,所以重新進行學習是很有必要的。我差的是系統知識,差的結構框架和思路,所以透過影片來學習,效果更好,也更全面。關於影片學習,個人可以推薦去B站進行學習,B站上有很多學習影片,唯一的缺點就是免費的容易過時。
另外,我自己也珍藏了好幾套影片,有需要的我也可以分享給你。
3、透過原始碼來系統性地學習
只要是程式設計師,不管是Java還是Android,如果不去閱讀原始碼,只看API文件,那就只是停留於皮毛,這對我們知識體系的建立和完備以及實戰技術的提升都是不利的。
“程式語言是程式設計師的表達的方式,而架構是程式設計師對世界的認知”。所以,程式設計師要想快速認知並學習架構,讀原始碼是必不可少的。閱讀原始碼,是解決問題 + 理解事物,更重要的:看到原始碼背後的想法;程式設計師說:讀萬行原始碼,行萬種實踐。
真正最能鍛鍊能力的便是直接去閱讀原始碼,不僅限於閱讀各大系統原始碼,還包括各種優秀的開源庫。
4、簡歷準備充分:簡歷+社招解答+經典HR面試解析
可以去知乎上面搜搜別人寫的有關簡歷的帖子,怎麼準備,吸引hr, 突出自己的優點和能力,或者讓朋友幫你看看簡歷有沒有問題,比如過於簡單或者浮誇,沒有重點等。
儘量把你的亮點總結成一句簡練的話,再加上數字來說明它的影響和意義。
其次在簡歷裡中加入了可互動、可展示的內容,更能顯出你的能力與眾不同。
有很多人經常也會遇到很多關於簡歷製作,職業困惑、HR經典面試問題回答等有關面試的問題。同樣我也蒐集整理了全套簡歷製作、金三銀四社招困惑、HR面試等問題解析,有疑問,可以提供專業的解答。
5、刷題備戰,直通大廠
面試的前一週時間內,就可以開始刷題衝刺了。請記住,刷題的時候,技術的優先,演算法的看些基本的,比如排序等即可,而智力題,除非是校招,否則一般不怎麼會問。
關於面試刷題,我個人也準備了一套系統的面試題,幫助你舉一反三:
以上這些資料都已打包整理完畢,點選 可以看到全部內容。或者點選 【 】 檢視獲取方式。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69983917/viewspace-2788099/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 裸辭兩個月,4面終入職騰訊,半年後我終於把騰訊 Android 高頻面試真題及解析整出來了Android面試
- Android春招面經:二本渣院面試網易被拒,最終終於拿到騰訊+阿里offer(已入職騰訊)Android面試阿里
- 五年Java開發經驗,裸辭準備半月面試阿里,阿里巴巴卻“不講武德”居然面了我7輪,歷經千辛萬苦終於斬獲P7及OfferJava面試阿里
- 大廠面經:三非背景、6輪面試,終獲阿里Offer!面試阿里
- 30K 成功入職京東:拿到京東 offer 經驗分享「面試經歷 + 面試真題」面試
- 阿里校招Android崗面經分享,Offer入手但委婉拒收阿里Android
- 想入職阿里的Java開發者必看,阿里巴巴面試官實戰經驗分享!阿里Java面試
- 慢慢細談Android 面試的細節Android面試
- 又跳槽!3年java經驗offer收割機的面試心得Java面試
- android開發面試經典收藏Android面試
- Android大廠面試經驗分享Android面試
- Android開發社招面試經驗:深入解析android核心元件和應用框架,3面直接拿到offerAndroid面試元件框架
- 四面美團,收割 offer
- 程式設計師裸辭三個月,終於拿到大廠offer!網友:不應該!程式設計師
- 從面試連跪到收割offer,回顧我的春招面試歷程(研發崗位)面試
- 頭條Android客戶端開發面經分享Android客戶端
- 當裸辭遇到面試難,這些面試題你需要了解一下面試題
- 邦芒面試:12個能為面試加分的細節面試
- Android 開發網易面試涼涼經,面試官:基礎不牢,技術不夠深入,無緣offerAndroid面試
- 阿里,網易遊戲,騰訊,smartx的offer面試分享阿里遊戲面試
- 當裸辭遇到了面試難,你需要了解一下這些面試題面試題
- 從谷歌面試翻車到offer收割的心路歷程谷歌面試
- 膜拜大牛!3年Android開發工程師面試經驗分享,最全的BAT大廠面試題整理Android工程師BAT面試題
- 開發者招聘節 | 2019阿里巴巴技術面試題分享(陸續放出)阿里面試題
- 偽經驗;不稱職面試官的面試經面試
- 阿里巴巴7輪面經-已offer阿里
- 一個字,絕!跳槽離職阿里7月底開始面試,面了24+公司,斬獲17張意向Offer!阿里面試
- 分享幾個重要的Android面試題Android面試題
- 騰訊架構分享:java開發要掌握的50個效能優化細節(面試漲薪)架構Java優化面試
- 邦芒面試:把握10大面試細節,助你順利拿下心儀職位面試
- 今年我經歷了裸辭,自由職業,再就業就業
- 貝殼/快手/頭條面試經驗分享,均已拿offer!(內附1612頁面試指南)面試
- IT求職應注意哪些細節?面試前該如何準備?求職面試
- 阿里P8耗時九個月整理的Java面試核心筆記,終於來了阿里Java面試筆記
- Java開發經典面試題分享,建議收藏Java面試題
- 2020最新位元組跳動面試經驗分享,已拿到offer (4輪技術面+hr面)面試
- 面試兩個月,騰訊新浪已offer阿里hr面,爆肝寫下這份面試總結面試阿里
- 裸辭兩個月,海投一個月,從Android轉戰Web前端的求職之路AndroidWeb前端求職