今日頭條實習面試題解析
題目來源:https://www.nowcoder.com/discuss/79937?type=2&order=3&pos=20&page=1
1,資料庫的隔離級別:
read uncommitted
read committed
repeatable read(MySQL資料庫預設級別)
Serializable
√: 可能出現 ×: 不會出現
髒讀 不可反覆讀 幻讀
Read uncommitted √ √ √
Read committed × √ √
Repeatable read × × √
Serializable × × ×
2,各個級別存在什麼問題以及如何解決的?
對資料進行加鎖,悲觀,樂觀鎖(對這方面不太瞭解,希望瞭解的給小弟解說一下,謝謝)
3,Redis哪些資料結構?(是value可以為哪幾種資料型別嗎?)
String字串
List列表
Set集合
Hash雜湊
Zset有序集合
4,5均和Redis有關,技術有限,後期再補充
(題目:4.SortSet底層資料結構是什麼?
5.跳錶和B樹區別?)
6,B+和B樹的區別?
結構上
B樹中關鍵字集合分佈在整棵樹中,葉節點中不包含任何關鍵字資訊,而B+樹關鍵字集合分佈在葉子結點中,非葉節點只是葉子結點中關鍵字的索引;
B樹中任何一個關鍵字只出現在一個結點中,而B+樹中的關鍵字必須出現在葉節點中,也可能在非葉結點中重複出現;
效能上(也即為什麼說B+樹比B樹更適合實際應用中作業系統的檔案索引和資料庫索引?)
不同於B樹只適合隨機檢索,B+樹同時支援隨機檢索和順序檢索;
B+樹的磁碟讀寫代價更低。B+樹的內部結點並沒有指向關鍵字具體資訊的指標,其內部結點比B樹小,盤塊能容納的結點中關鍵字數量更多,一次性讀入記憶體中可以查詢的關鍵字也就越多,相對的,IO讀寫次數也就降低了。而IO讀寫次數是影響索引檢索效率的最大因素。
B+樹的查詢效率更加穩定。B樹搜尋有可能會在非葉子結點結束,越靠近根節點的記錄查詢時間越短,只要找到關鍵字即可確定記錄的存在,其效能等價於在關鍵字全集內做一次二分查詢。而在B+樹中,順序檢索比較明顯,隨機檢索時,任何關鍵字的查詢都必須走一條從根節點到葉節點的路,所有關鍵字的查詢路徑長度相同,導致每一個關鍵字的查詢效率相當。
(資料庫索引採用B+樹的主要原因是,)B-樹在提高了磁碟IO效能的同時並沒有解決元素遍歷的效率低下的問題。B+樹的葉子節點使用指標順序連線在一起,只要遍歷葉子節點就可以實現整棵樹的遍歷。而且在資料庫中基於範圍的查詢是非常頻繁的,而B樹不支援這樣的操作(或者說效率太低)。
7.資料庫InnoDB下如何加鎖?
在mysql 的 InnoDB引擎支援行鎖,與Oracle不同,mysql的行鎖是通過索引載入的,即是行鎖是加在索引響應的行上的,要是對應的SQL語句沒有走索引,則會全表掃描
行鎖則無法實現,取而代之的是表鎖。
表鎖:不會出現死鎖,發生鎖衝突機率高,併發低。
行鎖:會出現死鎖,發生鎖衝突機率低,併發高。
鎖衝突:例如說事務A將某幾行上鎖後,事務B又對其上鎖,鎖不能共存否則會出現鎖衝突。(但是共享鎖可以共存,共享鎖和排它鎖不能共存,排它鎖和排他鎖也不可以)
死鎖:例如說兩個事務,事務A鎖住了15行,同時事務B鎖住了610行,此時事務A請求鎖住610行,就會阻塞直到事務B施放610行的鎖,而隨後事務B又請求鎖住15行,事務B也阻塞直到事務A釋放15行的鎖。死鎖發生時,會產生Deadlock錯誤。
鎖是對錶操作的,所以自然鎖住全表的表鎖就不會出現死鎖。
2.行鎖的型別
行鎖分 共享鎖 和 排它鎖。
共享鎖又稱:讀鎖。當一個事務對某幾行上讀鎖時,允許其他事務對這幾行進行讀操作,但不允許其進行寫操作,也不允許其他事務給這幾行上排它鎖,但允許上讀鎖。
排它鎖又稱:寫鎖。當一個事務對某幾個上寫鎖時,不允許其他事務寫,但允許讀。更不允許其他事務給這幾行上任何鎖。包括寫鎖。
89兩題資料庫語句分析,索引,不太熟悉,以後加強補充(題目:8.分析 delect from table where user_id=“1”;這句話怎麼加鎖的?
9.如果user_id使用單列索引,聯合索引,又是怎麼加鎖的?)
10,演算法題:
待續
相關文章
- 「前端面試題系列1」今日頭條 面試題和思路解析前端面試題
- 今日頭條Android面試Android面試
- 記一次今日頭條面試面試
- 深度解析某頭條的一道面試題面試題
- 半年工作經驗今日頭條和美團面試題面經分享面試題
- 今日頭條視訊的地址解析下載
- 今日頭條 Flutter 架構實踐Flutter架構
- 手記 《半年工作經驗今日頭條和美團面試題面經分享》面試題
- Vue實戰篇(Vue仿今日頭條)Vue
- React實戰篇(React仿今日頭條)React
- 今日頭條極速版和今日頭條有什麼區別?
- java程式設計師最難面試之“今日頭條”Java程式設計師面試
- Swift 4 - 模仿今日頭條Swift
- 2020年開春最新面試!今日頭條 Android 面試題及答案 (已拿到 offer)Android面試題
- 模仿今日頭條app開發遇到的問題APP
- 今日頭條程式設計題1 找"最大"點程式設計
- 今日頭條上央視新聞 很快今日頭條回應廣告“二跳”事件事件
- 吳鏑:TiDB 在今日頭條的實踐TiDB
- 今日頭條怎麼搬運影片,短影片搬運案例解析!
- thinkphp仿今日頭條原始碼PHP原始碼
- 今日頭條怎麼設定黑色背景?今日頭條app開啟深色模式的技巧APP模式
- 今日頭條:2017今日頭條圖書閱讀大資料(附下載)大資料
- 今日頭條怎麼賺錢?頭條號的賺錢思路
- 位元組跳動(今日頭條)推薦演算法實習生面試演算法面試
- 今日頭條Go建千億級微服務的實踐Go微服務
- 今日頭條:2018今日頭條兩會閱讀大資料(附下載)大資料
- 今日頭條技術架構分析架構
- 今日頭條的小遊戲戰術遊戲
- 今日頭條正式釋出小程式
- 今日頭條app資料包分析APP
- 聽說這是一道頭條面試題面試題
- 前端學習演算法3:一道來自頭條的面試題前端演算法面試題
- Java演算法面試題(005) 求n邊形周長的k等分點座標(今日頭條)Java演算法面試題
- 朝夕光年——今日頭條的“遊戲據點”遊戲
- 【iOS】今日頭條選單選項篇iOS
- java簡單的爬蟲(今日頭條)Java爬蟲
- 頭條前端實習崗涼經有感前端
- 今日面試題分享面試題