前段時間,有個朋友又出去面試了,這次他面試目標比較清晰,面的都是業務量大、業務比較核心的部門。前前后后去了不少公司,幾家大廠里,他說給他印象最深的是字節。

3輪技術面 + 1 輪 HR 面,他最終拿到了 35k*15薪 的 Offer。
主要考察對應⽤技術和底層原理的掌握,以及對過往項目的業務理解。之所以令他印象深刻,是因為每輪都聊了一個半小時以上,確實讓他受益匪淺。
## 一面
1.算法題:兩個棧實現隊列
2.算法題:輸入一個數組,想一種方法讓這個數組盡可能的亂序,保證功能能實現的情況下時間復雜度和空間復雜度盡可能的小,可使用隨機數函數。(面試官最后說了 O(n)的時間復雜度能實現)
3.寫一個單例(自己寫一種就行)
4.ActivityA -> Activity B -> Activity A
Activity A 啟動模式為 singleTask
Activity B 啟動模式為常規模式
問A 啟動 B,B 又啟動 A 的生命周期調用順序?
5.說一下onsaveinstancestate() 調用時機,它用來干什么的。
6.onsaveinstancestate() 保存的那個參數叫什么?Bundle 里面都放一些什么東西?怎么實現序列化?Parcelable 和 Serializable有什么區別?
7.數組和鏈表的區別
8.HashMap 的結構以及原理
9.你能說一下retrofit它是做什么的,如果知道基本框架也說一下
10.了解 View 的繪制機制嗎,能說一下嗎
11.我看你項目里用的 Fragment 能說一下 Fragment A 啟動了 Fragment B,Fragment B 中按下返回鍵只退出 Fragment B 怎么實現。
12.為什么handler可以線程切換
13.Rxjava map關鍵字的作用是什么
14.怎么獲取view的寬高,如何確定值是准確的,說了view.post()補充viewTreeObserverOnGlobalLayoutListener
15.你還有什么要問的嗎?
## 二面
1.算法題:一個字符串,求最長沒有重復字符的字符串長度
2.string stringbuffer 和 stringbuilder 區別
3.final finally finalize區別
4.數組和鏈表的區別
5.HashMap 了解過嗎
6.Tcp 三次握手四次揮手
7.get 與 post 的區別
8.synchronized 的作用
9.你知道哪些設計模式
10.Android 進程通信的方法
11.那你能說一下 Intent 是怎么進程通信的
12.內存泄漏有哪幾種情況,怎么查看內存泄露的問題
13.還有什么要問的
## 三面
1.項目深挖
2.ARouter路由原理
3.如何管理過多的路由表?
4.看視頻的時候網絡請求很慢怎么優化?
5.說說HTTP3.0有什么改進?
6.App上線后用戶使用時卡頓怎么查看是什么原因?
后續就是HR面了,這里就省略了,這些大廠都不會有太大的差別。
我朋友最終選擇字節,除了這是核心項目之外,還有一個原因,字節的福利號稱業內最好,薪資也是同類公司中最高。
“薪資高、發展好、福利待遇優” 似乎已經成為字節跳動的標簽。
而很多人覺得大廠門檻高:
**“渣本雙非學歷進不了大廠!”**
**“工作不滿 3 年進不了大廠!”**
**“非科班畢業的,進不了大廠!”**
可對於我這個渣本雙非畢業的朋友來說,進字節,似乎並沒有那么難。用他的話說,進大廠就靠一條:技術實力。
你只要技術實力夠好+在面試中表現得還不錯,就能拿下 Offer。
下面是他分享給我的他的復習資料,在這里分享給大家,最后希望大家盡量避坑,可以拿到理想的offer。
#### 《高級UI》
UI這塊知識是現今使用者最多的。當年火爆一時的Android入門培訓,學會這小塊知識就能隨便找到不錯的工作了。
不過很顯然現在遠遠不夠了,拒絕無休止的CV,親自去項目實戰,讀源碼,研究原理吧!


#### 《Framework精編內核解析》
主要內容包含:
* 深入解析Binder
* 深入解析Handler
* Dalvik VM 進程系統
* 深入解析 WMS
* PackagerManagerService

#### 《360°全方面性能調優》
**內容主要包含一下幾點:**
1、設計思想與代碼質量優化
2、程序性能優化
* 啟動速度與執行效率優化
* 布局檢測與優化
* 內存優化
* 耗電優化
* 網絡傳輸與數據儲存優化
* APK大小優化
3、開發效率優化
* 分布式版本控制系統Git
* 自動化構建系統Gradle
4、項目實戰
* 啟動速度
* 流暢度
* 抖音在APK包大小資源優化的實踐
* 優酷響應式布局技術全解析
* 網絡優化
* 手機淘寶雙十一性能優化項目揭秘
* 高德APP全鏈路源碼依賴分析
* 徹底干掉OOM的實戰經驗分享
* 微信Android終端內存優化實踐

#### 《Android第三方框架》
**本篇內容要點(1042頁)**
* 熱修復設計
* 插件化
* 組件化框架設計
* 圖片加載框架
* 網絡請求框架
* RXJava 響應式編程框架設計
* IOC 架構設計
* Android架構組件Jetpack

#### 《NDK模塊開發》
NDK是原生開發工具包,這套工具允許Android使用C/C++代碼,並提供了眾多的平台庫。
**主要內容包含:**
* NDK 模塊開發
* JNI 模塊
* Native 開發工具
* Linux 編程
* 底層圖片處理
* 音視頻開發
* 機器學習


#### 《Jetpack架構組件從入門到精通》
* Android Jetpack - Navigation
* Android Jetpack - Data Binding
* Android Jetpack - ViewModel & LiveData
* Android Jetpack - Room
* Android Jetpack - Paging
* Android Jetpack - WorkManger
* Android Jetpack架構組件之Lifecycle
* Android Jetpack Compose 最全上手指南

#### 《Flutter技術進階》
* Flutter跨平台開發概述
* Windows中Flutter開發環境搭建
* 編寫你的第一個Flutter APP
* Flutter Dart語言系統入門

#### 《2020大廠面試高頻知識點》
一、圖片
二、網絡和安全機制
三、數據庫
四、插件化、模塊化、組件化、熱修復、增量更新、Gradle
五、架構設計和設計模式
六、性能優化
七、Android Framework
八、Android優秀三方庫源碼


#### **所有資料已經全部上傳至開源項目[**【GitHub】**](https://github.com/zhireshini/Bytedance-Android-Learning-route/blob/main/%E5%AD%97%E8%8A%82%E8%B7%B3%E5%8A%A8%E7%A7%BB%E5%8A%A8%E6%9E%B6%E6%9E%84%E5%B8%88%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.md),有需要的朋友自取。**