三面阿里失敗,幸獲高人指點缺陷所在,奮戰三個月成功入職位元組

程式設計師黑哥發表於2020-12-18

個人背景

我的個人背景非常簡單,Java開發經驗3年,學歷普通,一本本科計算機專業,畢業後出來就一直在一家網際網路公司Crud,在公司每天重複的工作對我的技術提升並沒有什麼幫助;

心思開始活泛想去追尋更具有挑戰的工作,於是就開始海投簡歷,沒曾想一個星期後居然收到了阿里巴巴是我面試邀請,由於來的有點突然,讓我慌手慌腳的,結果可想而知,在三面的時候掛了(能堅持到三面其實還是比較滿意的)

還好本人比較喜歡覆盤,把面試問題能記得的都做了記錄總結,大家先一起來看看吧。

阿里一面:

  1. 自我介紹
  2. 擅長哪方面的技術?
  3. Java有哪些鎖種類?(樂觀鎖&悲觀鎖、可重入鎖&Synchronize等)
  4. 比較重要的資料結構,如連結串列,佇列,棧的基本理解及大致實現
  5. J.U.C下的常見類的使用。 ThreadPool的深入考察; BlockingQueue的使用
  6. Java記憶體分代模型,GC演算法,JVM常見的啟動引數; CMS演算法的過程。
  7. volatile關鍵字有什麼用(包括底層原理)
  8. 執行緒池的調優策略
  9. spring cloud的服務註冊與發現是怎麼設計的?
  10. 分散式系統的全域性id如何實現
  11. 分散式鎖的方案,redis和zookeeper哪個個好,如果是叢集部署,高併發情況下哪個效能更好。

耗時將近50分鐘

阿里二面:

  1. 參與的專案,選一個,技術難度在哪裡?
  2. Collections.sort底層排序方式
  3. 負載均衡的原理
  4. 設計模式與重構,談談你對重構的理解
  5. 談談Redis相關的叢集有哪些成熟方案?
  6. 再談談一致hash演算法(redis)?
  7. 資料庫索引,B+樹的特性和建樹過程。
  8. mysql相關的行鎖,表鎖;樂觀鎖,悲觀鎖
  9. 談談多執行緒和併發工具的使用
  10. 講講Redis的架構和元件
  11. Redis的資料一致性問題(分散式多節點環境 & 單機環境)
  12. docker容器

耗時將近40分鐘

阿里三面(高階技術專家面):

  1. 高併發情況下,系統是如何支撐大量的請求的?
  2. 接著上面的問題,延伸到了中介軟體,kafka、redis、rocketmq、mycat等設計思路和適用場景等
  3. 最近上過上哪些技術站點; 最近在看哪些書。
  4. 工作和生活中遇見最大的挑戰,怎麼去克服?
  5. 未來有怎樣的打算

耗時將近30分鐘

自我反省

以上就是支付寶中三次面試全部問題了,事後回憶自己的基礎確實不紮實暴露了很多弊端;

同時這次面試也讓我冷靜了下來,本就是準備試著投投簡歷,看看現在市場的需求,並沒有做充足的準備;現在也知道接下來努力方向在哪裡了;

幸好三面的時候加了阿里常老師的微信,事後常老師告訴我說:如果招聘名額再多一個的話我會入選的,相比來說我雖然差了點,但是差的也並不多;同時給我指引了學習方向,只要把這幾個重點學習一遍,進大廠輕輕鬆鬆,沒一點問題。現在分享給各位小夥伴;

九大核心:

  • 多執行緒高併發
  • JVM虛擬機器
  • 設計模式
  • redis
  • zookeeper
  • mysql調優課程
  • netty
  • spring原始碼分析
  • 演算法

之後我就開始了三個月的惡補之旅。。。

我這三個月學習資料與路徑

下面所有資料都可以免費分享給各位,點選此處即可

多執行緒高併發:

image.png

JVM虛擬機器:

image.png

設計模式:

設計模式是純看馬士兵老師的視訊共9.5個G,視訊講解是真的香,會讓你理解得更為透徹;

image

Redis:

image.png

Zookeeper:

image.png

Mysql:

image.png

Netty:

著重推薦這一本《跟著案例學Netty》;本書共19個案例,用案例詳細透解Netty在實操中的實際問題;是一本快速幫人出坑的好書;

image.png

Spring原始碼分析:

對於Spring原始碼起初也是在看一些書籍,結果就是看完就忘,理解不深刻,之後發現看視訊並跟著實操是最快的理解方式;Spring原始碼100集真是香到不能再香了;

image

演算法:

關於演算法我可要多說兩句了,因為我能進入位元組跳動全靠它。

這是一本程式設計師面試寶典!書中對IT名企圖面試的類別轉化的最優解進行了總結,並提供了相關的程式碼實現。針對當前程式設計師面試缺乏權威的總結總結這一痛點,這本書選擇“將近200道真實出現過的經典程式碼面試題,幫助廣大程式設計師的面試準備做到萬無一失。”

本書採用題目+解答的方式組織內容,並把面試題型別相近或者解法相近的題目儘量放在一起,讀者在學習本書時很容易看出面試題解法之間的聯絡,使知識的學習避免碎片化。書中將所有的面試題從難到易依次分為“將、校、尉、士” 四個檔次,方便讀者有針對性地選擇“刷”題。本書所收錄的所有面試題都給出了最優解講解和程式碼實現,並且提供了一些普通解法和最優解法的執行時間對比,讓讀者真切地感受到最優解的魅力!

image

看過的面經:

image.png

上面所有資料都可以免費分享給各位,只需點選此處即可免費獲取

幸運女神的再次眷顧

在惡補了三個月之後迎來了一次位元組跳動的內推機會(謝謝馬老師給的一次內推機會)

下面給大家再看看位元組跳動問的面試題吧!(位元組三面壓力很大呀!)

一面

40min

  • Java記憶體模型
  • 兩個程式的變數的地址相同,它們之間的寫操作有相互的影響嗎
  • 程式通訊的方式
  • 關係型和非關係型資料庫
  • 事務的特點
  • 原子性和一致性的實現原理(不會)
  • TCP和IP為什麼要四次揮手
  • Close_ wait狀態是什麼(不會)
  • 甲乙輪流射箭,兩個人命中靶子的概率都是0.5 ,誰先射中就贏,問甲獲勝的概率(答案2/3 )
  • 演算法題:給出一串數字,去掉k個數,問能形成的最小的數

二面

50min

  1. Java HashMap
  2. put 資料的過程
  3. 連結串列非常長會怎麼樣
  4. 什麼情況下會轉紅黑樹
  5. ConcurrentHashMap作的改進
  6. 常見的垃圾回收演算法
  7. 引用計數的迴圈引|用的情況
  8. MySQL的聯合索引
  9. 索引的底層結構
  10. 100個人坐座位,第一個人隨機坐一個座位,後面的人優先坐自己的座位,只有當自己的座位被佔了才會隨機坐,問第100個人能坐到自己座位的概率(答案50% ,不會)
  11. 段頁式管理下, CPU取資料要幾次訪存
  12. 演算法題:給出一個數字串的排列,找出下一一個比當前數更大的一個排列(不能用next_ permutation )

三面

55min

  • 場景題:對HashMap rehash的時間進行優化

我第一次答了:事先預估capacity ,直接申請相應大小
我第二次答了:擴容時僅申請陣列但不拷貝,當get命中時順便拷貝過去
缺點是什麼(可能會生成很多陣列)
再優化

  • 手寫單例模式(餓漢、DLC懶漢)
  • 演算法題:給出一個轉義後的字串,問原串是什麼? (寫得並不太滿意)

位元組效率很高,面試完畢的第四天就已收到offer ,挺開心的哈。

最後祝各位看官都可以找到自己心儀的工作。

相關文章