1. 程式人生 > >面試筆試題刷題總結 不斷更新中。。。。。。

面試筆試題刷題總結 不斷更新中。。。。。。

1.下面會引起程序建立的事件是()。

正確答案: A C 你的答案: A (錯誤)

  1. 使用者登入
  2. 裝置中斷
  3. 作業排程
  4. 執行系統呼叫
    導致一個程序建立另一個程序的典型操作有四種:
    1 使用者登入;系統為使用者建立一個程序,並插入就緒佇列
    2 作業排程
    3 提供服務 系統為使用者請求建立一個程序
    4 應用請求 使用者程式自己建立程序

2.下面有關本地管理表空間和字典管理表空間的特點的描述,錯誤的是?

正確答案: C 你的答案: B (錯誤)

  1. 字典管理表空間將Oracle的區管理資訊存放在表空間的字典中進行管理,所有區的分配與釋放,都會使字典的記錄的增減變動
  2. 本地管理是以點陣圖的方式,將區的分配資訊儲存在資料檔案本身,所有區的分配等操作都只是點陣圖的運算,點陣圖中的每一位對應資料檔案中的一個區或幾個連續的區
  3. 字典管理表空間執行的效率很高。並且產生磁碟碎片很少
  4. 如果要用字典的方式管理表空間,可以在建立表空間時,使用: EXTENT MANAGEMENT DICTIONARY 選項。

第一、字典管理表空間
將Oracle的區管理資訊存放在表空間的字典中進行管理,所有區的分配與釋放,都會使字典的記錄的增減變動。也就是在字典的記錄中會執行更新、插入、刪 除操作,在執行上述操作時,都會生成重做日誌,對字典的管理,將影響正常操作的效率,並且在區分配、回收的過程中,產生磁碟碎片,如果磁碟碎片增加到一定 的程度,會浪費空間,嚴重影響效率,同時,Oracle 在管理表空間的管理中,會產生遞迴SQL。
如果要用字典的方式管理表空間,可以在建立表空間時,使用: EXTENT MANAGEMENT DICTIONARY 選項。
第二、本地管理表空間
本地管理是以點陣圖的方式,將區的分配資訊儲存在資料檔案本身,所有區的分配等操作都只是點陣圖的運算,點陣圖中的每一位對應資料檔案中的一個區或幾個連續的區,這樣在進行區管理時,生成的重做日誌將非常少,並且執行的效率很高。並且產生磁碟碎片很少。
如果要用本地管理表空間,可以在建立表空間時,使用: EXTENT MANAGEMENT LOCAL 選項。
在表空間的管理中,Oracle8I中可以採用字典管理,也可以採用本地管理,如果不指定,將採用字典管理方式。
在 Oracle9I中,推薦採用本地管理的方式,如果不指定,將採用本地管理的方式。
從Oracle 10g開如,要求採用本地管理的方式。

3.下面有關http keep-alive說法錯誤的是?

正確答案: D 你的答案: A (錯誤)

  1. 在HTTP1.0和HTTP1.1協議中都有對KeepAlive的支援。其中HTTP1.0需要在request中增加“Connection: keep-alive” header才能夠支援,而HTTP1.1預設支援
  2. 當使用Keep-Alive模式時,Keep-Alive功能使客戶端到服 務器端的連線持續有效,當出現對伺服器的後繼請求時,Keep-Alive功能避免了建立或者重新建立連線
  3. 可以在伺服器端設定是否支援keep-alive
  4. 當你的Server多為動態請求,建議開啟keep-alive增加傳輸效率

HTTP/1.0
在HTTP/1.0版本中,並沒有官方的標準來規定Keep-Alive如何工作,因此實際上它是被附加到HTTP/1.0協議上,如果客戶端瀏覽器支援Keep-Alive,那麼就在HTTP請求頭中新增一個欄位 Connection: Keep-Alive, 當伺服器收到附帶有Connection: Keep-Alive的請求時,它也會在響應頭中新增一個同樣的欄位來使用Keep-Alive。這樣一來,客戶端和伺服器之間的HTTP連線就會被保 持,不會斷開(超過Keep-Alive規定的時間,意外斷電等情況除外),當客戶端傳送另外一個請求時,就使用這條已經建立的連線
HTTP/1.1
在HTTP/1.1版本中,官方規定的Keep-Alive使用標準和在HTTP/1.0版本中有些不同,預設情況下所在HTTP1.1中所有 連線都被保持,除非在請求頭或響應頭中指明要關閉:Connection: Close ,這也就是為什麼Connection: Keep-Alive欄位再沒有意義的原因。另外,還添加了一個新的欄位Keep-Alive:,因為這個欄位並沒有詳細描述用來做什麼,可忽略它
Not reliable(不可靠)
HTTP是一個無狀態協議,這意味著每個請求都是獨立的,Keep-Alive沒能改變這個結果。另外,Keep-Alive也不能保證客戶端和服 務器之間的連線一定是活躍的,在HTTP1.1版本中也如此。唯一能保證的就是當連線被關閉時你能得到一個通知,所以不應該讓程式依賴於Keep- Alive的保持連線特性,否則會有意想不到的後果

