Java崗四面位元組跳動成功之前,我都刷了那些面試題以及做了那些準備!

2020-11-13 14:01:02

一面

一面面試老師是個小姑娘,人特別好(不僅僅指長相啊)。

問了mysql的索引

Redis的string型別

為什麼使用rabbitmq

rabbitmq有哪些部件,如何保證準確性跟一致性。

演演算法問了兩道

快排

無序陣列計算每個位置大於前面的多少個數位(歸併排序)

二面

二面就開始偏向專案了,

如何進行jvm調優(然後我巴拉巴拉,老師說你寫下具體的引數跟請求命令)

cpu滿了重新啟動系統後好了,但是一會又滿了,如何具體解決。(老師有點嚴格,一直說我不要聽原理,你給我說具體的命令)

然後問了如何設定秒殺系統

如何設定銀行系統,會碰到什麼問題

為什麼專案中使用了mongodb

同樣兩個演演算法

一個文字距離計算

(用動態規劃解決)

一個是無序陣列可以儲存多少雨水問題

 

三面

沒有問技術

就是聊了聊怎麼學習的

看了那些書

如何設定一個搶紅包的功能

以及自己專案中碰到了哪些問題,如何解決的

專案的技術選型以及為什麼要選擇它

然後最手寫一個演演算法

實現對hashmap增強,加上過期自動刪除還有淘汰策略實現最短過期時間刪除

HR面

技術規劃

還投了哪些公司

位元組瞭解

為什麼考研

專案中最大的收穫

這裡是我四面位元組成功之前,刷過的面試題;分享給大家!沒有包括演演算法,因為演算法系列的比較多,但是我整理了PDF。需要的話可以「加我VX小助理」來免費獲取到!

 

Java基礎

  • JAVA 中的幾種資料型別是什麼,各自佔用多少位元組。
  • String 類能被繼承嗎,為什麼。
  • 兩個物件的 hashCode() 相同,則 equals() 也一定為 true,對嗎?
  • String 屬於基礎的資料型別嗎?
  • Java 中操作字串都有哪些類?它們之間有什麼區別?
  • Java 中 IO 流分為幾種?
  • BIO、NIO、AIO 有什麼區別?
  • 用過哪些 Map 類,都有什麼區別,HashMap 時執行緒安全的嗎,並行下使用的 Map 是什麼,他們的內部原理分別是什麼,比如儲存方法,hashcode,擴容,預設容量等。
  • 如何將字串反轉?
  • 抽象類必須要有抽象方法嗎?
  • 普通類和抽象類有哪些區別?
  • 抽象類能使用 final 修飾嗎?
  • ArrayList 和 LinkedList 有什麼區別?
  • ConcurrentHashMap的資料結構(必考)
  • volatile作用(必考)
  • Atomic類如何保證原子性(CAS操作)(必考)
  • 為什麼要使用執行緒池(必考)

 

Redis

  • Redis的應用場景
  • Redis支援的資料型別(必考)
  • zset跳錶的資料結構(必考)
  • Redis的資料過期策略(必考)
  • Redis的LRU過期策略的具體實現
  • 如何解決Redis快取雪崩,快取穿透問題
  • Redis的持久化機制(必考)
  • Redis為什麼是單執行緒的?
  • 什麼是快取穿透?怎麼解決?
  • Redis持久化有幾種方式?
  • Redis為什麼這麼快?(必考)
  • Redis怎麼實現分散式鎖?
  • Redis如何做記憶體優化?
  • Redis淘汰策略有哪些?
  • Redis常見的效能問題有哪些?該如何解決?
  • Redis的使用要注意什麼?

ZooKeeper

  • CAP定理
  • ZAB協定
  • leader選舉演演算法和流程
  • zookeeper 是什麼?
  • zookeeper 有幾種部署模式?
  • zookeeper 怎麼保證主從節點的狀態同步?

Mysql

  • 事務的基本要素
  • 事務隔離級別(必考)
  • 如何解決事務的並行問題(髒讀,幻讀)(必考)
  • MVCC多版本並行控制(必考)
  • binlog,redolog,undolog都是什麼,起什麼作用
  • InnoDB的行鎖/表鎖
  • myisam和innodb的區別,什麼時候選擇myisam
  • 為什麼選擇B+樹作為索引結構(必考)
  • 索引B+樹的葉子節點都可以存哪些東西(必考)
  • 查詢在什麼時候不走(預期中的)索引(必考)
  • sql如何優化
  • explain是如何解析sql的
  • order by原理

JVM

  • 執行時資料區域(記憶體模型)(必考)
  • 垃圾回收機制(必考)
  • 垃圾回收演演算法(必考)
  • Minor GC和Full GC觸發條件
  • GC中Stop the world(STW)
  • 各垃圾回收器的特點及區別
  • 雙親委派模型
  • JDBC和雙親委派模型關係
  • JVM 中一次完整的 GC 流程是什麼樣子的,物件如何晉升到老年代,說說你知道的幾種主要的 JVM 引數

Spring

  • Spring的IOC/AOP的實現(必考)
  • 動態代理的實現方式(必考)
  • Spring如何解決迴圈依賴(三級快取)(必考)
  • Spring的後置處理器
  • Spring的@Transactional如何實現的(必考)
  • Spring的事務傳播級別
  • BeanFactory和ApplicationContext的聯絡和區別

其他

  • 高並行系統的限流如何實現
  • 高並行秒殺系統的設計
  • 負載均衡如何設計

作業系統篇

  • 程序和執行緒的區別
  • 程序同步的幾種方式
  • 執行緒間同步的方式
  • 什麼是緩衝區溢位。有什麼危害,其原因是什麼
  • 程序中有哪幾種狀態
  • 分頁和分段有什麼區別

多執行緒篇

  • 多執行緒的幾種實現方式,什麼是執行緒安全
  • volatile 的原理,作用,能代替鎖嗎?
  • sleep 和 wait 的區別
  • sleep(0)的意義
  • Lock 和 Synchronized 的區別
  • synchronized 的原理是什麼,一般用在什麼地方(比如載入靜態方法和非靜態方法的區別)

補充

另外還會考一些計算機網路之類的。像訊息佇列,RPC框架這種考的比較少。計算機網路就是分層啊,tcp/udp啊,三次握手之類的。作業系統就是程序與執行緒啊,程序的資料結構以及如何通訊之類的。

資料結構的排序演演算法也比較常考,考的話一定會讓你手寫個快排。剩下的演演算法題就靠LeetCode的積累了。其實非演演算法崗考的演演算法題都蠻簡單的,很多題完全就是考察你智力是否正常,稍微難點的涉及到一些演演算法思想的按照LeetCode題目型別的分類,每種題做一兩道基本就能完全應付面試了。