秋招真實記錄:緊張的337小時,我終於等來了位元組跳動offer(Android崗)

南方吳彥祖_藍斯發表於2020-11-20

座標北京,某211本科畢業生,之前學校活動有去過位元組跳動公司總部參觀,所以一直以來就蠻想進入位元組工作的,被位元組的企業文化和工作氛圍所影響。位元組作為發展速度最快的網際網路公司,旗下的很多產品的使用者都比肩BAT了,所以自己也算是位元組的死忠粉了。

今年秋招,別的公司基本沒怎麼準備,因為很早定下的目標就是位元組跳動,所以提前了2個月來準備這次位元組的面試,從接到面試通知,到拿到offer共336小時53分鐘21秒,這個時間段內,我沒有一刻是不緊張的,直到我清清楚楚地看到“錄用意向書”5個大字,懸著的心才放了下去。

這次位元組跳動的面試,給我的感觸很深,意識到基礎的重要性,這次位元組共4面技術面+HR面,特分享一下這次的4面技術面真題,可能有些記不全了,但多少也能夠給一些正在面試位元組或計劃面試位元組的朋友提供幫助。

位元組跳動技術一面(1小時14分)

主要問java,以及虛擬機器,問了一點android

1.實習專案有關的介紹以及問題回答
2.反射與代理的區別,動態代理,靜態代理,二者的區別,以及代理模式的UML圖
3.位元組碼技術
4.虛擬機器的雙親委派,以及好處
5.虛擬機器棧的作用,以及什麼情況下會傳送Stack Overflow
6.誰能做GCRoot,為什麼計數法不如可達性好
7.為什麼要分新生代和老年代,如何區分
8.GC演算法都介紹一下
9.類載入的過程,方法區中存的是什麼,型別資訊都包括什麼,如何判斷兩個Class是否相等。
10.HashMap的put方法講一下,講一下如何擴容,講一下一個類作為HashMap,要實現哪些方法,equals和hashCode有什麼區別和聯絡
11.訊息機制講一下,講一下ThreadLoacal,講一下Handler處理資訊有什麼方法(除了handleMessage還有什麼),MessageQueue是否有長度限制,android中Message多不多?
12.Activity A到Activity B跳轉的一個生命週期的過程
13.Activity A(standard模式)跳轉到B(單例模式),B再跳轉到A,此時返回,會出現什麼情況
14.InVisible和Gone的區別,Gone和ViewStub的區別
15.字串第一次出現一個的字元

位元組跳動技術二面(34分)

計算機網路相關

1.osi七層架構,物理層做什麼的
2.輸入網址之後發生的一些列事情
3.DNS用了什麼協議,具體是怎麼做的
4.TCP的三次握手,以及流量控制
5.HTTP報文裡有什麼
6.HTTP與HTTPS有什麼區別,加密演算法是什麼
7.HTTP的響應碼有哪些?
8.get與post的區別
9.兩個有序陣列,找到中位數

位元組跳動技術三面(50分鐘)

深入Android方面以及實習經歷

1.實習專案有關(包括一些具體實現,以及一些關鍵問題)
2.LayoutManager的作用
3.RecyclerView用的多麼有哪些瞭解,如何去實現雙層瀑布
4.如何去設計一個SDK(很多細節的問題)
5.撲 克 牌,抽五張是同花的機率,抽五張是順子的機率
6.RN以及Redux的瞭解,好處,以及使用,以及工作中對於android和RN的比重
7.單例模式的好處,那麼什麼時候不去用單例呢?
8.SP的內部實現瞭解麼?如何實現的序列化
9.瞭解注入麼?

位元組跳動技術四面(24分鐘)

1.自我介紹
2.介紹專案
手撕程式碼
3.下一個更大元素(力扣 503)
4.區間合併

HR面(30分鐘)

