日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据工程师面试常见题目汇总

發布時間:2023/12/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据工程师面试常见题目汇总 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、為什么?UNION?ALL?比?UNION?快?

? 答:因為在使用?UNION?的時候,需要刪除重復的記錄,但是使用?UNION ALL?的時候不用刪除。所以如果在知道需要?UNION?的查詢不可能出現重復數據的時候,一定要使用?UNION?ALL。

2、什么是唯一索引?

? 答:唯一索引可以確保索引列不包含重復的值。在多列唯一索引的情況下,該索引可以確保索引列中每個值組合都是唯一的。聚集索引和非聚集索引都可以是唯一的。因此,只要列中的數據是唯一的,就可以在同一個表上創建一個唯一的聚集索引和多個唯一的非聚集索引。只有當唯一性是數據本身的特征時,指定唯一索引才有意義。如果必須實施唯一性以確保數據的完整性,則應在列上創建UNIQUE或PRIMARY?KEY約束,而不要創建唯一索引。

3、為什么要及時刪除不用的觸發器?

? 答:觸發器定義之后,每次執行觸發事件,都會激活觸發器并執行觸發器中的語句。如果需求發生變化,而觸發器沒有進行相應的改變或者刪除,則觸發器仍然會執行舊的語句,從而會影響新的數據的完整性。因此要將不再使用的觸發器及時刪除。

4、自定義函數支持輸出參數嗎?

? 答:自定義函數可以接受零個或多個輸入參數,其返回值可以是一個數值,也可以是一個表,但是自定義函數不支持輸出參數。

5、STR?函數在遇到小數時如何處理?

? 答:在使用STR函數時,如果數字為小數,則在轉換為字符串數據類型時,只返回其整數部分,如果小數點后的數字大于等于5,則四舍五入返回其整數部分。

6、是不是索引建立得越多越好?

? 答:合理的索引可以提高查詢的速度,但不是索引越多越好。在執行插入語句的時候,數據庫要為新 插入的記錄建立索引。所以過多的索引會導致插入操作變慢。原則上是只有查詢用的字段才建立索引。

7、視圖的作用是什么?

答:數據庫視圖的作用主要有:

? 1. ?數據庫視圖隱藏了數據的復雜性。

? 2. ?數據庫視圖有利于控制用戶對表中某些列的訪問。

? 3. ?數據庫視圖使用戶查詢變得簡單。視圖是一個虛擬表,其內容由查詢定義。同真實的表一樣,視圖包含一系列帶有名稱的列和行數據。但是,視圖并不在數據庫中以存儲的數據值集形式存在。行和列數據來自由定義視圖的查詢所引用的表,并且在引用視圖時動態生成。對其中所引用的基礎表來說,視圖的作用類似于篩選。定義視圖的篩選可以來自當前或其它數據庫的一個或多個表,或者其它視圖。分布式查詢也可用于定義使用多個異類源數據的視圖。如果有幾臺不同的服務器分別存儲組織中不同地區的數據,而您需要將這些服務器上相似結構的數據組合起來,這種方式就很有用。通過視圖進行查詢沒有任何限制,通過它們進行數據修改時的限制也很少。

8、存儲過程和自定義函數的區別?

? 答:存儲過程,功能強大,可以執行包括修改表等一系列數據庫操作,也可以創建為?SQL?Server 啟動?時自動運行的存儲過程。而自定義函數,用戶定義函數不能用于執行一組修改全局數據庫狀態的操作。

存儲過程,可以使用非確定函數。自定義函數,不允許在用戶定義函數主體中內置非確定函數。?存儲過程,可返回記錄集。自定義函數,可以返回表變量,也可以有任意個輸出參數。?存儲過程,其返回值不能被直接引用,必須單獨調用。自定義函數,其返回值可以被直接引用,也就是可以直接?select?*?from?函數。

9、一個表中的?Id?有多個記錄,把所有這個?id?的記錄查出來,并顯示共有多少條記錄數?

? 答:可以用以下?SQL?語句實現:

select?id, Count(*)?from?tb?group?by?id?having count(*)>1

