1. 程式人生 > 其它 >【資料庫】【Linux】金Z外派廣州Y行大資料部資料開發崗筆試題

【資料庫】【Linux】金Z外派廣州Y行大資料部資料開發崗筆試題

技術標籤:筆試題資料庫sqllinuxshell資料庫

1.SELECT語句的完整語法比較複雜,但至少包括的部分:(B)
A.SELECT INTO
B.SELECT FROM
C.SELECT GROUP
D.僅SELECT

2.SELECT語句的完整語法比較複雜,使用關鍵字(A)可以把重複行遮蔽。
A.DISTINCT
B.UNION
C.ALL
D.TOP

3.將多個查詢結果返回一個結果集合的運算時,使用:B
A.JOIN
B.UNION
C.INTO
D.LIKE

4.如果在SELECT語句中使用聚合函式時,一定在後面使用:(A)
A.GROUP BY
B.COMPUTE BY
C.HAVING

D.COMPUTE

5.若用如下的SQL語句建立表SC:
CREATE TABLE SC(S CHAR(6) NOT NULL,C CHAR(3) NOT NULL,SCORE INTEGER,NOTE VARCHAR(20)),
向SC表插入如下行時,(B)行可以被插入。
A.('201009','111',60,必修)
B.('200823','101',NULL,NULL)
C.(NULL,'103',80,'選修')
D.('201132',NULL,86,'')

6.分析以下的SQL語句,執行的返回結果是(C):

SELECT MANU_ID
FROM INVENTORY
WHERE MANU_ID LIKE '%N\%P\%O%' ESCAPE '\';'

A.所有包含'NPO'記錄
B.所有包含'N\P\O'記錄
C.所有包含'N%P%O'記錄
D.所有包含'%N\P\O%'記錄

7.以下SQL哪行有錯誤:(C)

SELECT DEPT_NO
FROM EMP
GROUP BY DEPTNO
HAVING COUNT(DEPT_NO)=
(SELECT MAX(COUNT(DEPT_NO))
FROM EMP
GROUP BY DEPT_NO
);

A.3
B.4
C.5
D.7
E.都沒錯

8.Oracle以下(A)語句從表TABLE_NAME中按欄位COUNT_CNT倒序提取前10條記錄。
A.SELECT * FROM (SELECT * FROM TABLE_NAME ORDER BY COUNT_CNT DESC NULLS LAST) T WHERE ROWNUM<=10;


B.SELECT * FROM TABLE_NAME WHERE ROWNUM<=10;-- 未排序,直接提取原表邏輯結構前10條記錄
C.SELECT * FROM TABLE_NAME WHERE ROWNUM<=10 ORDER BY COUNT_CNT DESC NULLS LAST;-- 先按原表邏輯結構提取前10條記錄再倒序排序
D.SELECT TOP 10 FROM TABLE_NAME ORDER BY COUNT_CNT DESC;-- Oracle不支援select top語句

