Java之网络面试经典题(一)
目录
编辑
Cookie
Session
二.HTTP和HTTPS的区别
三.浅谈HTTPS为什么是安全的?
四.TCP和UDP
五.GET和Post的区别
六.forward 和 redirect 的区别?
本专栏全是博主自己收集的面试题,仅可参考,不能相信面试官就出这种题目。
一.Session和cookie
Session和Cookie是用于在Web应用中跟踪用户状态和保持用户数据的重要机制。
Cookie
Cookie是服务器发送到用户浏览器并保存在本地的小型文本文件。它通常用于:
- 跟踪用户:通过将唯一标识符存储在Cookie中,服务器可以识别和跟踪特定用户的访问行为。
- 保存用户偏好设置:例如语言偏好、主题选择等,使得用户下次访问时能够继续使用他们的偏好设置。
- 保持登录状态:最常见的用途之一是通过Cookie来维持用户的登录状态。当用户进行登录时,服务器会在Cookie中设置一个会话标识符,浏览器会在后续的请求中将这个标识符发送回服务器,从而保持用户的登录状态。
特点:
- 存储在客户端:Cookie是存储在用户的浏览器中的,每次用户访问同一个域名下的页面时,浏览器都会将相关的Cookie发送给服务器。
- 大小限制:每个Cookie的存储容量通常有限制,通常在几KB到几MB之间,因此不适合存储大量数据。
- 安全性考虑:Cookie中的数据可以被用户查看和修改,因此不适合存储敏感信息,如密码等。
Session
Session是在服务器端存储的关于用户会话的信息。它通常用于:
- 保持状态:服务器可以在会话中存储用户的状态信息,如登录状态、购物车内容等。
- 安全性:与Cookie相比,Session存储在服务器端,用户无法直接访问或修改它,因此更适合存储敏感信息。
- 性能:由于数据存储在服务器端内存中,访问速度通常比Cookie快。
Session的工作流程如下:
- 会话创建:当用户首次访问服务器时,服务器会为该用户创建一个唯一的会话标识符(Session ID)。
- 存储信息:服务器使用这个Session ID来存储和检索与用户相关的信息,可以是关于用户状态的数据。
- 传递标识符:为了在请求之间保持会话,服务器会将Session ID发送给客户端。通常这个Session ID 被放置在Cookie中(称为Session Cookie)。
- 过期管理:会话可以有过期时间,一旦过期,服务器会删除与之关联的数据,用户需要重新登录或重新创建会话。
总结:
- Cookie:存储在用户的浏览器中的数据(会话标识符、兴趣爱好等),每次请求都会发送给服务器。Session:存储在服务器端,客户端只保存一个标识符
- Cookie:由于存储在客户端,Cookie中的数据可以被用户查看和修改,不安全;Session:数据存储在服务器端,用户无法直接访问或修改Session中的数据,安全
- Cookie:每个Cookie通常有存储容量限制;Session:存储在服务器端,理论上没有大小限制,受限于服务器内存或存储设施的大小。
- Cookie:可以设置过期时间,可以是会话Cookie(关闭浏览器后失效)或持久Cookie(在指定时间后失效)。Session:通常有一个过期时间或者在用户退出登录时被销毁,也可以手动清除。
二.HTTP和HTTPS的区别
http协议是超文本传输协议,一种明文数据传输的网络协议,但也因此不安全。
传输的数据可有:html、图片、文本文件、音频和视频、应用程序(json、xml等)、软件安装包等
特点:
-
简单快速: HTTP的设计简单直接,基于请求-响应模型,使得通信高效迅速。它通常使用短连接,即每个请求/响应对都使用一个单独的TCP连接来处理,减少了服务器的负担,同时也不会消耗过多的资源。
-
灵活: HTTP允许传输任意类型的数据对象。不限于传输超文本,还可以传输图片、音频、视频等多媒体内容,甚至可以传输应用程序的数据。
-
无连接: HTTP协议是无连接的,即每次请求都是独立的,服务器不会保存前一次请求的信息,因此它是一种无状态协议。这样的设计简化了服务器端的设计和实现,但也增加了一些管理和状态维护的复杂性,为了解决这个问题,引入了Cookie等机制来维护状态。
HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):可以理解为HTTP+SSL/TLS, 即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL,用于安全的 HTTP 数据传输。HTTPS协议基于TLS/SSL协议加密进行TCP传输 进行了加密,拿到的是密文。传输端口为443。
二者之间的主要区别:
- 加密机制:HTTP不加密数据传输,而HTTPS通过SSL/TLS加密传输数据。
- 安全性:HTTP传输的数据容易被窃听和篡改,HTTPS传输的数据经过加密保护,安全性更高。
- 端口:HTTP默认端口号为80,HTTPS默认端口号为443。
- 使用场景:HTTP适用于不涉及隐私和安全要求不高的数据传输,而HTTPS用于保护敏感数据的传输和保障用户隐私。
- 默认端口:http使用的是80端口,https使用的是443端口。在网络模型中,HTTP工作于应用层,而HTTPS工作在传输层。
- 连接过程:http中使用的是tcp三次握手三次握手进行连接。https中使用的是tcp的三次握手加上TLS(安全传输层)四次握手。
三.浅谈HTTPS为什么是安全的?
通过几个方面来解答:
第一个:加密传输,使用了SSL和TLS协议进行加密HTTP的通信。
第二个:有加密哈希算法例如SHA 可以保证数据的完好性,服务器在接收数据前会通过哈希函数验证数据的完整性
第三个:由于SSL证书是第三方机构颁发,可以验证服务器的身份,确保发送数据的安全性
四.TCP和UDP
说起这两个,我们得回忆下什么是Socket套接字。
Socket可以看作是两个计算机之间通信的端点。它包含了IP地址和端口号,用来唯一标识网络中的一个进程。在通信的过程中,每个参与通信的程序都会创建一个Socket,用来建立连接、发送和接收数据。
Socket套接字通常有两种类型:流套接字(Stream Socket)和数据报套接字(Datagram Socket),也称TCP和UDP
TCP协议
特点:可靠的、面向连接的通信。流套接字提供了字节流的传输方式,保证数据按照发送的顺序到达目标,并且无差错、不丢失、不重复。
TCP的连接方式:确认应答机制
-
第一次握手(SYN):
- 客户端向服务器端发送一个带有SYN(同步序列编号)标志的数据包,表明客户端请求连接。此时客户端进入SYN_SENT状态,等待服务器的确认。
-
第二次握手(SYN + ACK):
- 服务器收到客户端的SYN请求后,会以自己的SYN和ACK确认标志作为应答,表示接受连接请求。服务器端进入SYN_RCVD状态。
-
第三次握手(ACK):
- 客户端收到服务器端的SYN和ACK确认后,向服务器端发送一个带有ACK标志的数据包,表示连接建立成功。客户端和服务器端均进入已建立连接的状态,可以开始通信。
问:四次握手和两次握手可以吗?
答:四次握手可以,但多了一次交互,增加了网络通信的时延和复杂度。而两次握手是不可行的,服务器接收到同步序列号,并且发送自身的syn和ack回复,这是单方面的确认连接,客户端有可能接收不到,难以确定何时连接真正建立或中断。
四次挥手
-
第一次挥手 (FIN):
- 客户端或服务器决定关闭连接后,发送一个FIN(Finish)标志给对方,表示它已经没有数据要发送了,但仍愿意接收数据。
-
第二次挥手 (ACK):
- 接收到FIN的一方发送一个ACK(Acknowledgment)确认,表示它已收到了关闭请求。
-
第三次挥手 (FIN):
- 接收到ACK的一方也准备好关闭连接时,会发送一个FIN给对方,表示它也没有数据要发送了。
-
第四次挥手 (ACK):
- 最后,接收到第三步的FIN的一方发送一个ACK确认,告知对方已收到关闭请求。
问:为什么不会是三次挥手?就是把中间的两次ack和fin结合在一起!
答:第一个原因:TCP是全双工通信,需要回应;第二个,可以提前关闭自身的发送能力,确保数据不会丢失。
UDP协议:
特点:无连接,面向数据报的通信协议,只有接收缓冲区,无发送缓冲区,不保证数据传输的可靠性和顺序性,但是具有低延迟的特点。
单播、多播和组播的特性
-
单播:
- 例子:你给你的朋友发短信。
- 解释:当你发送一条短信给你的朋友,你知道这条信息只会被你的朋友接收到,因为你只发送给了她的手机号码。这类似于UDP的单播,数据从一个发送者(你)到一个特定的接收者(你的朋友)。
-
广播:
- 例子:学校的广播通知。
- 解释:学校广播通知是通过学校的广播系统发送到所有教室和办公室的。当校长或者行政人员发出通知时,所有在校内的人都可以收到相同的消息,即使他们分布在不同的房间里。这就像UDP的广播,一个消息被发送到一个特定的地址(广播地址),所有在该地址上的接收者都可以接收到这条消息。
-
组播:
- 例子:视频会议。
- 解释:在一个视频会议中,多个参与者通过互联网连接,他们共享相同的视频和音频流。数据通过组播地址发送,只有那些加入了会议的参与者才会接收到数据。这类似于UDP的组播,数据从一个发送者(视频会议服务器)发送到一个特定的组(参与视频会议的所有人)。
TCP和UDP区别:
五.GET和Post的区别
1、get 和 post请求是http协议中的两种请求方式。
2、get一般用来获取服务器的信息的,post一般是用来更新信息
主要区别:
-
数据传输方式:
- GET:通过URL提交数据,数据在URL中可见,以查询字符串的形式附加在URL后面。例如:
http://example.com/resource?key1=value1&key2=value2
- POST:通过HTTP消息主体(HTTP请求的消息主体(body)中进行传输)传输数据,数据不在URL中可见,更多适用于传输敏感数据或大量数据。
- GET:通过URL提交数据,数据在URL中可见,以查询字符串的形式附加在URL后面。例如:
-
数据长度限制:
- GET:由于数据附加在URL中,所以受到URL长度限制的影响,不同的浏览器和服务器对URL长度限制不一致,通常在几千字节左右。
- POST:由于数据在HTTP消息主体中传输,通常可以传输更多数据,不受URL长度限制。
-
安全性:
- GET:因为数据在URL中可见,所以不适合传输敏感数据,如密码等,容易被截获或泄露。
- POST:数据在HTTP消息主体中传输,相对于GET请求更安全,适合传输敏感信息。
-
幂等性:
- GET:通常是幂等的,即对同一URL的多次请求应该返回相同的结果。
- POST:不一定是幂等的,同一POST请求可能会导致不同的结果(比如每次提交一个订单会产生一个新的订单号)。
-
缓存处理:
- GET:可以被浏览器缓存,因为GET请求是幂等的,通常不会对服务器数据产生影响。
- POST:不适合被浏览器缓存,因为POST请求可能会对服务器数据进行修改或增加,缓存的数据可能不再有效。
六.forward 和 redirect 的区别?
forward(转发)和redirect(重定向)是两种不同的请求转发机制
Forward(转发)
forward
是服务器内部的转发机制,将请求从一个资源(通常是Servlet)传递到另一个资源(Servlet或JSP),所有操作都在服务器内部完成,客户端浏览器不知道发生了转发。
特点:
- 单次请求-响应:
forward
是一次请求-响应过程,浏览器只发起一次请求,服务端接收请求后,将请求转发给另一个资源,再由该资源生成响应返回给浏览器。 - URL不变:浏览器的地址栏保持不变,显示的是最初请求的URL,因为对客户端来说,只发起了一次请求。
使用场景:用户在一个表单页面填写了一些信息,然后点击提交按钮。服务器端的Servlet收到这个提交请求,处理其中的数据,然后根据处理结果决定展示给用户一个结果页面。如果这两个页面需要共享相同的请求数据(比如用户的姓名、邮箱等信息),使用forward
可以直接将原始请求中的数据传递给结果页面,而无需将这些数据存储在数据库或者通过其他方式传递。(预览)
Redirect(重定向)
redirect
是一种通过客户端浏览器的重定向机制,告知浏览器应该向新的URL发起新的请求。服务器返回一个特殊的响应码(通常是302 Found),指示浏览器重新定向到新的URL。
特点:
- 两次请求-响应:
redirect
会触发浏览器发起两次请求-响应循环。第一次请求服务器时,服务器返回重定向响应码和新的URL;浏览器根据新URL再发起第二次请求。 - URL改变:浏览器的地址栏会显示新的URL,用户可以看到请求已经被重定向到另一个URL。
相关文章:

