位元組一面-分享(增加部分答案)

MSunFlower1014發表於2021-04-29

HTTP

http請求狀態碼:201、403、301、302?

101 - 切換協議,如升級為websocker連線
201 - 已建立,成功請求並建立了新的資源
202 - 已接受,但未處理完成
301 - 永久移動,請求的資源已被永久移動到新URI,返回資訊包含新URI,瀏覽器會自動重定向到新URI
302 - 暫時移動,請求的資源臨時被移動,客戶端應該繼續使用原URI
403 - 伺服器拒絕該請求
401 - 無許可權
408 - 請求超時
502 - 無效響應
503 - 系統超載,無法處理
504 - 閘道器超時
505 - http協議版本不支援
| 1** | 資訊,伺服器收到請求,需要請求者繼續執行操作 |
| 2** | 成功,操作被成功接收並處理 |
| 3** | 重定向,需要進一步的操作以完成請求 |
| 4** | 客戶端錯誤,請求包含語法錯誤或無法完成請求 |
| 5** | 伺服器錯誤,伺服器在處理請求的過程中發生了錯誤 |
來自 <<https://www.runoob.com/http/http-status-codes.html>>*

post和put得區別?

PUT POST
冪等 非冪等
多次請求,結果不變 多次請求,結果不同
更新指定資源 建立指定資源
由客戶端決定資源URI 由伺服器決定資源URI
響應結果為新資料具體資訊 返回抽象結果,如需校驗需要透過get重新獲取

參考連線:www.guru99.com/put-vs-post.html#:~....

keep-alive得作用?

Keep-Alive 是一個通用訊息頭,允許訊息傳送者暗示連線的狀態,還可以用來設定超時時長和最大請求數。
引數:
• timeout:指定了一個空閒連線需要保持開啟狀態的最小時長(以秒為單位)。需要注意的是,如果沒有在傳輸層設定 keep-alive TCP message 的話,大於 TCP 層面的超時設定會被忽略。
• max:在連線關閉之前,在此連線可以傳送的請求的最大值。在非管道連線中,除了 0 以外,這個值是被忽略的,因為需要在緊跟著的響應中傳送新一次的請求。HTTP 管道連線則可以用它來限制管道的使用。
來自 <https://note.wyzda.com/cf92d3941eec1edf5be4f9c12aeccfa8> 

cookie作用域?

(1)Name/Value:設定Cookie的名稱及相對應的值,對於認證Cookie,Value值包括Web伺服器所提供的訪問令牌.
(2)Expires屬性:設定Cookie的生存期。有兩種儲存型別的Cookie:會話性與永續性。Expires屬性預設時,為會話性Cookie,僅儲存在客戶端記憶體中,並在使用者關閉瀏覽器時失效;永續性Cookie會儲存在使用者的硬碟中,直至生存期到或使用者直接在網頁中單擊“登出”等按鈕結束會話時才會失效.
(3)Path屬性:定義了Web站點上可以訪問該Cookie的目錄.
(4)Domain屬性:指定了可以訪問該 Cookie 的 Web 站點或域。Cookie 機制並未遵循嚴格的同源策略,允許一個子域可以設定或獲取其父域的 Cookie。當需要實現單點登入方案時,Cookie 的上述特性非常有用,然而也增加了 Cookie受攻擊的危險,比如攻擊者可以藉此發動會話定置攻擊。因而,瀏覽器禁止在 Domain 屬性中設定.org、.com 等通用頂級域名、以及在國家及地區頂級域下注冊的二級域名,以減小攻擊發生的範圍.
(5)Secure屬性:指定是否使用HTTPS安全協議傳送Cookie。使用HTTPS安全協議,可以保護Cookie在瀏覽器和Web伺服器間的傳輸過程中不被竊取和篡改。該方法也可用於Web站點的身份鑑別,即在HTTPS的連線建立階段,瀏覽器會檢查Web網站的SSL證照的有效性。但是基於相容性的原因(比如有些網站使用自簽署的證照)在檢測到SSL證照無效時,瀏覽器並不會立即終止使用者的連線請求,而是顯示安全風險資訊,使用者仍可以選擇繼續訪問該站點。由於許多使用者缺乏安全意識,因而仍可能連線到Pharming攻擊所偽造的網站.
(6)HTTPOnly 屬性 :用於防止客戶端指令碼透過document.cookie屬性訪問Cookie,有助於保護Cookie不被跨站指令碼攻擊竊取或篡改。但是,HTTPOnly的應用仍存在侷限性,一些瀏覽器可以阻止客戶端指令碼對Cookie的讀操作,但允許寫操作;此外大多數瀏覽器仍允許透過XMLHTTP物件讀取HTTP響應中的Set-Cookie頭.
來自 <https://baike.baidu.com/item/cookie/1119?fr=aladdin> 

cookie和session的作用和區別?

Session是在服務端儲存的一個資料結構,用來跟蹤使用者的狀態,這個資料可以儲存在叢集、資料庫、檔案中;
Cookie是客戶端儲存使用者資訊的一種機制,用來記錄使用者的一些資訊,也是實現Session的一種方式。
來自 <https://www.zhihu.com/question/19786827> 

分散式session?

