秋招突擊——7/9——字節面經

文章目錄

    • 引言
    • 正文
      • 八股
        • MySQL熟悉嗎?講一下MySQL索引的結構?
        • 追問:MySQL為什么要使用B+樹?
        • 在使用MySQL的時候,如何避免索引失效?
        • 講一下MySQL的事物有哪幾種特征?
        • MySQL的原子性可以實現什么效果?
        • MySQL幾種隔離級別?常用的隔離級別是什么?
        • 為什么電商是讀已提交?
        • 如果主要采用讀已提交的話,怎么樣防止超賣?庫存有限的時候?秒拍的場景下?單說隔離級別的情況!以買票為例子,比如說一張票!實際業務系統里怎么防止超賣?
        • 你對飛書了解嗎?
    • 總結

引言

  • 這是我面試體驗感最好的一次,騰訊、拼多多、華為都沒有這個好,不僅僅是單方面接受拷打,是會和我討論我的方法有什么不對,然后還會認真聽我的研究方向,然后探討如何改良。之前所有的面試,基本上沒啥人會認真聽我的研究方向,以后我應該還會投字節,能去那里工作真的不錯,很棒!主要是飛書部門!
  • 正常面試下來我發現我的八股不行并且算法也不行
    • 八股是只會背這一道題,一旦跟我深入討論,我就不能順利答出來了
    • 算法是緊張了,沒寫出來,沒有考慮好!
  • 今天主要是把八股過一遍,算法已經過過了!

正文

八股

MySQL熟悉嗎?講一下MySQL索引的結構?

我的回答

  • 幫助查詢數據的一種數據結構,底層是用B+數保存索引,是否需要展開講一下B+樹的具體內容?
追問:MySQL為什么要使用B+樹?
  • 多叉樹,相同節點的情況下,樹的層高更低,磁盤IO次數更少,查詢效率更快
  • 葉子節點使用雙項鏈表保存,適用于范圍查找
  • 非葉子節點保存索引,葉子節點存儲數據,B數全部都存數據,搜索更快

個人問題

  • MySQL會將索引加入到內存中嗎?如果可以加載到內存中的話,就是會更快,如果沒有的話,就沒有意義了。
  • MySQL會將索引加載到內存中,從而提高查詢速度。具體來說,MySQL使用一種叫做“緩存”的機制來將索引數據存儲在內存中。這些緩存主要包括:
    • InnoDB Buffer Pool:這是InnoDB存儲引擎使用的主要緩存區,用于緩存數據頁和索引頁。通過將索引加載到緩沖池中,MySQL可以更快速地訪問和處理索引,從而加快查詢速度
在使用MySQL的時候,如何避免索引失效?
  • 這個題目一下子忘記了,太久沒背了,而且沒有具體使用過索引,底層并不了解,所以這里沒回答出來!或者說在胡扯!
    • 不能使用聚合函數的操作?扯淡,這個用不到!

**這里暫時先貼一下GPT的回答,這里每次都掛,今天準備抽時間,把這個索引這個章節從使用到原理都看一遍,再重寫一篇,這里先放在這里,今天寫完了,在貼鏈接! **
在這里插入圖片描述在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

講一下MySQL的事物有哪幾種特征?
  • 原子性:一個操作要么成功要么失敗,
  • 隔離性:
  • 持久性:保證事物不會因為執行失敗的斷電
  • 一致性:保證一個SQL語句執行前后的結果是一致的

這里說的不夠詳細,或者說不夠具體,很混亂,沒有一開始的那種從容和淡定了!緊張了!

  • 原子性

    • 確保事務中的所有操作要么全部完成,要么完全不執行。如果事務中的任何操作失敗,整個事務將回滾,數據庫會回到事務開始前的狀態。
  • 一致性(Consistency)

    • 一致性保證事務將數據庫從一個一致狀態轉移到另一個一致狀態。在事務開始和結束時,數據庫的完整性約束沒有被破壞。
  • 隔離性(isolated)

    • 隔離性確保并發事務彼此之間不會互相干擾。每個事務在其執行過程中所做的更改對其他事務是不可見的,直到該事務提交。
  • 持久性(Durability):

    • 持久性保證一旦事務提交,其結果將永久保存在數據庫中,即使發生系統崩潰也不會丟失
