2016騰訊軟件開發面試題(不定項選擇題【13-25】)

騰訊.jpg

一、前言

前言.png

本來這篇文章打算在上一篇文章後一個星期就寫完的,可是最近跟一個同學在討論創業的事情,因此遲遲還沒寫完,拖到現在(2017年2月14日01:25:22),因此今晚必需趕出來。

二、2016 騰訊軟件開發面試題(不定項選擇題【13-25】)

13、瀏覽器訪問某頁面,HTTP 協議返回狀態碼爲 403 時表示:( )

A. 找不到該頁面
B. 禁止訪問
C. 內部服務器訪問
D. 服務器繁忙

這題直接給答案了,因爲這是很基礎的題目,無論是什麼開發,都離不開網絡了,而網絡開發的核心就是 HTTP 協議,因此這是很基礎的題目,在之前的文章中也有介紹過Android 網絡框架_網絡框架的核心Http協議,最後這題的答案選擇爲:B


14、如果某系統 15*4=112 成立,則系統採用的是( )進制。

A.6
B.7
C.8
D.9

這題因爲是選擇題,我們可以直接從 A 的選項開始,假設是 6 進制的,我們把等式 15 * 4 = 112 轉爲十進制,就是 11 * 4 = 44,最後驗證等式是否成立,明顯等式是成立的,因此答案已經出來了,選擇 A 。

當然我們也可以假設是 X 進制,且我們知道 X 大於 5, 則:(x+5)*4 = x*x +x +2,所以最後計算的結果也爲 6


15、某段文本中各個字母出現的頻率分別是{a:4,b:3,o:12,h:7,i:10},使用哈夫曼編碼,則哪種是可能的編碼:(A)

 
A. a(001) b(000) h(01) i(10) o(11)
B. a(0000) b(0001) h(001) o(01) i(1)
C. a(000) b(001) h(01) i(10) o(00)
D. a(0000) b(0001) h(001) o(000) i(1)

知識點

關於哈夫曼樹的知識點很容易遺忘,因爲對於我來說,用的還是比較少的,甚至說接觸的也比較少。但是一些注意的知識點還是要記住的。

關於哈夫曼樹的注意點:

1、滿二叉樹不一定是哈夫曼樹

2、哈夫曼樹中權越大的葉子離根越近 (很好理解,WPL最小的二叉樹)

3、具有相同帶權結點的哈夫曼樹不惟一

4、哈夫曼樹的結點的度數爲 0 或 2, 沒有度爲 1 的結點。

5、包含 n 個葉子結點的哈夫曼樹中共有 2n – 1 個結點。

6、包含 n 棵樹的森林要經過 n–1 次合併才能形成哈夫曼樹,共產生 n–1 個新結點

哈夫曼樹的應用很廣,哈夫曼編碼就是其在電訊通信中的應用之一。廣泛地用於數據文件壓縮的十分有效的編碼方法。其壓縮率通常在20%~90%之間。在電訊通信業務中,通常用二進制編碼來表示字母或其他字符,並用這樣的編碼來表示字符序列。

例:如果需傳送的電文爲 ‘ABACCDA’,它只用到四種字符,用兩位二進制編碼便可分辨。假設 A, B, C, D 的編碼分別爲 00, 01,10, 11,則上述電文便爲 ‘00010010101100’(共 14 位),譯碼員按兩位進行分組譯碼,便可恢復原來的電文。

好了,瞭解了相關的知識點,我們開始解題,首先,創建一個哈夫曼樹,原則如下:

  1. 將每個英文字母依照出現頻率由小排到大,最小在左,組成一個序列

  2. 每個字母都代表一個終端節點(葉節點),比較每個字母的出現頻率,將最小的兩個字母頻率相加合成一個新的節點,將兩個字母從序列中刪除,將生成的節點加入到字母隊列中

  3. 重複前面兩步,直到序列中沒有字母爲止

哈夫曼樹.png

好了,創建了哈夫曼樹,最後我們進行編碼,編碼的規則如下:

  1. 給霍夫曼樹的所有左鏈結 ‘0’ 與右鏈結 ‘1’

  2. 從樹根至樹葉依序記錄所有字母的編碼

因此最後的結果爲:a(001), b(000),h(01),i(10),o(11),選擇 A


16、TCP 和 IP 分別對應了 OSI 中的哪幾層?()