Java之网络面试经典题(一)
目录 编辑 一.Session和cookie Cookie Session 二.HTTP和HTTPS的区别 三.浅谈HTTPS为什么是安全的? 四.TCP和UDP 五.GET和Post的区别 六.forward 和 redirect 的区别? 本专栏全是博主自己收集的面试题,仅可参考,不能相…...

Failed to download metadata for repo ‘docker-ce-stable‘
这个问题是由于在安装 clamav 和 clamav-update 时,无法下载 Docker CE Stable 库的元数据,可能的原因是网络连接超时或访问该网址受限。以下是一些可能的解决办法: 检查网络连接: 确保服务器的网络连接正常,尤其是与互…...

vant拍摄视频上传以及多张图片上传
数据定义 data() {return {fileList: [],vedioList: [],formData: ,fileTypes: image/png,image/jpeg,image/jpg,image/jpeg,} }, beforeMount() {this.formData new FormData() },拍摄视频上传 <van-uploaderv-if"radio 1"v-model"vedioList"accep…...

如何用手机拍出高级感黑白色调照片?华为Pura70系列XMAGE演绎黑白艺术
在影像的世界里,色彩可以让画面更丰富,更具有表现力,往往也能带来更多的视觉冲击。但有时候,黑白却有着一种独特的魅力。华为Pura 70系列XMAGE黑白风格,则给我们了一把通过纯粹艺术大门的钥匙。 XMAGE黑白并非简单的色…...

