萬字總結!騰訊、字節跳動面經已發

二、常見的并發問題

1、臟讀

一個事務讀取了另一個事務未提交的數據

2、不可重復讀

一個事務對同一數據的讀取結果前后不一致。兩次讀取中間被其他事務修改了

3、幻讀

幻讀是指事務讀取某個范圍的數據時,因為其他事務的操作導致前后兩次讀取的結果不一致。幻讀和不可重復讀的區別在于,不可重復讀是針對確定的某一行數據而言,而幻讀是針對不確定的多行數據。因而幻讀通常出現在帶有查詢條件的范圍查詢中

三、事務隔離級別

1、讀未提交(READ UNCOMMITTED)

可能產生臟讀、不可重復讀、幻讀

2、讀已提交(READ COMMITTED)

避免了臟讀,可能產生不可重復讀、幻讀

3、可重復讀(REPEATABLE READ)(mysql默認隔離級別)

避免了臟讀,不可重復讀。通過區間鎖技術避免了幻讀

4、串行化(SERIALIZABLE)

串行化可以避免所有可能出現的并發異常,但是會極大的降低系統的并發處理能力

四、數據庫日志有哪些?

1、undo日志

undo日志用于存放數據修改被修改前的值

UNDO LOG中分為兩種類型,一種是 INSERT_UNDO(INSERT操作),記錄插入的唯一鍵值;

一種是 UPDATE_UNDO(包含UPDATE及DELETE操作),記錄修改的唯一鍵值以及old column記錄。

2、redo日志

mysql會將一個事務中的所有sq先l記錄到redo log中,然后再將記錄從redo log同步到數據文件中

它可以帶來這些好處:

  • 當buffer pool中的dirty page 還沒有刷新到磁盤的時候,發生crash,啟動服務后,可通過redo log 找到需要重新刷新到磁盤文件的記錄;
  • buffer pool中的數據直接flush到disk file,是一個隨機IO,效率較差,而把buffer pool中的數據記錄到redo log,是一個順序IO,可以提高事務提交的速度;

3、binlog日志

用于數據庫主從復制的記錄,是二進制格式。在事務提交之后進行一個磁盤寫入。

這里注意下redo log 跟binary log 的區別,redo log 是存儲引擎層產生的,而binary log是數據庫層產生的。假設一個大事務,對tba做10萬行的記錄插入,在這個過程中,一直不斷的往redo log順序記錄,而binary log不會記錄,直到這個事務提交,才會一次寫入到binary log文件中

五、數據庫事務控制

1、默認情況下,開啟事務自動提交功能。每執行一個sql,都會對應一個事務的提交

2、spring會將底層連接的自動提交特性設置為false。使用手動提交

六、事務的ACID特性

1、原子性(Atomicity)

事務中的所有操作作為一個整體像原子一樣不可分割,要么全部成功,要么全部失敗。

2、一致性(Consistency)

事務的執行結果必須使數據庫從一個一致性狀態到另一個一致性狀態。一致性狀態是指:1.系統的狀態滿足數據的完整性約束(主碼,參照完整性,check約束等) 2.系統的狀態反應數據庫本應描述的現實世界的真實狀態,比如轉賬前后兩個賬戶的金額總和應該保持不變。

3、隔離性(Isolation)

并發執行的事務不會相互影響,其對數據庫的影響和它們串行執行時一樣。比如多個用戶同時往一個賬戶轉賬,最后賬戶的結果應該和他們按先后次序轉賬的結果一樣。

4、持久性(Durability)

事務一旦提交,其對數據庫的更新就是持久的。任何事務或系統故障都不會導致數據丟失。

5、redo log和undo log實現了原子性、一致性、持久性

一線互聯網大廠Java核心面試題庫

image

實現了原子性、一致性、持久性

一線互聯網大廠Java核心面試題庫

[外鏈圖片轉存中…(img-GHq2LjwX-1624225543008)]

