資料庫相關崗位面試準備建議

德哥發表於2018-10-05

標籤

PostgreSQL , 資料庫 , 面試準備


背景

本文同時適合用人方、闖關應聘方。

注意通過面試問題,發掘小夥伴的極限。找準小夥伴層級定位。

類目

至少應該包含如下,每一項應該包含範圍,考察目的,評判標準,不同等級的差異化,對應的深度、廣度。

外圍能力考察

作業系統

比如

  • 為什麼有殺不掉的程式,什麼原因?
  • 程式的幾種狀態? D狀態是什麼原因造成的?Z狀態是什麼原因造成的?
  • 如果程式HANG住,如何排查? pstack , gdb
  • 增加資料庫併發,資料庫效能並沒有線性提升,通常可能的原因有哪些?如何排查? strace, ptrace, perf, oprofile
  • cgroup 可以做哪些隔離,
  • Linux下面有哪些虛擬技術,他們的差異。
  • 程式、執行緒間通訊技術
  • 程式、執行緒、協程。

儲存

比如

  • 傳統檔案系統
  • 卷管理
  • INODE
  • 分散式檔案系統
  • DIO與BUFFERIO
  • 如何測試儲存效能
  • fadvise

網路

比如

  • 網路協議
  • 如何排查網路問題
  • 如何測試網路效能

資料庫能力考察

1 協議

  • 訊息格式
  • 資料庫認證過程 ,如何做到認證過程中密碼防竊取。
  • 流複製協議
  • 邏輯複製協議

2 啟動過程

  • 資料庫正常、異常啟動過程
  • 解釋資料庫SQL處理過程
  • checkpoint 機制 , 排程演算法

3 備份與恢復

  • REDO的資料結構
  • 一致性邏輯備份的原理
  • 一致性並行邏輯備份的原理
  • 邏輯備份的增量備份原理
  • 物理備份
  • 物理備份增量備份的原理
  • 邏輯恢復的原理,如何並行恢復,為什麼需要收集統計資訊
  • 如何加速邏輯恢復
  • 物理備份的PIRT原理
  • 物理增量備份的恢復原理
  • 物理恢復什麼時候算是一致性位點

4 程式結構

  • 資料庫有哪些程式,分別負責什麼工作
  • PG後臺程式的IPC機制

5 物理結構

  • 資料庫的資料檔案結構,PAGE結構,TUPLE結構,不同索引介面的索引內部結構

6 優化器

  • cbo與rbo的差異
  • CBO的依據是?
  • 資料庫如何建立執行計劃
    • plan tree的結構,node的輸入輸出,如何評估選擇性,如何評估成本,影響成本評估的因素,影響選擇性評估的因素
  • SQL REWRITE
    • 哪些情況下可以有SQL REWRITE,為什麼需要sql rewrite
  • 統計資訊收集排程
    • 例項級引數,表級引數,如何排程,排程演算法,worker,launcher喚醒演算法等。
  • 統計資訊包含哪些要素
    • 行數,頁數,高頻詞,柱狀圖,相關性,唯一值比例,空值比例,平均長度,。。。要素有什麼用?
  • 多值列的統計資訊
  • 多列組合統計資訊
    • 為什麼需要多列統計,多列統計包含哪些資訊(唯一值,線性相關性,選擇性),這些要素對優化器有什麼用(多列條件時提高選擇性,為什麼?)
  • 成本計算方法
    • 各種NODE的成本計算方法,全表,索引掃,點陣圖掃,索引ONLY掃,表示式,。。。。。。
  • 成本計算 運算元
    • 至少介紹幾種運算元,以及作用,seq, random, cpu, ops, effective cache, parallel tupel, index setup…..
  • 資料選擇性計算方法 (行數估算)
    • 如何估算行數
  • 資料庫有哪些掃描方法,它們的掃描細節:
    • (seq, index, index only, bitmap index scan)
  • Ora:SKIP INDEX SCAN
  • filter, recheck 的區別,為什麼會出現
  • 資料庫有哪些JOIN方法,分別適合什麼場景,有什麼約束,優化器如何選擇使用什麼方法,影響優化器選擇的因素有哪些,以及每一種的JOIN原理
  • bloom filter在優化器中的應用有哪些
  • 多表JOIN順序的選擇原理
  • 遺傳TSP演算法

7 SQL規則與觸發器

  • RULE
    • RULE在什麼時候被觸發,什麼時候不被觸發,RULE有什麼用
  • 觸發器,
    • 多個觸發器時,觸發的順序,如何傳遞引數,如何傳遞結果
    • before, after, row, statement的區別
    • BATCH觸發的好處,如何使用BATCH
  • 事件觸發器
    • 哪些場景可以使用EVENT TRIGGER,他們的原理

