2015百度校園招聘軟件研發類筆試題(筆試時間:2014-9-14,西安、哈爾濱、大連站)

一,tcp-ip三次握手四次揮手

答:第一次握手:建立連接時,客戶端發送syn包(syn=j)到服務器,並進入SYN_SEND狀態,等待服務器確認;

第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;

第三次握手:客戶端接收到服務器的SNY+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。

四次揮手:

主動方發送Fin+Ack報文,並置發送序號爲X

被動方發送ACK報文,並置發送序號爲Z,在確認序號爲X+1

被動方發送Fin+ACK報文,並置發送序號爲Y,在確認序號爲X。

主動方發送ACK報文,並置發送序號爲X,在確認序號爲Y。

 

在關閉連接時,當服務器端收到Fin報文時,很可能並不會立即關閉socket,所以只能先回復一個ack報文,告訴client端,“你發的fin報文我收到了”。只有等到server端的所有報文都發送完了,才發送fin報文,因此不能fin和ack一起發送,所以需要四次揮手。

 

爲什麼會有Time_Wait狀態,且需要經過2MSL才返回到ClOSE狀態?

答案:因爲網絡原因,主動關閉的一方發送的ACK包可能延遲,從而觸發被動連接一方重傳FIN包。在極端的情況下,這一去一回,就是2倍的MSL時長。如果主動關閉的一方跳過TIME_WAIT直接進入CLOSED,或者在TIME_WAIT停留的時長不足兩倍的MSL,那麼當被動關閉的一方早先發出的延遲包到達後,就可能出現類似下面的問題:

1.       舊的TCP連接已經不存在了,系統此時只能返回RST包。

2.       新的TCP連接建立起來了,延遲包可能干擾新的連接。

 

TCP的三次握手可以明確連接請求的有效性,防止已過期的連接再次傳到被連接的主機。

http://www.cppentry.com/bencandy.php?fid-56-id-2686-page-1.htm

 

二,操作系統的內存管理淘汰算法有哪些?

FIFO先進先出算法:這個算法總是選擇在內存駐留時間最長的一頁將其淘汰。

LRU 最近最少使用算法:當需要淘汰某頁,選擇離當前最近的一段時間內最近沒有使用的頁先淘汰。

OPT 最佳淘汰算法:這個算法淘汰在訪問串中將來最不常用的頁。

LFU 最少訪問頁面算法:這個算法首先淘汰到當前爲止,被訪問次數最少的那一頁。

NUR 最近最不經常使用算法:這個算法從那些最近一個時期內未被訪問的頁中任選一頁淘汰。

http://cache.baiducontent.com/c?m=9d78d513d9d430a94f9be7697d10c0111d4381132ba7db0209a5843991732c37506793ac56530772d5d20d1616dc3f4beb802103471457b68cb88d5daeb1866f6fd6286e365ac45613a004b28e0360d620e700baf24cbae6a56ad4b9d2a4830315d700453c9df38f510b17cb6d&p=806dc64ad48602e402bd9b7b0a4e&newp=8e3fc64ad4934eaa5fb78e65544d92695803ed6338d2d0&user=baidu&fm=sc&query=%C4%DA%B4%E6%B9%DC%C0%ED%CC%D4%CC%AD%CB%E3%B7%A8&qid=93c29121000043bf&p1=1

 

三,數據庫設計時通常需要遵守哪些範式,請列出並說明?

第一範式1NF,確保每一列不可再分,即原子性。

例如,顧客表(姓名,編號,地址),其中“地址”列還可以細分爲國家,省等.

第二範式2NF,確保每一列都需要和和主鍵相關,且是完全依賴。

例如,訂單表(訂單編號,產品編號,訂購日期,價格,….),“訂單編號“爲主鍵,產品編號和主鍵列沒有直接的關係,即“產品編號”列不依賴於主鍵列,應刪除該列。

第三範式3NF,區別每一列與主鍵直接相關而不是間接相關,不存在傳遞依賴。

例如,假設A,B和C的關係R的三個屬性,如果A->B且B->C,則這些依賴函數中可以得出A->C。

 

第二部分,算法與程序設計題

1.      尋找一個單向鏈表的中項(中間項),如果存在兩個則返回前一個。請給出算法描述和代碼。

(1)快慢指針

2.      在由N個正整數的集合S中,找出最大元素C,滿足C=A+B,其中A,B都是集合S中的元素,請給出算法和描述。

(2)先對數組哈希,然後再查找

 

3.      使用堆棧來模擬隊列的功能,要求數據必須存儲在堆棧內部。需要完成入隊,出隊,判空三個功能。給出單元測試。

(3)兩個棧模擬隊列

 

第三部分,系統設計題目

 

 

 

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