2024最新!!Java后端面试题(4)看这一篇就够了!!!!
七、异常
- throw 和 throws 的区别?
throw用来显式地抛出一个异常,而throws则用于在方法声明中指明该方法可能抛出的异常。简单来说,throw是抛出异常的实际动作,throws是告知调用者这个方法可能会抛出哪些异常的声明。
- final、finally、finalize 有什么区别?
final是一个修饰符,用来表示不可改变的,比如常量、无法被继承的类、不可重写的方法。finally是用于捕获异常时,保证一定会执行的代码块,即使捕获的异常没有处理。finalize是一个方法,它会在垃圾回收器确定没有引用指向对象后,自动调用,用于清理资源。
- try-catch-finally 中哪个部分可以省略?
- 你可以省略
catch部分,仅保留try和finally。在这种情况下,即使没有捕捉到异常,finally块中的代码依然会执行。
- try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
- 是的,不管
catch中有没有return语句,finally块中的代码都一定会执行。即使在catch中抛出异常或者return,finally块都会执行。
- 常见的异常类有哪些?
- 常见异常类包括:
NullPointerException:空指针异常。ArrayIndexOutOfBoundsException:数组越界异常。ClassCastException:类型转换异常。IOException:输入输出异常。SQLException:数据库访问异常。IllegalArgumentException:非法参数异常。
八、网络
- http 响应码 301 和 302 代表的是什么?有什么区别?
301表示永久重定向,告诉客户端所请求的资源已被永久移动到新 URL。302表示临时重定向,资源临时在新位置,客户端仍应使用原有 URL。因此,301在SEO上更有利,因为它告知搜索引擎新地址是永久的。
- forward 和 redirect 的区别?
forward是服务器内部的转发,客户端只会看到一个请求,URL不变;而redirect是客户端收到回应后会发送一个新的请求,URL会变化。这意味着forward无法携带参数,而redirect可以。
- 简述 tcp 和 udp的区别?
- TCP是面向连接的协议,保证数据包的顺序和完整性,适合需要可靠性的应用,比如HTTP。而UDP是无连接的,不保证发送顺序,适合对速度敏感但不需要可靠性的应用,比如视频直播。
- tcp 为什么要三次握手,两次不行吗?为什么?
- 三次握手用来确保双方都能发送和接收信息,第一次握手是客户端发起连接请求,第二次是服务端确认连接,第三次是客户端确认收到。两次握手无法确保连接的可靠性,可能导致数据丢失或连接成立失败。
- 说一下 tcp 粘包是怎么产生的?
- 粘包是指多个TCP数据包被合并成一个包发送,或者一个数据包被分成多个小包发送。产生的原因主要是因为TCP是面向流的协议,数据的边界不是固定的,当发送方进行快速发送时,接收方可能接收到粘在一起的数据。
- OSI 的七层模型都有哪些?
- 七层模型包括:
- 物理层:传输位流(电缆、光缆等)。
- 数据链路层:点对点之间的传输(如MAC地址)。
- 网络层:路由选择与转发(如IP协议)。
- 传输层:确保数据完整性(如TCP、UDP)。
- 会话层:管理会话的建立与管理。
- 表示层:数据格式转换与加密。
- 应用层:用户与应用的交互(如HTTP、FTP等)。
- get 和 post 请求有哪些区别?
GET请求在URL中传递数据,并且数据长度有限,适合获取资源。POST请求将数据放在请求体中,包含的数据量大且没有长度限制,适合创建或更新资源。此外,GET请求是幂等的,而POST可能会造成副作用。
- 如何实现跨域?
- 跨域请求可以通过以下几种方式实现:
- CORS(跨域资源共享)是最常见的方法,通过设置HTTP头来允许特定域的访问。
- JSONP可以用于GET请求,通过脚本标签的方式来跨域。
- 反向代理,即通过后端服务代理数据请求。
- 说一下 JSONP 实现原理?
- JSONP(JSON with Padding)通过动态生成
<script>标签,实现跨域请求。请求的响应是一个函数调用,将数据作为参数传递给该函数。由于浏览器支持跨域加载<script>标签,JSONP可以绕过同源策略。
九、设计模式
- 说一下你熟悉的设计模式?
- 我比较熟悉的设计模式包括:
- 单例模式:确保一个类只有一个实例,并提供全局访问。
- 工厂模式:提供一个接口用于创建对象,但具体实现由子类决定。
- 观察者模式:定义对象间的一种一对多的依赖关系,当一个对象状态改变时,其它依赖对象会收到通知并自动更新。
- 策略模式:定义一系列相似的算法,将它们封装起来并使它们可以相互替换。
- 简单工厂和抽象工厂有什么区别?
- 简单工厂模式将对象的创建和使用分离,客户端通过工厂类来获取对象,而抽象工厂模式则提供一个接口来创建一系列相关或相互依赖的对象。简单工厂通常是针对某一类产品,而抽象工厂则是工厂类和产品类的抽象,更加具有灵活性。
十、Spring/Spring MVC
- 为什么要使用 spring?
- Spring框架提供了松耦合的架构,支持控制反转(IoC)和面向切面编程(AOP),使得代码更加模块化,易于测试和维护。另外,Spring具有丰富的生态系统,能够集成各种框架和技术。
- 解释一下什么是 aop?
- AOP(面向切面编程)是一种编程范式,用于将横切关注点(如日志、事务管理、安全性)分离出业务逻辑代码,提高代码的可重用性与维护性。
- 解释一下什么是 ioc?
- IoC(控制反转)是一种设计原则,它将对象的创建与对象的使用分离。在Spring中,通过IoC容器来管理对象的生命周期和依赖关系,让对象不再自己创建依赖。
- spring 有哪些主要模块?
- Spring主要模块包括:
- Spring Core:IoC和依赖注入。
- AOP:面向切面编程。
- Data Access/Integration:数据访问和集成模块。
- Web:Web开发模块。
- Spring MVC:基于请求响应的Web框架。
- Spring Security:安全框架。
- Spring Boot:快速构建Spring应用的工具。
- spring 常用的注入方式有哪些?
- Spring有三种常用的注入方式:
- 构造器注入:通过构造函数传递依赖。
- setter方法注入:通过setter方法进行依赖注入。
- 接口注入:通过实现特定接口的方式进行依赖注入。
- spring 中的 bean 是线程安全的吗?
- Spring中的单例Bean是线程安全的,因为它们是单一实例在整个应用中共享的。但如果Bean的属性是可变的,你需要保证自身的线程安全。对于作用域为Prototype的Bean,则每次请求都会创建新实例,不存在线程安全问题。
- spring 支持几种 bean 的作用域?
- Spring支持多种Bean作用域:
- singleton:单例,默认作用域。
- prototype:原型,每次请求都创建新的Bean。
- request:Web环境下,每个HTTP请求都会生成一个Bean。
- session:Web环境下,每个HTTP会话都会生成一个Bean。
- globalSession:在Portlet环境下,每个全局会话生成一个Bean。
- spring 自动装配 bean 有哪些方式?
- Spring自动装配有几种方式:
- byType:根据类型进行自动装配。
- byName:根据Bean名称进行装配。
- constructor:通过构造方法进行装配。
- @Autowired注解:用于标注要自动装配的字段、方法或构造函数。
- spring 事务实现方式有哪些?
- Spring支持两种事务管理方式:
- 声明式事务管理:通过XML配置或注解(如
@Transactional)来管理事务。 - 编程式事务管理:通过TransactionTemplate手动管理事务。
- 声明式事务管理:通过XML配置或注解(如
- 说一下 spring 的事务隔离?
- Spring支持五种事务隔离级别:
- DEFAULT:使用数据库默认隔离级别。
- READ_UNCOMMITTED:允许读取未提交的数据。
- READ_COMMITTED:只能读取已提交的数据。
- REPEATABLE_READ:在同一事务中多次读取,相同数据一致性。
- SERIALIZABLE:最高隔离级别,完全避免并发。
- 说一下 spring mvc 运行流程?
- Spring MVC流程:
- 客户端发送请求。
- DispatcherServlet接收请求并根据URL找到对应的Controller。
- Controller处理请求并返回Model和View。
- ViewResolver根据逻辑视图名找到具体的视图。
- DispatcherServlet将Model传递给视图,生成最终的HTML响应返回给客户端。
- spring mvc 有哪些组件?
- Spring MVC的主要组件包括:
- DispatcherServlet:中央控制器,负责请求调度。
- Controller:处理请求的业务逻辑。
- ModelAndView:封装模型数据和视图信息。
- ViewResolver:解析视图。
- HandlerMapping:映射请求到具体的Controller。
- @RequestMapping 的作用是什么?
@RequestMapping用于将HTTP请求的URL映射到对应的Controller方法,从而定义该方法如何处理请求,包括请求方法、URL模式等。
- @Autowired 的作用是什么?
@Autowired注解用于自动装配Bean,可以标注在字段、构造方法或setter方法上,Spring会根据类型或名称自动匹配并注入依赖对象。
相关文章:
2024最新!!Java后端面试题(4)看这一篇就够了!!!!
七、异常 throw 和 throws 的区别? throw用来显式地抛出一个异常,而throws则用于在方法声明中指明该方法可能抛出的异常。简单来说,throw是抛出异常的实际动作,throws是告知调用者这个方法可能会抛出哪些异常的声明。 final、f…...
springboot整合sentinel和对feign熔断降级
一、准备 docker安装好sentinel-dashboard(sentinel控制台),参考docker安装好各个组件的命令启动sentinel-dashboard,我的虚拟机ip为192.168.200.131,sentinel-dashboard的端口为8858 二、整合sentinel的主要工作 在…...
遗传算法与深度学习实战——使用进化策略实现EvoLisa
遗传算法与深度学习实战——使用进化策略实现EvoLisa 0. 前言1. 使用进化策略实现 EvoLisa2. 运行结果相关链接 0. 前言 我们已经学习了进化策略 (Evolutionary Strategies, ES) 的基本原理,并且尝试使用 ES 解决了函数逼近问题。函数逼近是一个很好的基准问题&…...
HttpServletRequest简介
HttpServletRequest是什么? HttpServletRequest是一个接口,其父接口是ServletRequest;HttpServletRequest是Tomcat将请求报文转换封装而来的对象,在Tomcat调用service方法时传入;HttpServletRequest代表客户端发来的请…...
c++开发之编译curl(安卓版本)
为了在 Android 上编译支持 OpenSSL 的 libcurl,你需要手动编译 libcurl 和 OpenSSL,并确保它们能够在 Android 的交叉编译环境中正常工作。以下是详细的步骤说明。 1. 安装必要工具 在编译之前,确保你已经安装了以下工具: And…...
QT+ESP8266+STM32项目构建三部曲三--QT从环境配置到源程序的解析
一、阿里云环境配置 大家在编写QT连接阿里云的程序之前,先按照下面这篇文章让消息可以在阿里云上顺利流转 QTESP8266STM32项目构建三部曲二--阿里云云端处理之云产品流转-CSDN博客文章浏览阅读485次,点赞7次,收藏4次。创建两个设备ÿ…...
Web APIs 5:Window对象(BOM)+本地存储
Web APIs 5(BOM:Window对象本地存储) 1.BOM(浏览器对象模型)(后面几个对象都为BOM对象) BOM对象包含:navigator、location、document(DOM对象)、history、screenBOM是一个全局对象,即JS中的顶…...
神经网络(四):UNet图像分割网络
文章目录 一、简介二、网络结构2.1编码器部分2.2解码器部分2.3完整代码 三、实战案例 论文链接:点击跳转 一、简介 UNet网络是一种用于图像分割的卷积神经网络,其特点是采用了U型网络结构,因此称为UNet。该网络具有编码器和解码器结构&#…...
Java 编码系列:注解处理器详解与面试题解析
引言 在上一篇文章中,我们详细探讨了 Java 注解的基本概念、自定义注解、元注解等技术。本文将继续深入探讨 Java 注解处理器(Annotation Processor),介绍如何编写注解处理器,并结合大厂的最佳实践和面试题详细解析其…...
C语言 | Leetcode C语言题解之第441题排列硬币
题目: 题解: class Solution { public:int arrangeCoins(int n) {return (int) ((sqrt((long long) 8 * n 1) - 1) / 2);} };...
Linux noVNC远程桌面(xfce)部署
一、安装 VNC 服务器和桌面环境 Notebook实验 常用vnc服务 VNC (Virtual Network Computing) 是一种远程桌面协议,可以让你通过网络访问服务器的图形界面。 TurboVNC:专为图形密集型应用设计,尤其适合 3D 可视化和高分辨率图像的远程传输…...
【网络安全】身份认证
1. 身份认证 1.1 定义 身份认证(Authentication)是确认用户身份的过程,确保只有授权的用户才能访问系统或资源。它通常涉及验证用户提供的凭证,如密码、生物特征或其他识别标志。 1.2 重要性 身份认证是信息安全的第一道防线&…...
LeetCode - #124 二叉树中的最大路径和(Top 100)
文章目录 前言1. 描述2. 示例3. 答案关于我们前言 本题为 LeetCode 前 100 高频题 我们社区陆续会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swift 算法题题解整理为文字版以方便大家学习与阅读。 LeetCode 算法到目前我们已经更新到 123 期…...
Java:插入排序
目录 排序的概念 插入排序 直接插入排序 哈希排序 排序的概念 排序:所谓的排序,就是使一串记录,按照某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个…...
How FAR ARE WE FROM AGI?(ICLR AGI Workshop 2024)概览
关注B站可以观看更多实战教学视频:hallo128的个人空间 How FAR ARE WE FROM AGI?官网 How FAR ARE WE FROM AGI?(ICLR AGI Workshop 2024) 该研讨会将于2024年5月11日在奥地利维也纳以混合模式举行,作为 ICLR 2024年会议的一部…...
leetcode刷题day33|动态规划Part02(62.不同路径、63. 不同路径 II、 343.整数拆分、96.不同的二叉搜索树)
62.不同路径 机器人从(0 , 0) 位置出发,到(m - 1, n - 1)终点。 动规五部曲 1、确定dp数组(dp table)以及下标的含义 dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路…...
基于Python大数据的B站热门视频的数据分析及可视化系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…...
matlab-批处理图像质量变化并形成折线图 (PSNR)
%修改路径就能用,图片分辨率要一致 %clc;clear all;close all;tic;%清理内存 file_pathE:\test\resources\image\;% 批量图像所在的文件夹下 file_save_pathE:\test\resources\SaveImage\;% 要存储的地址 img_path_listdir(strcat(file_path,*.jpg));% 获取批量bm…...
[Doc][Ros2]ros2中Qos(Quality of Service,服务质量)介绍
在 ROS 2 中,QoS(Quality of Service,服务质量)是用于控制节点之间消息传递的可靠性、历史存储和数据持久性等方面的机制。通过 QoS 设置,用户可以更细粒度地控制消息传递的行为,确保在不同网络环境或应用场景中满足特定的通信需求。 几个常用的包: QoSProfile: 含义…...
SpringBoot日志集成-LogBack
Log4J:最早的Java日志框架之一,由Apache基金会发起,提供灵活而强大的日志记录机制JDK自带的日志框架:java.util.logging.Logg,是JDK1.4之后提供的日志API,已淘汰logback: logback一个开源的日志…...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...
