猝死警告!熬夜2個月喜提26k字節安卓崗offer面經分享,非禿勿入!

前言

從2020年11月開始面試準備到2020年最後一天31號晚上7點收到短信offer,歷時兩個月,在熬夜猝死邊緣瘋狂試探的我,終於等來我夢寐以求的“跨年禮物”。

“日尼瑪,退錢”,《溫暖的抱抱》電影前10分鐘的開場劇情,讓我不禁想着該如何說服朋友一起離場,卻被自己短信鈴聲拉回了思緒,“應該調成靜音的”。無聊的劇情本就讓整個電影院變得十分寂靜,趕緊把手機調成靜音,翻閱短信一看擡頭是“字節跳動”的短信offer。至此,電影劇情也開始笑點頻出,“嗯,是一部不錯的爆米花喜劇電影”電影結束後和朋友議論道。

對於這部電影的看法,僅是個人觀點,不喜勿噴。閒話好像說的有點多了,不過希望朋友們理解下我想跟大家分享這份喜悅的心情。迴歸正題,面經分享!希望對大家有借鑑意義和幫助。2個月的時間總共是面試了9家,(2小,4中,3大廠),小的都拿下了(壓根兒沒想去,主要是面試練練手,檢驗下自己的水平),4中裏3個一輪遊,1個三輪遊,3個大廠最後拿到了字節的offer,阿里的一面就掛了,騰訊的到了三面。

大小廠的面試要點簡要

  • 小公司會比較偏重於業務,面試上也偏重業務(但也少不了算法題,字節就每輪必問),比如做了什麼,大概方案,用了哪些庫,庫的原理。這些基本上會集中在圖片處理,網絡封裝,自定義view這幾個部分。

  • 大廠會從業務入手,遞進深入到原理及相關知識點,尤其集中在原理部分,這裏對平時源碼閱讀有一定要求。或者直接問對xxx源碼有沒有了解。比如一個handler機制,因其涉及的地方特別多而且很容易展開,想完美答好,真的不是一次兩次就能行的。

建議每次面試完,都及時對面試內容進行回憶記錄,當前這裏不是爲了泄題漏題,以後吹牛逼,這個沒有任何意義。目的是進行復盤,打磨自己的回答。這也是我爲什麼在面試大廠之前會先去小、中場先去試水以及寫下這篇面經分享的原因。其實在前半個月我就已經面完了6個小、中場,也正是在中廠這環節的挫敗,讓我餘下的一個多月都在做覆盤、查漏補缺,爲面試大廠做準備。

簡歷書寫

強烈建議,把自己的強項,亮點加粗註明放在簡歷前面,大家都很忙,也很煩躁,讓人一眼就看到優點,對雙方都友好。因爲我對Android性能優化方面感興趣,平時工作也花了很多時間在這裏,所以我會在簡歷上突出說明,我做了內存優化,熟練掌握使用xxx,內存性能提升xxx(因爲這裏的內容是可控的,如果面試官對你感興趣,這裏的回答你也是能提早準備好的)。

項目經歷如何寫?建議按照是什麼,做了啥,有啥數據指標佐證的方式去寫。比如,我做了xx項目,負責xx模塊,使用了xxx框架,可配合xx做xxx,效率提高xxx%這樣子。

以上僅爲自己的個人經驗,僅供參考,接下來給大家分享下我的字節三面技術面和騰訊三面的面試題分享(阿里一面就掛了,就不獻醜了)。

字節一面

1.先聊簡歷。
2.聊性能優化方面的問題,我這邊體系化展開講卡頓,瘦身,內存,crash等方面的優化經驗。
3.sychronized,volatile區別?
(這裏可以體系化的回答,主要從JMM角度去回答,最後深入到字節碼層面的區別。因爲提到了修飾的範圍有差別,就有了下一題。)
4.對於鎖的對象的不同,效果會有什麼差別。
5.講一下Handler機制。
(這個問題問得太多了,一定要去看一回源碼。重點答的是MessageQueue這塊,包括什麼時候空閒,阻塞。發散講了線程相關的ThreadLocal,還有IdleHandler)
6.出了一個設計題,當你的服務商出現問題,設計一個網絡請求可用性的兜底方案。
(大概從HttpDNS,域名容災等方面回答吧。)
7.設計一個方案,apk已經發出去了,java代碼是最新,但是分包下發的so文件是舊版本,如何做一個兼容方案,保證兼容可用。
(這裏沒答好,我也忘了怎麼答的了。)
8.Java類加載機制。
(這是個基礎概念題,沒答好,回答的雙親加載機制。
然後引出PathClassLoader,DexClassLoader的區別,一個dex的加載到一個java類的加載過程。)
9.一道算法題。













字節二面

