成功入職字節,25K小哥甩出詳細面試總結,不信你還參透不了重點

前言

本⼈是底層 211 本科,剛畢業,⽆科研經歷,但是有⼀些項⽬經歷。

在國內監控⾏業某頭部企業做過⼀段時間的實習。

想着投⼀下字節,可以積累⼀下⾯試經驗和爲金九銀十面招做準備。投了簡歷之後,過了⼀段時

間,HR 就打電話跟我約時間,

說明⼀下,我投的是北京 office。

以下就是一個面試的全部過程,分享出來給感興趣的朋友們一看。

一面

⾯試官很和藹,開頭一個⾃我介紹,就直接開始問項⽬了,⽐如:

(回答了⾃⼰經常⽤到的 SpringBoot,Redis,Mysql 等等,字節這邊基本

沒有⽤ Java 的後臺,所以感覺⾯試官不⼤會問 Spring,Java 這些東⻄,反倒是對數據庫和中間

1.常⽤的 Web 組件有哪些?

件⽐᫾感興趣)

2.Kafka 相關,

如何保證不會重複消費,

Kafka 消費組結構等等(這個只是憑着感覺和⾯試官說了,因 爲 Kafka ⾃⼰確實準備得不充分,但是⼼態穩住了)

3.Mysql 索引,B+樹(必考嗷同學們!!!)

還有⼀些項⽬中的細節,這些因⼈⽽異,就不放上來了。

提示⼀點就是要在項⽬中介紹⼀些亮眼的地⽅,⽐

如⽤了什麼⽜逼的數據結構,架構上有什麼特點,併發量⼤⼩還有怎麼去 hold 住併發量!

後⾯就是算法題了,⼀共做了兩道

1. 判斷平衡⼆叉樹

這道題總體來說並不難,但是⾯試官在中間穿插了垃圾回收的知識,這就很難受

了,具體的就是⼤家要判斷⼀下對象在什麼時候會回收,可達性分析什麼時候對這個對象來說是不

可達的,還有在遞歸函數中內存如何變化,這個是讓我們來對這個函數進⾏執⾏過程的建模,只看

棧幀⼤⼩變化的話,應該有是兩個峯值,中間會有抖動的情況)

2. ⼆分查找法的變種題

給定 target 和⼀個升序的數組,尋找下⼀個⽐數組⼤的數.這道題也不難,

靠⼤家對⼆分查找法的熟悉程度,當然,這邊還有⼀個優化的點,可以看看我的博客找找靈感

完成了之後。

⾯試官讓我等⼀會有⼆⾯,⼤概 10 分鐘左右吧,休息了⼀會就繼續了

二面

⼆⾯⼀上來就是先讓我⾃我介紹,當然還是同樣的套路,同樣的⾹脆

然後問了我⼀些關於Redis的問題,

⽐如 zset 的實現(跳錶,這個⾼頻) ,鍵的過期策略,持久化等等,

這些在⼤多數 Redis 的介紹中都可以找到,就不細說了!

還有⼀些數據結構的問題:

1.⽐如說問了哈希表是什麼,給⾯試官詳細說了⼀下 java.util.HashMap 是

怎麼實現(當然⾥⾯就穿插着紅⿊樹了,多看看紅⿊樹是有什麼特點之類的)的

2.包括說爲什麼要⽤鏈地址法來避免衝突、探測法有哪些?

3.鏈地址法和探測法的優劣對⽐

後⾯還跟我討論了很久的項⽬,所以說⼤家的項⽬⼀定要做好,要有亮點的地⽅,在這⾥跟⾯試官討論了

很多項⽬優化的地⽅,還有什麼不⾜,還有什麼地⽅可以新增功能等等。

同樣不細說了

⼀邊討論的時候劈⾥啪啦敲了很多,應該是對個⼈的⾯試評價⼀類的

後⾯就是字節的傳統藝能⼿撕算法了,⼀共做了三道

⼀⼆道是連在⼀起的.給定⼀個規則 S_0 = {1} S_1={1,2,1} S_2 = {1,2,1,3,1,2,1}

S_n = {S_n-1 , n + 1, S_n-1} .

1.第⼀個問題是他們的個數有什麼關係(1 3 7 15... 2 的

n 次⽅-1,⽤位運算解決).

2.第⼆個問題是給定數組個數下標 n 和索引 k,讓我們求出 S_n(k)所指

的數,假如 S_2(2) = 1 ,我在做的時候沒有什麼好的思路,如果有的話⼤家可以分享⼀下

3,第三道是下⼀個排列:https://leetcode-cn.com/problems/next-permutation 的題型,不過做

了⼀些修改,數組⼤⼩ 10000

HR面

⼀些偏職業規劃的話題了,實習時間,項⽬經歷,實習經歷這些。

總結

基礎很重要!

這次準備到的 Redis,Mysql,JVM 原理等等都有問到了,(⽹絡這⼀塊沒問,但是也是要好好

準備的,對於後臺來說,⽹絡知識不僅僅是⾯試,還是以後⼯作的知識基礎)。

當然⾃⼰也有準備不⾜的地⽅:

⽐如 Kafka 等中間件,只會⽤不會原理是萬萬不⾏的.並且這些基礎知識不能只靠背,⾯試官還會融

合在項⽬⾥⾯進⾏串問

其次,問到了不會的不要慌,因爲⾯試官是在試探你的技術深度,有可能會針對某⼀個問題,問到你不會爲⽌,所以你出現不會的問題是很正常的,⼼態把控住就⾏.

⽆論是做題,還是回答問題的時候,牢記你不是在考試,⽽是在交流,和⾯試官有互動和溝通是很重要的,

你說的⼀些疏漏的地⽅,如果你及時跟⾯試官反饋,還是可以補救⼀下的。

最重要的⼀點字節的⾯試就是算法⼀定要牢固,每⼀輪都會有⼿撕算法的!

這個不⽤想,LeetCode+劍指Offer ⾛起來就對了。

⼼態很重要,算法題不⼀定都是你會的,要有⼀定的⼼理準備,遇到難題可以先冷靜分析⼀波。

⽽且寫出 Bug free 的代碼也是很重要的。

最後祝⼤家在金九銀十之際取得自己心儀的 Offer,奧⼒給!

以上分享的是我自己2020年面試字節的一個經歷,

獲取點我​

在此面試前我整理歸納了一些面試學習資料,文中結合我的朋友同學面試美團滴滴這類大廠前的資料及案例

算法

⼏道常⻅的字符串算法題總結

最⻓公共前綴

回⽂串

兩數相加

翻轉鏈表

鏈表中倒數第k個節點

刪除鏈表的倒數第N個節點

合併兩個排序的鏈表

劍指offer部分編程題

跳臺階問題

變態跳臺階問題

⼆維數組查找

替換空格題⽬描述:

數值的整數次⽅

調整數組順序使奇數位於偶數前⾯

鏈表中倒數第k個節點

反轉鏈表

合併兩個排序的鏈表

⽤兩個棧實現隊列

棧的壓⼊,彈出序列

獲取點我​

數據結構

Java 集合框架中的隊列 Queue

HashSet 和 TreeSet 底層數據結構

List的常⻅實現類ArrayList 和 LinkedList 源碼學習

Map

⼆叉樹

完全⼆叉樹

滿⼆叉樹

⼆叉查找樹(BST)

平衡⼆叉樹(Self-balancing binary search tree)

紅⿊樹

B-,B+,B*樹

LSM 樹

Redis

爲什麼要⽤ redis/爲什麼要⽤緩存

爲什麼要⽤ redis ⽽不⽤ map/guava 做緩存?

redis 的線程模型

redis 和 memcached 的區別

redis 常⻅數據結構以及使⽤場景分析

redis 設置過期時間

redis 內存淘汰機制(MySQL⾥有2000w數據,Redis中只存20w的數據,如何保證Redis中的數據都是熱點數據?)

redis 持久化機制(怎麼保證 redis 掛掉之後再重啓數據可以進⾏恢復)

redis 事務

緩存雪崩和緩存穿透問題解決⽅案

如何解決 Redis 的併發競爭 Key 問題

如何保證緩存與數據庫雙寫時的數據⼀致性?

MyBatis

{}和${}的區別是什麼?

Xml 映射⽂件中,除了常⻅的 select|insert|updae|delete 標籤之外,還有哪些標籤?

最佳實踐中,通常⼀個 Xml 映射⽂件,都會寫⼀個 Dao 接⼝與之對應,請問,這個Dao接⼝的⼯作原理是什麼?Dao接⼝⾥的⽅法,參數不同時,⽅法能重載嗎?

Mybatis 是如何進⾏分⻚的?分⻚插件的原理是什麼?

簡述 Mybatis 的插件運⾏原理,以及如何編寫⼀個插件。

Mybatis 執⾏批量插⼊,能返回數據庫主鍵列表嗎?

Mybatis 動態 sql 是做什麼的?都有哪些動態 sql?能簡述⼀下動態 sql 的執⾏原理不?

Mybatis 是如何將 sql 執⾏結果封裝爲⽬標對象並返回的?都有哪些映射形式?

Mybatis 能執⾏⼀對⼀、⼀對多的關聯查詢嗎?都有哪些實現⽅式,以及它們之間的區別。

Mybatis 是否⽀持延遲加載?如果⽀持,它的實現原理是什麼?

Mybatis 的 Xml 映射⽂件中,不同的 Xml 映射⽂件,id 是否可以重複?

Mybatis 中如何執⾏批處理?

Mybatis 都有哪些 Executor 執⾏器?它們之間的區別是什麼?

Mybatis 中如何指定使⽤哪⼀種 Executor 執⾏器?

Mybatis 是否可以映射 Enum 枚舉類?

Mybatis 映射⽂件中,如果 A 標籤通過 include 引⽤了 B 標籤的內容,請問,B 標籤能否定義在 A 標籤的後⾯,還是說必須定義在 A 標籤的前⾯?

簡述 Mybatis 的 Xml 映射⽂件和 Mybatis 內部數據結構之間的映射關係?

爲什麼說 Mybatis 是半⾃動 ORM 映射⼯具?它與全⾃動的區別在哪⾥?

MyBatis答案解析

由於篇幅限制,文檔的詳解資料太全面,細節內容太多,所以只把部分知識點截圖出來粗略的介紹,每個小節點裏面都有更細化的內容!​獲取點我​

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章