Cartographer前后端梳理
0. 简介 最近在研究整个SLAM框架的改进处,想着能不能从Cartographer中找到一些亮点可以用于参考。所以这一篇博客希望能够梳理好Cartographer前后端优化,并从中得到一些启发。carto整体是graph-based框架,前端是scan-map匹配,后端…...

Java面试题系列 - 第3天
题目:Java集合框架详解与高效使用策略 背景说明:Java集合框架是Java标准库的重要组成部分,提供了一系列容器类,如List、Set、Map等,用于存储和操作集合数据。熟练掌握集合框架的使用,对于编写高效、健壮的…...

【Spring Boot】Spring Boot简介
1、概述 Spring Boot是一个用于创建独立、生产级别的基于Spring的应用程序的开发框架。旨在简化Spring应用的初始搭建和开发过程。它通过自动配置和大量默认配置,使得开发者能够快速搭建一个独立的Spring应用,无需进行大量的手动配置。 2、主要特点 快…...

Akamai+Noname强强联合 | API安全再加强
最近,Akamai正式完成了对Noname Security的收购。本文我们将向大家介绍,经过本次收购后,Akamai在保护API安全性方面的后续计划和未来愿景。 Noname Security是市场上领先的API安全供应商之一,此次收购将让Akamai能更好地满足日益增…...