1.聊簡歷。
2.性能優化,展開講了卡頓,內存。
3.數據結構的題,hashCode的擾動算法,涉及到一個數字,31,這個31是怎麼來的?
4.類的static屬性字段,比如 public static int a = 1,被賦值幾次?
(這個需要對類的加載機制有了解。)
5.多個Activity共同bind一個service,一個Activity destory,問service的情況。
(這裏就是問service的生命週期,考察bind跟start的區別。)
6.裝飾器模式,跟代理模式的區別。
(考察對常用的設計模式)
7.okhttp的緩存邏輯實現。
(我以爲是問的 鏈接緩存跟io緩存,我回答的是連接池複用跟 okio的io複用。後來提醒是cache,就回答CacheInterceptor,及其源碼實現。)
8.SharedPreference的commit ,apply區別。
9.SharedPreference的其性能問題。
(apply的anr是有一個字段,會block住主線程,需要清理queuedWork隊列。)
10.SharedPreference線程安全性,還有是否進程安全,SharedPreference鎖的對象是誰?
11.synchornized鎖對象,彙編實現。volatile的彙編實現。
12.volatile 修飾 boolean能保證原子性麼?
13.Android有哪幾種動畫。
14.設計題,設計一個埋點數據上報庫,需要哪幾個模塊,提供哪樣的接口。
15.算法題,生產消費者模型。
16.ConcurrentHashMap的相關。
(包括實現原理,put方法,樹化,擴容,繼承了誰,擴容的時候,其餘桶怎麼感知。)
17.安卓打包簽名v1,v2,v3的區別。





















字節三面

1.裝飾器模式,適配器模式區別。舉個Android或java裏的應用例子。
2.單例的優缺點。
3.架構有做過麼。
4.說一下項目,項目中最能體現你能力的事情。
5.平時怎麼學習的。
6.以後的職業規劃
7.離職原因
8.插件化,做過插件化麼,瞭解的主流方案?
9.算法題。







騰訊一面

1.mmap + native 日誌優化?
2.廣播和 EventBus 的區別?
3.常用設計模式你瞭解哪些?
4.跨進程通信有哪些?
5.簡單講講 binder 驅動吧?
6.跨進程傳遞大內存數據如何做?
7.說說 ConcurrentHashMap 的實現原理說下,初始化大小是多少?
8.啓動優化怎麼優化?
9.你寫的 rxpay 和 rxlogin 具體怎麼實現的?
10.kotlin + fullter 方面的








騰訊二面

1.單例設計模式都寫寫,靜態內部類是怎麼保證線程安全的?
2.synchronized 底層實現原理,ReentrantLock 公平鎖與非公平鎖。
3.主線程等待所有線程執行完畢,再執行某個特定任務怎麼實現?原理和源碼看過沒?
4.自定義 view 的一般流程,要注意些什麼如何優化,點擊事件和長按時間分別是怎麼實現的?
5.四種啓動模式,在源碼分析中的原理是怎樣的?
6.講講 bindService 的過程,你當初是怎麼優化後臺服務進程的?
7.開發中你都用到了哪些設計模式?說說當時具體的場景。爲什麼你要用方法工廠,另外兩種呢?
8.RxJava 在使用過程中碰到了某些不友好的錯誤一般怎麼解決?發現了內存泄露一般怎麼解決分析,有沒有9.碰到過系統服務內存泄露的問題?
10.你們用的 okhttp ?那你有沒有做過一些網絡優化呢?比如弱網環境。
11.給你個數 1 吧,比如 1000011 裏面有幾個 1 ?
12.快排瞭解不?最壞的情況是怎樣?如果有大量重複數據怎麼優化?









騰訊三面

1.講講 handler 的底層實現原理?
2.說說你做的日誌記錄優化?
3.你看過 binder 驅動的源碼,說說他的內存映射過程,說說客戶端等待服務端處理返回的流程,如果要跨進程傳遞大內存數據你具體會怎麼做?簡單寫一寫吧。
4.在公司做過哪些優化?
5.開發過程中遇到的一些最難解決的問題?
6.提到了動態修復替換加載 so ,那你知道怎麼修復 class 嗎?怎麼修復資源呢?
7.還有什麼要問我的?





最後

寫下這篇文章一是分享自己入職大廠的喜悅,真正意義上靠着自己的努力完成了人生的第一個“夢”。二是爲這個過程做一個覆盤和記錄,以此激勵自己“更上一層樓”。我覺得這樣的一次經歷,一次“追夢”的經歷,給了我相信自己的勇氣,我不知道要是這次的“跳槽”要是沒有拿到大廠offer會怎麼樣?但我慶幸邁出了這一步,將這一變成了“已知數”,而只是心中的喃喃自語“我應該做不到”。

我想我可能是幸運的,同時未來也還有很長一段路要走,畢竟996的福報也是要拿“命”來換的(最近猝死新聞太多,不禁寒顫,各位朋友保重身體)。另外最後的最後,我覺得這次經歷中最爲重要,最具有分享意義的一個階段,就是中廠的面經的挫敗,從而覆盤、查漏補缺的一個過程。我將2個月期間所有面試真題做了歸納整理並收集資料做了參考解析,還包括一些學習筆記分享,做成了一個複習手冊。如果有需要的朋友,整理不易,請隨手點贊+任意評論後,點擊此處自取!
複習手冊目錄

Android中高級面試題部分內容截圖

整理不易,隨手點贊+任意評論後,點擊這裏此處自取哦

最後請收下我這遲來的新年祝福,祝大家在新的一年裏都能拿到自己理想的offer,身體倍兒棒!萬事如意,心想事成!

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