Java-常见面试题收集(五)

十一 并发编程

1 BIO、NIO、AIO 的区别

  同步阻塞 I/O(BIO):同步阻塞 I/O,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,可以通过线程池机制来改善。BIO 方式适用于连接数目比较小且固定的架构,这种方式对服务端资源要求比较高,并发局限于应用中,在 jdk1.4以前是唯一的 io 现在,但程序直观简单易理解

  同步非阻塞 I/O(NIO):同步非阻塞 I/O,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有 IO 请求时才启动一个线程进行处理。NIO 方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,jdk1,4 开始支持

  异步非阻塞 I/O(AIO):异步非阻塞 I/O,服务器实现模式为一个有效请求一个线程,客户端的 IO 请求都是由操作系统先完成了再通知服务器用其启动线程进行处理。AIO 方式适用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用 OS 参与并发操作,编程比较复杂,jdk1.7 开始支持

2 Files 的常用方法都有哪些

Files.exists() 检测文件路径是否存在
Files.createFile()创建文件
Files.createDirectory()创建文件夹
Files.delete() 删除文件或者目录
Files.copy() 复制文件
Files.move() 移动文件
Files.size()查看文件个数
Files.read() 读取文件
Files.write()写入文件

3 字节流与字符流

  字符流是由 Java 虚拟机将字节转换得到的,问题就出在这个过程还算是非常耗时,并且,如果我们不知道编码类型就很容易出现乱码问题。所以, I/O 流就干脆提供了一个直接操作字符的接口,方便我们平时对字符进行流操作。如果音频文件、图片等媒体文件用字节流比较好,如果涉及到字符的话使用字符流比较好

4 java 序列化

  序列化:将 Java 对象转换成字节流的过程。当 Java 对象需要在网络上传输 或者 持久化存储到文件中时,就需要对 Java 对象进行序列化处理。

  反序列化:将字节流转换成 Java 对象的过程。

  序列化的实现:类实现 Serializable 接口,这个接口没有需要实现的方法。实现 Serializable 接口是为了告诉 jvm 这个类的对象可以被序列化。

5 Java 序列化中某些字段不想进行序列化

  对于不想进行序列化的变量,使用 transient 关键字修饰。
  transient 关键字的作用是:阻止实例中那些用此关键字修饰的的变量序列化;当对象被反序列化时,被transient 修饰的变量值不会被持久化和恢复。transient 只能修饰变量,不能修饰类和方法

6 获取用键盘输入常用的两种方法

  方法 1:通过 Scanner

Scanner input = new Scanner(System.in);
String s = input.nextLine();
input.close();

  方法 2:通过 BufferedReader

BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
String s = input.readLine();

十二 WEB 基础

1 get 和 post 请求的区别

  GET 请求只能 URL 编码,而 POST 支持多种编码方式
  GET 请求只接受 ASCII 字符的参数,而 POST 则没有限制
  GET 请求的参数通过 URL 传送,而 POST 放在 Request Body 中
  GET 相对于 POST 更不安全,因为参数直接暴露在 URL 中
  GET 请求会被浏览器主动缓存,而 POST 不会(除非自己手动设置)
  GET 请求在 URL 传参有长度限制,而 POST 则没有限制
  GET 产生的 URL 地址可以被收藏,而 POST 不可以
  GET 请求的参数会被完整的保留在浏览器的历史记录里,而 POST 的参数则不会
  GET 在浏览器回退时是无害的,而 POST 会再次提交请求

2 转发(Forward)和重定向(Redirect)的区别

  转发是服务器行为,重定向是客户端行为。

  从地址栏显示来说forward 是服务器请求资源,服务器直接访问目标地址的 URL,把那个 URL 的响应内容读取过来,然后把这些内容再发给浏览器。浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址。redirect 是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,所以地址栏显示的是新的 URL。

  从数据共享来说forward:转发页面和转发到的页面可以共享 request 里面的数据。redirect:不能共享数据。

  从运用地方来说forward:一般用于用户登陆的时候,根据角色转发到相应的模块。redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等。

  从效率来说forward:高。redirect:低。