1.自我介紹
2.畢業時間
3.是否考研
4.高考志願
5.專業人數
6.專業排名
7.有無實習
8.大學生活
9.學 生會哪個部門
10.參加什麼社團
11.參加什麼比賽
12.獲得什麼獎
13.有無團體賽經歷
14.參賽時間
15.專案背景
16.專案分工
17.是否專案組長
18.專案用什麼程式語言寫的
19.自己選的程式語言還是老師給選的
20.團隊分工是你安排的還是各自認領的
21.團隊內產生分歧怎麼辦
22.做專案過程中對你來說最大的挑戰是什麼
23.大學中讓你最有成就感的事情
24.班裡擔任什麼職務
25.參加比賽和專案,收穫了什麼
26.有發表論文嗎
27.平時的興趣愛好
28.老家是哪裡的
29.意向工作地點
30.職業規劃
31.目前主要在幹什麼
32.還投遞了哪些公司
33.對行業有什麼傾向
34.如何看待網際網路行業的工作強度
35.家裡人對工作和考研有什麼看法
36.遍地都是研究生,不考研會有遺憾嗎
37.工作後還會去考研嗎
38.自制力高嗎
39.喜歡玩什麼遊戲
40.什麼時候可以去實習
41.大四上學期有幾門課
42.什麼時候開學
43.預期的薪資是多少
44.擅長什麼程式語言
45.有什麼優缺點
46.是不是很宅
47.出生年份

總結

10月11號郵件收到資訊,HR加了我微信,直接給了意向書,查收然後確認好了,確定了入職時間,非常開心。總的來說,自己如果有想要去的大公司,一定要提升好自己,讓自己的能力和素質與公司匹配的上,我也一直相信,機會永遠是留給有準備的人。

五、面試前準備

首先, 一定要先搭建自己的知識體系,再往裡面填充各種東西,才能真正掌握,這個填充過程一定要從點滴做起,面試前才去突擊是沒多大作用的。

對於Android工程師來說,這個越來越成熟的崗位,要求是越來越高了,知識體系大約有十個方面:

  • Java基礎,Java虛擬機器;
  • Android基礎,Android原始碼;
  • 開源庫,演算法;
  • 作業系統,計算機網路;
  • 軟體工程,設計模式。

下面舉幾個最常見的面試問題吧

Java基礎:final finally finalize有什麼關係,HashMap原理,編譯時註解

Java虛擬機器:按照問到的可能性是大小,類的載入 > JMM > GC > Java記憶體分割槽 > oop-klass > JIT

Android基礎:Activity A啟動B之後生命週期,onSaveInstance()和onNewIntent()呼叫時機

Android原始碼:訊息機制,View的事件處理機制,View的繪製過程,Activity啟動過程

開源庫:OKHttp,Glide,LeakCanary,RxJava實現原理

演算法:樹的深度和廣度優先遍歷(非遞迴),100萬個樹找最大的100個,快排,堆排序

作業系統:程式和執行緒的區別,多執行緒的實現方法,非同步改同步,生產者消費者模式,手寫執行緒池

計算機網路:七層架構,TCP的三次握手四次揮手,https和http的區別。

軟體工程:類圖,時序圖,如何設計一個專案(往功能性,健壯性,效能性,時間成本四個緯度上套)。

設計模式:物件導向七大原則,手寫單例,手寫觀察者,代理模式。

總之,北京居不易,而選擇理工科的朋友,大多都出身普通,希望大家不要忘本,知識才是改變自身命運的唯一路徑。蹉跎這麼久,我也是最近兩年才漸漸明白這個道理,於是藉著這個機會,分享給大家。

六、大廠面試offer收割秘籍

1.定製自己的簡歷(對標BATJ)

無論是什麼行業,簡歷都是敲門磚,對於程式設計師來說,更應該著重準備,甚至要做到逐字推敲。關於簡歷,我個人有以下兩點建議:

①儘可能突出自己的優勢

一定要讓看到你簡歷的人一眼就看到你自己所具備的優勢,要學會突出重點,如你在上一家公司做出的貢獻,就要寫在顯眼的位置進行突出,用顏色加深再好不過。如果你的優勢是學歷,那麼學歷就要放在第一頁,因為HR在篩選簡歷時,一份簡歷往往只看那麼幾秒鐘,你需要做到的就是讓HR一眼看中你的簡歷。

②簡