MySQL的原子性可以實現什么效果?
  • 網購購買成功,減庫存操作
  • 原子性主要是通過undolog保證實現的,事物執行失敗進行回滾,要么執行失敗,要么全部執行。
MySQL幾種隔離級別?常用的隔離級別是什么?
  • 電商常用的是讀已提交,MySQL的InoDB默認的隔離級別是可重復讀
  • 4種隔離級別,列舉出來了
為什么電商是讀已提交?
  • 電商對于并發性的要求比較高,然后可重復讀的會限制并發性,對于數據不一致可以容忍。
    在這里插入圖片描述
  • 1、性能考慮
    • 減少鎖爭用:在高并發環境下,“讀已提交”隔離級別減少了鎖的持有時間和范圍,避免了長時間的行級鎖定,從而減少了鎖爭用和死鎖的風險。相比于“可重復讀”或“串行化”隔離級別,“讀已提交”對系統性能的影響較小。
    • 提高吞吐量:降低鎖的粒度和持有時間有助于提高系統的并發處理能力,從而提高整體吞吐量。這對于高流量的電商平臺至關重要。
    1. 業務需求
    • 及時性要求:電商平臺需要及時反饋用戶的操作結果,如訂單創建、庫存查詢等。在“讀已提交”隔離級別下,用戶可以更快地看到最新的已提交數據,滿足了業務的及時性需求。
    • 一致性要求相對較低:對于許多電商業務場景,如商品瀏覽和搜索,對數據一致性的要求相對較低,允許一定程度的臟讀。
    1. 事務沖突減少
    • 降低事務沖突:在“讀已提交”隔離級別下,讀操作不會阻塞寫操作,寫操作也不會阻塞讀操作,減少了事務之間的沖突,提高了系統的并發處理能力。
    1. 適當的并發控制
    • 樂觀鎖和悲觀鎖的結合使用:在需要嚴格控制并發的場景,如庫存扣減和訂單處理,可以結合使用樂觀鎖或悲觀鎖,以確保數據的一致性和正確性。通過這種方式,可以在保持較高性能的同時,防止關鍵業務場景下的數據沖突和不一致
如果主要采用讀已提交的話,怎么樣防止超賣?庫存有限的時候?秒拍的場景下?單說隔離級別的情況!以買票為例子,比如說一張票!實際業務系統里怎么防止超賣?
  • 通過redis這種分布式鎖,通過鎖來控制訪問
  • 查的時候可以查有票,但是實際購買的時候,使用分布式鎖進行處理。

搜索回答
悲觀鎖

  • 讀取庫存的時候,鎖住相應的記錄,防止其他事物同時獲取或者修改記錄,使用select 。。。。for update實現
start transactionselect stock from ticks where ticket_id = 1 for update;
-- 檢查庫存是否足夠
IF stock > 0 THEN-- 執行購買操作UPDATE tickets SET stock = stock - 1 WHERE ticket_id = 1;-- 提交事務COMMIT;
ELSE-- 庫存不足,回滾事務ROLLBACK;
END IF;

樂觀鎖

  • 在更新庫存時,通過檢查庫存的版本號或者是時間戳來保證數據的一致性,在更新賬號時發現版本好發生變化,說明其他事物已經更新過了,需要重試
START TRANSACTION;-- 讀取庫存和版本號
SELECT stock, version FROM tickets WHERE ticket_id = 1;-- 檢查庫存是否足夠
IF stock > 0 THEN-- 嘗試更新庫存和版本號UPDATE tickets SET stock = stock - 1, version = version + 1 WHERE ticket_id = 1 AND version = @version;-- 檢查是否有行受影響IF ROW_COUNT() > 0 THEN-- 更新成功,提交事務COMMIT;ELSE-- 更新失敗,回滾事務并重試ROLLBACK;-- 重試邏輯(如重新開始事務)END IF;
ELSE-- 庫存不足,回滾事務ROLLBACK;
END IF;

原子操作

  • 使用數據的原子操作,如update中的判斷語句,在高并發的情況下,確保操作的原子性
START TRANSACTION;-- 嘗試更新庫存
UPDATE tickets SET stock = stock - 1 WHERE ticket_id = 1 AND stock > 0;-- 檢查是否有行受影響
IF ROW_COUNT() > 0 THEN-- 更新成功,提交事務COMMIT;
ELSE-- 更新失敗(庫存不足或其他原因),回滾事務ROLLBACK;
END IF;

