1. 程式人生 > 資料庫 >位元組跳動面經總結,之前被面試官殘虐MySQL!

位元組跳動面經總結,之前被面試官殘虐MySQL!

前言

每一個程式設計師都擁有一座大廠夢,我也不例外,去年面試位元組跳動,竟然被MySQL問倒了,很多相關性的問題都沒有答上來,才2面就涼涼了。回去之後也潛心複習了,準備了二戰,如今終於進入了位元組跳動,斬獲位元組offer!

位元組跳動面試題

1、請解釋關係型資料庫概念及主要特點?

2、請說出關係型資料庫的典型產品、特點及應用場景?

3、請詳細描述 SQL 語句分類及對應代表性關鍵字。

4、什麼是 MySQL 多例項,如何配置 MySQL 多例項?

5、如何加強 MySQL 安全,請給出可行的具體措施?

6、誤操作執行了一個 drop 庫 SQL 語句,如何完整恢復?

7、詳述 MySQL 主從複製原理及配置主從的完整步驟。

8、MySQL 如何實現雙向互為主從複製,並說明應用場景?

9、MySQL 如何實現級聯同步,並說明應用場景?

10、MySQL 主從複製故障如何解決?

二戰阿里,天貓團隊面試題(3輪技術面+HR面)

面試技術題:

1、自我介紹唄

2、專案介紹唄(先自己介紹專案,然後再聊天)

3、junit用法,before,beforeClass,after,afterClass的執行順序

4、分散式鎖

5、nginx的請求轉發演算法,如何配置根據權重轉發

6、用hashmap實現redis有什麼問題(死鎖,死迴圈,可用ConcurrentHashmap)

7、執行緒的狀態

8、執行緒的阻塞的方式

9、sleep和wait的區別

10、hashmap的底層實現

11、一萬個人搶100個紅包,如何實現(不用佇列),如何保證2個人不能搶到同一個紅包,可用分散式鎖

12、Java記憶體模型,垃圾回收機制,不可達演算法

13、兩個Integer的引用物件傳給一個swap方法在方法內部交換引用,返回後,兩個引用的值是否會發現變化

14、AOP的底層實現,動態代理是如何動態,假如有100個物件,如何動態的為這100個物件代理?

15、是否用過maven install、 maven test、git(make install是安裝本地jar包)

16、Tomcat的各種配置,如何配置docBase

17、Spring的bean配置的幾種方式

18、Web.xml的配置

19、Spring的監聽器。

20、Zookeeper的實現機制,有快取,如何儲存註冊服務的

21、IO會阻塞嗎?readLine是不是阻塞的

22、用過 Spring的執行緒池還是java的執行緒池?

23、字串的格式化方法 (20,21這兩個問題問的太低階了)

24、時間的格式化方法

25、定時器用什麼做的

26、執行緒如何退出結束

27、java有哪些鎖?樂觀鎖 悲觀鎖 synchronized 可重入鎖 讀寫鎖,用過reentrantlock嗎?reentrantlock與synmchronized的區別

28、ThreadLocal的使用場景

29、Java的記憶體模型,垃圾回收機制

30、為什麼執行緒執行要呼叫start而不是直接run(直接run,跟普通方法沒什麼區別,先調start,run才會作為一個執行緒方法執行)

31、qmq訊息的實現機制(qmq是去哪兒網自己封裝的訊息佇列)

32、遍歷hashmap的三種方式

33、JVM的一些命令

34、memcache和redis的區別

35、Mysql的行級鎖加在哪個位置

36、ConcurrentHashmap的鎖是如何加的?是不是分段越多越好

37、myisam和innodb的區別(innodb是行級鎖,myisam是表級鎖)

38、MySQL其他的效能優化方式

39、Linux系統日誌在哪裡看

40、如何檢視網路程序?

41、統計一個整數的二進位制表示中bit為1的個數

42、JVM記憶體模型,java記憶體模型

面試題答案:

二戰前,我是如何複習的?

(1)MySQL 專題部分(先刷題)

1、Mysql 中有哪幾種鎖?

2、MYSQL 資料表在什麼情況下容易損壞?

3、MySQL 裡記錄貨幣用什麼欄位型別好

4、MYSQL 支援事務嗎?

5、解釋訪問控制列表

6、什麼是通用 SQL 函式?

7、什麼是非標準字串型別?

8、Mysql 表中允許有多少個 TRIGGERS?

9、什麼樣的物件可以使用 CREATE 語句建立?

10、NOW()和 CURRENT_DATE()有什麼區別?

11、可以使用多少列建立索引?

12、InnoDB 是什麼?

13、Mysql 如何優化 DISTINCT?

14、如何輸入字元為十六進位制數字?

15、如何顯示前 50 行?

......

MySQL 面試題答案:

(2)MySQL 效能優化的21個最佳實踐

1、為查詢快取優化你的查詢

2、EXPLAIN 你的 SELECT 查詢

3、當只要一行資料時使用 LIMIT 1

4、為搜尋欄位建索引

5、在 Join 表的時候使用相當型別的例,並將其索引

6、千萬不要 ORDER BY RAND()

7、避免 SELECT *

8、永遠為每張表設定一個 ID

9、使用 ENUM 而不是 VARCHAR

10、從 PROCEDURE ANALYSE() 取得建議

11、儘可能的使用 NOT NULL

12、Prepared Statements

13、無緩衝的查詢

14、把 IP 地址存成 UNSIGNED INT

15、固定長度的表會更快

16、垂直分割

17、拆分大的 DELETE 或 INSERT 語句

18、越小的列會越快

19、選擇正確的儲存引擎

20、使用一個物件關係對映器(Object Relational Mapper)

21、小心“永久連結”

(3)MySQL 效能調優與架構設計

基礎篇:

1、MySQL基本介紹

2、MySQL架構組成

3、MySQL儲存引擎簡介

4、MySQL安全管理

5、MySQL備份與恢復

效能優化篇:

1、影響MySQLServer效能的相關因素

2、MySQL資料庫鎖定機制

3、MySQL資料庫Query的優化

4、MySQL資料庫Schema設計的效能優化

5、MySQLServer效能優化

6、常用儲存引擎優化

架構設計篇:

1、MySQL可擴充套件設計的基本原則

2、可擴充套件性設計之MySQLReplication

3、可擴充套件性設計之資料切分

4、可擴充套件性設計之Cache與Search的..

5、MySQLCluster

6、高可用設計之思路及方案

7、高可用設計之MySQL監控

我的複習寶典資料

(1)Java面試手冊

1、效能優化面試專欄

2、微服務架構面試專欄

3、併發程式設計高階面試專欄

4、開源框架面試題專欄

5、分散式面試專欄

(2)實戰文件

1、Redis實戰

2、MySQL實戰

3、Spring Boot實戰

4、Spring Cloud實戰

5、實戰Java虛擬機器

以實戰Java虛擬機器為例:

1、初探Java虛擬機器

2、認識Java虛擬機器的基本結構

3、常用Java 虛擬機器引數

4、垃圾回收概念與演算法

5、垃圾收集器和記憶體分配

6、效能監控工具

7、分析Java堆

8、鎖與併發

9、Class 檔案結構

10、Class 裝載系統

11、位元組碼執行

(3)Java核心知識點整理文件

 

由於篇幅限制,很多內容都只展示了目錄和截圖,這些都整理在文件裡,需要這些文件資料的,均可以分享給大家,需要的朋友,  希望所有的程式設計師都能夠學習起來,努力實現我們的大廠夢!

喜歡小編的分享可以點贊關注哦,小編持續為你分享最新文章 和 福利領取哦