9.有關係S(S#,SNAME,SEX),C(C#,CNAME),SC(S#,C#,GRADE)。
其中S#是學號,SNAME是學生姓名,SEX是性別,C#是課程號,CNAME是課程名稱。
要查詢選修“資料庫”課程的全體男生姓名的SQL語句是:SELECT SNAME FROM S,C,SC WHERE(A):
A.S.S#=SC.S# AND C.C#=SC.C# AND S.SEX='男' AND C.CNAME='資料庫';
B.S.S#=SC.S# AND C.C#=SC.C# AND S.SEX IN '男' AND C.CNAME IN '資料庫';
C.S.SEX='男' AND C.CNAME='資料庫';
D.S.SEX IN '男' AND C.CNAME IN '資料庫';

10.HAVING和WHERE子句以及GROUP BY可以在同一SELECT語句中使用,其正確的先後順序是(A)
A.WHERE,GROUP BY,HAVING
B.WHERE,HAVING,GROUP BY
C.HAVING,GROUP BY,WHERE
D.GROUP BY,WHERE,HAVING

11.以下SQL返回的執行結果(C)
SELECT CASE WHEN NULL=NULL THEN 'Yup' ELSE 'Nope' END AS RESULT FROM DUAL;
A.NULL
B.Yup
C.Nope

12.在Oracle資料庫的邏輯結構中有以下元件:
A.表空間 B.資料塊 C.區 D.段
這些元件從大到小的順序依次是:(B)
A.A->B->C->D
B.A->D->C->B
C.A->D->B->C
D.D->A->C->B

13.在發出啟動資料庫的命令,例項和資料庫經過怎樣的過程最終開啟?(B)
A.OPEN,NOMOUNT,MOUNT
B.NOMOUNT,MOUNT,OPEN
C.MOUNT,OPEN,NOMOUNT
D.NOMOUNT,OPEN,MOUNT

14.UNIX環境下顯示程序相關的命令是(A)
A.ps
B.su
C.ln
D.kill

15.UNIX環境下改變文件和目錄屬性的命令是(A)
A.chown
B.chmod
C.chgrp
D.touch

16.UNIX環境下分頁方式檢視檔案內容的命令是(C)
A.ls
B.cat
C.more
D.touch

17.假如需要找出/etc/my.conf檔案屬於哪個包,可以執行:(C)
A.rpm -q /etc/my.conf
B.rpm -requires /etc/my.conf
C.rpm -qf /etc/my.conf
D.rpm -q|grep /etc/my.conf

18.在bash中,export命令的作用是(C)
A.在子shell中執行命令
B.使在子shell中可以使用命令歷史記錄
C.為其他應用程式設定環境變數
D.提供NFS分割槽給網路中的其他系統使用

19.如果你的umask設定為022,預設建立新檔案許可權為(C)
A.-rw-r--r--
B.-rwxr--r--
C.-rwxr-xr-x
D.-rw-r--r-x

20.哪個命令用來顯示系統各個分割槽中inode的使用情況(A)
A.df -i
B.df -H
C.free -b
D.du -a -c /

21.如何刪除一個非空子目錄/tmp/20190501(B)
A.del /tmp/20190501/*
B.rm -rf /tmp/20190501
C.rm -rf /tmp/20190501/*
D.rm -ra /tmp/20190501/*

22.對所有使用者的變數設定,應該放在哪個檔案下(A)
A./etc/profile
B./etc/bashrc
C.~/.bash_profile
D./etc/skel/.bashrc

23.在vi中退出不儲存的命令是(D)
A.:q
B.:w
C.:wq
D.:q!

24.Oracle資料庫,有哪幾類索引,分別有什麼特點?
B-Tree索引;點陣圖索引;特定於該列只有幾個列舉值的情況;函式的索引:經常對某個欄位的查詢帶有函式操作;
分割槽索引和全域性索引:適用於分割槽表

25.Union與Union All的區別?
Union對結果集去重,執行效率比Union all低;Union all不會去重,執行效率比Union高。

26.表tab中有100W行記錄,主鍵為欄位id,其中有100條重複記錄,請寫出快速刪除重複資料的指令碼。

delect from tab
where rowid in
(select max(rowid) from tab
group by id
having count(1)>=2);

27.假設有表Customers,資料如下:

IdNameReferredBy
1John DoeNULL
2Jane SmithNULL
3Anne Jenkins2
4Eric BranfordNULL
5Pat Richards1
6Alice Barnes2

請查出ReferredBy<>1的記錄。

--ReferredBy為數字型別
select c.* from Customers c
minus
select c.* from Customers c
where c.ReferredBy=1;
--ReferredBy為字元型別
select c.* from Customers c
where c.ReferredBy<>'1';

28.假設有商品表goods,資料如下:

Good_typegoods_namepricegoods_flag
手機華為2999
手機蘋果7999
手機榮耀2399
水果車釐子79
水果葡萄18
水果蘋果12
電腦金士頓16G499

…………
根據商品大類Goods_type對商品金額price從小到大排序,
前20%為低檔,20%~85%為中檔,高於85%為高檔打上標籤。

-- 三個子查詢,一個表
select g.*,
case when rownum<=(select count(*) from goods)*0.2 then '低檔'
  when rownum>=(select count(*) from goods)*0.85 then '高檔'
  else '中檔' end as goods_flag
from (select * from goods order by price) g
-- 兩個子查詢,兩個表
select g.*,
case when rownum<=c.cnt*0.2 then '低檔'
  when rownum>=c.cnt*0.85 then '高檔'
  else '中檔' end as goods_flag
from (select * from goods order by price) g,(select count(*) as cnt from goods) c;

29.Linux檢查一個埠是否被佔用的命令是?一旦被佔用如何解決這個問題?
lsof -i:埠號
netstat -ntulp | grep 埠號
顯示該被佔用埠號對應的PID號,
使用kill -9 PID殺死程序。

30.Linux新建一個檔案有哪些命令可以實現?
cat>檔名
touch 檔名

31.Linux檢視程序和排程的命令分別是什麼?
檢視程序:ps -ef
排程:crontab -l

32.用shell指令碼實現:把一個目錄(/tmp)下的資料夾去出,並儲存到/tmp/dirlist.txt中。

ls -ltr /tmp/|grep ^d >/tmp/dirlist.txt
for file in 'ls /tmp/'do if [-d /tmp/$file ]then echo $file >>/tmp/dirlist.txt n done

33.檔案路徑/data/in/下有業務系統上傳的資料,檔案格式為“檔案型別_工號_上傳日期.zip”,檔案列表如下:

請使用shell指令碼列出日期20181215所有上傳人員的名單。

ls /data/in/shuju_*_20181215.zip|awk -F _'{print $2}'

注:客觀題(選擇題)答案全對,主觀題27、28已測試驗證,但28缺少用UPDATE的題解,如有錯誤和如需補充望指正。