select*from(select count(ID) as count?from?table group?by?ID)T?where?T.count>1

10、有一張表,里面有?3?個字段:語文,數學,英語。其中有?3?條記錄分別表示語文?70?分,數學80?分,英語?58?分,請用一條?sql?語句查詢出這三條記錄并按以下條件顯示出來(并寫出您的思路):

大于或等于?80?表示優秀,大于或等于?60?表示及格,小于?60?分表示不及格。

顯示格式語文數學英語
及格優秀不及格

? 答:select

(case?when??語文>=80?then?‘優秀’

when??語文>=60?then?‘及格’?else ‘不及格’)?as ?語文,

(case?when??數學>=80?then?‘優秀’?when??數學>=60?then?‘及格’

else ‘不及格’)?as ?數學,

(case?when??英語>=80?then?‘優秀’?when??英語>=60?then?‘及格’

else ‘不及格’)?as ?英語,

from?table

11、一個日期判斷的?sql?語句,請取出?tb_send?表中日期(SendTime 字段)為當天的所有記錄?(SendTime字段為?datetime?型,包含日期與時間)?

? 答:select?*?from?tb?where?datediff(dd,SendTime,getdate())=0

12、表中有?A?B?C?三列,用?SQL?語句實現:當?A?列大于?B?列時選擇?A?列否則選擇?B?列,當?B?列大于?C?列時選擇?B?列否則選擇?C?列。

?答:select?(case when?a>b?then?a?else b?end?), (case when?b>c?then?b?esle c?end)?from?table_name

13、如何提高日志的切換頻率?

答:通過參數?ARCHIVE_LAG_TARGET?可以控制日志切換的時間間隔,以秒為單位。通過減少時間間隔,從而實現提高日志的切換頻率。

?SQL>?ALTER?SYSTEM?SET?ARCHIVE_LAG_TARGET=50?SCOPE=both

14、歸檔模式與非歸檔模式?為什么歸檔模式可以恢復到任意時刻?

? 答:歸檔是在重做日志文件被覆蓋之前,將該重做日志文件通過復制操作系統文件的方式,保存到指定的位置。保存下來的重做日志文件的集合被稱為歸檔重做日志文件,復制的過程被稱為歸檔。在?歸?檔?日?志?(?ARCHIVELOG?)模式下,?數?據?庫?對?重?做?日?志?文?件?進?行?歸?檔?操?作?。?非?歸?檔?日?志(NOARCHIVELOG)模式下,不會對重做日志文件進行歸檔操作。由于非歸檔模式不會在覆蓋之前保存, 這樣就造成了數據庫在一定時間之前的重做日志文件丟失,也就不能恢復到被覆蓋之前。而歸檔模式在任意時間上都有重做日志文件,故可以恢復到任意時刻。

15、觸發器中能否用?COMMIT,為什么?

? 答:在觸發器中不能使用COMMIT等事務控制語句。因為觸發器是事務觸發的如果有事務控制語句就會影響到觸發它的事務。即連帶觸發它的語句之前的已經完成的沒有提交的語句都要受到影響。這是會影響到數據的一致性的。

16、你對游標的理解,游標的分類?

? 答:游標是結果集數據中的指針,作用是為遍歷結果集時,存儲每條記錄的結果。游標分為顯式游標和隱式游標。

17、如何設置網絡數據包的大小?

??答:一般情況下,設置網絡數據包的大小可參考以下方法。如果應用程序常執行大容量復制操作或者是發送、接收大量的text?和image?數據的話,可以將此值設大一點。如果應用程序接收和發送的信息量都很小,那么可以將其設為512 字節。

18、談談你對事務的理解?

