欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java經(jīng)典面試題匯總:網(wǎng)絡(luò)編程

 更新時間:2021年07月21日 10:01:57   作者:讓程序飛  
本篇總結(jié)的是Java 網(wǎng)絡(luò)編程相關(guān)的面試題,后續(xù)會持續(xù)更新,希望我的分享可以幫助到正在備戰(zhàn)面試的實習(xí)生或者已經(jīng)工作的同行,如果發(fā)現(xiàn)錯誤還望大家多多包涵,不吝賜教,謝謝

1. HTTP 響應(yīng)碼 301 和 302 代表的是什么?有什么區(qū)別?

301:永久重定向。 302:暫時重定向。

它們的區(qū)別是,301 對搜索引擎優(yōu)化(SEO)更加有利;302 有被提示為網(wǎng)絡(luò)攔截的風(fēng)險。

2. 簡單說一下http協(xié)議?

HTTP協(xié)議是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫,是用于從萬維網(wǎng)(WWW:World Wide Web )服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。HTTP是一個基于TCP/IP通信協(xié)議被用于在Web瀏覽器和網(wǎng)站服務(wù)器之間傳遞信息,HTTP協(xié)議以明文方式發(fā)送內(nèi)容,不提供任何方式的數(shù)據(jù)加密。

3. HTTP與HTTPS的區(qū)別?

  • https協(xié)議需要到CA申請證書,一般免費證書較少,因而需要一定費用。
  • http是超文本傳輸協(xié)議,信息是明文傳輸,https則是具有安全性的ssl/tls加密傳輸協(xié)議。
  • http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
  • http的連接很簡單,是無狀態(tài)的;HTTPS協(xié)議是由SSL/TLS+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全。

4. HTTP協(xié)議下客戶端請求報文是什么?

HTTP請求由四個部分組成,分別是:

  • 請求行(request line)
  • 請求頭部(header)
  • 空行
  • 請求數(shù)據(jù)

5. HTTP協(xié)議服務(wù)器響應(yīng)報文有哪些?

HTTP響應(yīng)也由四個部分組成,分別是:

  • 狀態(tài)行
  • 消息報頭
  • 空行
  • 響應(yīng)正文

6. HTTP協(xié)議中的請求方法有哪些?

一共八種請求方法:GET, POST ,HEAD,OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

方法 描述
GET 請求指定的頁面信息,并返回實體主體。
POST

向指定資源提交數(shù)據(jù)進(jìn)行處理請求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請求體中。

POST請求可能會導(dǎo)致新的資源的建立和/或已有資源的修改。

HEAD 類似于get請求,只不過返回的響應(yīng)中沒有具體的內(nèi)容,用于獲取報頭
OPTIONS 允許客戶端查看服務(wù)器的性能。
PUT 從客戶端向服務(wù)器傳送的數(shù)據(jù)取代指定的文檔的內(nèi)容。
DELETE 請求服務(wù)器刪除指定的頁面。
TRACE 回顯服務(wù)器收到的請求,主要用于測試或診斷。
CONNECT HTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器

7. 常見的HTTP狀態(tài)碼有哪些?

當(dāng)瀏覽者訪問一個網(wǎng)頁時,瀏覽者的瀏覽器會向網(wǎng)頁所在服務(wù)器發(fā)出請求。當(dāng)瀏覽器接收并顯示網(wǎng)頁前,此網(wǎng)頁所在的服務(wù)器會返回一個包含HTTP狀態(tài)碼的信息頭(server header)用以響應(yīng)瀏覽器的請求。

HTTP狀態(tài)碼的英文為HTTP Status Code。下面是常見的HTTP狀態(tài)碼:

  • 200 - 請求成功
  • 301 - 資源(網(wǎng)頁等)被永久轉(zhuǎn)移到其它URL
  • 404 - 請求的資源(網(wǎng)頁等)不存在
  • 500 - 內(nèi)部服務(wù)器錯誤

8. forward 和 redirect 的區(qū)別?

  • forward 是轉(zhuǎn)發(fā) 和 redirect 是重定向:
  • 地址欄 url 顯示:foward url 不會發(fā)生改變,redirect url 會發(fā)生改變;
  • 數(shù)據(jù)共享:forward 可以共享 request 里的數(shù)據(jù),redirect 不能共享;
  • 效率:forward 比 redirect 效率高。

9. 簡述 tcp 和 udp的區(qū)別?

tcp 和 udp 是 OSI 模型中的運輸層中的協(xié)議。tcp 提供可靠的通信傳輸,而 udp 則常被用于讓廣播和細(xì)節(jié)控制交給應(yīng)用的通信傳輸。 兩者的區(qū)別大致如下:

  • tcp 面向連接,udp 面向非連接即發(fā)送數(shù)據(jù)前不需要建立鏈接;
  • tcp 提供可靠的服務(wù)(數(shù)據(jù)傳輸),udp 無法保證;
  • tcp 面向字節(jié)流,udp 面向報文;
  • tcp 數(shù)據(jù)傳輸慢,udp 數(shù)據(jù)傳輸快;

