当前位置: 首页 > news >正文

2024最新!!Java后端面试题(4)看这一篇就够了!!!!

七、异常

  1. throw 和 throws 的区别?
  • throw用来显式地抛出一个异常,而throws则用于在方法声明中指明该方法可能抛出的异常。简单来说,throw是抛出异常的实际动作,throws是告知调用者这个方法可能会抛出哪些异常的声明。
  1. final、finally、finalize 有什么区别?
  • final是一个修饰符,用来表示不可改变的,比如常量、无法被继承的类、不可重写的方法。
  • finally是用于捕获异常时,保证一定会执行的代码块,即使捕获的异常没有处理。
  • finalize是一个方法,它会在垃圾回收器确定没有引用指向对象后,自动调用,用于清理资源。
  1. try-catch-finally 中哪个部分可以省略?
  • 你可以省略catch部分,仅保留tryfinally。在这种情况下,即使没有捕捉到异常,finally块中的代码依然会执行。
  1. try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
  • 是的,不管catch中有没有return语句,finally块中的代码都一定会执行。即使在catch中抛出异常或者returnfinally块都会执行。
  1. 常见的异常类有哪些?
  • 常见异常类包括:
    • NullPointerException:空指针异常。
    • ArrayIndexOutOfBoundsException:数组越界异常。
    • ClassCastException:类型转换异常。
    • IOException:输入输出异常。
    • SQLException:数据库访问异常。
    • IllegalArgumentException:非法参数异常。

八、网络

  1. http 响应码 301 和 302 代表的是什么?有什么区别?
  • 301表示永久重定向,告诉客户端所请求的资源已被永久移动到新 URL。302表示临时重定向,资源临时在新位置,客户端仍应使用原有 URL。因此,301在SEO上更有利,因为它告知搜索引擎新地址是永久的。
  1. forward 和 redirect 的区别?
  • forward是服务器内部的转发,客户端只会看到一个请求,URL不变;而redirect是客户端收到回应后会发送一个新的请求,URL会变化。这意味着forward无法携带参数,而redirect可以。
  1. 简述 tcp 和 udp的区别?
  • TCP是面向连接的协议,保证数据包的顺序和完整性,适合需要可靠性的应用,比如HTTP。而UDP是无连接的,不保证发送顺序,适合对速度敏感但不需要可靠性的应用,比如视频直播。
  1. tcp 为什么要三次握手,两次不行吗?为什么?
  • 三次握手用来确保双方都能发送和接收信息,第一次握手是客户端发起连接请求,第二次是服务端确认连接,第三次是客户端确认收到。两次握手无法确保连接的可靠性,可能导致数据丢失或连接成立失败。
  1. 说一下 tcp 粘包是怎么产生的?
  • 粘包是指多个TCP数据包被合并成一个包发送,或者一个数据包被分成多个小包发送。产生的原因主要是因为TCP是面向流的协议,数据的边界不是固定的,当发送方进行快速发送时,接收方可能接收到粘在一起的数据。
  1. OSI 的七层模型都有哪些?
  • 七层模型包括:
    • 物理层:传输位流(电缆、光缆等)。
    • 数据链路层:点对点之间的传输(如MAC地址)。
    • 网络层:路由选择与转发(如IP协议)。
    • 传输层:确保数据完整性(如TCP、UDP)。
    • 会话层:管理会话的建立与管理。
    • 表示层:数据格式转换与加密。
    • 应用层:用户与应用的交互(如HTTP、FTP等)。
  1. get 和 post 请求有哪些区别?
  • GET请求在URL中传递数据,并且数据长度有限,适合获取资源。POST请求将数据放在请求体中,包含的数据量大且没有长度限制,适合创建或更新资源。此外,GET请求是幂等的,而POST可能会造成副作用。
  1. 如何实现跨域?
  • 跨域请求可以通过以下几种方式实现:
    • CORS(跨域资源共享)是最常见的方法,通过设置HTTP头来允许特定域的访问。
    • JSONP可以用于GET请求,通过脚本标签的方式来跨域。
    • 反向代理,即通过后端服务代理数据请求。
  1. 说一下 JSONP 实现原理?
  • JSONP(JSON with Padding)通过动态生成<script>标签,实现跨域请求。请求的响应是一个函数调用,将数据作为参数传递给该函数。由于浏览器支持跨域加载<script>标签,JSONP可以绕过同源策略。

