歷時(shí)2個(gè)月喜提2字節(jié)安卓崗offer面試經(jīng)驗(yàn)分享

前言

從2020年11月開始面試準(zhǔn)備到2020年最后一天31號晚上7點(diǎn)收到短信offer,歷時(shí)兩個(gè)月,在熬夜猝死邊緣瘋狂試探的我,終于等來我夢寐以求的“跨年禮物”。

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

對于這部電影的看法,僅是個(gè)人觀點(diǎn),不喜勿噴。閑話好像說的有點(diǎn)多了,不過希望朋友們理解下我想跟大家分享這份喜悅的心情?;貧w正題,面經(jīng)分享!希望對大家有借鑒意義和幫助。2個(gè)月的時(shí)間總共是面試了9家,(2小,4中,3大廠),小的都拿下了(壓根兒沒想去,主要是面試練練手,檢驗(yàn)下自己的水平),4中里3個(gè)一輪游,1個(gè)三輪游,3個(gè)大廠最后拿到了字節(jié)的offer,阿里的一面就掛了,騰訊的到了三面。

大小廠的面試要點(diǎn)簡要

  • 小公司會比較偏重于業(yè)務(wù),面試上也偏重業(yè)務(wù)(但也少不了算法題,字節(jié)就每輪必問),比如做了什么,大概方案,用了哪些庫,庫的原理。這些基本上會集中在圖片處理,網(wǎng)絡(luò)封裝,自定義view這幾個(gè)部分。
  • 大廠會從業(yè)務(wù)入手,遞進(jìn)深入到原理及相關(guān)知識點(diǎn),尤其集中在原理部分,這里對平時(shí)源碼閱讀有一定要求。或者直接問對xxx源碼有沒有了解。比如一個(gè)handler機(jī)制,因其涉及的地方特別多而且很容易展開,想完美答好,真的不是一次兩次就能行的。

建議每次面試完,都及時(shí)對面試內(nèi)容進(jìn)行回憶記錄,當(dāng)前這里不是為了泄題漏題,以后吹牛逼,這個(gè)沒有任何意義。目的是進(jìn)行復(fù)盤,打磨自己的回答。這也是我為什么在面試大廠之前會先去小、中場先去試水以及寫下這篇面經(jīng)分享的原因。其實(shí)在前半個(gè)月我就已經(jīng)面完了6個(gè)小、中場,也正是在中廠這環(huán)節(jié)的挫敗,讓我余下的一個(gè)多月都在做復(fù)盤、查漏補(bǔ)缺,為面試大廠做準(zhǔn)備。

簡歷書寫

強(qiáng)烈建議,把自己的強(qiáng)項(xiàng),亮點(diǎn)加粗注明放在簡歷前面,大家都很忙,也很煩躁,讓人一眼就看到優(yōu)點(diǎn),對雙方都友好。因?yàn)槲覍ndroid性能優(yōu)化方面感興趣,平時(shí)工作也花了很多時(shí)間在這里,所以我會在簡歷上突出說明,我做了內(nèi)存優(yōu)化,熟練掌握使用xxx,內(nèi)存性能提升xxx(因?yàn)檫@里的內(nèi)容是可控的,如果面試官對你感興趣,這里的回答你也是能提早準(zhǔn)備好的)。

項(xiàng)目經(jīng)歷如何寫?建議按照是什么,做了啥,有啥數(shù)據(jù)指標(biāo)佐證的方式去寫。比如,我做了xx項(xiàng)目,負(fù)責(zé)xx模塊,使用了xxx框架,可配合xx做xxx,效率提高xxx%這樣子。

以上僅為自己的個(gè)人經(jīng)驗(yàn),僅供參考,接下來給大家分享下我的字節(jié)三面技術(shù)面和騰訊三面的面試題分享(阿里一面就掛了,就不獻(xiàn)丑了)。

字節(jié)一面

