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一个开源的日志…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释
以Module Federation 插件详为例,Webpack.config.js它可能的配置和含义如下: 前言 Module Federation 的Webpack.config.js核心配置包括: name filename(定义应用标识) remotes(引用远程模块࿰…...
软件工程 期末复习
瀑布模型:计划 螺旋模型:风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合:模块内部功能紧密 模块之间依赖程度小 高内聚:指的是一个模块内部的功能应该紧密相关。换句话说,一个模块应当只实现单一的功能…...
图解JavaScript原型:原型链及其分析 | JavaScript图解
忽略该图的细节(如内存地址值没有用二进制) 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么:保存在堆中一块区域,同时在栈中有一块区域保存其在堆中的地址(也就是我们通常说的该变量指向谁&…...
[USACO23FEB] Bakery S
题目描述 Bessie 开了一家面包店! 在她的面包店里,Bessie 有一个烤箱,可以在 t C t_C tC 的时间内生产一块饼干或在 t M t_M tM 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC,tM≤109)。由于空间…...
