JAVA面试题---WEB部分

网络通讯

TCP与UDP

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、 可靠的、 基于 IP 的传输层协议。

UDP 是 User Datagram Protocol 的简称,中文名是用户数据报协议,是 OSI 参考模 型中的传输层协议,它是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服 务。

TCP 和 UDP 都是来自于传输层的协议。传输层位于应用层和网络层之间,负责位于不 同主机中进程之间的通信。

1.TCP 基于连接 UDP 无连接

2.TCP 要求系统资源较多,UDP 较少

3.TCP 保证数据正确性,UDP 可能丢包

4.TCP 保证数据顺序,UDP 不保证

HTTP协议

客户端和服务器端之间数据传输的格式规范,格式简称为“超文本传输协议”。 是一个基于请求与响应模式的、无状态的、应用层的协议,基于 TCP 的连接方式

TCP三次握手

为了准确无误地把数据送达目标处,TCP 协议采用了三次握手策略。

为什么要三次握手? 三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收, 而三次握手最主要的目的就是 双方确认自己与对方的发送与接收是正常的。

SYN:同步序列编号(Synchronize Sequence Numbers)。是 TCP/IP 建立连接时 使用的握手信号。

第一次握手:客户端给服务器发送一个 SYN。客户端发送网络包,服务端收到了。服务器得出结论:客户端的发送能力,服务端的接收能力正常。

第二次握手:服务端收到 SYN 报文之后,会应答一个 SYN+ACK 报文。服务端发包,客户 端收到了。客户端得出结论:服务端的接收和发送能力,客户端的接收和发送能力正常。但 是此时服务端不能确认客户端的接收能力是否正常。

第三次握手;客户端收到 SYN+ACK 报文之后,回应一个 ACK 报文。客户端发包,服务端收 到了。服务器得出结论:客户端的接收和发送能力,自己的接收发送能力都正常。 通过三次握手,双方都确认对方的接收以及发送能力正常。

HTTP中重定向与请求转发的区别

实现

转发:用 request 的 getRequestDispatcher()方法得到 ReuqestDispatcher 对象,调用 forward()方法30 request.getRequestDispatcher("other.jsp").forward(request, response); 重定向:调用 response 的 sendRedirect()方法 response.sendRedirect("other.jsp");

1> 重定向 2 次请求,请求转发 1 次请求

2> 重定向地址栏会变,请求转发地址栏不变

3> 重定向是浏览器跳转,请求转发是服务器跳转

4> 重定向可以跳转到任意网址,请求转发只能跳转当前项目

GET与POST的区别

1. Get 是不安全的,因为在传输过程,数据被放在请求的 URL 中;Post 的所有操作对用户 来说都是不可见的。