正逢面試跳槽季,給大家整理了大廠問到的一些面試真題,由于文章長度限制,只給大家展示了部分題目,更多Java基礎、異常、集合、并發編程、JVM、Spring全家桶、MyBatis、Redis、數據庫、中間件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等…已整理上傳在我的騰訊文檔【一線互聯網大廠Java核心面試題庫】點擊即可領取,并會持續更新…感興趣的朋友可以看看支持一波!

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

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

相關文章

ncbi查找目的基因序列_NCBI大搜索之目的基因尋蹤

NCBI大搜索之目的基因尋蹤最近經常碰到查找目的基因的問題,那今天就講一下如何利用NCBI數據庫查找目的基因!NCBI(National Center For Biotechnology Information),美國國家生物技術信息中心,分子生物學,生物化學及遺傳學領域常用…

萬字長文!2020-2021京東Java面試真題解析

我整理的spring學習筆記: 像spring這種知識點我們不能盲目的學習,首先我們得有一套學習路線,我總結了一套spring的學習思維導圖,今天通過我整理的Spring學習路線.xmind給大家分析spring需要掌握的一些核心知識點。 spring的特點&…

echarts label固定位置_ECharts+百度地圖網絡拓撲應用

前一篇談及到了ECharts整合HT for Web的網絡拓撲圖應用,后來在ECharts的Demo中看到了有關空氣質量的相關報表應用,就想將百度地圖、ECharts和HT for Web三者結合起來也做一個類似空氣質量報告的報表拓撲圖應用,于是有了下面的Demo&#xff1a…

三年Java開發,你連基礎的JVM運行時內存布局都忘了

面:為什么要使用雙親委派機制去加載類? 答:避免多份同樣字節碼的加載,浪費內存。 類的加載方式 隱式加載:new顯示加載:loadClass、forName等 類的裝載過程如下圖: 面:loadClass和…

vue實現可編輯的文字_蘋果還自帶文字轉語音,只要一鍵按下便可實現,今天分享給大家...

如果想將文字轉成語音,那大家平時都是怎么操作?下面小編就為大家介紹手機,電腦上都可以使用的方法,讓我們一起來看看吧!一、手機端操作1、蘋果手機其實蘋果手機就自帶了文字轉語音功能,只要打開手機&#x…

三面美團Java崗,面試竟然被這31道Java基礎題難倒了

01 分布式限流:NginxZooKeeper 1.1 分布式限流之Nginx 請解釋一下什么是 Nginx? 請列舉 x Nginx 的一些特性。 請列舉 x Nginx 和 和 Apache 之間的不同點 請解釋 x Nginx 如何處理 P HTTP 請求。 在 x Nginx 中,如何使用未定義的服務器名稱來阻止…

海龜繪圖小動物_震驚!被塑料繩勒成兩半的海龜

海洋,其實離人類很近,我們在追逐沙灘和日落,享受美味的海鮮的時候,可曾想到我們平時的一些很隨意的行為,會給一些海洋生物帶來無法恢復的傷害,甚至奪取它們的生命。或許人們的冷漠無知尚未得到懲罰&#xf…

上海大廠Java面試經歷:初步理解類加載運行機制和類加載過程

volatile相關經典面試題 談談volatile的特性volatile的內存語義說說并發編程的3大特性什么是內存可見性,什么是指令重排序?volatile是如何解決java并發中可見性的問題volatile如何防止指令重排volatile可以解決原子性嘛?為什么?v…

python生成泊松分布隨機數_泊松分布隨機數