1.粘性session共享機制:
session儲存在伺服器中,透過redis或者memcached備份,如果伺服器掛掉,透過session id從備份中獲取
2.非粘性session共享
伺服器本身不儲存session,讀寫都透過redis或者memcached進行
https://www.cnblogs.com/daofaziran/p/10933221.html
3.客戶端cookie儲存session資料(不安全,容量小)
4.JWT實現
包含三部分 - 標頭.有效何在.簽名
https://zhuanlan.zhihu.com/p/86937325

http長連線如何確認資料接受完畢?

content-length確定報文長度

資料庫相關

索引為什麼使用B+樹?

1.降低樹的高度,減少讀盤次數
2.葉子節點儲存資料透過雙向連結串列關聯方便範圍查詢
3.減少中間節點大小,記憶體頁可獲取更多索引資訊
4.樹處理排序更有利

建立索引的規則和考慮?

優先建立在外連線、where、order欄位上
選擇選擇性高的欄位
優先選擇小欄位,數字高於字串,比較時消耗更小
不要建立太多索引
索引列不要有null

聯合索引?

最左原則
當只獲取聯合索引資訊可不回表

explain的欄位意義?

id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra
概要描述:
id:選擇識別符號
select_type:表示查詢的型別。
table:輸出結果集的表
partitions:匹配的分割槽
type:表示表的連線型別
possible_keys:表示查詢時,可能使用的索引
key:表示實際使用的索引(這個側重問了)
key_len:索引欄位的長度
ref:列與索引的比較
rows:掃描出的行數(估算的行數)
filtered:按表條件過濾的行百分比(這個側重問了)
Extra:執行情況的描述和說明
來自 <https://www.cnblogs.com/tufujie/p/9413852.html> 

資料庫ACID?

1、原子性(Atomicity):事務開始後所有操作,要麼全部做完,要麼全部不做,不可能停滯在中間環節。事務執行過程中出錯,會回滾到事務開始前的狀態,所有的操作就像沒有發生一樣。也就是說事務是一個不可分割的整體,就像化學中學過的原子,是物質構成的基本單位。
 2、一致性(Consistency):事務開始前和結束後,資料庫的完整性約束沒有被破壞 。比如AB轉賬,不可能A扣了錢,B卻沒收到。
3、隔離性(Isolation):同一時間,只允許一個事務請求同一資料,不同的事務之間彼此沒有任何干擾。比如A正在從一張銀行卡中取錢,在A取錢的過程結束前,B不能向這張卡轉賬。
4、永續性(Durability):事務完成後,事務對資料庫的所有更新將被儲存到資料庫,不能回滾。

隔離級別?
MySQL事務隔離級別

事務隔離級別 是否會產生髒讀 是否會產生不可重複讀 是否會產生幻讀
讀未提交(read-uncommitted)
不可重複讀(read-committed)
可重複讀(repeatable-read)
序列化(serializable)

可重複讀實現原理?

透過資料多版本控制實現,根據隔離級別獲取對應版本資料
https://www.cnblogs.com/lmj612/p/10598971.html

redis

redis基本型別?

String,List,Set,Hash,SortSet

sortSetes實現方式

數量小於512且為數字時為有序陣列
其他情況為跳錶

TCP

tcp和udp的區別?

1TCP面向連線(如打電話要先撥號建立連線);UDP是無連線的,即傳送資料之前不需要建立連線
2TCP提供可靠的服務。也就是說,透過TCP連線傳送的資料,無差錯,不丟失,不重複,且按序到達;UDP盡最大努力交付,即不保證可靠交付
3TCP面向位元組流,實際上是TCP把資料看成一連串無結構的位元組流;UDP是面向報文的
UDP沒有擁塞控制,因此網路出現擁塞不會使源主機的傳送速率降低(對實時應用很有用,如IP電話,實時視訊會議等)
4、每一條TCP連線只能是點到點的;UDP支援一對一,一對多,多對一和多對多的互動通訊
5TCP首部開銷20位元組;UDP的首部開銷小,只有8個位元組
6TCP的邏輯通訊通道是全雙工的可靠通道,UDP則是不可靠通道
來自 <https://www.cnblogs.com/williamjie/p/9390164.html> 

tcp如何確保訊息送達?

1.校驗和
2.請求序號和ack
3.超時重傳

堵塞避免?

1.慢啟動 - 初始傳送cwnd為1,收到ack則加cwnd++,過一個rtt,則cwnd = cwnd*2,到達sshthresh,進入擁塞避免
2.擁塞避免 - 收到一個ack,則cwnd=cwnd+1/cwnd,每過一個rtt,則cwnd++
3.快重傳 - ack超時時,cwnd = cwnd /2,sshthresh = cwnd,進入快恢復
4.快速恢復 - cwnd = sshthresh + 3 * MSS3的意思是確認有3個資料包被收到了)
如果再收到 duplicated Acks,那麼cwnd = cwnd +1
如果收到了新的Ack,那麼,cwnd = sshthresh ,進入擁塞避免
https://www.jianshu.com/p/42dbcd39c3e7

演算法

單向連結串列k組反轉?

https://leetcode-cn.com/problems/reverse-nodes-in-k-group/

golang

gc原理?

三色標記法

gorounite使用完是否會銷燬,銷燬流程?

堆疊小於2k的gorounite會重用,大於2k的銷燬
https://medium.com/a-journey-with-go/go-how-does-go-recycle-goroutines-f047a79ab352

還是需要加強基礎學習,加油!

2021-04-30-增加了大致答案,如有問題還請指教。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章