九、设计模式

  1. 说一下你熟悉的设计模式?
  • 我比较熟悉的设计模式包括:
    • 单例模式:确保一个类只有一个实例,并提供全局访问。
    • 工厂模式:提供一个接口用于创建对象,但具体实现由子类决定。
    • 观察者模式:定义对象间的一种一对多的依赖关系,当一个对象状态改变时,其它依赖对象会收到通知并自动更新。
    • 策略模式:定义一系列相似的算法,将它们封装起来并使它们可以相互替换。
  1. 简单工厂和抽象工厂有什么区别?
  • 简单工厂模式将对象的创建和使用分离,客户端通过工厂类来获取对象,而抽象工厂模式则提供一个接口来创建一系列相关或相互依赖的对象。简单工厂通常是针对某一类产品,而抽象工厂则是工厂类和产品类的抽象,更加具有灵活性。

十、Spring/Spring MVC

  1. 为什么要使用 spring?
  • Spring框架提供了松耦合的架构,支持控制反转(IoC)和面向切面编程(AOP),使得代码更加模块化,易于测试和维护。另外,Spring具有丰富的生态系统,能够集成各种框架和技术。
  1. 解释一下什么是 aop?
  • AOP(面向切面编程)是一种编程范式,用于将横切关注点(如日志、事务管理、安全性)分离出业务逻辑代码,提高代码的可重用性与维护性。
  1. 解释一下什么是 ioc?
  • IoC(控制反转)是一种设计原则,它将对象的创建与对象的使用分离。在Spring中,通过IoC容器来管理对象的生命周期和依赖关系,让对象不再自己创建依赖。
  1. spring 有哪些主要模块?
  • Spring主要模块包括:
    • Spring Core:IoC和依赖注入。
    • AOP:面向切面编程。
    • Data Access/Integration:数据访问和集成模块。
    • Web:Web开发模块。
    • Spring MVC:基于请求响应的Web框架。
    • Spring Security:安全框架。
    • Spring Boot:快速构建Spring应用的工具。
  1. spring 常用的注入方式有哪些?
  • Spring有三种常用的注入方式:
    • 构造器注入:通过构造函数传递依赖。
    • setter方法注入:通过setter方法进行依赖注入。
    • 接口注入:通过实现特定接口的方式进行依赖注入。
  1. spring 中的 bean 是线程安全的吗?
  • Spring中的单例Bean是线程安全的,因为它们是单一实例在整个应用中共享的。但如果Bean的属性是可变的,你需要保证自身的线程安全。对于作用域为Prototype的Bean,则每次请求都会创建新实例,不存在线程安全问题。
  1. spring 支持几种 bean 的作用域?
  • Spring支持多种Bean作用域:
    • singleton:单例,默认作用域。
    • prototype:原型,每次请求都创建新的Bean。
    • request:Web环境下,每个HTTP请求都会生成一个Bean。
    • session:Web环境下,每个HTTP会话都会生成一个Bean。
    • globalSession:在Portlet环境下,每个全局会话生成一个Bean。
  1. spring 自动装配 bean 有哪些方式?
  • Spring自动装配有几种方式:
    • byType:根据类型进行自动装配。
    • byName:根据Bean名称进行装配。
    • constructor:通过构造方法进行装配。
    • @Autowired注解:用于标注要自动装配的字段、方法或构造函数。
  1. spring 事务实现方式有哪些?
  • Spring支持两种事务管理方式:
    • 声明式事务管理:通过XML配置或注解(如@Transactional)来管理事务。
    • 编程式事务管理:通过TransactionTemplate手动管理事务。
  1. 说一下 spring 的事务隔离?
  • Spring支持五种事务隔离级别:
    • DEFAULT:使用数据库默认隔离级别。
    • READ_UNCOMMITTED:允许读取未提交的数据。
    • READ_COMMITTED:只能读取已提交的数据。
    • REPEATABLE_READ:在同一事务中多次读取,相同数据一致性。
    • SERIALIZABLE:最高隔离级别,完全避免并发。
  1. 说一下 spring mvc 运行流程?
  • Spring MVC流程:
    1. 客户端发送请求。
    2. DispatcherServlet接收请求并根据URL找到对应的Controller。
    3. Controller处理请求并返回Model和View。
    4. ViewResolver根据逻辑视图名找到具体的视图。
    5. DispatcherServlet将Model传递给视图,生成最终的HTML响应返回给客户端。
  1. spring mvc 有哪些组件?
  • Spring MVC的主要组件包括:
    • DispatcherServlet:中央控制器,负责请求调度。
    • Controller:处理请求的业务逻辑。
    • ModelAndView:封装模型数据和视图信息。
    • ViewResolver:解析视图。
    • HandlerMapping:映射请求到具体的Controller。
  1. @RequestMapping 的作用是什么?
  • @RequestMapping用于将HTTP请求的URL映射到对应的Controller方法,从而定义该方法如何处理请求,包括请求方法、URL模式等。
  1. @Autowired 的作用是什么?
  • @Autowired注解用于自动装配Bean,可以标注在字段、构造方法或setter方法上,Spring会根据类型或名称自动匹配并注入依赖对象。