第四届BPAA算法大赛成功举办!共研算法未来
大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的…...

2024第三届中国医疗机器人大会第一轮通知
2024第三届中国医疗机器人大会第一轮通知 大会背景 医疗机器人技术正以前所未有的速度在主流医学领域取得卓越进展,新应用、新技术不断涌现,使得该领域在过去一年中取得了令人惊叹的增长。然而,这仅仅是冰山一角,未来的发展空间仍…...

常见算法和Lambda
常见算法和Lambda 文章目录 常见算法和Lambda常见算法查找算法基本查找(顺序查找)二分查找/折半查找插值查找斐波那契查找分块查找扩展的分块查找(无规律的数据) 常见排序算法冒泡排序选择排序插入排序快速排序递归快速排序 Array…...

自动缩放 win7 远程桌面
https://mremoteng.org/download 用这个软件,下载 zip 版,不需要管理员权限 在这里找到的,选票最高的一个就是 https://superuser.com/questions/1030041/remote-desktop-zoom-and-full-screen-how-win10-remote-win7-2008-2003-ho...

微机原理与单片机 知识体系梳理
单片机笔记分享 我个人感觉单片机要记的东西很多,也很琐碎,特别是一些位、寄存器以及相关作用等,非常难以记忆。因此复习时将知识点整理在了一起做成思维导图,希望对大家有所帮助。内容不是很多,可能有些没覆盖全&…...

低音炮内存卡格式化后无法播放音乐文件
试了多次 不支持ntfs不支持exfat 仅支持fat32 FAT32与exFAT的区别主要体现在来源、单个文件限制、适用情况以及兼容性方面。12 来源: FAT32是Windows平台的传统文件格式,首次在Windows 95第二版中引入,旨在取代FAT16,具有良好的…...

手动将dingtalk-sdk-java jar包打入maven本地仓库
有时候,中央镜像库不一定有自己需要的jar包,这时候我们就需要用到该方法,将jar打入maven本地仓库,然后项目中,正常使用maven的引入规则。 mvn install:install-file -Dmaven.repo.local=D:\software\maven\apache-maven-3.6.3-bin\apache-maven-3.6.3\repo -DgroupId=ding…...