一、功能產生泊松分布的隨機數。二、方法簡介泊松分布的概率密度函數為\[f(x)\frac{\lambda ^{x}e^{-\lambda }}{x!} \qquad x\in \left \{ 0,1,...,\lambda \right \}\]用\(P(\lambda)\)表示。泊松分布的均值為\(\lambda\),方差為\(\lambda\)。定理 若\(\lambda &g…

mysql數據庫優化面試

前言 現在Java程序員面試都是因為沒有豐富的工作經驗和自己過硬的技術,所有都不知道一般互聯網應該會問什么技術問題,加上自己可能去面試的時候沒有準備的太充分,一面試剛跟面試官扯幾個面試題就不知道自己在哪里了,被懟的體無完…

leetcode中文版python_Python版LeetCode1.兩數之和

啦啦啦,歡迎開啟LeetCode刷題的旅程,這將是一段漫長而又艱辛的旅程。這道Two Sum的題目作為LeetCode的開篇之題,乃是經典中的經典,正所謂‘平生不識TwoSum,刷盡LeetCode也枉然’,就像英語單詞書的第一個單詞…

mysql數據庫備份方式,跳槽大廠必看!

NO1:說說zookeeper是什么? ZooKeeper是一個分布式的,開放源碼的分布式應用程序協調服務,是Google的Chubby一個開源的實現(Chubby是不開源的),它是集群的管理者,監視著集群中各個節點…

python淺藍色對應的代碼_淺藍色Python模塊不在m上工作

我正在嘗試通過macosx10.7.2上的Python連接到wiimote。在為此我試著用淺藍色。運行時:import lightbluePython會給我這個錯誤。在>>> import lightblueTraceback (most recent call last):File "", line 1, in File "/Library/Frameworks/P…

mysql數據庫安裝教程32位,看這一篇就夠了!

字節跳動 ?試前?????結 ?試前 頭條的?試是三家?最專業的,每次?試前有專?的HR和你約時間,確定OK后再進??試。每次都是通過視頻?試,因為都是之前都是電話?或現場?,所以視頻?試還是有點不?然。也有?覺得視頻?試…

java cron工具類_Java工具類之:包裝類

我們都知道,JDK 其實給我們提供了很多很多 Java 開發者已經寫好的現成的類,他們其實都可以理解成工具類,比如我們常見的集合類,日期相關的類,數學相關的類等等,有了這些工具類,你會發現它能很大…

mysql數據庫安裝,真香!

Spring Security觀后感——手繪思維腦(供參考) 手繪的思維導圖,是我自己根據自身的情況讀完這套阿里出品的Spring Security王者晉級文檔之后所繪的,相當于是一個知識的總結與梳理,我將其分為“核心組件”與“工作原理/認證流程”。 Spring Se…

python列表代碼_8種高級的Python列表使用技巧,都給你整理好啦(附實操代碼)...

Python中的列表是我們很常見的數據結構之一,也是很強大的數據結構之一!Python列表功能非常豐富,并且具有很多隱藏的技巧沒有被發現。一、使用Python過濾列表1.使用Filter()函數filter()函數采用兩個參數:函數和可迭代項。 在這種情況下&#…

mysql數據庫實用教程答案

前言 數據庫相關的面試題早已成為了一線互聯網大廠面試的家常菜,如果你對數據庫不太熟悉,我勸你不要輕易面試大廠。那么,為什么數據庫成了大廠面試的家常菜呢?主要原因當然還是海量數據。 無論對于剛入行的小白還是有幾年Java開…

在idea中新建的text文件_開發屬于自己的第一款 IDEA 插件!

往期熱門文章:1、《往期精選優秀博文都在這里了!》2、又一個程序員跑路刪庫跑路被抓了,導致服務器癱瘓 36 個小時!3、恕我直言,有了這款 IDEA 插件,你可能只需要寫 30% 的代碼。。。4、Java8 的 Stream API 的確牛X&am…

mysql數據庫開發的36條軍規

前言 一般的小項目,比如幾百人左右訪問的項目,訪問量幾萬的項目,如果想用緩存,單機實例完全夠用。小黃圖就是用的阿里云256MB配置的Redis緩存,日幾千的訪問量是妥妥夠用的了。Redis號稱可以支撐10wqps,當然…