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