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

騰訊.jpg

一、前言

前言.png

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

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

13、瀏覽器訪問某頁面,HTTP 協(xié)議返回狀態(tài)碼為 403 時(shí)表示:( )

A. 找不到該頁面
B. 禁止訪問
C. 內(nèi)部服務(wù)器訪問
D. 服務(wù)器繁忙

這題直接給答案了,因?yàn)檫@是很基礎(chǔ)的題目,無論是什么開發(fā),都離不開網(wǎng)絡(luò)了,而網(wǎng)絡(luò)開發(fā)的核心就是 HTTP 協(xié)議,因此這是很基礎(chǔ)的題目,在之前的文章中也有介紹過Android 網(wǎng)絡(luò)框架_網(wǎng)絡(luò)框架的核心Http協(xié)議,最后這題的答案選擇為:B


14、如果某系統(tǒng) 15*4=112 成立,則系統(tǒng)采用的是( )進(jìn)制。

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

這題因?yàn)槭沁x擇題,我們可以直接從 A 的選項(xiàng)開始,假設(shè)是 6 進(jìn)制的,我們把等式 15 * 4 = 112 轉(zhuǎn)為十進(jìn)制,就是 11 * 4 = 44,最后驗(yàn)證等式是否成立,明顯等式是成立的,因此答案已經(jīng)出來了,選擇 A 。

當(dāng)然我們也可以假設(shè)是 X 進(jìn)制,且我們知道 X 大于 5, 則:(x+5)4 = xx +x +2,所以最后計(jì)算的結(jié)果也為 6


15、某段文本中各個(gè)字母出現(xiàn)的頻率分別是{a:4,b:3,o:12,h:7,i:10},使用哈夫曼編碼,則哪種是可能的編碼:(A)
<pre>
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)

知識點(diǎn)

關(guān)于哈夫曼樹的知識點(diǎn)很容易遺忘,因?yàn)閷τ谖襾碚f,用的還是比較少的,甚至說接觸的也比較少。但是一些注意的知識點(diǎn)還是要記住的。

關(guān)于哈夫曼樹的注意點(diǎn):

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

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

3、具有相同帶權(quán)結(jié)點(diǎn)的哈夫曼樹不惟一

4、哈夫曼樹的結(jié)點(diǎn)的度數(shù)為 0 或 2, 沒有度為 1 的結(jié)點(diǎn)。

5、包含 n 個(gè)葉子結(jié)點(diǎn)的哈夫曼樹中共有 2n – 1 個(gè)結(jié)點(diǎn)。

6、包含 n 棵樹的森林要經(jīng)過 n–1 次合并才能形成哈夫曼樹,共產(chǎn)生 n–1 個(gè)新結(jié)點(diǎn)

哈夫曼樹的應(yīng)用很廣,哈夫曼編碼就是其在電訊通信中的應(yīng)用之一。廣泛地用于數(shù)據(jù)文件壓縮的十分有效的編碼方法。其壓縮率通常在20%~90%之間。在電訊通信業(yè)務(wù)中,通常用二進(jìn)制編碼來表示字母或其他字符,并用這樣的編碼來表示字符序列。

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

好了,了解了相關(guān)的知識點(diǎn),我們開始解題,首先,創(chuàng)建一個(gè)哈夫曼樹,原則如下:

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

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

  1. 重復(fù)前面兩步,直到序列中沒有字母為止
哈夫曼樹.png

好了,創(chuàng)建了哈夫曼樹,最后我們進(jìn)行編碼,編碼的規(guī)則如下:

  1. 給霍夫曼樹的所有左鏈結(jié) '0' 與右鏈結(jié) '1'

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

因此最后的結(jié)果為:a(001), b(000),h(01),i(10),o(11),選擇 A


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

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

知識點(diǎn)

網(wǎng)絡(luò)分層模型.gif

所以最后的答案為 CD


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

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

堆棧分別是先進(jìn)后出,后進(jìn)先出,

選項(xiàng) a 是 abcde 先入棧,然后依次出棧,正好是 edcba
選項(xiàng) b 是 abcd 先依次入棧,然后 d 出棧, e 再入棧, e 出棧
選項(xiàng) c 是錯(cuò)誤的,不可能 a 先出棧
選項(xiàng) d 是 a 入棧,然后 a 出棧;b 再入棧, b 出棧.依此類推

最后的結(jié)果選擇 C


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

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

知識點(diǎn)

線程共享的內(nèi)容包括:

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

線程獨(dú)有的內(nèi)容包括:

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

所以選擇為 BD