A. Application layer
B. Presentation layer
C. Transport layer
D. Network layer

知識點

網絡分層模型.gif

所以最後的答案爲 CD


17、一個棧的入棧序列是A,B,C,D,E,則棧的不可能的輸出序列是?()

A.EDCBA
B.DECBA
C.DCEAB
D.ABCDE

堆棧分別是先進後出,後進先出,

選項 a 是 abcde 先入棧,然後依次出棧,正好是 edcba
選項 b 是 abcd 先依次入棧,然後 d 出棧, e 再入棧, e 出棧
選項 c 是錯誤的,不可能 a 先出棧
選項 d 是 a 入棧,然後 a 出棧;b 再入棧, b 出棧.依此類推

最後的結果選擇 C


18、同一進程下的線程可以共享以下?( )

A.stack
B.data section
C.register set
D.file fd

知識點

線程共享的內容包括:

  1. 進程代碼段
  2. 進程的公有數據(利用這些共享的數據,線程很容易的實現相互之間的通訊)
  3. 進程打開的文件描述符、
  4. 信號的處理器、
  5. 進程的當前目錄和
  6. 進程用戶ID與進程組ID

線程獨有的內容包括:

  1. 線程ID
  2. 寄存器組的值
  3. 線程的堆棧
  4. 錯誤返回碼
  5. 線程的信號屏蔽碼

所以選擇爲 BD


19、對於派生類的構造函數,在定義對象時構造函數的執行順序爲?( )

1:成員對象的構造函數
2:基類的構造函數
3:派生類本身的構造函數

A.123
B.231
C.321
D.213

這個很基礎的編程問題了,選擇 D


20、 如何減少換頁錯誤?( )

A. 進程傾向於佔用CPU
B. 訪問局部性(locality of reference)滿足進程要求
C. 進程傾向於佔用I/O
D. 使用基於最短剩餘時間(shortest remaining time)的調度機制

知識點

換頁錯誤又稱缺頁錯誤,當一個程序試圖訪問沒有映射到物理內存的地方時,就會出現缺頁錯誤, 這時操作系統就要去虛擬內存中加載這塊內存頁。

減少換頁錯誤的方法,即降低缺頁中斷率:
1. 內存頁框數。增加作業分得的內存塊數。
2. 頁面大小。頁面劃分越大,中斷率越低。
3. 替換算法的優劣影響缺頁中斷次數
4. 程序局部性。程序局部性好可減少缺頁中斷

因此選擇 B


21、遞歸函數最終會結束,那麼這個函數一定?()

A. 使用了局部變量
B. 有一個分支不調用自身
C. 使用了全局變量或者使用了一個或多個參數
D. 沒有循環調用

這題也是簡單的編程知識題目,選擇 B


22、編譯過程中,語法分析器的任務是(B)

A. 分析單詞是怎樣構成的
B. 分析單詞串是如何構成語言和說明的
C. 分析語句和說明是如何構成程序的
D. 分析程序的結構

知識點

  1. 詞法分析(lexical analysis)

詞法分析是編譯過程的第一個階段。這個階段的任務是從左到右的讀取每個字符,然後根據構詞規則識別單詞。詞法分析可以用lex等工具自動生成。

  1. 語法分析(syntax analysis)

語法分析是編譯過程的一個邏輯階段。語法分析在詞法分析的基礎上,將單詞序列組合成各類語法短語,如“程序”,“語句”,“表達式”等等。語法分析程序判斷程序在結構上是否正確。

  1. 語義分析(semantic analysis)

屬於邏輯階段。對源程序進行上下文有關性質的審查,類型檢查。如賦值語句左右端類型匹配問題。

所以 BCD 都屬於詞法分析,選擇結果爲 BCD


23、同步機制應該遵循哪些基本準則?(ABCD)

A.空閒讓進
B.忙則等待
C.有限等待
D.讓權等待


24、進程進入等待狀態有哪幾種方式?(D)

A. CPU調度給優先級更高的線程
B. 阻塞的線程獲得資源或者信號
C. 在時間片輪轉的情況下,如果時間片到了
D. 獲得spinlock未果


25、設計模式中,屬於結構型模式的有哪些?(BC)

A. 狀態模式
B. 裝飾模式
C. 代理模式
D. 觀察者模式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章