3 JSP 和 Servlet 是什么关系

  Servlet 是一个特殊的 Java 程序,它运行于服务器的 JVM 中,能够依靠服务器的支持向浏览器提供显示内容。JSP 本质上是 Servlet 的一种简易形式,JSP会被服务器处理成一个类似于 Servlet 的 Java 程序,可以简化页面内容的生成。

  Servlet 和 JSP 最主要的不同点在于,Servlet 的应用逻辑是在 java 文件中,并且完全从表示层中的 HTML 分离开来。而 JSP 的情况是 Java 和HTML 可以组合成一个扩展名为 .jsp 的文件。

4 Servlet 有哪些作用域

  request(请求作用域): 范围是从请求创建到请求结束这段时间,一个请求涉及到的多个跳转都共用一个 request 对象,也就是在作用域范围内。
  session(会话作用域):范围在客户端和服务器端持续连接的过程,可以理解为打开浏览器访问服务器端资源开始直到关闭浏览器的整个过程为一个会话域。
  servletContext:(全局作用域):范围是服务器 Web 项目启动到停止,任何客户端都可以在这个公共内存区域存取数据。

5 Cookie 和 Session 的的区别

  session 在服务器端,cookie 在客户端(浏览器)
  session 默认被存在在服务器的一个文件里(不是内存)
  session 的运行依赖 session id,而 session id 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie,同时 session 也会失效,但是可以通过其它方式实现,比如在 url 中传递 session id
  session 可以放在文件、数据库、或内存中都可以用户验证这种场合一般会用 session

6 常见的 HTTP 响应状态码

常见的 HTTP 相应状态码
200:请求被正常处理
204:请求被受理但没有资源可以返回
206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行 GET 方
法,相应报文中通过 Content-Range 指定范围的资源。
301:永久性重定向
302:临时重定向
303:与 302 状态码有相似功能,只是它希望客户端在请求一个 URI 的时候,
能通过 GET 方法重定向到另一个 URI304:发送附带条件的请求时,条件不满足时返回,与重定向无关
307:临时重定向,与 302 类似,只是强制要求使用 POST 方法
400:请求报文语法有误,服务器无法识别
401:请求需要认证
403:请求的对应资源禁止被访问
404:服务器无法找到对应资源
500:服务器内部错误
503:服务器正忙

7 HTML、CSS、JavaScript 在 WEB 开发中的作用

  HTML(HyperText Markup Language,超文本标记语言)主要用于描述和定义网页的内容。它使用一系列标签来定义网页的不同部分,如标题、段落、图像、链接等,并且包含了Web页面的布局信息。通过HTML,开发者可以创建各种不同类型的网页,确保这些页面能够被各种不同的浏览器正确解读。HTML的主要作用是为网页提供基础的结构和内容,让用户能够清晰地浏览和理解页面信息。

  CSS(Cascading Style Sheets,层叠样式表)则负责设置元素的样式属性,控制网页的布局和外观。通过CSS,开发者可以方便地更改网页的字体、颜色、大小、间距等样式,使页面更加美观和易于阅读。此外,CSS还提供了灵活的方式来更新文档的格式,并保持多个文档之间的一致性。它减少了文件传输的大小,从而加快了页面加载速度,并且允许为多种设备或媒体优化网页,为不同的呈现设备以不同的查看样式表示相同的HTML文档。

  JavaScript则是一种脚本语言,主要用于实现网页上的交互效果和功能。通过JavaScript,开发者可以实现各种动态效果,如拖拽元素、下拉菜单滑动、隐藏数据、网页自动切换等。它还可以用于处理表单数据,控制网页的运行和引擎,以及操作数据库等。JavaScript在Web开发中起到了增强用户体验、提高网页交互性的作用。

  总的来说,HTML、CSS和JavaScript在WEB开发中相互协作,共同构建出功能丰富、美观易用的网页。HTML提供网页的基础结构和内容,CSS负责样式和布局的设计,而JavaScript则实现网页的交互效果和动态功能。这三者的结合使得Web开发更加高效和灵活。