19、對于派生類的構(gòu)造函數(shù),在定義對象時(shí)構(gòu)造函數(shù)的執(zhí)行順序?yàn)???)

1:成員對象的構(gòu)造函數(shù)
2:基類的構(gòu)造函數(shù)
3:派生類本身的構(gòu)造函數(shù)

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

這個(gè)很基礎(chǔ)的編程問題了,選擇 D


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

A. 進(jìn)程傾向于占用CPU
B. 訪問局部性(locality of reference)滿足進(jìn)程要求
C. 進(jìn)程傾向于占用I/O
D. 使用基于最短剩余時(shí)間(shortest remaining time)的調(diào)度機(jī)制

知識點(diǎn)

換頁錯(cuò)誤又稱缺頁錯(cuò)誤,當(dāng)一個(gè)程序試圖訪問沒有映射到物理內(nèi)存的地方時(shí),就會(huì)出現(xiàn)缺頁錯(cuò)誤, 這時(shí)操作系統(tǒng)就要去虛擬內(nèi)存中加載這塊內(nèi)存頁。

減少換頁錯(cuò)誤的方法,即降低缺頁中斷率:

  1. 內(nèi)存頁框數(shù)。增加作業(yè)分得的內(nèi)存塊數(shù)。
  2. 頁面大小。頁面劃分越大,中斷率越低。
  3. 替換算法的優(yōu)劣影響缺頁中斷次數(shù)
  4. 程序局部性。程序局部性好可減少缺頁中斷

因此選擇 B


21、遞歸函數(shù)最終會(huì)結(jié)束,那么這個(gè)函數(shù)一定?()

A. 使用了局部變量
B. 有一個(gè)分支不調(diào)用自身
C. 使用了全局變量或者使用了一個(gè)或多個(gè)參數(shù)
D. 沒有循環(huán)調(diào)用

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


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

A. 分析單詞是怎樣構(gòu)成的
B. 分析單詞串是如何構(gòu)成語言和說明的
C. 分析語句和說明是如何構(gòu)成程序的
D. 分析程序的結(jié)構(gòu)

知識點(diǎn)

  1. 詞法分析(lexical analysis)

詞法分析是編譯過程的第一個(gè)階段。這個(gè)階段的任務(wù)是從左到右的讀取每個(gè)字符,然后根據(jù)構(gòu)詞規(guī)則識別單詞。詞法分析可以用lex等工具自動(dòng)生成。

  1. 語法分析(syntax analysis)

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

  1. 語義分析(semantic analysis)

屬于邏輯階段。對源程序進(jìn)行上下文有關(guān)性質(zhì)的審查,類型檢查。如賦值語句左右端類型匹配問題。

所以 BCD 都屬于詞法分析,選擇結(jié)果為 BCD


23、同步機(jī)制應(yīng)該遵循哪些基本準(zhǔn)則?(ABCD)

A.空閑讓進(jìn)
B.忙則等待
C.有限等待
D.讓權(quán)等待


24、進(jìn)程進(jìn)入等待狀態(tài)有哪幾種方式?(D)

A. CPU調(diào)度給優(yōu)先級更高的線程
B. 阻塞的線程獲得資源或者信號
C. 在時(shí)間片輪轉(zhuǎn)的情況下,如果時(shí)間片到了
D. 獲得spinlock未果


25、設(shè)計(jì)模式中,屬于結(jié)構(gòu)型模式的有哪些?(BC)

A. 狀態(tài)模式
B. 裝飾模式
C. 代理模式
D. 觀察者模式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、前言 2017年1月27日19:05:28,今天是年三十,首先祝大家新年快樂,之前對自己要求過,每星期一篇面試...
    GitHubClub閱讀 19,455評論 41 453
  • iOS面試小貼士 ———————————————回答好下面的足夠了------------------------...
    不言不愛閱讀 2,255評論 0 7
  • 多線程、特別是NSOperation 和 GCD 的內(nèi)部原理。運(yùn)行時(shí)機(jī)制的原理和運(yùn)用場景。SDWebImage的原...
    LZM輪回閱讀 2,131評論 0 12
  • ———————————————回答好下面的足夠了---------------------------------...
    恒愛DE問候閱讀 1,846評論 0 4
  • 異鄉(xiāng)弦月沁薄涼,獨(dú)倚樓一聲長嘆。 寂寞城池鎖繁華,昨夜夢回探雙親。 悵然,悵然,眉鎖情系意難收。 ——題記 也是在...
    十年扶疏閱讀 260評論 0 1

友情鏈接更多精彩內(nèi)容