? 答:事務從COMMIT、ROLLBACK、連接到數據庫或開始第一條可執行的SQL語句時開始,到一條COMMIT、ROLLBACK語句或退出數據庫時結束。如果在一個事務中包含DDL語句,則在DDL語句的前后都會隱含地執行COMMIT?語句,從而開始或結束一個事務。如果一個事務由于某些故障或者由于用戶改變主意而必須在提交前取消它,則數據庫被恢復到這些語句和過程執行之前的狀態。利用ROLLBACK 語句可以在COMMIT?命令前隨時撤消或回退一個事務??梢曰赝苏麄€事務,也可以回退部分事務,但是不能回退一個已經被提交的事務?;赝瞬糠质聞盏?ROLLBACK 命令為:ROLLBACK?to?savepoint?存儲點名,存儲點是用戶放入事務中的標記,用來表示一個可被回退的位置。存儲點通過在事務中放入一個SAVEPOINT?命令而被插入。該命令的語法是:SAVEPOINT?存儲點名,如果在?ROLLBACK?語句中沒有給出存儲點名,則整個事務被回退。

19、談談你對索引的理解?

? 答:索引是若干數據行的關鍵字的列表,查詢數據時,通過索引中的關鍵字可以快速定位到要訪問的?記錄所在的數據塊,從而大大減少讀取數據塊的?I/O?次數,因此可以顯著提高性能。

20、事務和鎖有什么關系?

? 答:可以使用多種機制來確保數據的完整性,例如約束、觸發器以及事務和鎖等。事務和 鎖的關系非常緊密。事務包含一系列的操作,這些操作要么全部成功,要么全部失敗,通過事務機制管理多個事務,保證事務的一致性,事務中使用鎖保護指定的資源,防止其他用戶修改另外一個還沒有完成的事務中的數據。

21、本地索引與全局索引的差別與適用情況。

? 答:對于本地索引,每一個表分區對應一個索引分區,當表的分區發生變化時,索引的維護由數據庫?自動進行。對于全局索引,可以選擇是否分區,而且索引的分區可以不與表分區相對應。當對分區進行維?護操作時,通常會導致全局索引的?INVALDED,必須在執行完操作后?REBUILD。

22、插入記錄時可以不指定字段名稱嗎?

? 答:不管使用哪種?INSERT?語法,都必須給出?VALUES?的正確數目。如果不提供字段名,則必須給?每個字段提供一個值,否則將產生一條錯誤消息。如果要在?INSERT?操作中省略某些字段,這些字段需要?滿足一定條件:該列定義為允許空值;或者表定義時給出默認值,如果不給出值,將使用默認值。

23、delete、truncate?和?drop?的區別?

? 答:Delete 命令用來刪除表的全部或者一部分數據行,執行?delete 之后,用戶需要提交(commmit)或者 回滾(rollback) transaction?來執行刪除或者撤銷刪除,delete?命令會觸發這個表上所有的?delete?觸發器。

Truncate?刪除表中的所有數據,這個操作不能回滾,也不會觸發這個表上的觸發器,truncate?比?delete更快,占用的空間更小。

Drop?命令從數據庫中刪除表,所有的數據行,索引和權限也會被刪除,所有的DML觸發器也不會被觸發,這個命令也不能回滾。

24、為什么?group?by?和?order by?會使查詢變慢?

? 答:group?by?和?order?by?操作通常需要創建一個臨時表來處理查詢的結果,所以如果查詢結果很多的?話會嚴重影響性能。

25、簡述數據庫的設計過程。

? 答:數據庫設計分為以下五個階段:?

需求分析:主要是準確收集用戶信息需求和處理需求,并對收集的結果進行整理和分析,形成需求說明。

概念結構設計:對用戶需求進行綜合、歸納、抽象,形成一個與與具體的?DBMS?無關概念模型(一般為ER模型)。

邏輯結構設計:將概念結構設計的概念模型轉化為某個特定的?DBMS 所支持的數據模型,建立數據庫邏輯模式,并對其進行優化,同時為各種用戶和應用設計外模式。

物理結構設計:為設計好的邏輯模型選擇物理結構,包括存儲結構和存取方法等,建立數據庫物理模式。

實施和維護:實施就是使用DLL語言建立數據庫模式,將實際數據載入數據庫,建立真正的數據庫。維護階段是對運行中的數據庫進行評價、調整和修改。

了解更多數據庫知識,點擊原文地址:www.shulanxt.com/doc/mysqldoc/sjgcs

總結

以上是生活随笔為你收集整理的数据工程师面试常见题目汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。