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

后端面试题整理-1

1.Maven 依赖传递产生版本冲突怎么解决?

  1. 升级或降级依赖版本:通过修改相关依赖的版本号,选择与项目其他依赖兼容的版本。可以通过查看 Maven 依赖树来确定哪些依赖冲突,并找出合适的版本号进行调整。
  2. 排除依赖:对于特定的依赖关系,可以使用 <exclusions> 元素来排除传递性依赖。例如,如果某个依赖引入了与其他依赖冲突的版本,你可以在该依赖项的声明中添加 <exclusions> 标签,指定要排除的冲突依赖。
  3. 引入冲突解决依赖:有时可以通过引入专门用于解决依赖冲突的依赖项来解决问题。例如,可以使用 Apache Maven 插件的 maven-dependency-plugin 来分析和解决依赖冲突。
  4. 调整依赖顺序:在 <dependencies> 元素中,可以通过调整依赖声明的顺序来优化依赖解析过程。将可能引起冲突的依赖声明放在前面,可以改变传递性依赖的解析顺序。
  5. 使用 <dependencyManagement> :在项目的根 pom.xml 文件中使用<dependencyManagement> 元素,可以集中管理项目中所有依赖的版本。通过明确指定每个依赖的版本号,可以避免不同模块的依赖版本冲突。

2.HashMap 底层原理?

   JDK 1.7 数组 + 链表 ——> JDK 1.8 数组 + (链表 | 红黑)

(JDK 1.7 HashMap 底层原理)

  1. 初始化一个数组(默认长度16)
  2. 当 put 值时,计算 key 的 hash 值,二次 hash 然后对数组长度取模,对应到数组下标
  3. 如果没有产生 hash 冲突(下标位置没有元素),则直接创建 Node 存入数组
  4. 如果产生 hash 冲突,先进行 equal 比较,相同则取代该元素,不同,则插入链表

(JDK 1.8 HashMap 底层原理)

  1. 计算 key 的 hash 值,二次 hash 然后对数组长度取模,对应到数组下标
  2. 如果没有产生 hash 冲突(下标位置没有元素),则直接创建 Node 存入数组,
  3. 如果产生 hash 冲突,先进行 equal 比较,相同则取代该元素,不同,则判断链表高度插入链表,链表高度达到8,并且数组长度到64则转变为红黑树,长度低于6则将红黑树转回链表
  4. 如果存储的数据 key 为 null ,存在下标为0的位置

3.== 和 equal 有什么区别?

在 Java 中,== 和 equals() 都是比较对象是否相等的方法,但它们的实现方式和比较的含义不同。

== 是比较两个对象是否在内存中引用同一块地址空间,即比较两个对象的内存地址是否相同。如果两个引用变量指向同一块内存地址,则返回 true;否则返回 false。在比较基本数据类型时,使用==比较的是它们的值是否相等。

equals() 是比较两个对象在逻辑上是否相等,即比较两个对象的内容是否相同。在 Java 中,Object 类中的 equals() 方法默认实现就是比较两个对象的内存地址是否相等,因此需要在具体类中重写 equals() 方法来实现逻辑上的相等判断。例如,对于 String 类型的数据,equals() 方法会比较两个字符串的内容是否相等。

总之,==用于比较两个对象的引用是否相等,而 equals() 方法用于比较两个对象在逻辑上是否相等。在比较对象时,应根据具体的需求选择使用 == 或 equals() 方法。

4.Integer 和 int 有什么区别? 应用场景分别是什么?

int 是Java 的基本数据类型之一,用于表示整数值。它占用固定的内存空间,通常是 4个字节。

Integer 是一个类,属于 Java 中的包装类,它将 int 包装为一个对象,从而提供了一些额外的功能。

Integer 类位于 java.lang 包中,因此在使用时不需要显式导入。 int 是基本数据类型,它在内存中的存储效率较高,适用于大量需要整数运算的情况,当需要在面向对象的环境中处理整数值时,可以使用 Integer 包装类。它使得 int 可以像对象一样进行操作。在集合框架(如 ArrayList,HashMap 等)中,由于集合要求存储对象而不是原始数据类型,所以可以使用 Integer 作为元素。在需要进行数据类型转换时,Integer 可以通过方法提供更多灵活性,可以将 Integer 转换为字符串(使用 toString() 方法)Integer 对象允许表示 null 值,而 int 不行。这在某些情况下可能会很有用,比如表示缺失数据。

5.Maven 常用命令?

Maven 是一个 Java 项目构建和管理工具,它可以自动化完成编译、测试、打包、发布等一系列工作。在使用 Maven 时,常用的一些命令如下:

  1. mvn clean:清除项目中的 target 目录。
  2. mvn compile:编译项目源代码。
  3. mvn test:运行项目的测试用例。
  4. mvn package:将项目打包成 jar、war 等格式。
  5. mvn install:将项目安装到本地 Maven 仓库中。