相关文章:

2024最新!!Java后端面试题(4)看这一篇就够了!!!!

七、异常 throw 和 throws 的区别&#xff1f; throw用来显式地抛出一个异常&#xff0c;而throws则用于在方法声明中指明该方法可能抛出的异常。简单来说&#xff0c;throw是抛出异常的实际动作&#xff0c;throws是告知调用者这个方法可能会抛出哪些异常的声明。 final、f…...

springboot整合sentinel和对feign熔断降级

一、准备 docker安装好sentinel-dashboard&#xff08;sentinel控制台&#xff09;&#xff0c;参考docker安装好各个组件的命令启动sentinel-dashboard&#xff0c;我的虚拟机ip为192.168.200.131&#xff0c;sentinel-dashboard的端口为8858 二、整合sentinel的主要工作 在…...

遗传算法与深度学习实战——使用进化策略实现EvoLisa

遗传算法与深度学习实战——使用进化策略实现EvoLisa 0. 前言1. 使用进化策略实现 EvoLisa2. 运行结果相关链接 0. 前言 我们已经学习了进化策略 (Evolutionary Strategies, ES) 的基本原理&#xff0c;并且尝试使用 ES 解决了函数逼近问题。函数逼近是一个很好的基准问题&…...

HttpServletRequest简介

HttpServletRequest是什么&#xff1f; HttpServletRequest是一个接口&#xff0c;其父接口是ServletRequest&#xff1b;HttpServletRequest是Tomcat将请求报文转换封装而来的对象&#xff0c;在Tomcat调用service方法时传入&#xff1b;HttpServletRequest代表客户端发来的请…...

c++开发之编译curl(安卓版本)

为了在 Android 上编译支持 OpenSSL 的 libcurl&#xff0c;你需要手动编译 libcurl 和 OpenSSL&#xff0c;并确保它们能够在 Android 的交叉编译环境中正常工作。以下是详细的步骤说明。 1. 安装必要工具 在编译之前&#xff0c;确保你已经安装了以下工具&#xff1a; And…...

QT+ESP8266+STM32项目构建三部曲三--QT从环境配置到源程序的解析

一、阿里云环境配置 大家在编写QT连接阿里云的程序之前&#xff0c;先按照下面这篇文章让消息可以在阿里云上顺利流转 QTESP8266STM32项目构建三部曲二--阿里云云端处理之云产品流转-CSDN博客文章浏览阅读485次&#xff0c;点赞7次&#xff0c;收藏4次。创建两个设备&#xff…...

Web APIs 5:Window对象(BOM)+本地存储