2. Get 传送的数据量较小,一般传输数据大小不超过 2k-4k(根据浏览器不同,限制不一样, 但相差不大这主要是因为受 URL 长度限制;Post 传送的数据量较大,一般被默认为不受限 制。

3. Get 限制 Form 表单的数据集的值必须为 ASCII 字符;而 Post 支持整个 ISO10646 字符集。

4. Get 执行效率却比 Post 方法好。Get 是 form 提交的默认方法

cookie 和 session 的区别?

1.存储位置不同

cookie 的数据信息存放在客户端浏览器上。 session 的数据信息存放在服务器上。

2.存储容量不同

单个 cookie 保存的数据<=4KB,一个站点最多保存20个cookie。session一般没有上限。

3.存储方式不同

cookie 中只能保管 ASCII 字符串,并需要通过编码方式存储为 Unicode 字符或者二进制数 据。 session 中能够存储任何类型的数据,包括且不限于 string,integer,list,map 等。

4.隐私策略不同

cookie 对客户端是可见的,别有用心的人可以分析存放在本地的 cookie 并进行 cookie 欺 骗,所以它是不安全的。 session 存储在服务器上,不存在敏感信息泄漏的风险。

5. 有效期上不同

开发可以通过设置 cookie 的属性,达到使 cookie 长期有效的效果。31 session 依赖于名为 JSESSIONID 的 cookie,而 cookie JSESSIONID 的过期时间默认为-1, 只需关闭窗口该 session 就会失效,因而 session 不能达到长期有效的效果。

6.服务器压力不同

cookie 保管在客户端,不占用服务器资源。对于并发用户十分多的网站,cookie 是很好的 选择。 session 是保管在服务器端的,每个用户都会产生一个 session。假如并发访问的用户十分 多,会产生十分多的 session,耗费大量的内存。

Jsp 和 Servlet

Jsp 和 Servlet 的区别?

相同点

jsp 经编译后就变成了 servlet,jsp 本质就是 servlet,jvm 只能识别 java 的类,不能识别 jsp 代码,web 容器将 jsp 的代码编译成 jvm 能够识别的 java 类。其实就是当你通过 http 请求一个 JSP 页面是,首先 Tomcat 会调用 service()方法将 JSP 编译成为 Servlet, 然后执行 Servlet。

不同点

JSP 侧重视图,Sevlet 主要用于控制逻辑。 Servlet 中没有内置对象 。 JSP 中的内置对象都是必须通过 HttpServletRequest 对象,HttpServletResponse 对象以 及 HttpServlet 对象得到。

Servlet 的生命周期

// 1. servlet 对象创建时,调用此方法 public void init(ServletConfig servletConfig);

// 2. 用户访问 servlet 时,调用此方法 public void service(ServletRequest servletRequest, ServletResponse servletResponse);

// 3. servlet 对象销毁时,调用此方法 public void destroy();

JSP 九大内置对象

out 对象:用于向客户端、浏览器输出数据。

request 对象:封装了来自客户端、浏览器的各种信息。

response 对象:封装了服务器的响应信息。

exception 对象:封装了 jsp 程序执行过程中发生的异常和错误信息。

config 对象:封装了应用程序的配置信息。

page 对象:指向了当前 jsp 程序本身。

session 对象:用来保存会话信息。也就是说,可以实现在同一用户的不同请求之间共享数据 application 对象:代表了当前应用程序的上下文。可以在不同的用户之间共享信息。

pageContext 对象:提供了对 jsp 页面所有对象以及命名空间的访问。

Ajax 的介绍(必会)

Ajax 即"Asynchronous JavaScript And XML"(异步 JavaScript 和 XML),是指一种 创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更 新部分网页的技术。

$.ajax({

选项

})

常见的选项有:

type:请求方式,常见的值有"get","post"等,默认值:get

url:请求的路径,"/ajax/hello"

data:请求的参数,参数的常见写法有键值对或者 json

方式 1: name=tom&pwd=123

方式 2: {"name":"tom","pwd":"123"}

success:请求成功后的回调函数 function(返回值的参数名){}

contentType:用来设置请求参数的 mime类型 ,默认值 :表单的 enctype默认值name=tom&pwd=123

error:ajax请求时内部发生错误时执行的回调函数 function(){}

dataType:指定返回值的类型常见值:text json

async:是否异步默认值 true

Ajax应用程序的优势在于:

1.通过异步模式,提升了用户体验

2.优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用

3. Ajax引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量下的服务器负载。

写在最后:WEB在面试过程中,相关协议TCP,UDP有一定的考察概率。如若个人项目经历上写到了使用了Cookie,Session,则会有很大概率被问到相关问题。希望大家能够引起重视,笔者小厂,中厂,大厂均有面试经历,每日分享JAVA全栈知识与相关面试题,希望与打击共同进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/6150.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在图像处理领域,机器学习方法和深度学习方法的优势

在图像处理领域&#xff0c;机器学习方法和深度学习方法都被广泛应用&#xff0c;但两者有一些不同点和各自的优势。 机器学习 机器学习方法是利用数据和统计学方法来构建模型和算法&#xff0c;从而对图像进行分类、分割、特征提取等任务。常见的机器学习方法包括支持向量机…

【杂谈】记录代码中遇到的问题(持续更新中)

写代码时经常遇到各种各样的bug&#xff0c;有时候很难发现&#xff0c;下面是我自己的一些见解 1.数组开在全局区和栈区所能开到的最大范围是不一样的 main函数里的数组&#xff0c;范围最大可以开到1e5 全局区的函数最大可以开到1e8的范围 2.#define int long long 写#dein…

【Linux】常用命令大揭秘,轻松驾驭终端世界

常见命令大全 概念1.1&#xff1a;开源、闭源的区别1.2&#xff1a;应用场景 发行版XShell3.1&#xff1a;使用XShell登入主机3.2&#xff1a;普通用户的增加、删除3.3&#xff1a;查看账户的信息whoami指令who指令 文件和目录基本命令4.1&#xff1a;指令的周边知识文件路径Li…

4月份全球市场推出的18款网络安全热点产品和服务:生成式AI应用主导安全产品创新

CSO在线追踪了4份全球市场推出的18代表性网络安全产品和服务&#xff0c;从中可以观察网络安全产品创新趋势和风向。 1、Salt Security 在其API保护平台添加 OAuth安全产品 4月25日&#xff1a;Salt Security 在其API保护平台中添加了新的 OAuth 安全产品&#xff0c;以帮助组…

contentprovider一直报错,发现是android 的manifest中 provider 放在activity后面不行

在Android应用的AndroidManifest.xml文件中&#xff0c;所有的组件&#xff08;如activity、service、receiver和provider&#xff09;必须在该文件中按正确的顺序声明。在Android 8.0&#xff08;API 级别 26&#xff09;及更高版本中&#xff0c;如果provider组件放置在activ…

css响应式布局左、右上、右中布局

一、布局效果 二、布局代码 <div class"parent"><div class"left">菜单</div><div class"right"><div class"right-top">顶部导航</div><div class"right-content"></div>…

一个C++小程序调试过程记录

Top 20 C Projects With Source Code [2024 Update]https://www.interviewbit.com/blog/cpp-projects/ 这个网页有一些简单的C程序的源码&#xff0c;闲来无事&#xff0c;把第一个程序&#xff08;Bookshop Management System Using C&#xff09;的源码下载了下来。 源文件…

文件上传结合springboot

目录 前台页面 后台接口 文件上传总结 前端页面三要素 服务端接收文件 前台页面 <form action"/upload" method"post" enctype"mutipart/form-data"> 姓名<imput type"text" name"username"><br> 年…

Mybatis进阶(映射关系多对一 )

文章目录 1.需求分析2.应用实例&#xff08;xml配置&#xff09;1.数据表设计2.entity设计&#xff08;不要使用toString会栈溢出&#xff09;1.Pet.java2.User.java 3.编写Mapper1.PetMapper.java2.UserMapper.java 4.编写Mapper.xml1.UserMapper.xml2.PetMapper.xml 5.测试Us…

基于缓存注解的时间戳令牌防重复提交设计

文章目录 一&#xff0c;概述二&#xff0c;实现过程1、引入pom依赖2、定义缓存管理3、时间戳服务类4、模拟测试接口 三&#xff0c;测试过程1&#xff0c; 模拟批量获取2&#xff0c; 消费令牌 四&#xff0c;源码放送五&#xff0c;优化方向 一&#xff0c;概述 API接口由于…

uniapp 异步加载级联选择器(Cascader,data-picke)

目录 Props 事件方法 inputChange事件回调参数说明&#xff1a; completeChange事件回调参数说明&#xff1a; temList 属性Object参数说明 defaultItemList 属性Object参数说明 在template中使用 由于uniapp uni-ui的data-picke 不支持异步作者自己写了一个 插件市场下…

vue3 ——笔记 (表单输入,监听器)

表单输入 在Vue 3中&#xff0c;v-model指令的用法稍有不同于Vue 2。在Vue 3中&#xff0c;v-model指令实际上是一个语法糖&#xff0c;它会自动将value属性和input事件绑定到组件或元素上&#xff0c;以实现双向数据绑定。 在自定义组件中使用v-model时&#xff0c;需要在组…

身份证号对应地区信息-MySQL

这里写自定义目录标题 MySQL表结构MySQL表对应数据 MySQL表结构 CREATE TABLE idcard_contrast (code varchar(2000) NOT NULL COMMENT 身份证前六位,value varchar(3000) DEFAULT NULL COMMENT 对应地址 ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT身份证对照表;MySQL表对…

自编String类型(C++)

设计思路&#xff1a; 首先自己编写了左移运算符的重载&#xff0c;方便后续测试时输出该String类 对于to_lower_case函数&#xff0c;遍历字符串&#xff0c;并修改所有大写字母。对于to_int函数&#xff0c;从头向尾遍历字符串&#xff0c;将每个数字字符转化为数字&#xf…

从字符串到序列:Jinja2 过滤器的终极指南(Jinja2 filter过滤器的使用方法整理与总结)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 过滤器 📒📝 字符串过滤器📝 数字过滤器📝 列表和序列过滤器📝 字典过滤器📝 自定义过滤器🎈 演示示例🎈📝 字符串过滤器📝 数字过滤器📝 列表和序列过滤器📝 字典过滤器📝 自定义过滤器

数组的扩容与缩容

数组的扩容与缩容 文章目录 数组的扩容与缩容数组的扩容内存分析 数组的缩容内存分析内存分析 数组的扩容 数组扩容是指当原有数组的空间不足以容纳更多的元素时&#xff0c;创建一个新的、长度更大的数组&#xff0c;并将原数组中的元素复制到新数组中&#xff0c;然后更新原…

ubuntu 24.04 向日葵桌面版安装

向日葵桌面版 ubuntu24.04向日葵无法安装&#xff0c;缺少依赖。向日葵缺少依赖&#xff0c;“有未能满足的依赖关系”。解决方案。 1. 下载本体 mkdir oraysun && cd oraysun wget https://d.oray.com/sunlogin/linux/SunloginClient_15.2.0.63062_amd64.deb2. 下载…

iOS 创建开源库时如何使用图片和xib资源

参考文章 参考文章 使用xib的正确姿势 #define MAIN_BUNDLE [NSBundle bundleForClass:[self class]] //获取bundle [[MAIN_BUNDLE loadNibNamed:itemResuableStr owner:self options:nil] lastObject]; //加载xib [tempCollectionView registerNib:[UINib nibWithNibName…

Word文件后缀

Word文件后缀 .docx文件为Microsoft Word文档后缀名&#xff0c;基于XML文件格式 .dotm为Word启用了宏的模板 .dotx为Word模板 .doc为Word97-2003文档&#xff0c;二进制文件格式 参考链接 Word、Excel 和 PowerPoint 的文件格式参考 Learn Microsoft

类和对象【四】运算符重载

文章目录 运算符重载的概念运算符重载&#xff08;函数&#xff09;返回值类型&#xff1a;任意类型函数名&#xff1a;operator已有操作符 运算符重载&#xff08;函数&#xff09;的特点和注意点3个比较特殊的运算符重载赋值运算符&#xff08;&#xff09;重载返回值类型和返…