1.網絡結構
在OSI參考模型中,物理層的作用是透明的傳輸比特流。對等實體在一次交互作用中傳送的信息單位稱為協議數據單元,它包括控制信息和用戶數據兩部分。上下層實體之間的接口稱為服務訪問點(SAP),網絡層的服務訪問點也稱為網絡地址,通常分為網絡號和主機號。
OSI參考模型分為:物理層、數據鏈路層,網絡層,傳輸層,會話層,表示層,應用層。
物理層涉及到在信道上傳輸的原始比特流。數據鏈路層的主要任務是加強物理層傳輸原始比特流的功能,使之對應的網絡層顯現為一條無錯線路。發送包把輸入數據封裝在數據幀,按順序傳送出去并處理接受方回送的確認幀。網絡層關系到子網的運行控制,其中一個關鍵問題是確認從源端到目的端如何選擇路由。傳輸層的基本功能是從會話層接受數據而且把其分成較小的單元傳遞給網絡層。會話層允許不同機器上的用戶建立會話關系。
TCP/IP的五層結構圖:物理層、數據鏈路層、網絡層、運輸層,應用層。
2.請你詳細地解釋一下IP協議的定義,在哪個層上面?主要有什么作用?TCP與UDP呢?
答:IP是Internet Protocol的簡稱,是網絡層的主要協議,作用是提供不可靠、無連接的數據報傳送。TCP是Transmit Control Protocol(傳輸控制協議)的縮寫,在運輸層,TCP提供一種面向連接的,可靠的字節流服務;UDP是User Datagram Protocol(用戶數據報協議)的縮寫,在運輸層,UDP提供不可靠的傳輸數據服務。
3.請問交換機和路由器各自的實現原理是什么?分別在哪個層次上面實現的?
答:交換機屬于OSI第二層即數據鏈路層設備。它根據MAC地址尋址,通過站表選擇路由,站表的建立和維護由交換機自動進行。路由器屬于OSI第三層即網絡層設備,它根據IP地址進行尋址,通過路由表路由協議產生。交換機最大的好處是快速,路由器最大的好處是控制能力強。
4.交換和路由的區別是什么?VLAN有什么特點?
交換是指轉發和過濾幀,是交換機的工作,它在OSI參考模型的第二層。而路由是指網絡線路當中非直連的鏈路,它是路由器的工作,在OSI參考模型的第三層。交換和路由的區別很多。首先,交換是不需要IP的,而路由需要,因為IP就是第三層的協議,第二層需要的是MAC地址;再有,第二層的技術和第三層不一樣,第二層可以做VLAN、端口捆綁等,第三層可以做NAT、ACL、QOS等。
VLAN是虛擬局域網的英文縮寫,它是一個純二層的技術,它的特點有三:控制廣播,安全,靈活性和可擴展性。
5.什么是SNMP協議?它有什么特點?SNMP協議需要專門的連接么?
答:SNMP(Simple Network Manager Protocol)即簡單網絡管理協議,它為網絡管理系統提供了底層網絡管理的框架。SNMP的特點是:SNMP易于實現;SNMP協議是開放的免費產品;
SNMP協議有很多詳細的文檔資料,網絡業界對這個協議也有較深入的了解,這些都是SNMP協議進一步發展和改進的基礎;SNMP協議可用于控制各種設備。
SNMP是一種無連接協議。無連接的意思是它不支持像TELNET或FTP這種專門的連接。通過使用請求報文和返回響應的方式,SNMP在管理代理和管理員之間傳送消息。
6.路由表是做什么用的?在Linux環境中怎么配置一條默認路由?
答:路由表是用來決定如何將包從一個子網傳送到另一個子網的,換句話說就是用來決定從一個網卡接受到的包應該送到哪一個網卡上去。路由表的每一行至少由目標網絡號、netmask、到這個子網應該使用的網卡這3條信息。當路由器從一個網卡接受到一個包時,它掃描路由表的每一行,用里面的netmask和包里的目標IP地址做并邏輯運算(&)找出目標網絡號。如果此網絡號和這一行里的網絡號相同,就將這條路由保留下來作為備用路由。如果已經有備用路由了,就在這兩條路由里將網絡號最長的留下來,另一條丟掉。如此接著掃描下一行直到結束。如果掃描結束仍沒有找到任何路由,就用默認路由。確定路由后,直接將包送到對應的網卡上去。
在Linux上可以用“route add default gw<默認路由器IP>”命令配置一條默認路由。
7.在網絡中有兩臺主機A和B,通過路由器和其他交換機設備連接起來,已經確認物理連接正確無誤,怎么來測試這兩臺機器是否連通?如果不通,怎么判斷故障點?怎么排除故障?
答:測試這兩臺機器是否連通:從一臺機器ping另一臺機器。如果ping不同,用traceroute命令可以確定是哪個路由器不能連通,然后再找問題是否在交換設備或HUB或網線等。
8.每個路由器在尋找路由器時需要直到哪5部分信息?
答:所有的路由器需要如下信息為報文尋找路由:目的地址 報文發送的目的主機。鄰站的確定? 指明誰直接連接到路由器的接口上。路由的發現? 發現鄰站知道哪些網絡。 選擇路由? 通過從鄰站學習到的信息,提供最優的到達目的地的路徑。 保持路由信息 路由器保存一張路由表,它存儲所知道的所有路由信息。
9.什么是BGP?
答:BGP(Border Gateway Protocol,邊界網關協議)是一種在自治系統之間動態交換路由器信息的路由協議。一個自治系統的經典定義是一個管理機制控制之下的一組路由器,它使用IGP和普通度量值向其他自治系統轉發報文。
10.自適應網卡只有紅燈閃爍,綠燈不亮,這種情況正常?
答:自適應網卡紅燈代表Link/Act(連通/工作),即連通時紅燈長亮,傳輸數據時閃爍;綠燈代表FDX(全雙工),即全雙工狀態時亮,半雙工狀態時滅。如果一個半雙工的網絡設備和自適應網卡相連,由于這張網卡是自適應網卡,它就會工作在半雙工狀態,所以綠燈不亮也屬于正常情況。
11.兩臺筆記本電腦連起來后ping不通,你覺得可能存在哪些問題?
答:(1)首先想到的就是你的網線問題。確認網線是否正確,電腦之間連的線和電腦與HUB之間連的線分正線、反線,是不同的。但是對于使用千兆位網卡的除外,千兆位網卡有自動識別的功能,既可以是正線也可以是反線。(2)局域網設置問題。電腦互連是要設置的。看看是否安裝了必要的網絡協議,最重要的是,IP地址是否設置正確。互連的時候,最好一臺為主,一臺為副,主的設為網關。(3)網卡驅動未正確安裝。(4)防火墻設置有問題。(5)是否有什么軟件阻止ping包。
12.解釋什么叫“透明”?什么叫“網格”?
答:透明即向高層隱蔽其具體實現。網格就是有規律的方格集,是虛擬的。網格是把整個因特網整合一臺巨大的超級計算機,實現各種資源的全面共享。網格的根本特征不是它的規模,而是資源共享,消除資源孤島。在不同地區的計算機各自分析某一項計算的一部分,綜合起來計算出同一項東西。
13.我們在南京,與深圳的網絡是通的,但和北京的網絡不通,你以怎樣的順序查找問題所在?
答:查找路由器是否可以測試到目的地、所經過的路由器及路由延遲狀態。通過這個命令看最后的一個數據包是在哪兒被丟棄或中斷的。
14.香農定理是什么?
答:香農定理:香農定理描述了有限帶寬、有隨機熱噪聲信道的最大傳輸速率與信道帶寬、信號噪聲功率比之間的關系。在有隨機熱噪聲的信道上傳輸數據信號時,數據傳輸率Rmax與信道帶寬B、信噪比S/N的關系為:Rmax=B*log2(1+S/N)。
香農定理由如下的公式給出:C=B*log2(1+S/N),其中C是可得到的鏈路速度,B是鏈路的帶寬,S是平均信號功率,N是平均噪聲功率,信噪比(S/N)通常用分貝(dB)表示,分貝數=10*lg(S/N)。
15.IP地址的分類
A類、B類和C類地址的網絡號字段net-id分別為1,2和3字節長,而在網絡號字段的最前面有1~3bit的類別比特,其數值分別規定為0,10,110。A類、B類和C類地址的主機號字段分別為3個、2個和1個字節長。
IP地址的使用范圍
網絡類別 | 最大網絡數 | 第一個可用的網絡號 | 最后一個可用的網絡號 | 每個網絡中的最大主機數 |
A | 126(27-2) | 1 | 126 | 16777214(224-2) |
B | 16384(214) | 128.0 | 191.255 | 65534(216-2) |
C | 2097152(221) | 192.0.0 | 223.255.255 | 254(28-2) |
一般不使用的特殊IP地址
net-id | host-id | 源地址使用 | 目的地址使用 | 代表的意思 |
0 | 0 | 可以 | 不可 | 在本網絡上的主機 |
0 | host-id | 可以 | 不可 | 在本網絡上的某個主機 |
全1 | 全1 | 不可 | 可以 | 只在本網絡上進行廣播 |
net-id | 全1 | 不可 | 可以 | 對net-id上的所有主機進行廣播 |
127 | 任何數 | 可以 | 可以 | 用作本地軟件環回測試之用 |
16.TCP/IP 建立連接的過程?(3-way shake)
答:在TCP/IP協議中,TCP協議提供可靠的連接服務,采用三次握手建立一個連接。
第一次握手:建立連接時,客戶端發送syn包(syn=j)到服務器,并進入SYN_SEND狀態,等待服務器確認;第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。
17. IP組播有那些好處?
答:Internet上產生的許多新的應用,特別是高帶寬的多媒體應用,帶來了帶寬的急劇
消耗和網絡擁擠問題。組播是一種允許一個或多個發送者(組播源)發送單一的數據包
到多個接收者(一次的,同時的)的網絡技術。組播可以大大的節省網絡帶寬,因為無
論有多少個目標地址,在整個網絡的任何一條鏈路上只傳送單一的數據包。所以說組播
技術的核心就是針對如何節約網絡資源的前提下保證服務質量。
18.基礎知識
1)??? 計算機網絡:利用各種通信手段,把分散的計算機有機的連在一起,達到互相通信而且共享軟件、硬件和數據等資源的系統。
2)??? 組成數據通信網絡的基本要素為信源、信宿、傳輸系統3項。
3)??? 通信模型:信源(工作站)->發送器(調制解調器) ->傳輸系統(公用電話網) ->接收機(調制解調器) ->信宿(服務器)
4)??? 10BASE-T標準規定的網絡的網絡拓撲結構是星形,網絡速率是10Mb/S,網絡所采用的網絡介質是雙絞線。
5)??? 傳統的加密方法可以分成兩類:替代密碼和換位密碼。現代密碼學采用的算法主要有:秘密密鑰算法和公開密鑰算法。
6)??? 數據傳輸通常可以分成5個階段:(1)建立通信鏈路;(2)建立數據傳輸鏈路;(3)傳送通信控制信號和傳輸數據信息;(4)數據傳輸結束,雙方通過控制信息確認傳輸結束;(5)切斷數據傳輸鏈路。
7)??? 在WWW中,使用統一資源定位器URL來唯一地標識和定位因特網中的資源,它由3部分組成:客戶與服務器之間所使用的通信協議和主機域名(或IP地址)和文件路徑和文件名。
8)??? 第一代網絡以單計算機為中心的聯機系統,第二代網絡以遠程大規模互聯為主要特點。
9)??? 單工是只能有一個方向的通信而沒有反方向的交互;半雙工是通信的雙方都可以發送信息。但不能雙方同時發送信息。全雙工是通信的雙方都可以同時發送信息和接受信息。
10)計算機通信子網技術發展的順序是線路交換-報文組交換-幀中繼-ATM。
11)使用同樣網絡操作系統的兩個局域網絡連接時,為使連接的網絡從網絡層到應用層都能一致,連接時必須使用網橋。
12)IEEE 802將數據鏈路層劃分為兩個子層,上子層是邏輯鏈路控制LLC,下子層是媒體接入控制MAC。
13)涉及OSI模型層次最多的設備是網關。
14)FTP工作時使用2條TCP連接來完成文件傳輸。
15)ICMP是Internet控制報文協議,處于網絡層(IP層)。
16)主要拓撲結構:總線、星形、樹形,環形。
17)異步傳輸模式(ATM)本質上一種高速分組交換模式,用固定大小的分組單元傳送信息,支持多媒體通信,包括音頻、視頻和數據,結合了線路交換和分組交換的優點,被用于B-ISDN。
18)分組交換:以分組為單位,在網絡層上進行;幀中繼:以幀為單位,在數據鏈路層上進行;異步傳輸:以信元為單位,在數據鏈路層上進行,建立在大容量光纖介質基礎上的,適用于LAN和WAN。
19)有線傳輸介質:同軸電纜,雙絞線和光纖。
20)轉發器將信號放大并整形后再轉發出去,轉發器又稱為中繼器,轉發器的作用是消除信號由于經過一長段電纜而造成的失真和哀減,使信號的波形和強度達到所要求的指標,它工作在物理層,中繼器獲取衰減或損失的信號并重新生成它。
21)Internet采用TCP/IP協議;Internet物理地址和IP地址轉換采用ARP (Address Resolution Protocol)(地址解析協議;IP地址由兩部分組成,網絡號和主機號。不過是要和“子網掩碼”按位與之后才能區分哪些是網絡位哪些是主機位。
19.試題(選擇題,只是答案中之一。):
1)??? 如果把一個網絡40.15.0.0分為兩個子網,第一個子網是40.15.0.0/17,那么第二個子網將會是40.15.128.0/17。解析:讓主網分成兩個網段,子網掩碼分別是0xff 0xff 0x80 0x00和0xff 0xff 0x00 0x00。
2)??? 如果一個蠕蟲病毒攻擊了一個家用PC機的A類地址主機的話,這個地址最有可能接受很多ICMP目的無法抵達包。 解析:大量發出IP請求,肯定很多不可達,返回不可達錯誤。
3)??? 在一個IP數據包到達目的地址之前,它可能成為碎片,而且不會重組。 解析:網絡問題,包未達到終點不可能重組,但可以分散成碎片。
4)??? 在TCP/IP協議棧里,如果出現阻塞情況,下面哪種情況最有可能發生?丟包 解析:網絡阻塞問題,擁塞導致丟包。
5)??? 文件傳輸是基于哪種協議?TCP? 解析:FTP是有連接的服務,所以必須基于TCP協議。
6)??? 一個C類網絡最多能容納多少臺主機? 254 解析:子網中IP為0~255,其中0和255不能用,所以是254個。
7)??? SMTP的全稱是“Simple Mail Transfer Protocol”,即簡單郵件傳輸協議。 SMTP 協議屬于TCP/IP協議族,它幫助每臺計算機在發送或中轉信件時找到下一個目的地。SMTP服務器就是遵循SMTP協議的郵件發送服務器。
8)??? 以太網轉換控制包是基于目的IP地址。
9)??? 如果TCP服務器在客戶端發出數據報之前已經崩潰了,TCP/IP棧可能返回一個SYN。解析:SYN包是TCP連接的第一個包,是非常小的一種數據包。SYN攻擊包括大量此類的包。由于這些包看上去來自實際不存在的站點,因此無法有效地進行處理。SYN攻擊就是利用TCP 連接的3次握手機制,但發起攻擊端只來一兩次握手,而被攻擊端一直在試圖完成TCP連接,因此造成資源不足。
10)在Windows2000操作系統中,配置IP地址的命令是ipconfig。若用ping命令來測試本機是否安裝了TCP/IP協議,則正確的命令是ping 127.0.0.1。如果要列出本機當前建立的連接,可以使用的命令是netstat –a。
操作系統
1.基本知識點:
1)??? 操作系統是控制和管理計算機軟硬件資源,以盡量合理有效的方法組織多個用戶共享多種資源的程序集合。
2)??? 操作系統的基本功能:(1)處理機管理。主要功能包括進程控制、進程調度、進程同步和進程通信。(2)存儲器管理。主要功能包括內存分配、地址映射、內存保護和內存擴充。(3)設備管,也叫I/O管理。主要功能包括緩沖區管理、設備分配、設備驅動和設備的無關性處理。(4)文件管理。主要功能包括文件存儲空間的管理、文件操作的一般管理、目錄管理、文件的讀寫管理和存取控制。(5)用戶界面管理。操作系統的用戶界面就是操作系統與用戶的接口,包括控制接口和程序接口。
3)??? 現代操作系統的基本特征:并發性、共享性、虛擬性、異步性和不確定性。
4)??? 所謂中斷是指系統發生某一事件后,CPU暫停正在執行的程序去執行處理該事件的程序過程,處理中斷事件的程序稱為中斷處理程序,產生中斷信號的那個部件稱為中斷源。中斷處理具體過程:保存現場;分析原因,轉中斷處理程序;恢復現場。
5)??? 進程是一個具有獨立功能的程序關于數據集合的一次可以并發執行的運行活動,其基本特征:動態特征、并發特征、獨立性、相互制約性。進程的構成:程序、數據和進程控制塊。進程有三種基本的調度狀態:執行狀態、就緒狀態和等待狀態。
6)??? 進程的引入大大地提高了資源的利用率和系統的吞吐量,而引入線程的目的是為了減少程序并發所付出的系統開銷。進程是資源分配的單位,而線程是系統調度的單位。
7)??? 所謂死鎖是多個進程間的一種僵持狀態。進程死鎖的原因:資源競爭及進程推進順序非法。死鎖的4個必要條件:互斥、占有等待、不可剝奪、環路。死鎖的處理:鴕鳥策略、預防策略、避免策略、檢測與解除死鎖。
8)??? 臨界資源是一次只允許一個進程使用的資源。臨界區是在進程中操作臨界資源的程序段。
2.進程和線程的區別?
答:線程是指進程內的一個執行單元,也是進程內的可調度實體.與進程的區別:(1)調度:線程作為調度和分配的基本單位,進程作為擁有資源的基本單位。(2)并發性:不僅進程之間可以并發執行,同一個進程的多個線程之間也可并發執行。(3)擁有資源:進程是擁有資源的一個獨立單位,線程不擁有系統資源,但可以訪問隸屬于進程的資源. (4)系統開銷:在創建或撤消進程時,由于系統都要為之分配和回收資源,導致系統的開銷明顯大于創建或撤消線程時的開銷。
3.網絡編程中設計并發服務器,使用多進程 與 多線程 ,請問有什么區別?
解析:(1)進程:子進程是父進程的復制品。子進程獲得父進程數據空間、堆和棧的復制品
(2)線程:相對與進程而言,線程是一個更加接近與執行體的概念,它可以與同進程的其他線程共享數據,但擁有自己的棧空間,擁有獨立的執行序列。
兩者都可以提高程序的并發度,提高程序運行效率和響應時間。線程和進程在使用上各有優缺點:線程執行開銷小,但不利于資源管理和保護;而進程正相反。同時,線程適合于在SMP機器上運行,而進程則可以跨機器遷移。
答:用多進程時每個進程有自己的地址空間,線程則共享地址空間。所有其他區別都是由此而來的:(1)速度:線程產生的速度快,線程間的通信快,切換快等,因為它們在同一個地址空間內。(2)資源利用率:線程的資源利用率比較好也是因為它們在同一個地址空間內。(3)同步問題:線程使用公共變量/內存時需要使用同步機制,還是因為它們在同一個地址空間內。
4. 操作系統中常見的進程調度策略有哪幾種?
答:FCFS(先來先服務),優先級,時間片輪轉,多隊列、多級反饋隊列。
5.進程間的通信如何實現?
答:現在最常見的進程間通信的方式有:信號,信號量,消息隊列,共享內存,管道。信號是使用信號處理器來進行的,信號量是使用P、V操作來實現的。消息隊列是比較高級的一種進程間通信方法,因為它真的可以在進程間傳送消息。
6.在Windows編程中互斥器(mutex)的作用和臨界區(critical section)類似,請說一下二者間的主要區別。
答:兩者的區別是mutex開業用于進程之間互斥,critical section是線程之間的互斥。
7.進程進入等待狀態有哪幾種方式?
答:CPU調度給優先級更高的Thread(線程),原先Thread 進入Waiting(等待)狀態。阻塞的Thread獲得資源或者信號,進入Waiting狀態。在時間片輪轉的情況下,如果時間片到了,也將進入等待狀態。
8.試說明進程在三個基本狀態之間轉換的典型原因。
答:a.處于就緒狀態的進程,當進程調度程序為之分配了處理機后,該進程便由就緒狀態變為執行狀態。b.當前進程因發生某事件而無法執行,如訪問已被占有的臨界資源,就會使進程由執行狀態變為阻塞狀態。c.當前進程因事件片用完而被暫停執行,該進程便由執行狀態變為就緒狀態。
9.同步機構應遵循哪些基本準則?
答:a.空閑讓進;b.忙則等待;c.有限等待;d.讓權等待。
10.在單處理機環境下,進程間有哪幾種通信方式?
答:a.共享存儲器系統通信方式;b.消息傳遞系統通信方式;c.管道通信方式。
11.試比較消息隊列與管道通信機制。
答:a.所謂管道,是指用于連接一個讀進程和一個寫進程,以實現它們之間通信的共享文件,又稱pipe文件,管道通信是屬于共享存儲系統的。b.消息隊列通信機制屬于消息傳遞系統通信機制,存在通信鏈路,有消息的格式,有若干緩沖隊列,采用獨特的發送原語和接受原語。
12.在請求分頁系統中,常采用哪幾種頁面置換算法?
答:a.最佳置換算法;b.先進先出算法;c.最近最久未使用LRU置換算法;d.Clock置換算法;e.此外,還有最少使用置換算法和頁面緩沖算法。
數據庫
1.基礎知識點:
1NF:第一范式。如果關系模式R的所有屬性的值域中每一個值都是不可再分解的值,則稱R屬于第一范式模式。第一范式的模式要求屬性值不可再分裂成更小部分,即屬性項不能是屬性組合或由組屬性組成。2NF:第二范式。如果關系模式R為第一范式,并且R中每一個非主屬性完全函數依賴于R的某個候選鍵,則稱R為第二范式模式。(如果A是關系模式R的候選鍵的一個屬性,則稱A是R的主屬性,否則稱A是R的非主屬性。) 3NF:第三范式。如果關系模式R是第二范式,且每個非主屬性都不傳遞依賴于R的候選鍵,則稱R是第三范式的模式。 BCNF:BC模式。如果關系模式R是第一范式,且每個屬性都不傳遞依賴于R的候選鍵,那么稱R為BCNF的模式。4NF:第四范式。設R是一個關系模式,D是R上的多值依賴集合。如果 D中成立非平凡多值依賴X→→Y時,X必是R的超鍵,那么稱R是第四范式的模式。
2.試題
1)??? 設有關系R(S,D,M),其函數依賴集F={S→D,D→M}。則關系R至多滿足2NF。 解析:屬于依賴關系,所有至多滿足第二范式。
2)??? 找出表ppp里面num最小的數,不能使用min函數。 ?答:select * from ppp where num<=all(select num from ppp) 或者:select top 1 num from ppp order by num。
3)??? 找出表ppp里面最小的數,可以使用min函數。 答:select * from ppp where num=(select Min(num) from ppp)。
4)??? 選擇表ppp2中num重復的記錄。 答: select * from ppp2 where num in(select num from ppp2 group by num having(count(num)>1))。
5)??? 寫出復制表、拷貝表和四表聯合的SQL語句。? 答:復制表(只復制結構,源表名:A,新表名:B): select * into B from A where 1=0?? 拷貝表(拷貝結構,源表名:A,新表名:B): select * into B from A? 四表聯查: select * from A,B,C,D where 關聯條件
6)??? 在SQL Server中如何用SQL語句建立一張臨時表?? 答: create table #Temp(字段1 類型,字段2 類型…)?? 注意,臨時表要在表名前面加 “#”。
7)??? %代表任意長度(長度可以為0)的字符串,_ 代表任意單個字符。如果用戶要查詢的語句本身就含有%或_,這時就要使用escape’<換碼字符>’短語對通配符進行轉義了。
8)??? 集函數SUM,AVG中的列必須是數值型。
綜合的是選擇題
9)??? 每一個部門的每個工種的工資最大值? select dept_id,job_cat,max(salary)from employee group by dept_id,job_cat;
10)在primary 和unique兩種約束的情況下,Oracle數據庫會隱形創建一個唯一索引。
11)在select語句中包含一個where關鍵詞,group by關鍵詞一般在where關鍵詞之后,order by 關鍵詞一般在select語句中所有關鍵詞之后。
12)select last_name,salary from employees order by salary; select last_name,salary from employees order by 2 asc; 這兩個SQL語句是相同的結果。
13)如果你想把時間顯示成像“2005111014:44: 17”這樣的格式,SQL語句: select to_char(sydate,’yyyymmdd hh24:mi:ss’)from dual;
14)select語句中用來連接字符串的符號是+。
15)如果要從字符串“Hello world”中提取出“ello world”這樣的結果,SQL語句: select lower(trim(‘H’from ‘Hello world’))from dual;
3.存儲過程和函數的區別是什么?
答:存儲過程是用戶定義的一系列SQL語句的集合,涉及特定表或其他對象的任務,用戶可以調用存儲過程。而函數通常是數據庫已定義的方法,它接受參數并返回某種類型的值,并且不涉及特定用戶表。
4.事務是什么?
答:事務是作為一個邏輯單元執行的一系列操作。一個邏輯工作單元必須有4個屬性,稱為ACID(原子性、一致性、隔離性和持久性)屬性,只有這樣才能稱為一個事務。
5.游標的作用是什么?如何知道游標已經到了最后?
答:游標用于定位結果集的行。通過判斷全局變量@@FETCH_STATUS可以判斷其是否到了最后。通常此變量不等于0表示出錯或到了最后。
6.觸發器分為事前觸發和事后觸發,這兩種觸發有何區別?語句級觸發和行級觸發有何區別?
答:事前觸發器運行于觸發事件發生之前,而事后觸發器運行于觸發事件發生之后。語句級觸發器可以在語句執行前或后執行,而行級觸發在觸發器所影響的每一行觸發一次。
7.什么叫做SQL注入式攻擊?如何防范?
答:所謂SQL注入式攻擊,就是攻擊者把SQL命令插入到Web表單的輸入域頁面請求的查詢字符串中,欺騙服務器執行惡意的SQL命令。在某些表單中,用戶輸入的內容直接用來構造動態SQL命令,或作為存儲過程的輸入參數,這類表單特別容易受到SQL注入式攻擊。防范SQL注入式攻擊闖入:只要在利用表單輸入的內容構造SQL命令之前,把所有輸入內容過濾一番就可以了。過濾輸入內容可以按多種方式進行。第一,替換單引號,即把所有單獨出現的單引號改成兩個單引號,防止攻擊者修改SQL命令的含義。第二,刪除用戶輸入內容中的所有連字符,防止攻擊者順利獲得訪問權限。第三,對于用來執行查詢的數據庫賬戶,限制其權限。第四,用存儲過程來執行所有的查詢。第五,檢查用戶輸入的合法性,確信輸入的內容只包含合法的數據。數據檢查應當在客戶端和服務器端都執行。第六,將用戶登錄名稱、密碼等數據加密保存。第七,檢查提取數據的查詢所返回的記錄數量。
8.為了防止在查詢記錄的時候被其他用戶更改記錄,應該采用什么方法?如何用查詢語句實現該方法?
答: 添加一個“時間戳”類型的字段就可以了。timestamp這種數據類型會根據當前時間自動產生一個時間字符串,確保這些數在數據庫中是唯一的。timestamp一般用做給表行加版本戳的機制,存儲大小為8個字節。一個表只能有一個timestamp列。每次插入或更新包含timestamp列的行時,timestamp列中的值均會更新。這一屬性使timestamp列不適合作為鍵使用,尤其是不能作為主鍵使用。對行的任何更新都會更改timestamp值,從而更改鍵值。
9.有一個數據庫,只有一個表,包含著1000個記錄,你能想出一種解決方案來把第五行到第七行的記錄取出來么?不要使用航標和索引。
答:第一步建立數據庫:
declare @i int
set @i=1
create table #T(userid int)
while (@i<=10)
begin
insert into #T
select @i
set @i=@i+1
end
select userid from
(select top 3 userid from(selec top 7 userid from #T order by userid)Ta order by userid desc
)TB order by userid
刪除數據庫: drop table #T
提取數據:
select top 3 userid from T where userid not in(select top 4 userid from T order by userid)order by userid
或者:select top 7 userid from T where userid >ANY(select top 4 userid from T order by userid)order by userid
或者:select top 7 userid from T where userid >ALL(select top 4 userid from T order by userid)order by userid
10.什么是聚集索引?什么是非聚集索引?什么是主鍵?
答:表中經常有一個列或列的組合,其值能唯一地標識表中的每一行。這樣的一列或多列稱為表的主鍵。聚集索引確定表中數據的物理順序。一個表中只能包含一個聚集索引。非聚集索引與課本中的索引類似。數據存儲在一個地方,索引存儲在另一個地方,索引帶有指針指向數據的存儲位置。索引中的項目按索引鍵值的順序存儲,而表中的信息按另一種順序存儲。
11.現有一張表,有兩個字段:ID,NAME。ID為主鍵。如果希望查詢出所有擁有2個或更多ID 的NAME,查詢語句應該如何寫?
答:select [Name] from [table] group by(name) having(count([ID]>=2)。
12.設供應商供應零件的關系模式為SP(Sno,Pno,Qty),其中Sno表示供應商號,Pno表示零件號,Qty表示零件數量。整個數據庫如下表:
Sno???? Pno????? Qty
168????? r1??????? 3
168????? r2??????? 4
168????? r3??????? 7
169????? r2??????? 1
169????? r3??????? 5
170????? r4??????? 8
171????? r7??????? 5
172????? r2??????? 1
172????? r7??????? 3
請問下面的SQL語句返回值是什么?
Select * from SP SPY where exists (select * from SP SPZ where Sno)
解析:在exists 中的子查詢在這個例子中只返回一個值。因為從子查詢中返回的行數至少有一行exits返回為true,這使得表中的所有記錄都被顯示了出來。
請問下面的SQL語句返回值是什么?
Select * from SP SPY where exists (select * from SP SPZ where Sno=’168’ and SPZ.Pno=SPY.Pno);
解析:返回與168號供應商所提供零件相同編號的情況。
若想得到與168號供應上所提供零件相同的全部供應商的全部產品情況?
解析:Select * from SP? where Sno in (select Sno from SP where Pno in (select Pno from SP from SP? where Sno=’168’));
或者:Select * from SP SPX where exists (select * from SP SPY where SPY.Sno=’168’ and exists (select * from SP SPZ where SPZ.Sno=SPX.Sno and SPZ.Pno=SPY.Pno));
13. 觸發器怎么工作的?
答:觸發器主要是通過事件進行觸發而被執行的,當對某一表進行諸如UPDATE、 INSERT、 DELETE 這些操作時,數據庫就會自動執行觸發器所定義的SQL 語句,從而確保對數據的處理必須符合由這些SQL 語句所定義的規則。
14.在一個文件中有 10G 個整數,亂序排列,要求找出中位數。內存限制為 2G。只寫出思路即可。(騰訊筆試題)
答:(1)把整數分成256M段,每段可以用64位整數保存該段數據個數,256M*8 = 2G內存,先清0。(2)讀10G整數,把整數映射到256M段中,增加相應段的記數。(3)掃描256M段的記數,找到中位數的段和中位數的段前面所有段的記數,可以把其他段的內存釋放。(4)因中位數段的可能整數取值已經比較小(如果是32bit整數,當然如果是64bit整數的話,可以再次分段),對每個整數做一個記數,再讀一次10G整數,只讀取中位數段對應的整數,并設置記數。(5)對新的記數掃描一次,即可找到中位數。
如果是32bit整數,讀10G整數2次,掃描256M記數一次,后一次記數因數量很小,可以忽略不記。
解釋一下:假設是32bit整數,按無符號整數處理整數分成256M段? 整數范圍是0 - 2^32 - 1 一共有4G種取值,4G/256M = 16,每16個數算一段 0-15是1段,16-31是一段,...整數映射到256M段中? 如果整數是0-15,則增加第一段記數,如果整數是16-31,則增加第二段記數,...其實可以不用分256M段,可以分的段數少一些,這樣在掃描記數段時會快一些,還能節省一些內存。
15.一般數據庫若出現日志滿了,會出現什么情況,是否還能使用?
答:只能執行查詢等讀操作,不能執行更改,備份等寫操作,原因是任何寫操作都要記錄日志。也就是說基本上處于不能使用的狀態。
16.SQL Server是否支持行級鎖,有什么好處?
答:支持,設立封鎖機制主要是為了對并發操作進行控制,對干擾進行封鎖,保證數據
的一致性和準確性,行級封鎖確保在用戶取得被更新的行到該行進行更新這段時間內不
被其它用戶所修改。因而行級鎖即可保證數據的一致性又能提高數據操作的并發性。
17.磁盤柜上有14塊73G的磁盤, 數據庫為200G 大小包括日志文件,如何設置磁盤(要說明這14磁盤是怎么用的)?
答:這個問題應該是考察硬件知識和數據庫物理部署。首先需要知道這些磁盤是否要用于存放數據庫備份文件和數據庫性能(讀/寫)要求。來決定raid的級別。1)、如果偏重于性能考慮,而且不用存放數據庫備份文件的話,考慮使用raid0+1,這樣可使用的磁盤容量為:14*73*50%=511G。2)、如果讀/寫性能要求不高,而且還比較摳門的話,可以考慮raid5,這樣可使用的磁盤容量為:13*73=949G。至于如何使用應該是說數據庫物理文件的部署。注意說出將tempdb,data file,log file分開存放以減少I/O競爭即可。其實現在的條帶化磁盤一般都會自動將文件分存,人為的分布已經越來越不重要了。
18..有兩服務器群集,分別為node1和node2 現在要打win200系統補丁,打完后,要重新啟動,如何打補丁,不能影響用戶使用(要用群集的術語詳細說明)。
答:這個具體操作有點忘了。大致是:首先看哪個節點正在使用,通過節點IP(私有)訪問另一個空閑節點,為其打上補丁,然后在群集管理器中停止該節點(也可以用命令行方式),重新啟動。等到啟動完畢,將切換使用節點,為另一個節點打補丁。然后重新啟動。
19.有一個A 數據庫,分別復制到B和C, B 要求 每次數據更新 也同時更新,C 每天更新一次就行,如何制定復制策略!
答:這個應該考察的是復制知識。a->b? 1)、如果使用SQL Server復制功能,那么讓a->b使用事務性復制方式(同步復制)。2)、如果表不多,也可以自己寫觸發器,利用linkserver+distribute transaction。??? a->c? 1)、如果使用SQL Server復制功能,那么讓a->b使用快照復制方式,在某一時間點進行一次性復制。2)、也可以自己寫bat,將a備份后,通過ftp傳輸備份介質,恢復c。(比較麻煩,不推薦)
20.有一個order 表,有90個字段,20個索引,15個復合索引,其中有3個索引字段超過10個,如何進行優化
答:這個問題問的比較沒水平。你不詳細說明這個表的使用方式(讀寫類的,還是幾乎是靜態表),就問人家怎么優化?!!還不如問問索引的分布訪問原理更好。
看得出他就想讓你說:那三個索引超過10個,B樹遍例效率很低,適當減少字段數目。如果是SQL2005,可以將選擇性不好的字段放在“索引附加字段”中,以保證索引覆蓋。而且SQL Server由于有鎖升級的毛病,可以考慮拆開表。
21..有一個數據庫200G大小,每天增加50M 允許用戶隨時訪問,制定備份策略(詳細說明)。
答:這種情況可以采用增量備份方式。每周日做一次全備份,周一到周六作增量備份(由于數據量較少,可以考慮每30分鐘增量備份一次)。這樣可以盡量減少性能消耗,而且如果transaction log丟失的情況下,可以保證最多丟失30分鐘數據。
22..管理50臺數據庫,日常工作是檢查數據庫作業是否完成,你該如何完成這項檢查工作?
答:這個比較簡單。在每臺機器上建立linkserver,然后在DBA管理服務器上做個分布式視圖,每次查詢該視圖,各個機器上的作業情況一目了然。分布式視圖寫法:
create view vw_job
as
select '機器一' as MName,* from linkserver1..sysjobactivity
union all
select '機器二' as MName,* from linkserver2..sysjobactivity
union all
select '機器三' as MName,* from linkserver3..sysjobactivity
…
23.自定義函數和存儲過程的區別是什么,什么情況下只能用自定義函數,什么情況下只能用存儲過程
答:這個應該是考察存儲過程編寫經驗。一般自定義函數主要用于其他sql中的調用,如:
select yourfunc(...) from table 這種情況下,一般只能通過函數實現。存儲過程的功能要遠遠強于函數,例如動態執行sql(sp_executesql)的使用和一些特殊的功能,自定義函數中是不支持的,只能用存儲過程實現。
24.如果想配置SQL Mail 應該在服務器安裝哪些軟件!
答:需要哪些軟件?安個outlook express就可以了。sql server提供接口存儲過程,非常簡單。
25.學生其存放在Student表中,學生選課情況存放在SC表中,課程情況存放在Course表中。
(1)查詢與“劉晨”在同一個系學習的學生。
答:SELECT Sno,Sname,Sdept FROM Student WHERE Sdept IN(SELECT Sdept FROM Student? WHERE Sname=’劉晨’);
或者:SELECT S1.Sno,S1.Sname,S1.Sdept FROM Student S1,Student S2 WHERE S1.Sdept=S2.Sdept AND S2.Sname=’劉晨’;
(2)查詢選修了課程名為“信息系統”的學生學號和姓名
答:SELECT Sno,Sname FROM Student WHERE Sno IN(SELECT Sno FROM SC) WHERE Cno IN(SELECT Cno FROM Course WHERE Cname=’信息系統’);
或者:SELECT Sno,Sname FROM Student,SC,Course WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno AND Course.Cname=’信息系統’;
COM
1.什么是COM?你怎么理解COM?
答:Components Object Model(COM)是軟件組件互相通信的一種方式。它是一種二進制和網絡標準,允許任意兩個組件互相通信,而不管它們是在什么計算機上運行(只要計算機是相連的),不管各計算機運行的是什么操作系統(只要該系統支持COM),也不管該組件是用什么語言編寫的。COM還提供了位置透明性:當你編寫組件時,其他組件是進程內DLL、本地EXE,還是位于其他計算機上的組件,對用戶而言都無所謂。
首先,COM對象被很好地封裝起來。你無法訪問對象的內部實現細節,你無法知道對象使用了什么數據結構,但是我們可以通過接口來訪問COM對象里面的方法。
概括地說,COM具有如下一些優越性:(1)編程技術難度和工作量降低,開發周期變短,開發成本降低。(2)實現分層次的編程,從而促進了軟件的專業化生產。(3)軟件的復用率提高,使軟件的使用效率得到提高并延長了使用壽命。
2.COM是接口么?
答:(1)COM不是接口,也不是對象,它是一種標準。(2)符合COM標準的對象就是COM對象。其實COM對象無非是實現了很多接口的對象而已。(3)COM對象必須實現IUnKnown接口,這個接口是管理COM對象生命周期的。當COM對象不使用的時候,這個接口定義的方法負責釋放內存。(4)QueryInterface(QI),即所謂查詢接口。由于COM對象有很多個接口,不同的接口管理著COM的不同類型的方法。因此從一個接口可以使用的方法轉到另一個接口可以使用的方法的過程稱為QI,這個過程是由Idispatch接口管理的。(5)GUIDs每個組件都有一個獨一無二的標識,這個標識符就是COM組件的身份,它是一個128位的數字,由系統自由分配。(6)一個COM對象可以有多個接口,一個接口也完全可以被多個COM 對象實現。(7)接口分為兩種:內置接口和外置接口。前一種定義的是COM對象的方法和屬性,用implements實現,COM對象必須實現所有的接口內容;后一種定義的是COM對象的事件,用withEvents實現,這種接口在實現的時候不必實現所有的內容。(8)COM組件必須被注冊后才能使用,它得到注冊表那里去登記“戶口”。
3.COM有什么缺陷?
答:COM組件很不錯,可是它也有致命的缺陷,這個缺陷就來自它本身。COM是可以被重用的,COM對象的實現過程也可以被修改升級(定義是不能修改的)。如果兩個程序都使用一個COM對象,而這個COM組件升級的話,很可能會出現某個程序無非使用新組件的情況,這被稱為“DLL? HELL”(DLL災難)。有時候我們安裝了新軟件后很多別的軟件就無法使用了,很大程度上就是因為這個DLL HELL。