1. 程式人生 > 其它 >鎖屏面試題百日百刷-http必問

鎖屏面試題百日百刷-http必問

鎖屏面試題百日百刷,每個工作日堅持更新面試題。鎖屏面試題app、小程式現已上線,官網地址:https://www.demosoftware.cc/#/introductionPage。已收錄了每日更新的面試題的所有內容,還包含特色的解鎖螢幕複習面試題、每日程式設計題目郵件推送等功能。讓你在面試中先人一步,吊打面試官!接下來的是今日的面試題:

====什麼是http協議?

http(Hyper Text Transfer Protocol)協議是對客戶端和伺服器端之間資料之間實現可靠性的傳輸文字、圖片、音訊、視訊等超文字資料的規範,格式簡稱為“超文字傳輸協議”

http協議屬於應用層。

====http請求的請求報文和響應報文的格式?(重點)

1)http請求報文:一個HTTP請求報文由請求行(request line)、請求頭部(header)、空行和請求資料4個部分組成

①請求行:請求行由請求方法欄位、URL欄位和HTTP協議版本欄位3個欄位組成,它們用空格分隔。例如,GET /index.html HTTP/1.1。

②請求頭部:請求頭部由關鍵字/值對組成,每行一對,關鍵字和值用英文冒號“:”分隔。請求頭部通知伺服器有關於客戶端請求的資訊,典型的請求頭有:

User-Agent:產生請求的瀏覽器型別。

Accept:客戶端可識別的內容型別列表。

Host:請求的主機名,允許多個域名同處一個IP地址,即虛擬主機

③空行:最後一個請求頭之後是一個空行,傳送回車符和換行符,通知伺服器以下不再有請求頭。

④請求資料:請求資料不在GET方法中使用,而是在POST方法中使用。POST方法適用於需要客戶填寫表單的場合。與請求資料相關的最常使用的請求頭是Content-Type和Content-Length

2)http響應報文:HTTP響應由三個部分組成,分別是:狀態行、訊息報頭、響應正文。

①狀態行:由協議型別及版本號、狀態碼、狀態碼的文字描述組成它們之間用空格分隔,如:HTTP/1.1 200 OK

②訊息報頭:與請求頭部格式一致

③響應正文:響應返回的主要資訊內容

====http和https的區別?

其實HTTPS就是從HTTP加上加密處理(一般是SSL安全通訊線路)+認證+完整性保護

區別:

1. https需要拿到ca證書

2. 埠不一樣,http是80,https443

3. http是超文字傳輸協議,資訊是明文傳輸,https則是具有安全性的ssl加密傳輸協議。

4. http和https使用的是完全不同的連線方式(http的連線很簡單,是無狀態的;HTTPS 協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網路協議,比http協議安全。)

====HTTPS工作原理?

一、首先HTTP請求服務端生成證書,客戶端對證書的有效期、合法性、域名是否與請求的域名一致、證書的公鑰(RSA加密)等進行校驗;

二、客戶端如果校驗通過後,就根據證書的公鑰的有效, 生成隨機數,隨機數使用公鑰進行加密(RSA加密);

三、訊息體產生的後,對它的摘要進行MD5(或者SHA1)演算法加密,此時就得到了RSA簽名;

四、傳送給服務端,此時只有服務端(RSA私鑰)能解密。

五、解密得到的隨機數,再用AES加密,作為金鑰(此時的金鑰只有客戶端和服務端知道)。

====一次完整的HTTP請求所經歷幾個步驟?

1. 建立TCP連線

怎麼建立連線的,看上面的三次捂手

2. Web瀏覽器向Web伺服器傳送請求行

一旦建立了TCP連線,Web瀏覽器就會向Web伺服器傳送請求命令。例如:GET /sample/hello.jspHTTP/1.1

3. Web瀏覽器傳送請求頭

瀏覽器傳送其請求命令之後,還要以頭資訊的形式向Web伺服器傳送一些別的資訊,之後瀏覽器傳送了一空白行來通知伺服器,它已經結束了該頭資訊的傳送。

4. Web伺服器應答

客戶機向伺服器發出請求後,伺服器會客戶機回送應答, HTTP/1.1 200 OK ,應答的第一部分是協議的版本號和應答狀態碼。

5. Web伺服器傳送應答頭

正如客戶端會隨同請求傳送關於自身的資訊一樣,伺服器也會隨同應答向用戶傳送關於它自己的資料及被請求的文件。

6. Web伺服器向瀏覽器傳送資料

Web伺服器向瀏覽器傳送頭資訊後,它會發送一個空白行來表示頭資訊的傳送到此為結束,接著,它就以Content-Type應答頭資訊所描述的格式傳送使用者所請求的實際資料。

  1. Web伺服器關閉TCP連線

====常用HTTP狀態碼是怎麼分類的,有哪些常見的狀態碼?(重點)

類別:

