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一个开源的日志…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...

网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...