8 HOOK

  • 資料庫有哪些HOOK
  • 哪些外掛使用了HOOK
  • HOOK有什麼用,如何使用

9 三態

  • 函式三態知識
  • 三態與MVCC的關係
  • 三態在PS中的異同
  • 優化器如何考慮三態
  • 索引掃描與三態
  • 表示式索引與三態

10 索引

  • 資料庫有哪些索引介面(btree,hash,gin,gist,spgist,rum,brin,bloom,bitmap …)
  • 分別適應什麼場景(從資料分佈、讀寫請求角度);
  • 資料寫入時的UNDO、表、索引操作流程;
  • 資料更新、刪除時的UNDO、表、索引操作流程;
  • UK約束的操作流程。
  • 索引分裂。
  • BTREE的連結串列結構
  • HASH索引的內部結構
  • GIN索引的結構
  • 當表上面有很多索引時,會有什麼問題,如何優化,核心層面有什麼優化方法
  • 多個欄位都可以走索引時,優化器如何做出選擇,bitmap scan的原理
  • 多欄位複合索引的欄位順序選擇規則,解釋清楚原理

11 約束

  • 有哪些約束(check, fk, uk, pk, not null, exclusive constraint)
  • 每一種約束作用

12 儲存結構

  • 資料庫有哪些索引介面:儲存結構如何(meta, root, …);
  • FSM,VM結構,insert時如何找到適當的BLOCK,如何避免併發INSERT時插入同一個BLOCK帶來的熱點
  • HEAP的資料檔案結構、BLOCK結構、TUPLE結構
  • 行儲存與列儲存,以及適應的場景,不適應的場景
  • 列儲存有哪些核心層面的優化手段
  • 分散式資料庫的資料傾斜原因,解法
  • 分散式資料庫的查詢傾斜原因,解法
  • Ora聚集表的儲存結構,應用場景,缺點(不適合的場景)

13 型別

  • 資料庫裡面有哪些資料型別,分佈適合什麼業務場景
  • 不同資料型別有一些什麼樣的操作
  • 如何自定義型別

14 SQL語法

  • CRUD
  • CTE
  • 遞迴
  • SKIP LOCK
  • MERGE
  • CUBE
  • 行列變換
  • 非同步訊息
  • 事務,子事務
  • 2PC
  • 會話memcontext
  • SRF
  • 聚合
  • 視窗
  • 如何自定義聚合
  • 聚合計算原理
  • 並行聚合計算原理
  • 哪些操作可能rewrite table, 如何避免

15 如何排錯

  • 如何定位錯誤原始碼
  • 如何上報BUG
  • 有哪些可以尋求幫助的途徑,網站

16 執行資訊

  • 有哪些執行資訊值得關注
  • 有哪些跟蹤開關
  • 有哪些開發者開關
  • 原始碼中有哪些編譯開關可被設定,在哪裡設定
  • 當前執行資訊
  • 歷史執行資訊
  • TOP
  • 等待事件
  • 等待
  • 系統層PROFILE
  • 審計

17 問題診斷思路

18 垃圾回收

  • Ora,UNDO原理
  • PG,多版本原理
  • PG 新儲存引擎zheap
  • 垃圾回收原理,相關引數
  • FREEZE的原理,相關引數

19 並行

  • 如何並行建立索引,原理。
  • 資料庫支援哪些平行計算,介紹平行計算的原理,優化器對並行度的計算原理。
  • 如何控制並行度
  • join 並行的原理 (分別介紹 hash, mrege, nestloop)
  • 並行seq scan原理
  • 並行索引掃描原理
  • 並行排序的原理
  • 分割槽表並行JOIN,GROUP原理
  • 並行GROUP原理
  • 多階段並行聚合的原理

20 排序

  • 排序演算法
  • 非完全索引排序優化原理

21 鎖和併發控制

  • 有一些什麼鎖
  • 鎖的衝突
  • 事務隔離級別
  • MVCC機制
  • 2PC的過程
  • 垃圾回收與事務的關係
  • 為什麼需要SNAPSHOT TOO OLD
  • UNDO機制
  • 什麼情況下可能出現雪崩,如何防止雪崩
  • 分散式資料庫的分散式死鎖檢測機制
  • 分佈死鎖資料庫的快照,併發控制,隔離實現原理
  • 分散式資料庫的全域性一致性備份,恢復