Web APIs 5&#xff08;BOM&#xff1a;Window对象本地存储&#xff09; 1.BOM(浏览器对象模型)&#xff08;后面几个对象都为BOM对象&#xff09; BOM对象包含&#xff1a;navigator、location、document(DOM对象)、history、screenBOM是一个全局对象&#xff0c;即JS中的顶…...

神经网络(四):UNet图像分割网络

文章目录 一、简介二、网络结构2.1编码器部分2.2解码器部分2.3完整代码 三、实战案例 论文链接&#xff1a;点击跳转 一、简介 UNet网络是一种用于图像分割的卷积神经网络&#xff0c;其特点是采用了U型网络结构&#xff0c;因此称为UNet。该网络具有编码器和解码器结构&#…...

Java 编码系列:注解处理器详解与面试题解析

引言 在上一篇文章中&#xff0c;我们详细探讨了 Java 注解的基本概念、自定义注解、元注解等技术。本文将继续深入探讨 Java 注解处理器&#xff08;Annotation Processor&#xff09;&#xff0c;介绍如何编写注解处理器&#xff0c;并结合大厂的最佳实践和面试题详细解析其…...

C语言 | Leetcode C语言题解之第441题排列硬币

题目&#xff1a; 题解&#xff1a; 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) 是一种远程桌面协议&#xff0c;可以让你通过网络访问服务器的图形界面。 TurboVNC&#xff1a;专为图形密集型应用设计&#xff0c;尤其适合 3D 可视化和高分辨率图像的远程传输…...

【网络安全】身份认证

1. 身份认证 1.1 定义 身份认证&#xff08;Authentication&#xff09;是确认用户身份的过程&#xff0c;确保只有授权的用户才能访问系统或资源。它通常涉及验证用户提供的凭证&#xff0c;如密码、生物特征或其他识别标志。 1.2 重要性 身份认证是信息安全的第一道防线&…...

LeetCode - #124 二叉树中的最大路径和(Top 100)

文章目录 前言1. 描述2. 示例3. 答案关于我们前言 本题为 LeetCode 前 100 高频题 我们社区陆续会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swift 算法题题解整理为文字版以方便大家学习与阅读。 LeetCode 算法到目前我们已经更新到 123 期…...

Java:插入排序

目录 排序的概念 插入排序 直接插入排序 哈希排序 排序的概念 排序&#xff1a;所谓的排序&#xff0c;就是使一串记录&#xff0c;按照某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个…...

How FAR ARE WE FROM AGI?(ICLR AGI Workshop 2024)概览

关注B站可以观看更多实战教学视频&#xff1a;hallo128的个人空间 How FAR ARE WE FROM AGI?官网 How FAR ARE WE FROM AGI?&#xff08;ICLR AGI Workshop 2024&#xff09; 该研讨会将于2024年5月11日在奥地利维也纳以混合模式举行&#xff0c;作为 ICLR 2024年会议的一部…...

leetcode刷题day33|动态规划Part02(62.不同路径、63. 不同路径 II、 343.整数拆分、96.不同的二叉搜索树)

62.不同路径 机器人从(0 , 0) 位置出发&#xff0c;到(m - 1, n - 1)终点。 动规五部曲 1、确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i][j] &#xff1a;表示从&#xff08;0 &#xff0c;0&#xff09;出发&#xff0c;到(i, j) 有dp[i][j]条不同的路…...

基于Python大数据的B站热门视频的数据分析及可视化系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…...

matlab-批处理图像质量变化并形成折线图 (PSNR)

%修改路径就能用&#xff0c;图片分辨率要一致 %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&#xff1a;最早的Java日志框架之一&#xff0c;由Apache基金会发起&#xff0c;提供灵活而强大的日志记录机制JDK自带的日志框架&#xff1a;java.util.logging.Logg&#xff0c;是JDK1.4之后提供的日志API&#xff0c;已淘汰logback&#xff1a; logback一个开源的日志…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...

Docker拉取MySQL后数据库连接失败的解决方案

在使用Docker部署MySQL时&#xff0c;拉取并启动容器后&#xff0c;有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致&#xff0c;包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因&#xff0c;并提供解决方案。 一、确认MySQL容器的运行状态 …...