8 如何防止表单重复提交

  防止表单重复提交是一个常见的需求,因为用户可能因为各种原因(如网络延迟、误操作等)多次点击提交按钮,导致数据重复插入或产生其他不期望的结果。以下是一些常用的方法来防止表单重复提交:

  禁用提交按钮:
  在用户点击提交按钮后,立即禁用该按钮,防止用户再次点击。但这种方法并不是最安全的,因为用户仍然可以通过其他方式(如脚本)重复提交。(按钮提交后隐藏或不可再点击)

  使用令牌(Token):
  在服务器端生成一个唯一的令牌(Token),并将其存储在用户的会话中。当表单渲染时,将这个令牌作为隐藏字段添加到表单中。当用户提交表单时,服务器检查这个令牌是否有效且未被使用过。如果是,则处理表单数据并销毁令牌;如果不是,则拒绝处理并可能返回错误信息。(后台生成页面 token(标识),页面表单提交携带 token,后台进行校验)在服务器端,你需要验证并销毁这个令牌。

  重定向:
  在处理完表单提交后,将用户重定向到另一个页面(或相同的页面,但不带表单)。这样,即使用户再次点击浏览器的“后退”按钮并尝试重新提交,由于表单数据已经不在浏览器中了,所以不会再次提交。(提交成功后页面重定向)

  使用Post/Redirect/Get模式:
  这是另一种重定向策略,尤其适用于防止用户因为多次点击或刷新页面而重复提交。当表单通过POST方法提交时,服务器处理数据并将用户重定向到一个新的URL(通常是通过GET方法)。这样,用户刷新页面或多次点击提交按钮都不会再次触发POST请求。

  客户端JavaScript验证:
  虽然这不是最安全的方法,但你可以使用JavaScript在客户端进行基本的验证和防止重复提交。例如,你可以设置一个标志来跟踪表单是否已经提交。

  使用AJAX提交:
  通过AJAX(异步JavaScript和XML)提交表单可以避免页面刷新,并在提交后通过JavaScript禁用或隐藏提交按钮。但请注意,即使使用AJAX,你仍然需要在服务器端进行验证以防止重复提交。

  设置表单的autocomplete属性为"off":这可以防止浏览器自动填充表单数据,但并不能完全防止重复提交。

  数据库主键唯一

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python的一些知识点

在C C Java中,基本数据类型变量(将常量数据存储在变量空间当中) int a 3; int b 4; 在C C中,指针变量(存储的是变量的物理内存地址) int a 3; int* b; b &a; int** c; c &b; printf("%d&…

jira安装与配置

1. 环境准备 环境要求 1) JDK1.8以上环境配置 2) Mysql数据库5.7.13 3) Jira版本7及破解包 1.1 JDK1.8安装配置 1) 首先下载 JDK1.8, - 网址:https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html - windows64 版&am…

Vue3气泡卡片(Popover)

效果如下图:在线预览 APIs 参数说明类型默认值必传title卡片标题string | slot‘’falsecontent卡片内容string | slot‘’falsemaxWidth卡片内容最大宽度string | number‘auto’falsetrigger卡片触发方式‘hover’ | ‘click’‘hover’falseoverlayStyle卡片样式…

开源AI引擎:利用影像处理与目标检测技术对违章建筑排查

一、项目案例介绍 随着城市化进程的加快,城市规划和管理工作面临着前所未有的挑战,违章建筑的排查与处理成为了城市管理中的一项重要任务。传统的违章建筑排查方法依赖于人力巡查,效率低下且难以全面覆盖。为了解决这一问题,现代…

C++资产设备管理系统

一、引言 1.1 项目设计背景及意义 1.1.1理论研究基础 (1)C在C的基础上增加了面向对象的机制。 (2)充分利用面向对象机制中的多态性实现函数的设计。 1.1.2 技术层面的支持 运用系统为C面向对象程序设计提供的各种设计方法和V…

DAZ Studio中常用的快捷键组合

CtrlAlt左键: 旋转视图CtrlAlt右键: 平移视图CtrlF: 在Mac上对应AppleF,聚焦选中的物体Alt方向键: 平移视图CtrlP: 返回透视视图W/A/S/D: 上/下/左/右视图ShiftF11: 在Mac上可能需要添加Option键,全屏模式F3: 启用X射线视见效果Ctrl1到0: 切换各种渲染式样CtrlL: 切换场景灯光 …

Midjourney辞典AIGC中英双语图文辞典+Midjourney提示关键词

完整内容下载:https://download.csdn.net/download/u010564801/89042077 完整内容下载:https://download.csdn.net/download/u010564801/89042077 完整内容下载:https://download.csdn.net/download/u010564801/89042077

基于Java在线考试系统系统设计与实现(源码+部署文档)

博主介绍: ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到 Java项目精品实…