1xx: 指示資訊表示請求已接收,正在處理

2xx: 成功表示請求已被成功接收、理解、接受

3xx: 重定向要完成請求必須進行更進一步的操作

4xx: 客戶端錯誤請求有語法錯誤或請求無法實現

5xx: 伺服器端錯誤伺服器未能實現合法的請求

常見狀態碼:

200: 請求被正常處理

204: 請求被受理但沒有資源可以返回

206客戶端只是請求資源的一部分,伺服器只對請求的部分資源執行GET方法,相應

報文中通過Content-Range指定範圍的資源。

301: 永久性重定向

302: 臨時重定向

303: 與302狀態碼有相似功能,只是它希望客戶端在請求一個URI的時候,能通過GET

方法重定向到另一個URI

304: 傳送附帶條件的請求時,條件不滿足時返回,與重定向無關

307: 臨時重定向,與302類似,只是強制要求使用POST方法

400: 請求報文語法有誤,伺服器無法識別

401: 請求需要認證

403: 請求的對應資源禁止被訪問

404: 伺服器無法找到對應資源

500: 伺服器內部錯誤

503: 伺服器正忙

====Http協議中有那些請求方式?

GET:用於請求訪問已經被URI(統一資源識別符號)識別的資源,可以通過URL

參給伺服器

POST:用於傳輸資訊給伺服器,主要功能與GET方法類似,但一般推薦使用POST

方式。

PUT: 傳輸檔案,報文主體中包含檔案內容,儲存到對應URI位置。

HEAD:獲得報文首部,與GET方法類似,只是不返回報文主體,一般用於驗證URI

是否有效。

PATCH: 客戶端向伺服器傳送的資料取代指定的文件的內容(部分取代)

TRACE: 回顯客戶端請求伺服器的原始請求報文,用於"迴環"診斷

DELETE: 刪除檔案,與PUT方法相反,刪除對應URI位置的檔案。

OPTIONS: 查詢相應URI支援的HTTP方法。

====GET方法與POST方法的區別?

區別一: get重點在從伺服器上獲取資源,post重點在向伺服器傳送資料;

區別二: Get傳輸的資料量小,因為受URL長度限制,但效率較高; Post可以傳輸大量資料,所以上傳檔案時只能用Post方式;

區別三: get是不安全的,因為get請求傳送資料是在URL上,是可見的,可能會洩露私密資訊,如密碼等; post是放在請求資料中的,是安全的

====http版本的對比?

HTTP1.0版本的特性:

==早先1.0HTTP版本,是一種無狀態、無連線的應用層協議。

==HTTP1.0規定瀏覽器和伺服器保持短暫的連線,瀏覽器的每次請求都需要與伺服器建立一個TCP連線,伺服器處理完成後立即斷開TCP連線(無連線),伺服器不跟蹤每個客戶端也不記錄過去的請求(無狀態)。

HTTP1.1版本新特性

==預設持久連線節省通訊量,只要客戶端服務端任意一端沒有明確提出斷開TCP連線,就一直保持連線,可以傳送多次HTTP請求

==管線化,客戶端可以同時發出多個HTTP請求,而不用一個個等待響應

==斷點續傳原理

HTTP2.0版本的特性

==二進位制分幀(採用二進位制格式的編碼將其封裝)

==首部壓縮(設定了專門的首部壓縮設計的HPACK演算法。)

==流量控制(設定了接收某個資料流的多少位元組一些流量控制)

==多路複用(可以在共享TCP連結的基礎上同時傳送請求和響應)

==請求優先順序(可以通過優化這些幀的交錯和傳輸順序進一步優化效能)

==伺服器推送(就是伺服器可以對一個客戶端請求傳送多個響應。伺服器向客戶端推送資源無需客戶端明確的請求。(重大更新)

====什麼是cookiesession

cookie是由Web伺服器儲存在使用者瀏覽器上的檔案(key-value格式),可以包含使用者相關的資訊。客戶端向伺服器發起請求,就提取瀏覽器中的使用者資訊由http傳送給伺服器

session 是瀏覽器和伺服器會話過程中,伺服器會分配的一塊儲存空間給session

伺服器預設為客戶瀏覽器的cookie中設定 sessionid,這個sessionid就和cookie對應,瀏覽器在向伺服器請求過程中傳輸的cookie 包含 sessionid ,伺服器根據傳輸cookie 中的 sessionid 獲取出會話中儲存的資訊,然後確定會話的身份資訊。

====cookiesession區別?

1. cookie資料存放在客戶端上,安全性較差,session資料放在伺服器上,安全性相對更高

2. 單個cookie儲存的資料不能超過4Ksession無此限制 資訊後,使用自己的私鑰進行解密。 由於非對稱加密的方式不需要傳送用來解密的私鑰,所以可以保證安全性;但是和對稱加密比起來,非常的慢

更多面試題或學習資源可檢視我主頁或評論獲取