6.Git 的常用命令?

Git 是一款分布式版本控制系统,用于跟踪文件的变化并协调多个人员之间的协作。以下是 Git 中常用的一些命令:

  1. git init:初始化一个新的 Git 仓库。
  2. git clone:克隆远程仓库到本地。
  3. git add:将文件的更改添加到暂存区。
  4. git commit:提交暂存区的更改到版本库。
  5. git push:将本地仓库的更改推送到远程仓库。
  6. git pull:从远程仓库拉取最新的更改到本地。
  7. git log:查看提交日志。
  8. git checkout:切换分支或恢复文件。
  9. git merge:合并指定分支到当前分支。

7.MySQL 调优?

MySQL 的性能调优可以通过多种方式来实现,以下是一些常见的 MySQL 调优方式:

  1. 优化查询语句:通过分析和优化 SQL 查询语句,包括使用合适的索引、避免全表扫描、减少不必要的连接和子查询等,以提高查询性能。
  2. 数据库设计优化:合理设计数据库结构,包括选择合适的数据类型、规范化数据库模式、适当拆分大表等,以提高数据库的性能和扩展性。
  3. 索引优化:对频繁查询的字段添加合适的索引,避免过多或不必要的索引,以加速数据检索操作。
  4. 查询缓存:利用 MySQL 的查询缓存功能,对静态数据进行缓存,减少对数据库的访问次数。
  5. 查询优化器调整:通过分析查询执行计划,对查询优化器进行调整,以提高查询性能。
  6. 分区表:对大型表进行分区,可以提高查询性能和数据维护效率。
  7. 数据库连接池:通过使用数据库连接池,减少数据库连接的创建和销毁开销,提高数据库的并发处理能力。

相关文章:

后端面试题整理-1

1.Maven 依赖传递产生版本冲突怎么解决&#xff1f; 升级或降级依赖版本&#xff1a;通过修改相关依赖的版本号&#xff0c;选择与项目其他依赖兼容的版本。可以通过查看 Maven 依赖树来确定哪些依赖冲突&#xff0c;并找出合适的版本号进行调整。排除依赖&#xff1a;对于特定…...

Python图像处理之光斑分析

文章目录 质心目标截取光斑半径 python图像处理教程&#xff1a;初步&#x1f4f7;插值变换&#x1f4f7;形态学处理&#x1f4f7;滤波 光斑是工程中经常出现的图像数据&#xff0c;其特点是目标明确&#xff0c;分布清晰。对光斑图像的分析&#xff0c;主要包括质心定位、目标…...

软件测试 - 测试用例基本理论

1. 概念 为了特定的目的(该目的是检验代码是否满足用户需求)而设计的文档&#xff0c;文档包含测试输入、执行条件、预期结果等。文档的形式一般是excel表格。 比如说我们买了一台电脑&#xff0c;新买的笔记本检查完外观之后第一步需要查看电脑是否能够正常开机&#xff0c;…...

在 Flutter 中使用 flutter_gen 简化图像资产管理

你是否厌倦了在 Flutter 项目中手动管理图像资产的繁琐任务&#xff1f; 告别手工输入资源路径的痛苦&#xff0c;欢迎使用“Flutter Gen”高效资源管理的时代。在本文中&#xff0c;我将带您从手动处理图像资源的挫折到动态生成它们的便利。 选择1&#xff1a;痛苦手动添加–…...

两天学会微服务网关Gateway-Gateway过滤器

锋哥原创的微服务网关Gateway视频教程&#xff1a; Gateway微服务网关视频教程&#xff08;无废话版&#xff09;_哔哩哔哩_bilibiliGateway微服务网关视频教程&#xff08;无废话版&#xff09;共计17条视频&#xff0c;包括&#xff1a;1_Gateway简介、2_Gateway工作原理、3…...

图像处理 mask掩膜

1&#xff0c;图像算术运算 图像的算术运算有很多种&#xff0c;比如两幅图像可以相加&#xff0c;相减&#xff0c;相乘&#xff0c;相除&#xff0c;位运算&#xff0c;平方根&#xff0c;对数&#xff0c;绝对值等&#xff1b;图像也可以放大&#xff0c;缩小&#xff0c;旋…...

信驰达ESP32-C3/RTL8720CM WiFi开发板RF-WT01上线

为方便客户快速选型和验证WiFi模块&#xff0c;深圳市信驰达科技有限公司推出了WiFi开发板RF-WT01&#xff0c;支持适配信驰达RF-WM-ESP32B1、RF-WM-20CMB1、RF-WM-11AFB1、RF-WM-20DNB1 4款WiFi串口模块使用&#xff0c;方便客户实现对信驰达WiFi模块的快速测试和评估。 图1RF…...

