但凡有職場經(jīng)驗的兄弟都知道,大廠的面試真是一言難盡,不光看你面試時的臨場發(fā)揮能力,還要分N次考你對公司業(yè)務(wù)核心技術(shù)的熟悉度。
你要沒有扎實的基本功,想忽悠住面試官可太難了。你去翻翻大廠那些30、40K的崗位就懂了:
關(guān)于數(shù)據(jù)庫,我認為是軟件測試工程師第一個要學(xué)的技術(shù)也是最重要的基礎(chǔ)。
不僅你做功能測試要用到數(shù)據(jù)庫;接口測試、很多接口的返回值它是動態(tài)的,那么你要去數(shù)據(jù)庫拿數(shù)據(jù)來校驗;還有自動化,怎么去做一些數(shù)據(jù)驅(qū)動,都要從數(shù)據(jù)庫里去拿。你做性能測試是不是也和數(shù)據(jù)庫有關(guān)。比如慢查詢,都和數(shù)據(jù)庫有關(guān)。
所以說,你要去面試軟件測試工程師。數(shù)據(jù)庫這一關(guān)你得要有底。

掌握sql查詢增刪改查、子查詢、關(guān)聯(lián)查詢、分組查詢、分組過濾
1.說一下你常用的sql優(yōu)化方式?為什么select*效率低?
2.什么是索引?索引為什么能增加查詢效率
3.索引是建的越多越好嗎?
4.什么是ORM?為什么要用ORM?
5.如何將查詢的數(shù)據(jù)匯總到excel,txt文件?6.關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫的區(qū)別?
首先如果你要去面試,你得首先保證你掌握了sql的基本查詢
增刪改查
第一部分:軟件測試基礎(chǔ)理論、流程還有項目管理
增刪改查大家基本都會吧,Select、Delete、Update、還有一個子查詢、關(guān)聯(lián)查詢、分組查詢、分組過濾。
子查詢:就是一個嵌套在查詢語句中的查詢
關(guān)聯(lián)查詢:內(nèi)連接、外連接(左連接、右連接)
我相信每次去面試的時候很多小伙伴都會去百度。搜素什么是什么子查詢?什么是關(guān)聯(lián)、分組查詢?什么是分組過濾……經(jīng)過熬夜看完了幾篇“深度好文”可能面試官問,你也會胸有成竹。
如果以上的內(nèi)容都不熟悉,就不要在簡歷中寫:“我熟悉數(shù)據(jù)庫的語句”
大家可能比較陌生的可能是分組查詢( group by)和分組過濾(having)
分組查詢( group by)是一個按照表中一個或者多個字段,將數(shù)據(jù)進行分組,一般用于數(shù)據(jù)進行分類匯總。
如果讀這一塊還不是很熟悉的伙伴,可以去觀看我錄制的分組查詢教學(xué)視頻。
第二部分:數(shù)據(jù)庫
1.說一下你常用的sql優(yōu)化方式?為什么select*效率低?
優(yōu)化方式比如說你用到了select*,那么我就會問你為什么select*效率低?
可能你會說因為*是查詢所有的。
面試官:那還有呢?還有什么要補充的嗎?
我:(抓抓頭發(fā),手兒無處安放)面試官,你干脆把簡歷還給我吧,我都不想再說下去了。
有很多時候是這樣子的 ,當面試官問到你一個問題,如果你只知道一點點,你說出來一點點,面試官問你還有沒有其他要補充的……
select*為什么效率低?
第一個你需要根據(jù)你理解的原理,具體分析。有時候做測試你會去看一些Mysql的書籍,它會告訴你,一律不要用*作為查詢的字段的列表。
為什么呢?
第一個,不需要的列會增加數(shù)據(jù)傳輸時間和網(wǎng)絡(luò)開銷。有些數(shù)據(jù)庫和應(yīng)用不在一臺服務(wù)器。
比如我的應(yīng)用數(shù)據(jù)庫肯定是有一個服務(wù)器的,那你的后端前端可能不在同一臺服務(wù)器上,會有很多網(wǎng)絡(luò)開銷。因為有時候我們在前端的操作都會用到數(shù)據(jù)庫,如果你都用select* 那么就大大增加了網(wǎng)絡(luò)開銷,它會去解析很多的內(nèi)容。特別一些select語句比較復(fù)雜解析比較多的時候,會給數(shù)據(jù)庫造成沉重的負擔。
特別有一些大類型的字段,比如有一個叫做text 、 它是非常大的
varchar(字符串類型)比如還有一些加密的、日之類的字段,增加網(wǎng)絡(luò)消耗是非常明顯的。即使這個Mysql服務(wù)器和客戶端在同一臺機器上,使用的協(xié)議tcp通信也需要額外的時間,所以說這個傳輸時間和網(wǎng)絡(luò)開銷肯定會加大。
那么對于這些無用的大字段,可能還會增加一些IO操作。(如果長度超過一定字節(jié),它會把一些超出的速率數(shù)據(jù)化到另一個地方,然后再去讀取這些記錄就會增加一次IO操作)
其實還有一個非常重要的點,Mysql有一個概念:覆蓋索引(業(yè)界極為推崇的查詢優(yōu)化方式)
如果你用到了select*,你將失去Mysql優(yōu)化器覆蓋索引策略優(yōu)化的可能性。
2.什么是索引?索引為什么能增加查詢效率
索引是和性能息息相關(guān)的一個東西
如果我們把數(shù)據(jù)庫當做一本“新華字典”索引就是這個字典的目錄。一般會針對where(id等于多少)條件后面的字段
索引既然是一個目錄,那么它就可以分為很多級。(目錄下面又有一個目錄)

