百度貼吧測試部門實習生電話面試

2021-05-26 05:01:35 字數 2965 閱讀 6517

1.記憶體如何分配?

答:  記憶體分配方式有三種:

(1)從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。例如全域性變數,static變數。

(2)在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內置於處理器的指令集中,效率很高,但是分配的記憶體容量有限。

(3)從堆上分配,亦稱動態記憶體分配。程式在執行的時候用malloc或new申請任意多少的記憶體,程式設計師自己負責在何時用free或delete釋放記憶體。動態記憶體的生存期由我們決定,使用非常靈活,但問題也最多。

參考:2.tcp/ip三次握手過程?第三次握手失敗會如何?

答: 在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狀態,完成三次握手。

完成三次握手,客戶端與伺服器開始傳送資料,在上述過程中,還有一些重要的概念:

未連線佇列:在三次握手協議中,伺服器維護乙個未連線佇列,該隊列為每個客戶端的syn包(syn=j)開設乙個條目,該條目表明伺服器已收到syn包,並向客戶發出確認,正在等待客戶的確認包。這些條目所標識的連線在伺服器處於syn_recv狀態,當伺服器收到客戶的確認包時,刪除該條目,伺服器進入established狀態。

backlog引數:表示未連線佇列的最大容納數目。

syn-ack 重傳次數:伺服器傳送完syn-ack包,如果未收到客戶確認包,伺服器進行首次重傳,等待一段時間仍未收到客戶確認包,進行第二次重傳,如果重傳次數超過系統規定的最大重傳次數,系統將該連線資訊從半連線佇列中刪除。注意,每次重傳等待的時間不一定相同。

3演算法:單鏈表中查詢倒數第

n個元素,如何測試?

通過一次遍歷找到單鏈表中倒數第

n個節點,鍊錶可能相當大,可使用輔助空間,但是輔助空間的數目必須固定,不能和

n有關。

單向鍊錶的特點是遍歷到末尾後不能反向重數

n個節點。因此必須在到達尾部的同時找到倒數第

n個節點。

不管是順數

n個還是倒數

n個,其實都是距離

-標尺問題。標尺是一段距離可以用線段的兩個端點來衡量,我們能夠判斷倒數第乙個節點,因為他的

next==null

。如果我們用兩個指標,並保持他們的距離為

n,那麼當這個線段的右端指向末尾節點時,左端節點就指向倒數第

n個節點。

測試考慮:結點個數是否大於n;鍊錶為空的情況;……(可補充)

01inode * getlastnnode(inode * head, int n) 02

15if(n != counter) //

長度不夠

n,未找到倒數第

n個節點

16return null;

18//第2

步:保持距離讓標尺向右移動,直到右端指向末尾,左端即結果

19while(pfirst!=null)  20

24return psecond;

25}

28inode * getlastnnode ( inode *head, int n) 29

37if(pfirst!= null)// 有n

個節點38

psecond = head;

40while(pfirst!=null) 41

45return psecond; //

只有乙個出口,無論是否有

n個節點,都能返回正確值46}

附加1:

一次遍歷單向鍊錶找到中間節點

和上面的思路類似,設定

2個指標,乙個走

2步時,另乙個走

1步。那麼乙個走到頭時,另乙個走到中間。

01inode * getmiddlenode ( inode *head ) 02

13}

14return p1; 15}

附加2:找到第2/3個結點

我們用兩個指標,乙個指標每次向後移動2個,乙個指標每次向後移動3個。

4.如何測試登陸框:

快捷鍵的使用是否正常:

tab 鍵的使用是否正確;上下左右鍵是否正確;介面如果支援 esc鍵 看是否正常的工作;enter 鍵的使用是否正確切換時是否正常。

布局美感:

介面的布局是否符合人的審美的標準,具體因人而依

輸入框的功能:

輸入合法的使用者名稱和密碼可以成功進入

輸入合法的使用者名稱和不合法密碼不可以進入,並給出合理的提示

輸入不合法的使用者名稱和正確密碼不可以進入,並給出合理的提示

輸入不合法的使用者名稱和不正確的密碼不可以進入,並給出合理的提示

不合法的使用者名稱有:不正確的使用者名稱;使用了字元大於使用者名稱的限制;

正常使用者名稱不允許的特殊字元、空的使用者名稱,系統(作業系統和應用系統)的保留字元

不合法的密碼有:空密碼(除有特殊規定的),錯誤的密碼,字元大於密碼的限制

正常密碼不允許的特殊字元,系統(作業系統和應用系統)的保留字元

補充:輸入框是否支援 複製和黏貼 和移動

密碼框顯示的不要是具體的字元,要是一些密碼的字元

驗證使用者名稱前有空格是否可以進入,一般情況可以。

驗證使用者名稱是否區分大小寫。(有的軟體是區分大小寫的)

驗證必填項為空,是否允許進入。

驗證登入的次數是否有限制。從安全角度考慮,有些安全級別高的軟體會考慮這方面的限制。

再補充:

同一使用者名稱在不同地點登陸是否出現問題;

登陸有效時間(session值);

百度暑期實習生筆試

2011.暑期筆試題 0507 1.簡答題 1 extern c 的含義,用途?c 引用c檔案 相容 2 寫出至少兩種設計模式,並偽 表示其應用場景 factory,abstract factory,adapter,observer 3 tcp time wait 的用途?優缺點?2.程式設計題 1...

2012百度實習生招聘面試題

一面 第一題 任意給乙個數,試證明這個數的某個倍數的十進位制表示是01串,比如3的倍數111是二進位制表示,5的倍數10是二進位制表示,等等。假設序列1,11,111,1111 用a1 an標識,下腳標n即為1的個數,如 a1 1,a2 11,a3 111 其中沒有乙個是n的倍數,即ak mod n...

2012百度實習生招聘面試題

一面 第一題 任意給乙個數,試證明這個數的某個倍數的十進位制表示是01串,比如3的倍數111是二進位制表示,5的倍數10是二進位制表示,等等。假設序列1,11,111,1111 用a1 an標識,下腳標n即為1的個數,如 a1 1,a2 11,a3 111 其中沒有乙個是n的倍數,即ak mod n...