1. 程式人生 > 其它 >面試題目突擊

面試題目突擊

1、紅黑樹、b+樹、跳錶、倒排索引

紅黑樹:平衡二叉樹,通過對任何一條從根到葉子的簡單路徑上各個節點的顏色進行約束,確保沒有一條路徑會比其他路徑長2倍,因而是近似平衡的。所以相對於嚴格要求平衡的AVL樹來說,它的旋轉保持平衡次數較少。用於搜尋時,插入刪除次數多的情況下我們就用紅黑樹來取代AVL。
(現在部分場景使用跳錶來替換紅黑樹,可搜尋“為啥 redis 使用跳錶(skiplist)而不是使用 red-black?”)

B樹,B+樹:它們特點是一樣的,是多路查詢樹,一般用於資料庫系統中,為什麼,因為它們分支多層數少唄,都知道磁碟IO是非常耗時的,而像大量資料儲存在磁碟中所以我們要有效的減少磁碟IO次數避免磁碟頻繁的查詢


B+樹是B樹的變種樹,有n棵子樹的節點中含有n個關鍵字,每個關鍵字不儲存資料,只用來索引,資料都儲存在葉子節點。是為檔案系統而生的。

跳錶是一種隨機化的資料結構,目前開源軟體 Redis 和 LevelDB 都有用到它,

它的效率和紅黑樹以及 AVL 樹不相上下,連結串列是有序的,但不能使用二分查詢。類似二叉搜尋樹,我們把一些節點提取出來,作為索引

再從一級索引提取一些元素出來,作為二級索引

Lucene使用倒排索引

以word作為關鍵索引。表中關鍵字所對應的記錄表項記錄了出現這個字或詞的所有文件,一個表項就是一個字表段,它記錄該文件的ID和字元在該文件中出現的位置情況

2、集合

vector支援增量因子

hashmap執行緒不安全,效率高,允許鍵為空

3、CAS

4、http

伺服器將非對稱加密的公鑰傳遞給客戶端

客戶端用傳過來的公鑰對client key加密,伺服器用私鑰解密。使用client key對資料進行對稱加密,客戶端使用非對稱解密

5、程序和執行緒

程序:每個程序都有獨立的程式碼和資料空間(程序上下文),程序間的切換會有較大的開銷,一個程序包含1--n個執行緒。(程序是資源分配的最小單位)
執行緒:同一類執行緒共享程式碼和資料空間,每個執行緒有獨立的執行棧和程式計數器(PC),執行緒切換開銷小。(執行緒是cpu排程的最小單位)

6、三次握手與四次揮手