element表格 加滚动,监听底部实现分页加载

表格要实现滚动很简单,给他加一个高度即可 height"300" 然后是监听事件 mounted() {this.lazyLoading();}, methods:{lazyLoading(){let dom document.querySelector(".el-table__body-wrapper");dom.addEventListener("scroll", (…

适合工业应用,MAX42408AFOA、MAX42408AFOB、MAX42410AFOA采用小解决方案尺寸的高功率DC/DC转换器

产品简介 MAX42408/MAX42410均为高度集成的同步降压转换器,具有内部高侧和低侧开关。这些IC均可在4.5V至36V的输入电压范围内提供高达8A/10A的电流。电压质量可以通过PGOOD信号来监测。MAX42408/MAX42410可以在压差模式下以99%的占空比运行,非常适合工业…

创业最大的机会是什么?2024普通人的机会!2024创业新风口!2024轻资产创业!2024年做什么行业赚钱有前景?

开封王婆的爆火就是商机的展现!她就是敏锐的发现了婚恋市场上的空白点,看到了年轻人对真实、自由恋爱关系的渴望,以及对情感生活自主性和独立性的追求。并且除了人力几乎没有没有任何成本。而且,这种创业模式几乎只需要人力投入&a…

纯前端网页播放20路海康威视、大华RTSP视频流,调用双显卡GPU加速

关于网页播放摄像头RTSP视频流,网上有很多免费开源方案,大多数是通过把在服务器端RTSP转码成HLS或者RTMP等前端可以播放的视频流,然后推到前端播放,但是大多数延迟非常高(比如:HLS延迟达到十几秒&#xff0…

Springboot实现qq邮件的发送

一、打开必要的邮件设置 首先登录qq邮箱官网登录之后,在设置中将传输协议给打开,我们需要用这个秘钥作为发件人的邮箱授权。 这里开启之后,记住这个秘钥。 二、代码编写 首先我们将作为发送邮件的账户信息写入配置文件。 spring:mail:hos…

#include<初见C语言之指针(5)>

目录 一、sizeof和strlen的对比 1. sizeof 2.strlen 二、数组和指针题解析 1. ⼀维数组 1.1数组名理解 2.字符数组 3. ⼆维数组 三、指针运算题解析 总结 一、sizeof和strlen的对比 1. sizeof 我们前面介绍过sizeof是单目操作符 sizeof括号中有表达式,不…

力扣19 链表 删除倒数N结点

目录 问题: 1.链表的组成结构 2.如何改变倒数第N个结点 2.1 求链表长度 2.2 找到倒数第N个结点前一个结点 2.3 让倒数N前一个改变即可 3.源代码示范 问题: 1.链表的组成结构 单向链表 由value next 组成 ,value包括此结点的各基础属…

【虹科干货】长文预警!使用ntopng和NetFlow/IPFIX检测Dos攻击(上)

为了和大家探讨网络安全领域中的关键问题,我将分两期来展示如何使用ntopng和NetFlow/IPFIX检测Dos攻击。在本篇中,我先简单介绍网络安全面临的挑战、为何网络流量分析在应对网络安全挑战中起重要作用,此外,我会介绍在此次检测中使…

【机器学习】代价函数

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:机器学习 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进…

绍兴市经信局副局长胡小君一行莅临迪捷软件调研走访

2024年3月27日下午,绍兴市经信局党组成员、副局长胡小君一行莅临迪捷软件调研走访。 胡局长一行实地参观了迪捷软件办公环境,对迪捷软件的发展历程、产品应用、未来发展计划等情况进行深入了解,充分倾听了迪捷软件当前遇到的困难,…

推动制药行业数字化转型:基于超融合架构的MES一体机解决方案

随着中国对信息化重视程度的不断加深,制药行业作为国民经济的重要支柱之一,也在积极寻求通过数字化手段提升产业效率与产品质量。自党的十六大提出“以信息化带动工业化”的战略以来,制药业的这一转型探索尤为迫切。 在现代制药生产中&#…

后端之卡尔曼滤波

后端之卡尔曼滤波 前言 在很久之前,人们刚结束信息传递只能靠信件的时代,通信技术蓬勃发展,无线通信和有线通信走进家家户户,而著名的贝尔实验室就在这个过程做了很多影响深远的研究。为了满足不同电路和系统对信号的需求&#…
最新文章