本書針對當(dāng)前各大典型IT企業(yè)面試筆試中的考點(diǎn)與側(cè)重點(diǎn),精心挑選了3年以來近百家IT企業(yè)的數(shù)據(jù)庫面試筆試真題,這些企業(yè)涉及業(yè)務(wù)包括系統(tǒng)軟件、搜索引擎、電子商務(wù)、手機(jī)APP、安全軟件等,非常具有代表性與參考性。同時,本書對這些題目進(jìn)行了合理的劃分與歸類,并且對其進(jìn)行了庖丁解牛式的分析與講解,針對試題中涉及的部分重點(diǎn)難點(diǎn)問題,本書都進(jìn)行了適當(dāng)?shù)財U(kuò)展與延伸,力求對知識點(diǎn)的講解清晰而不紊亂,全面而不啰嗦。此外,本書除了對數(shù)據(jù)庫的基礎(chǔ)知識進(jìn)行深度剖析以外,還針對Oracle的筆試面試做了非常詳細(xì)的介紹。讀者通過學(xué)習(xí)本書不僅能夠獲取到求職的知識,同時還能更有針對性地進(jìn)行求職準(zhǔn)備,終收獲一份滿意的工作。
本書是一本計算機(jī)相關(guān)專業(yè)畢業(yè)生面試、筆試的求職用書,同時也適合期望在計算機(jī)軟、硬件行業(yè)大顯身手的計算機(jī)愛好者閱讀。本書起于Oracle筆試面試,但講述的內(nèi)容不止筆試面試,還有更多的數(shù)據(jù)庫實(shí)用操作技能。書中采用大量圖表來解析對比相關(guān)的知識點(diǎn),讓很多?嫉碾y點(diǎn)變得淺顯易懂。
在這里,有面試筆試常見技巧的提煉與總結(jié);
在這里,有面試筆試高頻Oracle數(shù)據(jù)庫知識點(diǎn)的整理與剖析;
在這里,有面試筆試歷年Oracle數(shù)據(jù)庫真題的解答與拓展。
程序員求職始終是當(dāng)前社會的一個熱點(diǎn),而市面上有很多關(guān)于程序員求職的書籍,例如《程序員代碼面試指南》、《劍指offer》、《程序員面試筆試寶典》、《Java程序員面試筆試寶典》、《編程之美》、《編程珠璣》等,它們都是針對基礎(chǔ)知識的講解,各有側(cè)重點(diǎn),而且在市場上反映良好,但是,我們發(fā)現(xiàn),當(dāng)前市面上沒有一本專門針對Oracle程序員的面試筆試寶典,很多讀者朋友們向我們反映,他們希望有一本能夠詳細(xì)剖析面試筆試中數(shù)據(jù)庫相關(guān)知識的圖書,雖然網(wǎng)絡(luò)上有一些IT企業(yè)的數(shù)據(jù)庫面試筆試真題,但這些題大都七零八湊,毫無系統(tǒng)性可言,而且絕大多數(shù)題目都是一些博主自己做的,答案簡單,準(zhǔn)確性不高,即使偶爾答案正確了,也沒有詳細(xì)的講解,這就導(dǎo)致讀者做完了這些真題,根本就不知道自己做得是否正確,完全是徒勞。如果下一次這個題目再次被考查,自己還是不會。更有甚者,網(wǎng)上的答案很有可能是錯誤的,此時甚至還會誤導(dǎo)讀者。
針對這種情況,本書創(chuàng)作團(tuán)隊經(jīng)過精心準(zhǔn)備,從互聯(lián)網(wǎng)上的海量數(shù)據(jù)庫面試筆試真題中,選取了當(dāng)前頂級企業(yè)(包括微軟、百度、騰訊、阿里巴巴、360、小米等)的面試筆試真題,挑選出其中最典型、考查頻率最高、最具代表性的真題,做到難度適宜,兼顧各層次讀者的需求,同時對真題進(jìn)行知識點(diǎn)的分門別類,做到層次清晰、條理分明、答案簡單明了。最終形成了這樣一本《Oracle程序員面試筆試寶典》。本書特點(diǎn)鮮明,所選真題以及寫作手法具有以下特點(diǎn):
第一,考查率高:本書中所選真題全是數(shù)據(jù)庫程序員面試筆試常考考點(diǎn),例如數(shù)據(jù)庫基礎(chǔ)知識、操作系統(tǒng)、計算機(jī)網(wǎng)絡(luò)、數(shù)據(jù)結(jié)構(gòu)與算法、海量數(shù)據(jù)處理等。
第二,行業(yè)代表性強(qiáng):本書中所選真題全部來自于頂級知名企業(yè),它們是行業(yè)的風(fēng)向標(biāo),代表了行業(yè)的高水準(zhǔn),其中絕大多數(shù)真題因為題目難易適中,而且具有非常好的區(qū)分度,通常會被眾多中小企業(yè)全盤照搬,具有代表性。
第三,答案詳盡:本書對每一道題目都有非常詳細(xì)的解答,庖丁解牛,不僅告訴答案,還告訴讀者同類型題目以后再遇到了該如何解答。
第四,分類清晰、調(diào)理分明:本書對各個知識點(diǎn)都進(jìn)行了分門別類,這種寫法有利于讀者針對個人實(shí)際情況做到有的放矢,重點(diǎn)把握。
由于圖書的篇幅所限,我們無法將所有的程序員面試筆試真題內(nèi)容都寫在書稿中,鑒于此,讀者可通過掃描封底計算機(jī)分社微信公眾號獲得相關(guān)資源的下載鏈接。此外,猿媛之家在官方網(wǎng)站(www.yuanyuanba.com)上提供了一個讀者交流平臺,讀者朋友們可以在該網(wǎng)站上上傳各類面試筆試真題,也可以查找到自己所需要的知識,同時,讀者朋友們也可以向本平臺提供當(dāng)前最新、最熱門的程序員面試筆試題、面試技巧、程序員生活等相關(guān)材料。除此以外,我們還建立了微信公眾號:猿媛之家,作為對外消息發(fā)布平臺,以圖最大限度地滿足讀者需要。歡迎讀者關(guān)注探討新技術(shù)。
本書適合的讀者對象主要有如下幾類:
(1)剛畢業(yè)找工作的同學(xué),及從其他崗位轉(zhuǎn)數(shù)據(jù)庫崗位的人員。
(2)面試Oracle DBA初中級工作的人員。
(3)面試Oracle開發(fā)工作的人員。
(4)面試初級MySQL和初級SQL Server管理工作的人員。
(5)Oracle運(yùn)維人員。
(6)數(shù)據(jù)庫愛好者。
閱讀本書注意事項如下:
(1)由于篇幅原因,書中很多部分的實(shí)驗內(nèi)容、部分實(shí)用代碼、部分結(jié)果或其他一些延伸性的知識,我都寫在了隨書pdf文件里,大家可以在pdf文件中閱讀。還有部分內(nèi)容不適合在pdf里展現(xiàn)的,我都寫在了博客或微信公眾號中,并且在pdf文件中給出了鏈接地址。讀者若想了解更深層次的知識,可以去鏈接地址閱讀。鏈接中給出的實(shí)驗部分除非讀者已經(jīng)非常熟悉了,不然實(shí)驗的內(nèi)容需要讀者親自動手實(shí)踐,以便更深刻理解其中的知識點(diǎn)。需要注意的是,這些延伸性的知識點(diǎn)有可能在面試中也會出現(xiàn)。例如,本書中講解了ASMM和AMM的特性,但是并沒有講解有關(guān)大內(nèi)存頁的使用,而只是在小節(jié)后給出了相應(yīng)的鏈接文章,但是,在一些高級DBA的面試中,面試官也有可能詢問有關(guān)大內(nèi)存頁的知識。所以,對于有能力的讀者,可以適當(dāng)閱讀研究一下這些知識點(diǎn)。
(2)數(shù)據(jù)庫中的知識繁多而復(fù)雜,本書只針對一些常見的重要知識點(diǎn)進(jìn)行分析,更多更細(xì)節(jié)的內(nèi)容可以參閱相關(guān)的官方文檔。
(3)本書中若沒有特殊說明Oracle的版本的話,則默認(rèn)實(shí)驗版本為11.2.0.3。
感謝在我們成長道路上幫助我們的人,他們是父母、親人、同事、朋友、同學(xué)等,無論我們遇到了多大的挫折與困難,他們對我們都能不離不棄,一如既往地支持與幫助我們,使我們能夠開開心心地度過每一天。在此對以上所有人致以最衷心的感謝。
所有的成長和偉大,如同中藥和老火湯,都是一個時辰一個時辰熬出來的,所有的好書,都是逐字逐句琢磨出來的。在技術(shù)的海洋里,我們不是創(chuàng)造者,但我們更愿意去當(dāng)好一名傳播者的角色,讓更多的求職者能夠通過本書的系統(tǒng)學(xué)習(xí),找到一份自己滿意的工作,實(shí)現(xiàn)自己的人生理想與抱負(fù)。
我們每個人的人生都是一場戲劇,我們每個人都要成為戲劇的主角,而不應(yīng)該淪為別人戲劇的配角,所以,我們建議所有的求職者在求職的道路上,無論遇到了多大的困難,遭遇了多大的挫折,都不要輕言放棄,你們的母?赡懿皇985、211,你們的學(xué)歷可能不是本科生、研究生,你們的專業(yè)可能也不是計算機(jī)相關(guān),但這些都不要緊,只要認(rèn)真努力,立志成為一名程序員,以我們輔導(dǎo)過的成千上萬的求職者經(jīng)驗而言,百分之九十以上的企業(yè)是完全可以求職成功的。請記住:在這個世界上,沒有人可以讓你仰視,除非你自己跪著。
由于編者水平有限,書中不足之處在所難免,還望讀者見諒。讀者如果發(fā)現(xiàn)問題或是有此方面的困惑,都可以通過郵箱yuancoder@foxmail.com聯(lián)系我們。
猿媛之家
前言
上篇 面試筆試經(jīng)驗技巧篇
第1章 求職經(jīng)驗分享2
1.1 踩別人沒有踩過的坑,犯別人沒有犯過的錯2
1.2 只要肯鉆研,就能成大咖3
1.3 普通DBA的逆襲經(jīng)驗3
第2章 數(shù)據(jù)庫程序員的求職現(xiàn)狀5
2.1 當(dāng)前市場對于數(shù)據(jù)庫程序員的需求如何?待遇如何?5
2.2 數(shù)據(jù)庫程序員有哪些可供選擇的職業(yè)發(fā)展道路?6
2.3 當(dāng)企業(yè)在招聘時,對數(shù)據(jù)庫程序員通常有何要求?6
2.4 數(shù)據(jù)庫程序員的日常工作是什么?7
2.5 要想成為一名出色的數(shù)據(jù)庫程序員,需要掌握哪些必備的知識?8
第3章 如何應(yīng)對程序員面試筆試?11
3.1 如何巧妙地回答面試官的問題?11
3.2 如何回答技術(shù)性的問題?12
3.3 如何回答非技術(shù)性問題?13
3.4 被企業(yè)拒絕后是否可以再申請?14
3.5 如何應(yīng)對自己不會回答的問題?14
3.6 如何應(yīng)對面試官的激將法語言?14
3.7 如何處理與面試官持不同觀點(diǎn)這個問題?15
3.8 什么是職場暗語?15
下篇 面試筆試技術(shù)攻克篇
第4章 數(shù)據(jù)庫基礎(chǔ)20
4.1 為什么使用數(shù)據(jù)庫?20
4.2 數(shù)據(jù)庫的常見分類有哪些?20
4.3 關(guān)系型數(shù)據(jù)庫完整性規(guī)則24
4.4 數(shù)據(jù)庫的約束有哪些?25
4.5 什么是第一、二、三、BC范式?26
4.6 事務(wù)31
4.6.1 事務(wù)的概念及其4個特性是什么?31
4.6.2 事務(wù)的4種隔離級別(Isolation Level)分別是什么?32
4.7 鎖(Lock)33
4.7.1 基礎(chǔ)知識33
4.7.2 死鎖(DeadLock)34
4.8 存儲過程35
4.8.1 什么是存儲過程?它有什么優(yōu)點(diǎn)?35
4.8.2 存儲過程和函數(shù)的區(qū)別是什么?各自的作用是什么?37
4.9 觸發(fā)器的作用、優(yōu)缺點(diǎn)有哪些?37
4.10 什么是游標(biāo)?如何知道游標(biāo)已經(jīng)執(zhí)行到了最后?38
4.11 視圖39
4.11.1 什么是視圖?視圖的作用是什么?39
4.11.2 在什么情況下可以對視圖執(zhí)行增、刪、改操作?39
4.12 SQL語句有哪些常見的分類?40
4.13 SQL語言的數(shù)據(jù)查詢41
4.13.1 多表連接查詢42
4.13.2 笛卡爾積是什么?43
4.13.3 Top-N分析44
4.13.4 子查詢44
4.13.5 合并查詢(集合查詢)47
4.13.6 SQL:1999語法對SQL的支持47
4.13.7 WITH語法53
4.13.8 SQL部分練習(xí)題53
4.14 什么是SQL注入?56
4.15 索引(INDEX)56
4.15.1 索引的優(yōu)缺點(diǎn)與分類56
4.15.2 索引的分類57
4.16 熱備份和冷備份的區(qū)別是什么?58
4.17 什么是OLAP和OLTP?59
4.18 與OS相關(guān)的面試題60
4.18.1 接觸過哪些OS系統(tǒng)?常用命令有哪些?60
4.18.2 會寫SHELL腳本嗎?61
4.19 數(shù)據(jù)庫基礎(chǔ)部分其他真題解析61
第5章 Oracle數(shù)據(jù)庫63
5.1 開發(fā)類?贾R點(diǎn)63
5.1.1 Oracle的數(shù)據(jù)類型63
5.1.2 Oracle有哪些預(yù)定義角色?65
5.1.3 如何定義序列?其作用是什么?66
5.1.4 同義詞的定義及其作用是什么?67
5.1.5 Oracle中的視圖67
5.1.6 PL/SQL程序68
5.1.7 異常處理70
5.1.8 Oracle中的觸發(fā)器72
5.1.9 函數(shù)相關(guān)79
5.1.10 高級操作87
5.1.11 分區(qū)表93
5.1.12 NULL的注意事項98
5.1.13 樹形查詢(層次查詢)99
5.1.14 Oracle JOB100
5.1.15 SQL*Plus問題102
5.1.16 如何判斷一個存儲過程是否正在運(yùn)行?103
5.1.17 如何將文本文件或Excel中的數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫?103
5.1.18 開發(fā)類真題108
5.2 維護(hù)類?贾R點(diǎn)110
5.2.1 系統(tǒng)包110
5.2.2 Oracle對象112
5.2.3 體系結(jié)構(gòu)116
5.2.4 索引相關(guān)165
5.2.5 SQL優(yōu)化相關(guān)184
5.2.6 統(tǒng)計信息239
5.2.7 等待事件253
5.2.8 Oracle性能相關(guān)261
5.2.9 數(shù)據(jù)庫診斷279
5.2.10 會話294
5.2.11 ASM和RAC維護(hù)298
5.2.12 DG維護(hù)318
5.2.13 OGG維護(hù)332
5.2.14 備份恢復(fù)337
5.2.15 ASH/AWR/ADDM376
5.2.16 審計(Audit)386
5.2.17 網(wǎng)絡(luò)相關(guān)389
5.2.18 建庫與刪庫396
5.2.19 Oracle故障案例分析402
第6章 操作系統(tǒng)409
6.1 進(jìn)程管理409
6.1.1 進(jìn)程與線程有什么區(qū)別?409
6.1.2 內(nèi)核線程和用戶線程的區(qū)別?410
6.2 內(nèi)存管理410
6.2.1 內(nèi)存管理有哪幾種方式?410
6.2.2 什么是虛擬內(nèi)存?411
6.2.3 什么是內(nèi)存碎片?什么是內(nèi)碎片?什么是外碎片?411
6.2.4 虛擬地址、邏輯地址、線性地址、物理地址有什么區(qū)別?411
6.2.5 Cache替換算法有哪些?412
6.3 用戶編程接口413
6.3.1 庫函數(shù)調(diào)用與系統(tǒng)調(diào)用有什么不同?413
6.3.2 靜態(tài)鏈接與動態(tài)鏈接有什么區(qū)別?414
6.3.3 靜態(tài)鏈接庫與動態(tài)鏈接庫有什么區(qū)別?414
第7章 計算機(jī)網(wǎng)絡(luò)與通信415
7.1 網(wǎng)絡(luò)模型415
7.1.1 OSI七層模型是什么?415
7.1.2 TCP/IP模型是什么?416
7.1.3 B/S與C/S有什么區(qū)別?416
7.2 網(wǎng)絡(luò)設(shè)備417
7.2.1 交換機(jī)與路由器有什么區(qū)別?417
7.2.2 路由表的功能有哪些?417
7.3 網(wǎng)絡(luò)協(xié)議418
7.3.1 TCP和UDP的區(qū)別有哪些?418
7.3.2 什么是ARP/RARP?418
7.3.3 IP Phone的原理是什么?都用了哪些協(xié)議?419
7.3.4 Ping命令是什么?419
7.3.5 基本的HTTP流程有哪些?420
7.4 網(wǎng)絡(luò)其他問題420
7.4.1 常用的網(wǎng)絡(luò)安全防護(hù)措施有哪些?420
7.4.2 相比IPv4,IPv6有什么優(yōu)點(diǎn)?421
第8章 面試筆試