思路:
1. A、B、C為keep-alive的概念客觀性描述,說法都是正確的
2. 當Server的靜態資源(css 、html、js、img)較多時,開啟keep-alive的開關能夠顯著減少建立tcp連線的 cpu時間消耗
3.當Server的請求大多為動態請求(資料庫訪問或者I/O較多)時,keep-alive關閉比較好,能夠節省一定的記憶體,同時節省的記憶體可以用來作為cache,降低I/O壓力。
4. 基於以上分析,當Server多為動態請求時,儘量關閉keep-alive

4.同一程序下的多個執行緒可以共享哪一種資源:(B)

  1. stack
  2. data section
  3. register set
  4. thread ID

執行緒共享的內容包括:
程序 程式碼段
程序 資料段
程序開啟的檔案描述符、
訊號的處理器、
程序的當前目錄和
程序使用者 ID 與程序組 ID
執行緒獨有的內容包括:
執行緒 ID
暫存器組的值
執行緒的堆疊
錯誤返回碼
執行緒的訊號遮蔽碼

5. 作業系統是一個龐大的管理控制程式,主要包括5個方面的功能:程序與處理機管理,作業管理,儲存管理,裝置管理,檔案管理。

6.通訊網的劃分方法很多,

根據不同的劃分條件,同一個通訊網可以有多種分類的劃分。如按照所能實現的業務種類不同,通訊網可以劃分為電話通訊網、計算機通訊網、資料通訊網、廣播電視網以及綜合業務數字網;按照網路所服務的範圍不同,通訊網可以劃分為本地網、長途網及國際網;按照傳輸介質不同,通訊網可以劃分為微波通訊網、光纖通訊網及無線通訊網等;按照拓撲結構形式不同,通訊網可以劃分為線形、環形、星形、網形和複合形五種基本結構形式。

7.Linux命令列下如何查詢列出/usr/local這個目錄下所有包含字元mrtg的檔案?

正確答案: B 你的答案: D (錯誤)

  1. grep “mrtg” /usr/local
  2. grep -Rn “mrtg” /usr/local
  3. find /usr/local -name ‘mrtg’
  4. find /usr/local -name ‘mrtg’ -R

find是根據name, ctime, mtime等資訊搜尋檔案的命令,不會根據檔案內容去檢索,也就是它只利用了iNode的資訊,所以CD不對。
說說A為啥不對吧,可以去瞧瞧,/usr/local下面幾乎都是目錄,所以grep需要加-R或-r表示遞迴查詢子目錄。另外,實際不加-n也可,畢竟沒強調說,要輸出’mrtg’所在行。即

grep -r "mrtg" /usr/local

B -r是搜尋子目錄 -n是顯示行號資訊,grep是搜尋包含xx字串的檔案 find -name是搜尋檔名包含xx的

8. 批處理系統主要指多道批處理系統,由於多道程式能交替使用CPU,提高了CPU及其他系統資源的利用率,同時也提高了系統的效率。多道批處理系統的缺點是延長了作業的週轉時間,使用者不能進行直接干預,缺少互動性,不利於程式的開發與除錯。

9.複合索引可以只使用複合索引中的一部分,但必須是由最左部分開始,且可以存在常量。

mysql資料庫中一張user表中,其中包含欄位A,B,C,欄位型別如下:A:int,B:int,C:int根據欄位A,B,C按照ABC順序建立複合索引idx_A_B_C,以下查詢語句中使用到索引idx_A_B_C的語句有哪些?
正確答案: A B D 你的答案: B (錯誤)
select *from user where A=1 and B=1
select *from user where 1=1 and A=1 and B=1
select *from user where B=1 and C=1
select *from user where A=1 and C=1

複合索引: Mysql從左到右的使用索引中的欄位,一個查詢可以只使用索引中的一部份,但只能是最左側部分。 例如索引是key index (a,b,c). 可以支援a | a,b| a,b,c 3種組合進行查詢,但不支援 b,c進行查詢 .當最左側欄位是常量引用時,索引就十分有效