先說一下自己的個(gè)人情況,18屆應(yīng)屆生,通過校招進(jìn)入到了蘑菇街,然后一待就待了差不多2年多的時(shí)間,可惜的是今年4月份受疫情影響遇到了大裁員,而我也是其中一員。好在早有預(yù)感,提前做了準(zhǔn)備,之前一直想去字節(jié)跳動(dòng),年前就已經(jīng)在做準(zhǔn)備了,這場持久戰(zhàn)拉得很長,也最終以7個(gè)月的時(shí)間取得勝利。在踏入字節(jié)跳動(dòng),辦理入職手續(xù)的那一天,作為一個(gè)男子漢,確實(shí)是落淚了。特分享一波我的真實(shí)經(jīng)歷,共勉。
其實(shí)一個(gè)公司要進(jìn)行裁員通常都會(huì)出現(xiàn)一些前期征兆:業(yè)務(wù)發(fā)展遇到較大瓶頸,并且難以突破、頻繁調(diào)整戰(zhàn)略目標(biāo)、高管開始陸續(xù)離職、開始嚴(yán)抓考勤、開始部分同事勸退,如果你現(xiàn)在的公司也開始出現(xiàn)這些癥狀,別想了,是時(shí)候開始做準(zhǔn)備了。
以下內(nèi)容涉及4大環(huán)節(jié):
環(huán)節(jié)一:制定計(jì)劃,做足準(zhǔn)備
環(huán)節(jié)二:實(shí)施計(jì)劃,準(zhǔn)備實(shí)戰(zhàn)
環(huán)節(jié)三:制定簡歷,投遞簡歷
環(huán)節(jié)四:字節(jié)跳動(dòng)面試經(jīng)歷,真實(shí)記錄還原
四個(gè)環(huán)節(jié)中,內(nèi)容中包含了很多文檔資料,由于文章篇幅有限,全整理在文檔內(nèi),包括Android學(xué)習(xí)資料、學(xué)習(xí)筆記、算法寶典、面試題合集、思維導(dǎo)圖(Xmind)等,需要這些資料的朋友可簡信我【字節(jié)跳動(dòng)】自行獲取下載方式~
1.梳理知識(shí)體系
現(xiàn)在大部分的程序員的現(xiàn)狀都特別奇怪,自己所掌握的知識(shí)是比較零散的,或者對(duì)某個(gè)知識(shí)點(diǎn)只知其表不知其里,其實(shí)這都是對(duì)自己掌握的技術(shù)內(nèi)容沒有進(jìn)行一個(gè)系統(tǒng)的梳理,所以制定計(jì)劃的第一步就是要梳理好自己的知識(shí)體系。關(guān)于梳理知識(shí)體系,要做到以下2點(diǎn):
你是否了解這個(gè)知識(shí)點(diǎn)的why、where、how
你能否能將這些概念和知識(shí)能簡單通俗易懂的講給另一個(gè)完全不理解的人聽懂
1.架構(gòu)師筑基必備技能(基礎(chǔ)):深入Java泛型+注解深入淺出+并發(fā)編程+數(shù)據(jù)傳輸與序列化+Java虛擬機(jī)原理+反射與類加載+動(dòng)態(tài)代理+高效IO+Kotlin項(xiàng)目實(shí)戰(zhàn)
2.Android高級(jí)UI與FrameWork源碼:高級(jí)UI晉升+Framework內(nèi)核解析+Android組件內(nèi)核+數(shù)據(jù)持久化
3.360°全方面性能調(diào)優(yōu):設(shè)計(jì)思想與代碼質(zhì)量優(yōu)化+程序性能優(yōu)化+開發(fā)效率優(yōu)化
4.解讀開源框架設(shè)計(jì)思想:熱修復(fù)設(shè)計(jì)+插件化框架解讀+組件化框架設(shè)計(jì)+圖片加載框架+網(wǎng)絡(luò)訪問框架設(shè)計(jì)+RXJava響應(yīng)式編程框架設(shè)計(jì)+IOC架構(gòu)設(shè)計(jì)+Android架構(gòu)組件Jetpack
5.NDK模塊開發(fā):NDK基礎(chǔ)知識(shí)體系+底層圖片處理+音視頻開發(fā)+智能家居串口編程實(shí)戰(zhàn)
6.架構(gòu)師煉成實(shí)戰(zhàn):架構(gòu)設(shè)計(jì)+網(wǎng)上商城項(xiàng)目實(shí)戰(zhàn)+新聞客戶端項(xiàng)目實(shí)戰(zhàn)+多格式播放器項(xiàng)目實(shí)戰(zhàn)+Gradle自動(dòng)化項(xiàng)目實(shí)戰(zhàn)
7.微信小程序:小程序介紹+UI開發(fā)+API操作+微信對(duì)接+小程序項(xiàng)目實(shí)戰(zhàn)
8.Hybrid 開發(fā)與Flutter:Html5項(xiàng)目實(shí)戰(zhàn)+Flutter
系統(tǒng)知識(shí)圖
該如何學(xué)習(xí)算法?
程序員必須掌握的算法有哪些?
Leetcode刷題,到底穩(wěn)嗎?
關(guān)于算法部分,其實(shí)要準(zhǔn)備的細(xì)節(jié)內(nèi)容非常多,所以我也花了不少心思整理了一份關(guān)于算法方面的寶典,這份資料我對(duì)算法的認(rèn)識(shí)以及我的學(xué)習(xí)方法,除了Leetcode以外,字節(jié)跳動(dòng)喜歡問的核心算法題也進(jìn)行一道一道的深度解析。
3.收集整理面試題
除了算法部分以外,要想在實(shí)際面試中做到心中有數(shù),大廠的常問的一些面試題或知識(shí)點(diǎn)也很有必要看一看。我特意搜集整理了近3年來一線互聯(lián)網(wǎng)公司的面試題(技術(shù)部分),會(huì)發(fā)現(xiàn)這些面試題實(shí)際問的大同小異,但考察你的內(nèi)容和技術(shù)都是有不同的目的性的,對(duì)這一部分的分析,我也有寫在答案里(詳細(xì)見文檔)。
前期準(zhǔn)備的這些需要一步一步行動(dòng)起來了,但除了以上肯定是遠(yuǎn)遠(yuǎn)不夠的,面試官除了技術(shù)相關(guān)的問題,必問的就是項(xiàng)目相關(guān)的內(nèi)容,那項(xiàng)目相關(guān)內(nèi)容需要怎么來準(zhǔn)備呢?除了自己的實(shí)戰(zhàn)經(jīng)驗(yàn)的積累以外,其實(shí)我們還是可以閱讀一些技術(shù)大牛寫出來的實(shí)戰(zhàn)經(jīng)驗(yàn)及筆記。如:Android高級(jí)UI與FrameWork源碼筆記、架構(gòu)師筑基必備技能技術(shù)筆記等。
簡歷對(duì)于程序員來說是非常重要的一個(gè)環(huán)節(jié),一份優(yōu)秀的簡歷往往能夠幫助我們敲開一線互聯(lián)網(wǎng)大廠的大門,簡歷部分我就不做過多的贅述。可以參考《程序員找工作指南》,另外我可以提供18種優(yōu)秀的簡歷模板。
下載好之后,根據(jù)模板來制定自己的簡歷,接下來就可以順利投遞啦!投遞簡歷一定要參考好匹配值,建議最好找熟人內(nèi)推。
字節(jié)跳動(dòng)一面:
第一面我覺得應(yīng)該是基礎(chǔ)面,重點(diǎn)考察的是自己技術(shù)的廣度 和一些技術(shù)的掌握情況,一面小哥哥也沒有深究于某個(gè)特定的點(diǎn),面試時(shí)間大約1個(gè)小時(shí)。
自我介紹
描述Activity的生命周期。
描述一個(gè)Activity啟動(dòng)另外一個(gè)Activity的生命周期
Activity標(biāo)簽可以配置什么
IntentFilter里面的標(biāo)簽可以干嘛
Service怎么啟動(dòng)
了解IntentService嗎?
幾大控件有
存儲(chǔ)數(shù)據(jù)的方式有
Intent可以干嘛
Sharedpreference里面的apply和commit有什么區(qū)別
ContentProvider用過嗎?為什么要用這個(gè)
ASyncTask用過嗎?知道是怎么實(shí)現(xiàn)的嗎?
線程池知道嗎?怎么創(chuàng)建?底層怎么實(shí)現(xiàn)?
Set、List、Map區(qū)別,Map底層怎么實(shí)現(xiàn)的
重寫View怎么重寫?
快排實(shí)現(xiàn)
實(shí)現(xiàn)兩個(gè)鏈表表示的整數(shù)相加(空間復(fù)雜度要求很低)
字節(jié)跳動(dòng)二面:
自我介紹
Handler實(shí)現(xiàn)機(jī)制,同步屏障,IdleHandler
Looper可以在子線程創(chuàng)建嗎
Handler如何實(shí)現(xiàn)對(duì)于消息的定時(shí)發(fā)送
HandlerThread的實(shí)現(xiàn)原理
事件傳遞機(jī)制,結(jié)合滑動(dòng)沖突具體場景解決問題
View繪制流程,從Vsync信號(hào)到ViewRootImpl到最終View的draw
Apk打包流程(點(diǎn)擊 Android Studio 的 build 按鈕后發(fā)生了什么 )
Apk安裝過程
內(nèi)存泄漏,Handler如何導(dǎo)致Activity內(nèi)存泄漏,如何做檢測,引用的鏈路到GCRoot
Fragment生命周期
Activity各類啟動(dòng)模式下的切換狀態(tài)后顯示狀態(tài)
屏幕反轉(zhuǎn)Activity的生命周期變化
Dialog彈起背后的Activity生命周期發(fā)生何種變化?
一個(gè)應(yīng)用啟動(dòng)過程,如何與AMS,PMS交互
EventBus的實(shí)現(xiàn)原理,粘性事件是如何實(shí)現(xiàn)的?為什么要用EventBus,其優(yōu)勢在哪里?
Retrofit的實(shí)現(xiàn)原理結(jié)合動(dòng)態(tài)代理來問
Picasso與Glide的區(qū)別(緩存的差異性)
Volley與Okhttp的差異性,Okhttp的實(shí)現(xiàn)與其優(yōu)勢
多進(jìn)程的數(shù)據(jù)庫與文件操作該如何實(shí)現(xiàn)?
Android簽名,V1,V2
Glide中生命周期如何實(shí)現(xiàn)的
Glide如何加載一個(gè)Gif圖
字節(jié)跳動(dòng)第三面:
自我介紹
對(duì)于Android中內(nèi)存使用中注意的點(diǎn)(圍繞內(nèi)存泄露與內(nèi)存優(yōu)化講)
MVP,MVVM,MVC的差異性已經(jīng)適用場景
Android APK為什么不可以在IOS上運(yùn)行,如何設(shè)計(jì)可以讓其運(yùn)行?
Android系統(tǒng)設(shè)計(jì)為什么要用虛擬機(jī)不直接執(zhí)行機(jī)器碼?
通過虛擬機(jī)運(yùn)行和直接執(zhí)行機(jī)器碼的差異性其各自的優(yōu)勢在哪里?
Dalvik和ART的區(qū)別
Native生命周期如何通知到Web?
了解Android中的ANR嗎?
了解Android中的OOM嗎?
RecyclerView中的緩存實(shí)現(xiàn)原理
RecyclerView中ItemDecoration的實(shí)現(xiàn)原理
Activity,Window,WindowManager,ViewRootImpl如何看這幾個(gè)的關(guān)系
廣播動(dòng)態(tài)注冊(cè)和靜態(tài)注冊(cè)的差異是什么?
Android中進(jìn)程通信的方式,Binder的優(yōu)勢是什么?
SparyArray和ArrayMap的實(shí)現(xiàn)原理?
使用過Koltin嗎?
使用過RxJava和Retrofit嗎?
Web與Native的通訊方式
SurfaceView和TextureView的區(qū)別
Surface為什么要用雙緩沖機(jī)制?
Bitmap大圖加載的優(yōu)化策略?
SharePreference的commit和apply的區(qū)別
以上三輪面試的技術(shù)題的詳細(xì)答案與解析均整理在文檔內(nèi),由于解析文字過多,不在文章中分享,需要這份面試題答案可以私信我。
這次能夠順利入職字節(jié)跳動(dòng),可以說是運(yùn)氣和實(shí)力參半,但我一直持有的一個(gè)觀念就是:好運(yùn)永遠(yuǎn)是留給有準(zhǔn)備的人。
所以,作為一名技術(shù)人,對(duì)大廠有著執(zhí)念,那就要落實(shí)下來,相信自己付出是會(huì)有所回報(bào)的。在這,我也祝大家在接下來的金九銀十里,面試順利,過關(guān)斬將,拿下offer。
聯(lián)系客服