C++:构造函数是什么东西
一、构造函数是什么 在C中,构造函数是一种特殊成员函数,它有一下几个明显的特征: 1、它自动在创建新对象时被调用。 2、其名称与类名相同, 3、没有返回类型, 4、通常没有参数(除了默认情况下的隐式thi…...

工作两年后,我如何看待设计模式
在软件工程中,设计模式是经过反复验证的最佳实践,用于解决在软件设计中经常遇到的一类问题。它们为开发者提供了一种通用的解决方案和语言,使得复杂的编程问题得以简化,代码结构更加清晰,可维护性大大提高。简而言之&a…...

01 Web基础与HTTP协议
1、域名和DNS 1.1 域名的概念 如果说一个主机,没有名字也可以完全用IP来代替,但是IP地址不好记忆。例如说,我们记一些网站的名称百度、新浪、搜狐等很好记,但是如果要去记百度的IP、新浪的IP、以及搜狐的IP地址,那将会…...

Java求自然常数e的近似值(课堂实例1)
❤❤引言🎃🎃 ❤点关注编程梦想家(大学生版)-CSDN博客不迷路~~~~~~❤ 自然常数 𝑒e 是数学中一个非常重要的常数,约等于 2.71828,它在自然对数、复合利息计算等领域有着广泛的应用。本文将介绍如…...

简过网:什么是咨询工程师?我不允许还有人不知道!
咨询工程师真的有必要考吗?近期小编收到很多关于咨询工程师的的问题,今天,小编给大家整理汇总了一下关于咨询工程师的相关问题,希望能够帮助到大家! 一、什么是咨询工程师? 咨询工程师是从事工程咨…...

数据泄露时代的安全之道:访问认证的重要性
引言 想象一下:你一觉醒来,收到一条通知——你的公司遭遇了数据泄露。你感到恐惧,因为这意味着客户数据被曝光,公司声誉受损,还有巨额罚款在等着你。在当今的数字化环境中,这种情况太常见了。全球各地的组…...

XLSX + LuckySheet + LuckyExcel + Web Worker实现前端的excel预览
文章目录 功能简介简单代码实现web worker 版本效果参考 功能简介 通过LuckyExcel的transformExcelToLucky方法, 我们可以把一个文件直接转成LuckySheet需要的json字符串, 之后我们就可以用LuckySheet预览excelLuckyExcel只能解析xlsx格式的excel文件&a…...

Java版本迭代的过程(Java面经)
Java 5: 泛型与注解 泛型:使得Web应用可以编写更加类型安全的代码,特别是在处理各种数据结构时,如集合框架的使用。注解:极大地简化了配置管理,Spring框架的崛起得益于Java 5的注解支持,使得依赖注入和AOP…...

深入了解java锁升级可以应对各种疑难问题
对于java锁升级,很多人都停留在比较浅层的表面理解,一定程度下也许够用,但如果学习其中的细节,我们更好地理解多线程并发时各种疑难问题的应对方式! 因此我将锁升级过程中可能涉及的大部分细节或者疑问都整合成了一篇…...

C++初学者指南-4.诊断---基础:警告和测试
C初学者指南-4.诊断—基础知识:警告和测试 文章目录 C初学者指南-4.诊断---基础知识:警告和测试1. 术语和技术记住:使用专用类型! 2.编译器警告Gcc/CLang 编译器选项MS Visual Studio 编译器选项 3.断言运行时断言静态断言&#x…...

docker使用镜像jms_all部署jumpserver
创建容器需要挂载出来的服务器对应目录 mkdir -p /data/redis/data mkdir -p /opt/mysql/{data,conf,logs}docker安装redis docker run -d -it --name redis -p 6379:6379 -v /data/redis/data:/data --restart=always...

在Java项目中集成单元测试与覆盖率工具
在Java项目中集成单元测试与覆盖率工具 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 单元测试是软件开发中至关重要的一环,它用于验证代码在独立…...

CTF实战:从入门到提升
CTF实战:从入门到提升 🚀前言 没有网络安全就没有国家安全,网络安全不仅关系到国家整体信息安全,也关系到民生安全。近年来,随着全国各行各业信息化的发展,网络与信息安全得到了进一步重视,越…...

Spring Boot集成olingo快速入门demo
1.什么是olingo? Apache Olingo 是个 Java 库,用来实现 Open Data Protocol (OData)。 Apache Olingo 包括服务客户端和 OData 服务器方面。 Open Data Protocol (开放数据协议,OData) 是用来查询和更新数据的一种W…...

GPT对话代码库——HAL库下 USART 的配置及问题(STM32G431CBT6)
目录 1,问: 1,答: 示例代码 正确的HAL库初始化方式 自定义初始化方式(不推荐) 总结 2,问: 2,答: 代码详细解释 初始部分 主初始化部分 初始化调用…...