10. TCP 為什么要三次握手,兩次不行嗎?為什么?

如果采用兩次握手,那么只要服務(wù)器發(fā)出確認(rèn)數(shù)據(jù)包就會建立連接,但由于客戶端此時并未響應(yīng)服務(wù)器端的請求,那此時服務(wù)器端就會一直在等待客戶端, 這樣服務(wù)器端就白白浪費了一定的資源。若采用三次握手,服務(wù)器端沒有收到來自客戶端的再此確認(rèn),則就會知道客戶端并沒有要求建立請求,就不會浪費服務(wù)器的資源。

11. 說一下 TCP 粘包是怎么產(chǎn)生的?

TCP 粘包可能發(fā)生在發(fā)送端或者接收端,分別來看兩端各種產(chǎn)生粘包的原因:

  • 發(fā)送端粘包:發(fā)送端需要等緩沖區(qū)滿才發(fā)送出去,造成粘包;
  • 接收方粘包:接收方不及時接收緩沖區(qū)的包,造成多個包接收。

12. OSI 的七層模型都有哪些?

  • 物理層:利用傳輸介質(zhì)為數(shù)據(jù)鏈路層提供物理連接,實現(xiàn)比特流的透明傳輸。
  • 數(shù)據(jù)鏈路層:負(fù)責(zé)建立和管理節(jié)點間的鏈路。
  • 網(wǎng)絡(luò)層:通過路由選擇算法,為報文或分組通過通信子網(wǎng)選擇最適當(dāng)?shù)穆窂健?/li>
  • 傳輸層:向用戶提供可靠的端到端的差錯和流量控制,保證報文的正確傳輸。
  • 會話層:向兩個實體的表示層提供建立和使用連接的方法。
  • 表示層:處理用戶信息的表示問題,如編碼、數(shù)據(jù)格式轉(zhuǎn)換和加密解密等。
  • 應(yīng)用層:直接向用戶提供服務(wù),完成用戶希望在網(wǎng)絡(luò)上完成的各種工作。

13. GET和POST的區(qū)別?

POST和GET都是向服務(wù)器提交數(shù)據(jù),并且都會從服務(wù)器獲取數(shù)據(jù)。

1、傳送方式:get通過地址欄傳輸,post通過報文傳輸。

2、傳送長度:get參數(shù)有長度限制(受限于url長度),而post無限制

3、GET和POST還有一個重大區(qū)別,簡單的說:

GET產(chǎn)生一個TCP數(shù)據(jù)包;POST產(chǎn)生兩個TCP數(shù)據(jù)包

長的說:

對于GET方式的請求,瀏覽器會把http header和data一并發(fā)送出去,服務(wù)器響應(yīng)200(返回數(shù)據(jù));

而對于POST,瀏覽器先發(fā)送header,服務(wù)器響應(yīng)100 continue,瀏覽器再發(fā)送data,服務(wù)器響應(yīng)200 ok(返回數(shù)據(jù))。

建議:

1、get方式的安全性較Post方式要差些,包含機密信息的話,建議用Post數(shù)據(jù)提交方式;

2、在做數(shù)據(jù)查詢時,建議用Get方式;而在做數(shù)據(jù)添加、修改或刪除時,建議用Post方式;

14. 如何實現(xiàn)跨域?

實現(xiàn)跨域有以下幾種方案:

服務(wù)器端運行跨域 設(shè)置 CORS 等于 *;

在單個接口使用注解 @CrossOrigin 運行跨域;

使用 jsonp 跨域;

15. 什么是WebSocket?

WebSocket是一種在單個TCP連接上進(jìn)行全雙工通信的協(xié)議。

WebSocket使得客戶端和服務(wù)器之間的數(shù)據(jù)交換變得更加簡單,允許服務(wù)端主動向客戶端推送數(shù)據(jù)。在WebSocket API中,瀏覽器和服務(wù)器只需要完成一次握手,兩者之間就直接可以創(chuàng)建持久性的連接,并進(jìn)行雙向數(shù)據(jù)傳輸。

16. WebSocket與HTTP的關(guān)系

相同點

1. 都是一樣基于TCP的,都是可靠性傳輸協(xié)議。

2. 都是應(yīng)用層協(xié)議。

不同點

1. WebSocket是雙向通信協(xié)議,模擬Socket協(xié)議,可以雙向發(fā)送或接受信息。HTTP是單向的。

2. WebSocket是需要握手進(jìn)行建立連接的。

聯(lián)系

