一份熱乎的字節跳動客戶端面經,已拿Offer


字節面試過程:

4月4號進行內推,7天的簡歷評估,11號接到電話面試,盡管猝不及防回答倉促,但好在前期准備充分,通過。14號現場面試,次日收到通知,通過,二面、三面都很順利。20號進行HR面,26號收到Offer。

應戰大廠,一靠積累技術;二靠總結復盤。面試結束后把各大廠的面試經驗及高頻考點梳理了一遍,整理了一套完整的Android面試考點總結(有PDF版在文末分享給大家),希望能夠幫助計划沖大廠的小伙伴。

以下為字節跳動三輪技術面經歷:

專業一面:(59min)

1.自我介紹
2.Flutter項目介紹和細節詢問
3.Ping和ICMP協議
4.flutter生命周期
5.electron項目介紹和細節詢問
6.react-native項目介紹
7.android項目介紹
8.java的四種引用
9.volatile關鍵字
10.java的有序性
11.android四大組件
12.廣播的類型
13.Android生命周期及意外退出調用流程
14.service類型及生命周期
15.Android的消息機制(handler
16.Looper為什么不會陷入死循環阻塞線程
17.ThreadLocal
18.HTTPS加密過程及對稱加密
19.算法:無序數組topK問題。解決:快排+分治
20.反問

專業二面:(1h6min)

1.自我介紹
2.學校課程,數據結構
3.LinkedList和ArraryList
4.HashMap
數據結構
存取流程
什么時候觸發擴容
5.Android項目介紹
6.sharedpreferences存儲相關
7.場景題:(聊了半個小時)
海量數據存儲,文件加載渲染流程,存儲數據結構;
文件滿了之后根據使用頻數及存儲時間舍棄的實現流程和相關數據結構
(提到了小頂堆)手寫小頂堆的數據結構類
8.算法:有序數組合並 。解決:雙頭指針
9.項目開發流程相關
10.自身優勢介紹
11.反問

專業三面:(54min)

1.自我介紹
2.算法:乘積最大子數組。解決:動態規划
3.死鎖
4.DNS
5.TCP相關(三次握手四次揮手;擁塞控制;流量控制)
6.操作系統的內存管理(連續分配;分頁存儲管理方式;分段)
7.進程調度算法(五種)
8.GC回收算法
9.GC Root
10.synchronized關鍵字修飾靜態方法與成員方法的區別
11.volatile關鍵字
12.動態代理
13.反射
14.Android活動不同調用狀態下的鈎子函數執行順序
15.service
16.自定義view
17.canvas
18.RecyclerView相關(渲染,Item復用)
19.專業學習及技術棧相關詢問
20.就業看法
21.自身優勢介紹
22.項目Bug及解決方法詳細介紹
23.未來技術發展方向規划
24.對工作看重的方面有哪些,聊了一下(收入,技術提高,平台,工作環境)
25.字節大小周的看法
26.聊了一些工作內容等等亂七八糟的...

面試字節跳動需要儲備哪些知識?

很多人准備面試的時候,大多數就會這樣的,打開百度,輸入 “Android 面試題”,找幾個多的開始看。

這雖然看起來很自然,但是並不是一種 健康的方式,面試題的作用應當是查缺補漏,上學的時候也不是直接發習題冊然后對着答案學習吧?

知乎上有個問題,叫做 如何高效學習,里面有一個回答我覺得很符合我自己的觀點,就是 建立起自己的知識體系,建立知識體系的目的在於:

  • 鞏固記憶。
  • 認識自己,找到自己的優勢及不足。
  • 把握復習的進度。
  • 經驗總結。

目前我自己的總結的會分為以下幾個大點:

2017-2020字節跳動 Android面試真題

一、計算機基礎面試題

  • 網絡面試題
  • 操作系統面試題
  • 數據庫面試題

二、數據結構和算法面試題

  • 無重復字符的最長子串
  • 簡化路徑
  • 復原 IP 地址
  • 三數之和
  • 島嶼的最大面積
  • 搜索旋轉排序數組
  • 接雨水
  • 反轉鏈表
  • 兩數相加
  • 合並兩個有序鏈表
  • 合並 K 個排序鏈表
  • 買賣股票的最佳時機
  • ......

三、Java 面試題

  • 面向對象
  • 你所知道的設計模式有哪些?
  • 通過靜態內部類實現單例模式有哪些優點?
  • 靜態代理和動態代理的區別,什么場景使用?
  • 簡單工廠、工廠方法、抽象工廠、Builder 模式的區別?
  • 裝飾模式和代理模式有哪些區別 ?與橋接模式相比呢?
  • 外觀模式和中介模式的區別?
  • 什么是線程池,如何使用?為什么要使用線程池?
  • Java 中的線程池共有幾種?
  • JVM 內存區域。
  • JVM 的內存模型的理解?
  • 描述一下 GC 的原理和回收策略?
  • 類的加載器,雙親機制,Android 的類加載器。
  • ......

四、Android 面試題

  • 什么是 ANR 如何避免它?
  • Activity 和 Fragment 生命周期有哪些?
  • 橫豎屏切換時候 Activity 的生命周期
  • AsyncTask 的缺陷和問題,說說他的原理
  • onSaveInstanceState() 與 onRestoreIntanceState()
  • android 中進程優先級?
  • Bunder 傳遞對象為什么需要序列化?Serialzable 和 Parcelable 的區別?
  • Context 相關
  • Android 各版本新特性
  • android 中有哪幾種解析 xml 的類,官方推薦哪種?以及它們的原理和區別?
  • App 穩定性優化
  • App 啟動速度優化
  • App 內存優化
  • App 繪制優化
  • 卡頓優化
  • View 的事件分發機制?滑動沖突怎么解決?
  • 觸摸事件的類型
  • 事件分發流程
  • View 的繪制流程?
  • Android 中 IPC 方式、各種方式優缺點?
  • 為什么選擇 Binder?
  • Binder 機制的作用和原理
  • ......

字節跳動Android面試寶典

一、Android基礎+進階

1.Activity啟動模式
2.Activity的啟動過程
3.進程通訊
4.Android Binder之應用層總結與分析
5.進程保活方法
6.從源碼了解handler looper ,messageQueue思路
7.handler如何實現延時發消息postdelay()
8.Android中為什么主線程不會因為Looper.loop()里的死循環卡死?
9.RxJava原理及如何封裝使用
10.okhttp源碼分析
11.retrofit源碼分析
......

12.LeakCanary核心原理源碼淺析
13.LruCache 使用及原理
14.ARouter原理
15.注解框架實現原理
16.Android 如何編寫基於編譯時注解的項目
17.RxJava2+Retrofit2+OkHttp3的基礎、封裝和項目中的使用
18.Rxjava2.0+Retrofit+Okhttp(封裝使用)+MVP框架搭建
19.Android 插件化和熱修復知識梳理
20.Android開發中比較常見的內存泄漏問題及解決辦法
21.如何檢測和定位Android內存泄漏
22.圖片占據的內存算法
23.為什么圖片需要用軟引用,MVP模式中的view接口用弱引用
24.基於DataBinding與LiveData的MVVM實踐
25.App穩定性優化
26.App啟動速度優化
27.App內存優化
28.App繪制優化
29.App瘦身
30.網絡優化
31.App電量優化
32.安卓的安全優化
33.為什么WebView加載會慢呢?
34.如何優化自定義View

二、Java基礎+進階

1.HashMap
2.ArrayList
3.LinkedList
4.Hashset源碼分析
5.內存模型
6.垃圾回收算法(JVM)
7.垃圾回收機制和調用 System.gc()的區別?
8.類加載過程
9.反射
10.多線程和線程池
11.創建多線程方式、線程池工作原理
12.設計模式(六大基本原則、項目中常用的設計模式、手寫單例等)
13.斷點續傳
14.Java 四大引用
15.Java 的泛型
16.接口、抽象類的區別
17.從 java 容器類的設計討論抽象類和接口的應用

三、數據結構與算法面試題

1.常用的數據結構有哪些?
2.數組
3.鏈表
4.隊列&堆棧
5.二叉樹
6.HashMap
7.圖
8.排序算法有哪些?
9.查找算法
10.串

四、計算機網絡部分

1.HTTP協議
2.TCP/IP協議
3.TCP的三次握手與四次揮手理解及面試題
4.網頁中輸入url,到渲染整個界面的整個過程,以及中間用了什么協議?
5.TCP和UDP的區別?
6.HTTP的幾種請求方法具體介紹
7.HTTP請求和響應報文的格式,以及常用狀態碼
8.一個 TCP 連接上面能發多少個 HTTP 請求

如何做好面試突擊,規划學習方向?

面試題集可以幫助你查漏補缺,有方向有針對性的學習,為之后進大廠做准備。但是如果你僅僅是看一遍,而不去學習和深究。那么這份面試題對你的幫助會很有限。最終還是要靠資深技術水平說話。

網上學習 Android的資料一大堆,但如果學到的知識不成體系,遇到問題時只是淺嘗輒止,不再深入研究,那么很難做到真正的技術提升。建議先制定學習計划,根據學習計划把知識點關聯起來,形成一個系統化的知識體系。

學習方向很容易規划,但是如果只通過碎片化的學習,對自己的提升是很慢的。

我這邊還整理了一套Android開發核心知識筆記:

由於篇幅限制,展示了部分內容截圖,需要這些文檔資料的,可以點贊支持一下我,然后【點擊這里】免費閱讀下載哦。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM