疫情期間被裁後,艱苦奮戰7月,三面字節跳動終於拿下offer的那一刻,我淚目了

前言

先說一下本身的我的狀況,18屆應屆生,經過校招進入到了蘑菇街,而後一待就待了差很少2年多的時間,惋惜的是今年4月份受疫情影響遇到了大裁人,而我也是其中一員。好在早有預感,提早作了準備,以前一直想去字節跳動,年前就已經在作準備了,這場持久戰拉得很長,也最終以7個月的時間取得勝利。在踏入字節跳動,辦理入職手續的那一天,做爲一個男子漢,確實是落淚了。特分享一波個人真實經歷,共勉。mysql

小tip:程序員

其實一個公司要進行裁人一般都會出現一些前期徵兆:業務發展遇到較大瓶頸,而且難以突破、頻繁調整戰略目標、高管開始陸續離職、開始嚴抓考勤、開始部分同事勸退,若是你如今的公司也開始出現這些症狀,別想了,是時候開始作準備了。面試

如下內容涉及4大環節:redis

  • 環節一:制定計劃,作足準備
  • 環節二:實施計劃,準備實戰
  • 環節三:制定簡歷,投遞簡歷
  • 環節四:字節跳動面試經歷,真實記錄還原

四個環節中,內容中包含了不少文檔資料,因爲文章篇幅有限,全整理在文檔內,包括Java學習資料、學習筆記、算法寶典、面試題合集、思惟導圖(Xmind)等,須要這些資料的朋友可【見下圖後】免費獲取算法

 

 

入職字節跳動那一天,我哭了(蘑菇街被裁,奮戰7個月拿下offer)

 

環節一:制定計劃,作足準備

1.梳理知識體系sql

如今大部分的程序員的現狀都特別奇怪,本身所掌握的知識是比較零散的,或者對某個知識點只知其表不知其裏,其實這都是對本身掌握的技術內容沒有進行一個系統的梳理,因此制定計劃的第一步就是要梳理好本身的知識體系。關於梳理知識體系,要作到如下2點:數據庫

  • 你是否瞭解這個知識點的why、where、how
  • 你可否能將這些概念和知識能簡單通俗易懂的講給另外一個徹底不理解的人聽懂

入職字節跳動那一天,我哭了(蘑菇街被裁,奮戰7個月拿下offer)

系統知識圖vim

入職字節跳動那一天,我哭了(蘑菇街被裁,奮戰7個月拿下offer)

Docker思惟圖(xmid)數組

入職字節跳動那一天,我哭了(蘑菇街被裁,奮戰7個月拿下offer)

Java併發體系圖(xmind)緩存

2.準備算法

  • 該如何學習算法?
  • 程序員必須掌握的算法有哪些?
  • Leetcode刷題,到底穩嗎?

關於算法部分,其實要準備的細節內容很是多,因此我也花了很多心思整理了一份關於算法方面的寶典,這份資料我對算法的認識以及個人學習方法,除了Leetcode之外,字節跳動喜歡問的核心算法題也進行一道一道的深度解析。

入職字節跳動那一天,我哭了(蘑菇街被裁,奮戰7個月拿下offer)

 

入職字節跳動那一天,我哭了(蘑菇街被裁,奮戰7個月拿下offer)

 

入職字節跳動那一天,我哭了(蘑菇街被裁,奮戰7個月拿下offer)

 

3.收集整理面試題

除了算法部分之外,要想在實際面試中作到心中有數,大廠的常問的一些面試題或知識點也頗有必要看一看。我特地蒐集整理了近3年來一線互聯網公司的面試題(技術部分),會發現這些面試題實際問的大同小異,但考察你的內容和技術都是有不一樣的目的性的,對這一部分的分析,我也有寫在答案裏(詳細見文檔)。

入職字節跳動那一天,我哭了(蘑菇街被裁,奮戰7個月拿下offer)

 

入職字節跳動那一天,我哭了(蘑菇街被裁,奮戰7個月拿下offer)

 

環節二:實施計劃,準備實戰

前期準備的這些須要一步一步行動起來了,但除了以上確定是遠遠不夠的,面試官除了技術相關的問題,必問的就是項目相關的內容,那項目相關內容須要怎麼來準備呢?除了本身的實戰經驗的積累之外,其實咱們仍是能夠閱讀一些技術大牛寫出來的實戰經驗及筆記。如:Redis筆記、SpringBoot技術筆記等。

入職字節跳動那一天,我哭了(蘑菇街被裁,奮戰7個月拿下offer)

Redis筆記

入職字節跳動那一天,我哭了(蘑菇街被裁,奮戰7個月拿下offer)

SpringBoot技術筆記

入職字節跳動那一天,我哭了(蘑菇街被裁,奮戰7個月拿下offer)

 

環節三:制定簡歷,投遞簡歷

簡歷對於程序員來講是很是重要的一個環節,一份優秀的簡歷每每可以幫助咱們敲開一線互聯網大廠的大門,簡歷部分我就不作過多的贅述。能夠參考《程序員找工做指南》,另外我能夠提供18種優秀的簡歷模板。

下載好以後,根據模板來制定本身的簡歷,接下來就能夠順利投遞啦!投遞簡歷必定要參考好匹配值,建議最好找熟人內推。

入職字節跳動那一天,我哭了(蘑菇街被裁,奮戰7個月拿下offer)

簡歷範本

入職字節跳動那一天,我哭了(蘑菇街被裁,奮戰7個月拿下offer)

 

環節四:字節跳動面試經歷,真實記錄還原

字節跳動一面:

第一面我以爲應該是基礎面,重點考察的是本身技術的廣度 和一些技術的掌握狀況,一面小哥哥也沒有深究於某個特定的點,面試時間大約1個小時。

  • 自我介紹
  • 怎麼打算投遞後臺崗位的,沒有考慮契合本身研究方向的工做?
  • 有了解過OAuth2.0麼,說說你對OAuth2.0的理解
  • 蘑菇博客開發過程當中,有了解或學習其它的開源框架嗎?
  • 蘑菇博客文章發佈的流程是怎麼樣的,是多人博客系統嗎?
  • 對其它的一些博客框架有了解嗎?好比hexo
  • hexo和蘑菇博客相比有什麼區別呢?蘑菇博客多了哪些功能和優點?
  • 看你蘑菇博客用到了RabbitMQ,那談談爲何引入RabbitMQ?
  • RabbitMQ和其它消息隊列,好比ActiveMQ,RocketMQ,Kafka有什麼區別?
  • Redis在你博客項目中的使用,爲何引入Redis?
  • Redis中存儲的是熱門文章,是經過什麼來獲得的?這樣作會有什麼問題麼?
  • 有聽過長尾效應麼?你經過推薦字段設置的推薦等級,這樣會讓這些文章一直保持在較高的點擊量,並且熱度和點擊量也不會隨着時間而下降,有什麼解決方案麼?
  • 我看到你有用到JustAuth這個登陸受權?說說它會存在帳號泄漏的問題麼?
  • 下面談談Redis,它會存在線程切換的問題麼?
  • 談談Redis單線程模型和IO多路複用
  • Redis的大Key的問題,若是有個Value的大小是2M,會有什麼問題麼?最大支持的Value大小是多少?
  • 談談Redis集羣 Redis Cluster,以及主從複製原理?
  • 說說Redis中的哨兵,即Redis Sentinel
  • 下面來聊聊Linux,你知道Linux怎麼查看當前的負載狀況麼?
  • 你還知道其它的一些Linux命令麼?
  • cat、tail、vi、vim命令的區別,分別說一說?
  • 若是Linux下須要打開或者查看大文件,你會怎麼作?
  • 下面聊聊Http Code,你知道 3XX 狀態碼 對應的是什麼?
  • 談談你知道的其它一些狀態碼,4XX 和 5XX?
  • 算法題:

(1)# 給定一些數組,例以下面的格式,他們都表示一個區間,而後你須要將區間進行合併

[1,2],[2,4],[3,7],[8,11]

# 如上所示, [1,2] 和 [2,4] = [1,4]

# 而後 [1,4] 和 [3,7] = [1,7]

# 最後 [1,7] 和 [8,11] 沒法合併,因此最後結果應該返回 [1,7],[8,11]

(2)# 給定一個數組,例如 [1,1,2,2,2,3,3,3,3]這樣的,裏面的數組不必定連續而且有序,假設我輸入 2,這個2表示出現次數最高的兩個

# 那麼你須要給我返回 2,3

字節跳動二面:

  • 自我介紹
  • 博客已經開源了麼,用的什麼開源協議,博客的用戶多麼?
  • 看你博客中用到了Solr和ElasticSearch,談談它們的原理,以及倒排索引?
  • 對於Solr或者ES裏面用到的一些中文分詞器有了解過麼?
  • 談談那些技術棧,你比較熟悉的是那些,mysql 和redis?
  • 聊聊MySQL的底層索引結構,InnoDB裏面的B+Tree?
  • B Tree 和 B+ Tree的區別
  • 聊聊MySQL索引的發展過程?是一來就是B+Tree的麼?從 沒有索引、hash、二叉排序樹、AVL樹、B樹、B+樹 聊。
  • 談談MySQL裏面的事務,說說什麼是事務?
  • MySQL裏面有哪些事務級別,而且不一樣的事務級別會出現什麼問題?
  • 談談可重複讀和幻讀的區別?
  • MySQL中若是使用like進行模糊匹配的時候,是否會使用索引?必定不會用麼?
  • 談談Redis吧,在你項目中的具體使用?
  • 談談Redis如何實現分佈式鎖?
  • 蘑菇博客是否存在緩存不一致的狀況,你是如何解決的?
  • 談談Redis中緩存穿透的問題,以及解決的方法?
  • 還有其它解決緩存穿透的方法麼?布隆過濾器有了解過麼?
  • Redis中大面積的緩存失效,而後請求所有打到數據庫,有什麼解決方法?
  • 若是出現一些熱點數據,好比明星之間的新聞,形成大量的吃瓜用戶涌入後臺,可是服務器尚未緩存對應的數據,這樣可能形成數據庫宕機,如何避免這樣的狀況?
  • 聊聊 JVM的組成結構?
  • 談談垃圾收集原理?以及垃圾收集算法
  • 複製算法 和 標記整理算法?
  • 爲何不在新生代使用標記整理算法?或者在老年代使用複製算法?
  • 有了解過Volatile麼?談談你對Volatile的理解
  • Volatile如何保證可見性的?以及如何實現可見性的機制。
  • 若是大量的使用Volatile存在什麼問題?
  • 談談操做系統的線程,以及它的狀態
  • 線程和進程的區別?
  • 爲何提出多線程應用,而不是多進程應用呢?
  • Linux你平時都有用到什麼命令呢?
  • 若是我須要查看端口號或者進程號,你會使用什麼命令?
  • 談談你作的另一個項目吧?稍微介紹一下
  • 來吧,寫個題目試試

# 鏈表的兩兩翻轉 # 給定鏈表: 1->2->3->4->5->6->7 # 返回結果: 2->1->4->3->6->5->7

字節跳動第三面:

  • 自我介紹
  • 好奇一下,用碼/雲的人應該很少吧,爲何沒有用Github?
  • 你英文水平怎麼樣?
  • 聊聊開源項目吧?我看這項目已經有800多讚了,你在這開源項目主要作了什麼工做?
  • 咱們找些點來聊聊吧?先從ES和Solr開始,大家這兩個都有在用麼?
  • SQL的方式實現搜索,你是怎麼作的呢?
  • 使用like匹配的時候,會不會查詢很是慢呢?
  • ES和Solr的底層都用了lunce,談談你對lunce的理解?
  • lunce裏面也有用到分詞器,好比一些新的詞 「新冠肺炎」 ,它能不能作到很好的劃分呢?
  • 除了人爲的維護詞庫,來解決最新詞語的分割,你還有知道其它什麼更好的方法麼?
  • 你有了解過其它什麼開源的分詞庫麼?
  • 談談字典樹?
  • Solr 和 ES底層都用了Lunce,那他們二者有什麼區別呢?
  • Solr所謂的集羣環境 和 ES所謂的分佈式環境,它們之間有什麼區別呢?
  • 上面你有提到微服務,你有了解過微服務是個什麼樣的理念麼?
  • 你如今的微服務,也是打包成多個jar包,部署在一個服務器上,若是服務器出現問題了,也會形成服務不可用,有沒有好的解決方法呢?
  • 聊聊服務的註冊與發現?
  • 服務的註冊和發現,其實依賴於一個註冊中心的概念,會不會出現註冊中心掛掉,而致使整個服務不可用,有沒有什麼好的解決方法呢?
  • 有了解過Zookeeper整個的選舉過程麼?
  • 談談Zookeeper的分佈式一致性協議?
  • 聊聊索引,我給你寫個表,看看下面的查詢語句,走了那些索引?

create table 'tb' (

id int,

name varchar(64),

status int,

createtime timestamp,

PRIMARY KEY (`id`)

)

-- 建立了三個普通索引

create index index_name on table('name')

create index index_status on table('status')

create index index_createtime on table('createtime')

-- 給定SQL語句,判斷下面查詢會用到幾個索引

select * from tb where status = 1 and name = "zhangsan"

  • 上述SQL用到了幾個索引?分別是那幾個?
  • 有了解過InnoDB底層的索引結構麼?
  • 經過兩個索引查詢出來的結果,會進行什麼樣的操做?交集,並集?
  • 若是你在MySQL中遇到一些慢查詢,有什麼解決方法麼?
  • 談談explain?執行的explain後,出現的那些字段,可以幫助咱們呢?
  • 我看你的博客裏面,關於Redis還有好幾篇文章,咱們能夠聊一聊你對Redis的理解?
  • 爲何Redis可以保持這麼高的併發響應?
  • 有了解過IO多路複用技術是個什麼樣的原理
  • 經過一個線程,同時鏈接多個線程不會存在多個線程切換麼?(感受進坑了。。)
  • 當你經過jedis進行鏈接redis的時候,已經和一個進程鏈接了 ,redis還可以和其它的進程進行通訊麼?
  • Redis每秒可以處理處理十萬請求,若是按照你上面說的,那說明它每次交互只在 1/十萬 秒內完成?
  • 有了解過Redis的源碼麼?
  • MySQL用了B+Tree,Redis中的SortSet內部用了跳躍表,他們之間有什麼差異?爲何MySQL不用跳躍表,或者是Redis不用B+Tree呢?
  • 感受本身編碼功底怎麼樣?那咱們先聊聊操做系統的知識再給你一道題吧。在操做系統中,有高速緩存,主存,虛擬內存,外存,知道它們之間有什麼樣的關係,以及它們的做用是啥?
  • 對它們來講,確定會存在一個問題,就是當咱們的主存滿了,或者虛存滿了,那麼須要存在一個換頁操做,你知道有那些換頁算法麼?
  • 咱們來聊聊LRU?叫你手寫一個LRU算法談談你的思路?
  • 用鏈表的方式實現,時間複雜度是O(N),有沒有什麼方式可以讓它是O(1)的時間複雜度呢?
  • OK,思路還能夠,那你手寫一個LRU算法吧?(雙向鏈表 + Hash?)

字節跳動面試題答案:

以上三輪面試的技術題的詳細答案與解析均整理在文檔內,因爲解析文字過多,不在文章中分享,須要這份面試題答案能夠私信我。

入職字節跳動那一天,我哭了(蘑菇街被裁,奮戰7個月拿下offer)

 

總結

此次可以順利入職字節跳動,能夠說是運氣和實力參半,但我一直持有的一個觀念就是:好運永遠是留給有準備的人。

因此,做爲一名技術人,對大廠有着執念,那就要落實下來,相信本身付出是會有所回報的。在這,我也祝你們在接下來的金九銀十里,面試順利,過關斬將,拿下offer。

以上文章裏寫到的全部文檔資料,均免費分享,有須要的

一鍵三連以後【見下圖】,便可免費領取

相關文章
相關標籤/搜索