【产品经理方法论——产品的基本概念】

1. 产品学三元素 产品学有三个元素&#xff1a;用户、需求、产品 产品学的内容&#xff1a;根据用户的需求设计产品&#xff0c;使用产品服务用户 仅仅通过三个元素无法说明每个元素的概念&#xff0c;因为三个元素互为说明关系。 通过引入人/群体来说明三个元素的关系。 需…...

推特API(Twitter API)V2 查询用户信息

前面章节已经介绍使用code换取Token的整个流程了&#xff0c;这里不再重复阐述了&#xff0c;下面我们介绍如何使用Token查询用户信息等操作。 1.引入相关依赖Maven <dependency> <groupId>oauth.signpost</groupId> <artifactId>signpost-co…...

在Elasticsearch IK分词器中更新、停用某些专有名词

在Elasticsearch IK分词器中更新、停用某些专有名词 目前IK分词器对于现有的新名词或者流行语没有做区分比如"白嫖" “奥利给”&#xff0c;或者对一些没有用的字比如 “的” "地"进行分词其实没有必要过多的分词只会占用宝贵的内存空间&#xff0c;所以如…...

时钟显示 html JavaScript

sf.html <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>时间</title><script>function showTime(){var timenew Date();var datetime.getDate();var yeartime.getFullYear();var monthtime.getMonth()1;var …...

List<Object>集合对象属性拷贝工具类

目录 问题现象&#xff1a; 问题分析&#xff1a; 解决方法&#xff1a; 问题现象&#xff1a; 最近在项目中经常会使用到BeanUtils工具类来作对象的属性字段拷贝&#xff0c;但如果应用到List集合的话就需要遍历去操作了&#xff0c;如下&#xff1a; 打印结果&#xff1a; …...

请说明Vue中的异步组件加载

Vue中的异步组件加载是指当页面需要渲染某个组件时&#xff0c;可以在需要时再去加载这个组件&#xff0c;而不是在页面初始化的时候就将所有组件一次性加载进来。这种方式能够有效降低页面的初始加载时间&#xff0c;提升用户体验。 在Vue中&#xff0c;我们可以使用import函…...

目标检测5:采用yolov8, RK3568上推理实时视频流

上一个效果图&#xff0c;海康球机对着电脑屏幕拍&#xff0c;清晰度不好。 RK3568接取RTSP视频流&#xff0c;通过解码&#xff0c;推理&#xff0c;编码&#xff0c;最终并把结果推出RTSP视频流。 数据集采用coco的80个种类集&#xff0c;通过从yovo8.pt&#xff0c;转换成R…...

微服务:Feign篇

1.什么是Feign Feign是一种声明式、模板化的HTTP客户端&#xff0c;可用于调用HTTP API实现微服务之间的远程服务调用。它的特点是使用少量的配置定义服务客户端接口&#xff0c;可以实现简单和可重用的RPC调用。 先来看我们以前利用RestTemplate发起远程调用的代码&#xff…...

基于chatgpt的聊天机器人

基于chatgpt的聊天机器人 以下是一个基于Python的示例代码&#xff0c;展示如何在本地环境中使用预训练的ChatGPT模型构建一个简单的聊天机器人应用程序。在这个示例中&#xff0c;我们将使用Hugging Face Transformers库加载GPT-2模型&#xff0c;并创建一个基于命令行的用户…...

BAT常见的20道Android面试题详解,我的头条面试经历分享

二、面试 下面主要列举下在面试过程中遇到过的剑指 offer 原题或者类似问题&#xff0c;大家应该清楚&#xff0c;面试过程中遇到原题不要太高兴&#xff0c;而刷剑指 offer 就能让遇到原题的可能性大大增加。 1.字节跳动春招 面试题 68 - II. 二叉树的最近公共祖先 2.京东…...

python66-Python的循环之常用工具函数

使用zip()函数可以把两个列表“压缩”成一个zip对象(可迭代对象),这样就可以使用一个循环并行遍历两个列表。为了测试 zip()函数的功能,我们可以先在交互式解释器中“试验”一下该函数的功能。 # !/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2024/01# @Author : …...

Cocos Creator 3.8.x 制作模糊效果(比如游戏弹窗需要的模糊效果)

接着上一个讨论的话题,关于3.8.x的后效,今天来分享自定义后效来制作模糊效果,并将他应用到弹窗中做背景,话不多说开整。 一:最终效果 首先咱们来看官网自定义后效怎么搞的,从它的实例开始:自定义后效 二:定义PostProcessSettings给节点提供资源(通过编辑器修改参数的…...

MATLAB报错:尝试将 SCRIPT imread 作为函数执行

报错&#xff1a; 在执行matlab脚本的时候出现报错。 >> imread 尝试将 SCRIPT imread 作为函数执行: S:\temp_file\matlab\DigitalImageProcessing\imread.m出错 imread (line 2) I imread(S:\temp_file\matlab\DigitalImageProcessing\blueman.png);分析以及解决方…...

罗技鼠标宏完整实现方案:从Lua脚本到PUBG精准射击的进阶指南

罗技鼠标宏完整实现方案&#xff1a;从Lua脚本到PUBG精准射击的进阶指南 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 在竞技射击游戏《绝地求…...

为什么你的Perplexity返回过时新闻?环境时区、缓存策略与源权重配置三重校准指南

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;为什么你的Perplexity返回过时新闻&#xff1f;环境时区、缓存策略与源权重配置三重校准指南 Perplexity 的实时新闻响应延迟&#xff0c;常被误认为模型能力缺陷&#xff0c;实则源于底层检索链路中三…...

别再混淆了!一张图看懂SAP特殊采购类40、70、80的核心区别与适用场景

深度解析SAP特殊采购类40/70/80&#xff1a;业务逻辑与实战选型指南 引言 在SAP供应链管理的复杂生态中&#xff0c;特殊采购类&#xff08;Special Procurement Type&#xff09;是连接多工厂协同的神经中枢。当企业面临跨工厂物料调配、集中采购或分布式生产等场景时&#xf…...

昇腾CANN shmem:把多张 NPU 的 HBM 变成一块全局内存

hccl 的通信模型是消息传递——发送方调 send&#xff0c;接收方调 recv&#xff0c;两边同步。hixl 的模型是单边推送——发送方调 put&#xff0c;接收方不用参与。shmem 是第三种模型&#xff1a;PGAS&#xff08;Partitioned Global Address Space&#xff09;&#xff0c;…...

别再傻傻分不清了!Linux下共享内存(shm)和内存映射(mmap)到底有啥区别?

Linux下共享内存(shm)与内存映射(mmap)的本质区别与工程实践 在Linux系统编程中&#xff0c;当我们需要在进程间高效传递数据时&#xff0c;共享内存&#xff08;shm&#xff09;和内存映射&#xff08;mmap&#xff09;这两个概念常常让开发者感到困惑。它们看似都能实现内存共…...

从AT24C02 EEPROM的I2C时序出发,手把手调试你的蓝桥杯单片机存储模块

从AT24C02 EEPROM的I2C时序出发&#xff0c;手把手调试你的蓝桥杯单片机存储模块 在蓝桥杯单片机竞赛中&#xff0c;AT24C02 EEPROM存储模块的稳定读写是基本功&#xff0c;但真正的高手往往能在底层通信协议层面发现问题、解决问题。本文将带你从I2C时序的微观视角&#xff0c…...

OpenVAS部署避坑指南:从Kali的`apt-get install gvm`到官方OVA镜像,我踩过的那些雷

OpenVAS部署避坑指南&#xff1a;从Kali的apt-get install gvm到官方OVA镜像实战复盘 1. 为什么OpenVAS部署总让人头疼&#xff1f; 三年前我第一次接触漏洞扫描工具时&#xff0c;OpenVAS的安装过程就给我留下了深刻印象。当时按照某技术论坛的教程&#xff0c;在Kali Linux…...

文渊智阁:教育智能化的技术革新与实践

在人工智能技术飞速发展的今天&#xff0c;教育智能化已成为推动科研与教学变革的重要力量。湖北文渊智阁互联网科技有限公司&#xff08;以下简称“文渊智阁”&#xff09;凭借其深厚的技术积累和创新能力&#xff0c;在教育智能化领域取得了显著成果。本文将深入探讨文渊智阁…...

kagent支持的5大AI框架对比:ADK、CrewAI、LangGraph、OpenAI、技能框架

kagent支持的5大AI框架对比&#xff1a;ADK、CrewAI、LangGraph、OpenAI、技能框架 【免费下载链接】kagent Cloud Native Agentic AI | Discord: https://bit.ly/kagentdiscord 项目地址: https://gitcode.com/gh_mirrors/ka/kagent kagent作为一款云原生智能代理平台&…...

保姆级教程:在ROS2 Humble上,用Orbbec Astra Pro深度相机搞定单目标定(附常见镜像问题解决)

保姆级教程&#xff1a;ROS2 Humble与Orbbec Astra Pro深度相机单目标定实战指南 深度相机在机器人视觉、三维重建等领域扮演着关键角色&#xff0c;而精确的相机标定则是确保数据可靠性的第一步。本文将手把手带你完成Orbbec Astra Pro在ROS2 Humble环境下的单目标定全流程&am…...