22 流複製

  • 流複製的機制
  • 衝突檢測機制
  • 如果備庫開啟FEED BACK對主庫有什麼傷害
  • 同步複製機制的堵塞機制
  • 如何降低延遲
  • 如何避免主備斷開後需要重搭
  • 如何做到資料傳輸安全
  • 如何降低跨域資料傳輸延遲

23 應用場景

  • 遞迴查詢的應用場景介紹
  • 分頁的使用和優化
  • 如何優化任意欄位組合查詢
  • 如何優化 混合 普通型別、陣列、多值列、JSON、空間、時間 等多種搜尋過濾需求同時出現 的場景
  • 如何優化模糊查詢、全文檢索、相似查詢
  • 如何優化kv, hstore, json, array, tsvector的搜尋
  • 如何優化時序資料的搜尋、插入 (schema less (以及為什麼需要schema less)。 BRIN的核心優化,range 分段。 )
  • IOT場景有什麼特點,資料庫如何支撐。
  • 如何分析相似軌跡,時態資料查詢如何優化。
  • TP、AP、流、圖、時序、空間、搜尋、系統架構設計。
    • 這幾類場景,分別用到資料庫的什麼特性。
  • 空間資料
    • 空間資料有一些什麼型別。向量(點、線、面、點雲、軌跡)、柵格。
    • 哪些場景會用到空間資料,怎麼使用。
    • 空間資料如何構建索引,講講索引結構。
    • 時空資料,多維度查詢,如何構建索引。
    • 大型空間資料的處理,搜尋。
    • 資料路由問題。
    • 1到多的送餐路徑規劃。
    • 多到多的路徑規劃。
    • 開發型別、UDF、操作符、索引對接。

24 架構

  • NOSQL, 快取, 關聯式資料庫, OLAP等產品, 如何結合使用
  • 為什麼業務要限流開關
  • 如何設計限流
  • 資料生態包含哪些東西

25 監控與日常維護

  • 資料庫哪些指標需要被監控,為什麼,如何發現問題。
  • 長事務有什麼問題?
    • 從垃圾回收的角度,解釋垃圾回收原理,判定
    • 如果能提出改進思路更好
  • 延遲VACUUM有什麼問題
  • 備庫開啟FEED BACK有什麼問題

26 資料庫可靠性

  • 如何保證資料的可靠性
  • 如何保證資料的一致性
  • 如何保證資料的原子性
  • 閃回
    • 閃回有哪些操作歸類
    • 如何設計閃回,針對不同的操作,應該如何閃回
  • 容災
    • 如何設計容災系統。
  • 如何定義0丟失。
  • 如何設計0丟失的資料庫叢集。
  • 多副本
    • 解釋一下多副本的原理

27 資料庫可用性

  • 可用性與可靠性如何兼得

28 資料庫安全

  • 安全系統設計
    • 安全分層,每一層如何設計
  • 審計系統設計

29 硬體評估與規劃

  • 如何評估需要多少硬體。

30 版本升級與資料遷移、同步

  • 小版本升級
  • 大版本升級
  • 同構資料遷移
  • 同構資料同步
  • 異構資料遷移
  • 異構資料同步

31 社群動態

經常關注

32 Oracle相容性相關

33 PG開源生態

34 PG的缺陷和優勢

  • 缺陷
  • 優勢
  • ROADMAP
  • 你有什麼想法

35 對PG軟體本身有什麼想法,建議,TODO

36 對PG社群的發展有什麼想法,建議,TODO

37 對分散式資料庫,RAC,AURORA架構的理解

38 思考

  • 為什麼需要設計REDO,有沒有想過持久化儲存與記憶體效能齊平後的全新架構
  • wal writer 機制,如何設計並行wal writer
  • 運維DBA和開發DBA的區別?
  • 如何進行資料庫選型
  • 市面上有哪幾類資料產品,分別適應什麼場景,設計上有什麼軟肋,不適應什麼場景. db-engine
  • 緊急情況處理、
  • 問題診斷思路、
  • 邏輯複製需要注意什麼東西?
  • 如何設計BENCHMARK。
  • 為什麼喜歡搞資料庫?
  • 經常上什麼技術網站?
  • 遇到問題通常如何應對?
  • 工作經歷,總結,反思,改變。

CODING能力考察

崗位等級劃分標準

主要發掘小夥伴什麼方面的能力

基本功

經驗

上進心

學習能力

品格

應變能力

抗壓能力

穩定性

理想

格局、藍圖

執行力

心態


相關文章