天天看點

大廠測試開發面試題總結

1.什麼是死鎖,如何避免死鎖?

死鎖是指兩個或兩個以上的程序在執行過程中,由于競争資源或者由于彼此通信而造成的一種阻塞現象。

産生死鎖的原因:(1)系統資源不足(2)程序運作推進的順序不合适(3)資源配置設定不當

避免方法:對資源配置設定要給予合理規劃

2.程序和線程的概念

程序:具有一定獨立功能的程式關于某個資料集合上的一次運作活動,程序是系統進行資源配置設定和排程的一個獨立單元

線程:程序的一個實體,是CPU排程和分派的基本機關,它是比程序更小的能獨立運作的基本機關。

一個程式至少有一個程序,一個程序至少一個線程

補充:

程序實際上表示的就是計算機正在進行的一個任務,比如,打開一個浏覽器便是啟動一個浏覽器程序,打開一個記事本便是啟動一個記事本程序。但是,一個程序未必隻能進行一件事情,比如一個Word程序,在打字的同時還會有拼寫檢查,這些在程序内部同時進行多個”子任務“,就稱為線程。

程序和線程的主要差别在于他們是不同的作業系統資源管理方式。程序有獨立的位址空間,一個程序崩潰後,在保護模式下不會對其他程序産生影響,而線程隻是一個程序中的不同執行路徑。線程有自己的堆棧和局部變量,但線程之間沒有單獨的位址空間,一個線程死掉就等于整個程序死掉,是以多程序的程式要比多線程的程式健壯,但在程序切換時,耗費資源較大,效率要差一些。但對于一些要求同時進行并且又要共享某些變量的并發操作,隻能用線程,不能用程序。

3.TCP,UDP的差別

(1)TCP是面向連接配接的(如打電話先撥号建立連接配接),應用代表如郵件傳輸;UDP是無連接配接的,即發送資料之前不需要建立連接配接(如實時通信)

(2)TCP提供可靠的服務,也就是說,通過TCP連接配接傳送的資料無差錯,不丢失,不重複;UDP盡最大努力傳遞,即不保證可靠支付

(3)TCP面向位元組流;UDP是面向封包的

(4)TCP首部開銷大,UDP首部開銷小

(5)UDP傳輸資料更快

(6)TCP保證資料正确性及順序;UDP可能會丢包,不保證順序

4.Get和Post方法差別

(1)Get方法是從指定資源請求資料,請求參數在URL中;Post方法是向指定資源送出要被處理的資料,請求參數封裝在HTTP請求資料中

(2)Get方法保留在浏覽器曆史記錄中,Post不會保留在浏覽器曆史記錄中

(3)Get請求有長度限制,Post請求對資料長度沒有要求

(4)Post請求不能被收藏為書簽,Get可以被收藏為書簽

5.Cookie和session的差別

(1)cookie資料存放在客戶的浏覽器上,session資料放在伺服器上

(2)cookie不是很安全

(3)session會在一定時間内儲存在伺服器上,當通路增多,會比較占用伺服器的性能,考慮減輕伺服器性能方法,應當使用cookie

(4)單個cookie儲存的資料不能超過4K,浏覽器對Cookie存放大小有限制

6.TCP三向交握,四次揮手原理

TCP/IP協定中,TCP協定提供可靠的連接配接服務,采用三次握手建立一個連接配接

(1)第一次握手:建立連接配接時,用戶端A發送SYN包(SYN=j)到伺服器B,并進入SYN_SEND狀态,等待伺服器B确認

(2)第二次握手:伺服器B收到SYN包,必須确認用戶端A的SYN包(ACK=j+1),同時自己也發送一個SYN包(SYN=k),即SYN+ACK包,此時伺服器B進入SYN_RECV狀态。

(3)第三次握手:用戶端A收到伺服器B的SYN+ACK包,向伺服器B發送确認包ACK(ACK=k+1),此包發送完畢,用戶端A和伺服器B進入ESTABLISHED狀态,完成三次握手。

三次握手完成後,用戶端與伺服器開始傳送資料。

由于TCP連接配接是全雙工的,是以每一個方向都必須單獨進行關閉,TCP協定采用四次揮手關閉連接配接:

(1)客服端A發送一個FIN,用來關閉用戶端A到伺服器B的資料傳送。

(2)伺服器B收到這個FIN,它發回一個ACK,确認序号為收到的序号加1,和SYN一樣,一個FIN将占用一個序号

(3)伺服器B關閉與用戶端A的連接配接,發送一個FIN給用戶端A。

(4)用戶端A發回ACK封包确認,并将确認序号設定為收到序号加1。

轉載于:https://www.cnblogs.com/graybird/p/10749225.html

繼續閱讀