簡歷簡歷,之所以稱為簡歷,就是需要把自己的個人資訊和內容化繁為簡,但是很多人都做不到這一點。我身邊有一些朋友,寫自己簡歷時,長篇大論,恨不得寫出一篇800字作文出來,如果說你的簡歷長達6-7頁,並不會給對方你有豐富經驗的感覺,反而會讓人一下子抓住不住重點。

另外,簡歷不能寫成流水賬,技術簡歷一般不超過3頁,主要資訊就包括個人資訊(聯絡方式,學歷等),專業技能,工作經歷,專案經驗等幾個部分就好了,儘可能用精煉的語言描述,一個字能講清楚的事,千萬不要用兩個字。

③描述自己做到了什麼,而不是做了什麼

很多程式設計師會在自己的專案或是技術棧裡這樣描述:在某專案,我負責xxxx,如重構,如最佳化。但實際上,面試官想要看到的是你在專案中,重構和最佳化帶來了什麼樣的好處和效果,如果說效能提升了,那麼提升的資料和情況是如何的,要一一描述出來,所以重點應該是“將專案做到了什麼樣子,做成了什麼事”。

以上3點,則是我對自己簡歷的要求。說了這麼多,簡歷到底要怎麼準備,怎麼制定,可能很多人還是摸不著頭腦,我手上有一套標準的程式設計師 簡歷模板,如果你有需要,可以分享給你。

2.梳理知識,提升儲備

自己的知識準備得怎麼樣,這直接決定了你能否順利透過一面和二面,所以在面試前來一個知識梳理,看需不需要提升自己的知識儲備是很有必要的。

關於 知識梳理,這裡再分享一下我面試這段時間的複習路線:(以下體系的複習資料是我從各路大佬收集整理好的)

  • 架構師築基必備技能:深入Java泛型+註解深入淺出+併發程式設計+資料傳輸與序列化+Java虛擬機器原理+反射與類載入+動態代理+高效IO

  • Android高階UI與FrameWork原始碼:高階UI晉升+Framework核心解析+Android元件核心+資料持久化

  • 360°全方面效能調優:設計思想與程式碼質量最佳化+程式效能最佳化+開發效率最佳化

  • 解讀開源框架設計思想:熱修復設計+外掛化框架解讀+元件化框架設計+圖片載入框架+網路訪問框架設計+RXJava響應式程式設計框架設計+IOC架構設計+Android架構元件Jetpack

  • NDK模組開發:NDK基礎知識體系+底層圖片處理+音影片開發

  • 微信小程式:小程式介紹+UI開發+API操作+微信對接

  • Hybrid 開發與Flutter:Html5專案實戰+Flutter進階

秋招真實記錄:緊張的337小時,我終於等來了位元組跳動offer(Android崗)

知識梳理完之後,就需要進行查漏補缺,所以針對這些知識點,我手頭上也準備了不少的電子書和筆記,這些筆記將各個知識點進行了完美的總結。

秋招真實記錄:緊張的337小時,我終於等來了位元組跳動offer(Android崗)
《507頁Android開發相關原始碼解析》
秋招真實記錄:緊張的337小時,我終於等來了位元組跳動offer(Android崗)
《379頁Android開發面試寶典》

3.專案覆盤

實際上,面試的一二輪所問到的技術問題,很多都是圍繞著你的專案展開,因此在面試前最後要做好的一件事情就是專案覆盤。關於專案覆盤,我個人的思路如下,可供參考:

  • 你在這個專案中承擔了什麼樣的角色?
  • 這個專案的背景是什麼,如果是技術專案,為什麼要做?
  • 有哪些技術難點,是怎麼解決的,是否還有更好的方案?
  • 你認為專案中是否有可以改進的點?
  • 這個專案解決了什麼問題,最好用資料說話,這個資料又是怎麼得出來的?

提前把思路捋一捋,上面這些問題好好思考或準備一下,做到心中有譜以後,自然能夠面試官聊得融洽,保持一個好的心態,透過的機率就會更大一些。

資料太多,全部展示會影響篇幅,暫時就先列舉這些部分截圖,以上資源均免費分享,以上內容均放在了開源專案: github  中已收錄,大家可以自行獲取。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69983917/viewspace-2735699/,如需轉載,請註明出處,否則將追究法律責任。

相關文章