分布式鎖

  • 在分布式系統中,使用分布式鎖,確保同一時間只能有一個實例在操作數據庫。
你對飛書了解嗎?
  • 不了解
  • 尷尬!

補充

  • 企業級協同辦公平臺
  • 特點
    • 即時消息
    • 文檔協作,提供強大的文檔掛你和權限控制功能,支持多人同時編輯和評論
    • 任何和項目管理
      • 提供任務管理 工具,創建、分配和跟蹤任務管理
      • 支持甘特圖等
    • 集成應用
      • 支持與第三方應用的集成,github和JIRA等
      • 提供API和Webhook,方便企業進行自定義開發和集成

總結

  • 大概率是進不去了,不過我學到了很多東西,后續會進一步進行改良,今天就加把勁,把MySQL的東西給補上,尤其是索引這一塊。
  • 也許這就是不斷面試的作用吧,不斷面試,不斷補全自己的知識網絡,然后不斷提高自己的能力!加油!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/43380.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/43380.shtml
英文地址,請注明出處:http://en.pswp.cn/web/43380.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

GESP C++ 三級真題(2023年9月)T2 進制判斷

進制判斷 問題描述 N進制數指的是逢N進一的計數制。例如,人們日常生活中大多使用十進制計數, 而計算機底層則一般使用二進制。除此之外,八進制和十六進制在一些場合也是 常用的計數制(十六進制中,一般使用字母A至F表示十至十五…

【區塊鏈+跨境服務】粵澳健康碼跨境互認系統 | FISCO BCOS應用案例

2020 年突如其來的新冠肺炎疫情,讓社會治理體系面臨前所未見的考驗,如何兼顧疫情防控與復工復產成為社會 各界共同努力的目標。區塊鏈技術作為傳遞信任的新一代信息基礎設施,善于在多方協同的場景中發揮所長,從 而為粵澳兩地的疫情…

uniapp上傳文件并獲取上傳進度

1. 上傳普通文件 uni.chooseMessageFile({count: 1,success: (res) > {console.log(res)console.log("res123456", res.tempFiles[0].path)const uploadTask uni.uploadFile({url: http://localhost:8000/demo,filePath: res.tempFiles[0].path,name: file,form…

CSS關于居中的問題

文章目錄 1. 行內和塊級元素自身相對父控件居中1.1. 塊級元素相對父控件居中1.2. 行內元素相對于父控件居中 2. 實現單行文字垂直居中3. 子絕父相實現子元素的水平垂直居中3.1. 方案一3.1.1. 示例 3.2. 方案二3.2.1. 示例 3.3. 方案三(推薦)3.3.1. 示例 3.4. 方案四(了解一下) …

AI大模型知識點大梳理_ai大模型的精度以下哪項描述的準確

AI大模型是什么 AI大模型是指具有巨大參數量的深度學習模型,通常**包含數十億甚至數萬億個參數。**這些模型可以通過學習大量的數據來提高預測能力,從而在自然語言處理、計算機視覺、自主駕駛等領域取得重要突破。 AI大模型的定義具體可以根據參數規模…

短信驗證碼研究:公開的短信驗證碼接口、不需要注冊的短信驗證碼接口

短信驗證碼研究:公開的短信驗證碼接口、不需要注冊的短信驗證碼接口 0 說明 本文提供了一個短信驗證碼接口,主要用于以下場景: 1、用于開發調試 2、用于申請驗證碼困難的企業和個人 3、用于短信驗證碼認證還沒有通過,但是著急…

DBeaver操作MySQL無法同時執行多條語句的解決方法

DBeaver選擇數據庫連接,在【驅動屬性】中將allowMultiQueries允許執行多條語句置為True

各種音頻處理器

在HiFi(高保真)音頻系統中,通常需要使用一些特定類型的音頻處理器,以確保音頻信號的高保真和優質輸出。以下是一些常見的音頻處理器類型及其在HiFi系統中的應用: DAC(數模轉換器): …

mysql 導出導入 數據庫

導出 MySQL 數據庫可以通過多種方法實現,最常見的方法是使用 mysqldump 工具。以下是一些常用的導出 MySQL 數據庫的方法: 使用 mysqldump 工具 mysqldump 是一個命令行工具,用于導出 MySQL 數據庫的結構和數據。以下是基本的導出命令&…

泰迪智能科技大數據實驗室產品-實訓管理平臺介紹

高校大數據實驗室通常配備有先進的計算機硬件和軟件工具,以及專門的數據庫和分析平臺,以便研究人員和學生能夠進行復雜的數據處理、分析和解釋。主要利用大數據技術進行科學研究、技術開發和人才培養。 泰迪智能科技實訓管理平臺作為教學核心&#xff0c…

JS進階-構造函數

學習目標: 掌握構造函數 學習內容: 構造函數 構造函數: 封裝是面向對象思想中比較重要的一部分,js面向對象可以通過構造函數實現的封裝。 同樣的將變量和函數組合到了一起并能通過this實現數據的共享,所不同的是借助…

小程序需要進行軟件測試嗎?小程序測試有哪些測試內容?

在如今移動互聯網快速發展的時代,小程序已成為人們生活中不可或缺的一部分。然而,面對日益增長的小程序數量和用戶需求,小程序的穩定性和質量問題日益突顯。因此,對小程序進行軟件測試顯得尤為重要。 近期的一項調查顯示&#xf…

【架構】分布式與微服務架構解析

分布式與微服務架構解析 一、分布式1、什么是分布式架構2、為什么需要分布式架構3、分布式架構有哪些優勢?4、分布式架構有什么劣勢?5、分布式架構有哪些關鍵技術?6、基于分布式架構如何提高其高性能?7、如何基于架構提高系統的穩…

【工具】咸魚小助手,一款咸魚之王輔助工具

轉載請注明出處:小鋒學長生活大爆炸[xfxuezhagn.cn] 如果本文幫助到了你,歡迎[點贊、收藏、關注]哦~ Github:咸魚之王的自動化腳本,自動答題、爬塔、領資源等 下載:(密碼:9u22) 咸魚小助手 文檔:騰訊文檔 視…

軟考《信息系統運行管理員》-3.2信息系統設施運維的環境管理

3.2信息系統設施運維的環境管理 1 計算機機房的選址要求 電子計算機機房地理位置 選擇水源充足,電子比較穩定可靠,交通通信方便,自然環境清潔的地點要遠離產生粉塵、油煙、有害氣體以及生產或存儲具有腐蝕性、易燃、易爆物品的工廠、倉庫、…

3d模型選不中任何東西是什么原因?---模大獅模型網

在進行3D模型設計過程中,有時會遇到無法選擇模型中的任何元素的問題。這種情況可能會影響設計師的工作效率和體驗,因此了解問題的原因以及如何解決是至關重要的。本文將探討在3D建模中遇到無法選中模型元素的原因及解決方法。 一、問題原因分析 無法選中…

跨境必備:提升Instagram互動率攻略

在這個視覺為王的數字時代,Instagram已成為品牌與用戶互動的重要平臺。然而,要在激烈的競爭中脫穎而出,單靠高質量的內容還遠遠不夠。本文將深入探討一系列經過驗證的策略,旨在提高Instagram上的用戶互動率,從而增強品…

07淺談大語言模型可調節參數tempreture

淺談temperature 什么是temperature? temperature是大預言模型生成文本時常用的兩個重要參數。它的作用體現在控制模型輸出的確定性和多樣性: 控制確定性: temperature參數可以控制模型生成文本的確定性,大部分模型中temperatur…

醫療器械網絡安全 | 漏洞掃描、滲透測試沒有發現問題,是否說明我的設備是安全的?

盡管漏洞掃描、模糊測試和滲透測試在評估系統安全性方面是非常重要和有效的工具,但即使這些測試沒有發現任何問題,也不能完全保證您的醫療器械是絕對安全的。這是因為安全性的評估是一個多維度、復雜且持續的過程,涉及多個方面和因素。以下是…

數模打怪(一)之層次分析法

一、什么是層次分析法 層次分析法(AHP)主要用于解決評價類問題(可打分) 比如哪種方案更好、哪位運動員更優秀等 二、層次分析法的三個步驟 1、建立層次結構 分析題目,找出評價類問題的三要素: &#x…