1.先聊簡歷。
2.聊性能優(yōu)化方面的問題,我這邊體系化展開講卡頓,瘦身,內(nèi)存,crash等方面的優(yōu)化經(jīng)驗(yàn)。
3.sychronized,volatile區(qū)別?
(這里可以體系化的回答,主要從JMM角度去回答,最后深入到字節(jié)碼層面的區(qū)別。因?yàn)樘岬搅诵揎椀姆秶胁顒e,就有了下一題。)
4.對于鎖的對象的不同,效果會有什么差別。
5.講一下Handler機(jī)制。
(這個(gè)問題問得太多了,一定要去看一回源碼。重點(diǎn)答的是MessageQueue這塊,包括什么時(shí)候空閑,阻塞。發(fā)散講了線程相關(guān)的ThreadLocal,還有IdleHandler)
6.出了一個(gè)設(shè)計(jì)題,當(dāng)你的服務(wù)商出現(xiàn)問題,設(shè)計(jì)一個(gè)網(wǎng)絡(luò)請求可用性的兜底方案。
(大概從HttpDNS,域名容災(zāi)等方面回答吧。)
7.設(shè)計(jì)一個(gè)方案,apk已經(jīng)發(fā)出去了,java代碼是最新,但是分包下發(fā)的so文件是舊版本,如何做一個(gè)兼容方案,保證兼容可用。
(這里沒答好,我也忘了怎么答的了。)
8.Java類加載機(jī)制。
(這是個(gè)基礎(chǔ)概念題,沒答好,回答的雙親加載機(jī)制。
然后引出PathClassLoader,DexClassLoader的區(qū)別,一個(gè)dex的加載到一個(gè)java類的加載過程。)
9.一道算法題。

字節(jié)二面

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

字節(jié)三面

1.裝飾器模式,適配器模式區(qū)別。舉個(gè)Android或java里的應(yīng)用例子。
2.單例的優(yōu)缺點(diǎn)。
3.架構(gòu)有做過么。
4.說一下項(xiàng)目,項(xiàng)目中最能體現(xiàn)你能力的事情。
5.平時(shí)怎么學(xué)習(xí)的。
6.以后的職業(yè)規(guī)劃
7.離職原因
8.插件化,做過插件化么,了解的主流方案?
9.算法題。

騰訊一面

1.mmap + native 日志優(yōu)化?
2.廣播和 EventBus 的區(qū)別?
3.常用設(shè)計(jì)模式你了解哪些?
4.跨進(jìn)程通信有哪些?
5.簡單講講 binder 驅(qū)動吧?
6.跨進(jìn)程傳遞大內(nèi)存數(shù)據(jù)如何做?
7.說說 ConcurrentHashMap 的實(shí)現(xiàn)原理說下,初始化大小是多少?
8.啟動優(yōu)化怎么優(yōu)化?
9.你寫的 rxpay 和 rxlogin 具體怎么實(shí)現(xiàn)的?
10.kotlin + fullter 方面的

騰訊二面

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

騰訊三面

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

最后

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

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

img

Android復(fù)習(xí)手冊目錄截圖

img

Android中高級面試題部分內(nèi)容截圖

整理不易,隨手點(diǎn)贊或評論私信666找我獲取

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

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

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

  • 久違的晴天,家長會。 家長大會開好到教室時(shí),離放學(xué)已經(jīng)沒多少時(shí)間了。班主任說已經(jīng)安排了三個(gè)家長分享經(jīng)驗(yàn)。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,814評論 16 22
  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友。感恩相遇!感恩不離不棄。 中午開了第一次的黨會,身份的轉(zhuǎn)變要...
    余生動聽閱讀 10,824評論 0 11
  • 可愛進(jìn)取,孤獨(dú)成精。努力飛翔,天堂翱翔。戰(zhàn)爭美好,孤獨(dú)進(jìn)取。膽大飛翔,成就輝煌。努力進(jìn)取,遙望,和諧家園??蓯塾巫?..
    趙原野閱讀 3,467評論 1 1
  • 在妖界我有個(gè)名頭叫胡百曉,無論是何事,只要找到胡百曉即可有解決的辦法。因?yàn)槭侵缓偞蠹乙杂瀭饔灲形摇皟A城百曉”,...
    貓九0110閱讀 3,710評論 7 3

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