WebSocket在建立握手時,數(shù)據(jù)是通過HTTP傳輸?shù)?。但是建立之后,在真正傳輸時候是不需要HTTP協(xié)議的。

17. WebSocket與Socket的關(guān)系

Socket其實并不是一個協(xié)議,而是為了方便使用TCP或UDP而抽象出來的一層,是位于應(yīng)用層和傳輸控制層之間的一組接口。

當(dāng)兩臺主機通信時,必須通過Socket連接,Socket則利用TCP/IP協(xié)議建立TCP連接。TCP連接則更依靠于底層的IP協(xié)議,IP協(xié)議的連接則依賴于鏈路層等更低層次。WebSocket則是一個典型的應(yīng)用層協(xié)議。

區(qū)別

Socket是傳輸控制層協(xié)議,WebSocket是應(yīng)用層協(xié)議。

總結(jié)

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • SpringBoot日程管理Quartz與定時任務(wù)Task實現(xiàn)詳解

    SpringBoot日程管理Quartz與定時任務(wù)Task實現(xiàn)詳解

    定時任務(wù)是企業(yè)級開發(fā)中必不可少的組成部分,諸如長周期業(yè)務(wù)數(shù)據(jù)的計算,例如年度報表,諸如系統(tǒng)臟數(shù)據(jù)的處理,再比如系統(tǒng)性能監(jiān)控報告,還有搶購類活動的商品上架,這些都離不開定時任務(wù)。本節(jié)將介紹兩種不同的定時任務(wù)技術(shù)
    2022-09-09
  • 使用ShardingJDBC進(jìn)行數(shù)據(jù)分片以及讀寫分離

    使用ShardingJDBC進(jìn)行數(shù)據(jù)分片以及讀寫分離

    ShardingJDBC是一個輕量級的Java框架,提供了數(shù)據(jù)分片、讀寫分離、分布式主鍵生成等數(shù)據(jù)訪問功能,本文將給大家介紹如何使用ShardingJDBC進(jìn)行數(shù)據(jù)分片以及讀寫分離,需要的朋友可以參考下
    2024-01-01
  • Java String源碼分析并介紹Sting 為什么不可變

    Java String源碼分析并介紹Sting 為什么不可變

    這篇文章主要介紹了Java String源碼分析并介紹Sting 為什么不可變的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 關(guān)于MybatisPlus配置雙數(shù)據(jù)庫驅(qū)動連接數(shù)據(jù)庫問題

    關(guān)于MybatisPlus配置雙數(shù)據(jù)庫驅(qū)動連接數(shù)據(jù)庫問題

    這篇文章主要介紹了MybatisPlus配置雙數(shù)據(jù)庫驅(qū)動連接數(shù)據(jù)庫的具體實現(xiàn),具體的業(yè)務(wù)邏輯,在service層的類或者方法上面添加@DataSource注解來指定該業(yè)務(wù)需要用到的數(shù)據(jù)源,需要的朋友可以參考下
    2022-01-01
  • Java 重載、重寫、構(gòu)造函數(shù)的實例詳解

    Java 重載、重寫、構(gòu)造函數(shù)的實例詳解

    這篇文章主要介紹了Java 重載、重寫、構(gòu)造函數(shù)的實例詳解的相關(guān)資料,希望通過本文大家能理解掌握java 面向?qū)ο蟮姆椒?,需要的朋友可以參考?/div> 2017-09-09
  • Swagger2配置Security授權(quán)認(rèn)證全過程

    Swagger2配置Security授權(quán)認(rèn)證全過程

    這篇文章主要介紹了Swagger2配置Security授權(quán)認(rèn)證全過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 淺談Java非阻塞同步機制和CAS

    淺談Java非阻塞同步機制和CAS

    我們知道在java 5之前同步是通過Synchronized關(guān)鍵字來實現(xiàn)的,在java 5之后,java.util.concurrent包里面添加了很多性能更加強大的同步類。這些強大的類中很多都實現(xiàn)了非阻塞的同步機制從而幫助其提升性能。
    2021-06-06
  • Java通過URL獲取公眾號文章生成HTML的方法

    Java通過URL獲取公眾號文章生成HTML的方法

    這篇文章主要介紹了Java通過URL獲取公眾號文章生成HTML的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Java JSON轉(zhuǎn)成List結(jié)構(gòu)數(shù)據(jù)

    Java JSON轉(zhuǎn)成List結(jié)構(gòu)數(shù)據(jù)

    這篇文章主要介紹了Java JSON轉(zhuǎn)成List結(jié)構(gòu)數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Spring?Bean中的六種作用域你了解嗎

    Spring?Bean中的六種作用域你了解嗎

    Bean的作用域是指Bean實例的生命周期及可見性范圍,Spring框架定義了6種作用域,本文就來和大家聊聊這6種作用域的定義與使用,希望對大家有所幫助
    2023-09-09

最新評論