【刷遊戲開發面經記錄】2
TCP中的擁塞控制
在TCP傳輸過程中,傳送端開始傳送資料的時候,如果剛開始大量傳送資料,那麼可能造成一些問題,網路可能在開始的時候非常的擁堵,如果給網路中再次加入大量的資料,那麼這個擁堵就會加劇。
擁堵加劇會產生大量的丟包,就會產生大量的超時重傳,嚴重影響傳輸速率
所以TCP引入了慢啟動機制,在開始傳送資料的時候,先傳送少量的資料探路,探清當前的網路狀態如何
在決定使用多大的速度進行傳輸
**擁塞視窗:**傳送剛開始定義擁塞視窗為1,每次收到ACK應答 擁塞視窗加一
在傳送資料之前,首先將擁塞視窗和接收端返回的視窗大小進行比對,取最小值作為實際傳送的視窗
擁塞視窗的增長是指數級別的,慢啟動機制只是說明在開始的時候傳送的少,傳送的慢,但是增長的速度是很快的,
為控制擁塞視窗的增長,不能單純的是擁塞視窗加倍
設定一個擁塞視窗閾值,當擁塞視窗超過閾值以後,不再按照指數來增長,而是線性的增長
在慢啟動開始的時候,如果慢啟動的閾值等於視窗的最大值,一旦發生網路阻塞,發生超時重傳
慢啟動的閾值會降低為原來的一半,同時擁塞視窗設定為1
擁塞控制是TCP在傳輸的儘可能的將資料傳輸,並且避免擁塞的一系列問題,是可靠性的保證同時也維護了傳輸的高效型
C++編譯過程中的動態連結和靜態連結有什麼區別?動態連結的流程是怎樣的
動態連結和靜態連結最大的區別就在於連結的時機不同
動態連結的進行在程式執行時連結,靜態連結在形成可執行程式之前的連結
流程
預處理->編譯->彙編->連結
預處理 編譯器把c程式的標頭檔案編譯進來,還有巨集的替換
編譯 這個階段主要做詞法分析,語法分析,語義分析,在檢查無錯誤之後,把程式碼翻譯成為組合語言
彙編 組合語言變成機器語言
連結 將編譯階段生成的檔案連結為一個整體的檔案
TCP和UDP的不同點
1.TCP提供面相連結的傳輸,通訊之前建立連線(三次握手);UDP提供無連線的傳輸,通訊之前不需要連線
2.TCP提供可靠的傳輸(有序,無差錯,不丟失,不重複);UDP提供不可靠的傳輸
3.TCP面相位元組流的傳輸,每次傳輸之前,先把資訊分割成組,到達接收端在將其充足,UDP面相資料的傳輸,沒有分組和充足
4.TCP提供擁塞控制和流量控制機制,UDP不提供擁塞控制和流量控制機制
用UDP如何保證資料的完整性
外加校驗碼來保證正確性,加順序碼保證完整性,相當於把TCP保證完整性和可靠性的東西自己去完成,不需要做的太複雜
值型別和引用型別的區別
1.管理機制: 值型別是作業系統負責管理,作用於結束只有作業系統會自動釋放,引用型別是垃圾回收器負責管理
2.記憶體分配: 值型別:被分配到變數宣告的地方,區域性變數分配到棧上
引用型別分配到託管堆上,變數 儲存在棧中
3.賦值方式 值型別:賦值變數包含的值,引用型別:賦值物件引用的地址
4.基類值型別:繼承System.ValueType;System.ValueType又繼承自System.Object
引用型別:繼承自System.Object
結構體和類的區別
1.語法定義的區別一個是class 一個是struct
2.宣告欄位是否可以設定初值 結構體中欄位不可設定初值 類中欄位可以設定初值
3.建構函式要求 結構體的建構函式中要求所有欄位賦值,類的建構函式中無限制
4.所佔空間 結構體是值型別在棧中分配空間,類是引用型別,在堆上分配空間
5.處理方式 struct變數使用完成之後會自動解除記憶體分配,class例項有垃圾回收機制保證記憶體回收處理
C#中的GC
GC就是記憶體的垃圾收集器,以應用程式root為基礎,遍歷應用程式在Heap上動態分配的所有物件,通過辨識他們是否被引用來確定哪些物件是死亡的,哪些是仍需要被使用的,已經不再被應用程式的root或者是別的物件所引用的就是已經死亡的物件,即所謂垃圾
優點:
1.提高了軟體開發的抽象度
2.程式設計師可以將精力集中在實際問題上,而不是專門分心來管理記憶體的問題
3.可以使模組的介面更加清晰,減少模組之間的耦合
4.大大減少了因為認為不當的處理而帶來的bug
5.是記憶體更加的使用高效
總體來說就是GC把程式設計師從複雜的記憶體問題中解放了出來,從而提高了軟體的開發速度,質量和安全性
以上即是最近我刷面經遇到的高頻問題,我都總結下來
希望對大家有所幫助
相關文章
- 面試刷題偶有記錄面試
- LeetCode刷題記錄——day2LeetCode
- 2024年2月刷題記錄
- 面試記錄2面試
- 2面準備記錄
- 刷題記錄
- 記錄一次騰訊Go開發崗位面試經過Go面試
- Vue開發庫存管理前端頁面時一些小經驗記錄Vue前端
- LeetCode刷題記錄LeetCode
- 刷題記錄11
- 記錄刷題日常
- Codeforces 刷題記錄
- BUU刷題記錄
- CTF刷題記錄
- 刷題記錄24
- 刷題記錄27
- 微信小遊戲開發(2)遊戲開發
- 7月18日刷題記錄 二分答案跳石頭遊戲Getting遊戲
- 網易互娛 遊戲研發 暑期實習面試面經遊戲面試
- [雜項] 刷題記錄
- leetcode刷題記錄 661~LeetCode
- 開發記錄
- 微信小遊戲開發小記遊戲開發
- Fabric 2.x 智慧合約開發記錄
- koa2+vue+mysql 全棧開發記錄VueMySql全棧
- 記錄一次測開面試題記錄面試題
- 劍指offer刷題記錄
- 軟考刷題記錄3
- 軟考刷題記錄5
- 《五行》從0到1設計遊戲——策劃向開發記錄遊戲
- 【譯】闖入遊戲開發 #2:遊戲開發的常見陷阱(以及如何避免它們)遊戲開發
- 遊戲開發者依然能從這7款經典街機遊戲中汲取經驗遊戲開發
- 安卓開發筆記——數獨遊戲安卓筆記遊戲
- cf刷題雜記(2)
- 刷前端面經筆記(十)前端筆記
- 刷前端面經筆記(八)前端筆記
- 刷前端面經筆記(二)前端筆記
- 刷前端面經筆記(三)前端筆記