圖中的id是一個int類型,那么圖中的“鑰匙”代表什么?主鍵。所以說id可能是主鍵,其他的一些就是字段名稱、字段類型、字段的長度

SHON INDEX from orderl (查詢某個表索引語句)
大家記住一個概念,主鍵本身就是一種唯一索引。
比如你要去查詢select * from where id=4? id等于多少,它就用到了一種索引。所以說索引就是這個字典的目錄,一般會針對where條件后面的字段。
所以說這樣去查,如果你不是主鍵,那么會慢很多,如果你是主鍵是索引,就會快很多。
為什么索引能讓查詢變快?
數(shù)據(jù)結(jié)構(gòu)
btree:二叉樹算法
舉個例子:

這個數(shù)據(jù)庫表剛好有11行,當我想查詢小六,比如說select * from where id=4 的時候,這個時候如果不加索引。執(zhí)行這行語句做的什么動作?就是一個一個查下去,查到4的時候還會往下查詢,查11次。
如果一般的有百萬級的數(shù)據(jù),它就會去查百萬次。
如果我們用二叉樹算法(索引)它會去查詢多少次呢?
二叉樹的原理:取中間一個數(shù),大于的右移,小于的左移。每次減半。
11個數(shù)據(jù),二叉樹的一個經(jīng)典的算法,取中間的一個數(shù),11最中間的一個數(shù)是什么?是6對吧。那么它會把小于6的12345放一邊,然后這里7891011也會放一邊,他就會這樣去進行。
我們來看一看如果它加了索引,它會查詢幾次。比如它第一次查id等于4,它會取中間一個數(shù)等于6,我們要的不是等于6。根據(jù)原理,它就又會去取中間一個值,大于的右移,小于的左移6的中間值是3,12放左邊,45放右邊。

那么它可能查三到四次就可以查到了。這就是索引的效率,是不是會快很多?數(shù)據(jù)量大的時候提高效率可想而知。
更多測試教學(xué)視頻資源可以來群里找我,備注公眾號。
還有很多問題,比如什么是ORM?為什么要用ORM?(難度四顆星)大家不僅僅要說出這個概念,你要把它們的底層原理理解透徹。
面試中高級測試,往往三顆星的面試問題就刷了一大批人。
如果你這樣從底層原理開始講,面試官對你豎大拇指!你開一個工資吧,什么時候來上班?
聽說點贊的人都拿了大廠offer
絮叨
另外,一凡把自己的面試文章整理成了一本電子書,共 216頁!目錄如下,還有我復(fù)習(xí)時總結(jié)的面試題以及簡歷模板

現(xiàn)在免費送給大家,鏈接: https://pan.baidu.com/s/10w3q4agGVh4R--HOvEYV-w 提取碼: 3y8t?
文章首發(fā)于公眾號:程序員一凡
絮叨
如果你想去一家不錯的公司,但是目前的硬實力又不到,我覺得還是有必要去努力一下的,技術(shù)能力的高低能決定你走多遠,平臺的高低,能決定你的高度。
如果你通過努力成功進入到了心儀的公司,一定不要懈怠放松,職場成長和新技術(shù)學(xué)習(xí)一樣,不進則退。
一凡發(fā)現(xiàn)在工作中發(fā)現(xiàn)我身邊的人真的就是實力越強的越努力,最高級的自律,享受孤獨