后端面试题整理-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. 数据库连接池:通过使用数据库连接池,减少数据库连接的创建和销毁开销,提高数据库的并发处理能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/722919.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS的三种定位,响应式web开发项目教程

标准文档流 文档流&#xff1a;指的是元素排版布局过程中 戳这里领取完整开源项目&#xff1a;【一线大厂前端面试题解析核心总结学习笔记Web真实项目实战最新讲解视频】 &#xff0c;元素会默认自动从左往右&#xff0c;从上往下的流式排列方式。并最终窗体自上而下分成一行行…

12、电源管理入门之clock驱动

目录 1. clock驱动构架 1.2 clock consumer介绍 2. Clock Provider 2.1 数据结构表示 2.2 clock provider注册初始化 2.3 DTS配置 2.4 clock驱动实现举例: 3. clock consumer 3.1 获取clock 3.2 操作clock 3.3 实例操作 4. SoC硬件中的使用 参考: 电源管理的两个…

记录一下go的包管理

如何降低版本 假设go版本go.mod: go 1.16运行项目&#xff0c; 查看运行报错&#xff0c;根据报错信息&#xff0c;一条一条解决 go run main.go错误: /home/server1/go/pkg/mod/google.golang.org/grpcv1.58.2/internal/buffer/unbounded.go:92:34: undefined: any类似这样的…

QT延时/等待

一、阻塞型延时 阻塞的原理就是&#xff1a;在延迟期间&#xff0c;本线程的事件循环得不到处理 1.QThread类的sleep() 最简单的延时方法就是使用QThread类的sleep(n)、msleep(n)、usleep(n)&#xff0c;这几个函数的不良后果就是&#xff0c;GUI会在延时的时间段内失去响应…

《 前端 vs. 后端:挑战与机遇的对决》

前言 前端开发和后端开发是构建网站、应用程序和其他软件的两个主要方面。它们各自负责不同的任务和功能。 前端开发: 定义:前端开发是指构建用户直接与之交互的网站或应用程序的过程。前端开发主要关注于用户界面和用户体验。技术栈:前端开发通常涉及使用 HTML、CSS 和 Ja…

组基轨迹建模 GBTM的介绍与实现(Stata 或 R)

基本介绍 组基轨迹建模&#xff08;Group-Based Trajectory Modeling&#xff0c;GBTM&#xff09;&#xff08;旧名称&#xff1a;Semiparametric mixture model&#xff09; 历史&#xff1a;由DANIELS.NAGIN提出&#xff0c;发表文献《Analyzing Developmental Trajectori…

7.1.3 Selenium的用法2

目录 1. 切换 Frame 2. 前进后退 3. 对 Cookies 操作 4. 选项卡管理(了解) 5. 异常处理 6. 反屏蔽 7. 无头模式 1. 切换 Frame 我们知道网页中有一种节点叫作 iframe&#xff0c;也就是子 Frame&#xff0c;相当于页面的子页面&#xff0c;它的结构和外部网页的结构完全…

android高级面试题及答案,已拿offer

一、java相关 java基础 1、java 中和 equals 和 hashCode 的区别 2、int、char、long 各占多少字节数 3、int 与 integer 的区别 4、谈谈对 java 多态的理解 5、String、StringBuffer、StringBuilder 区别 6、什么是内部类&#xff1f;内部类的作用 7、抽象类和接口区别 java高…

SkyWalking链路追踪上下文TraceContext的traceId生成的实现原理剖析

结论先行 【结论】 SkyWalking通过字节码增强技术实现&#xff0c;结合依赖注入和控制反转思想&#xff0c;以SkyWalking方式将追踪身份traceId编织到链路追踪上下文TraceContext中。 是不是很有趣&#xff0c;很有意思&#xff01;&#xff01;&#xff01; 【收获】 skywal…

【Mining Data】收集数据(使用 Python 挖掘 Twitter 数据)

@[TOC](【Mining Data】收集数据(使用 Python 挖掘 Twitter 数据)) 具体步骤 第一步是注册您的应用程序。特别是,您需要将浏览器指向 http://apps.twitter.com,登录 Twitter(如果您尚未登录)并注册新应用程序。您现在可以为您的应用程序选择名称和描述(例如“Mining Demo”…

【华为OD机试】密码输入检测【C卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 给定用户密码输入流 input,输入流中字符 < 表示退格,可以清除前一个输入的字符, 请你编写程序,输出最终得到的密码字符,并判断密码是否满足如下的密码安全要求。 密码安全要求如下…

Unity或者其他程序启动C#的控制台程序传递参数出错

Unity或者其他程序启动C#的控制台程序传递参数出错 主机启动代码 string exePath path ProConst.ProgramPath_GenerateReportExe;//设置exe启动的路径 string data JsonConvert.SerializeObject(GameManager.Instance._UserTrainingDataEntities);//将对象转成json Proces…

未来已来!AI大模型引领科技革命

未来已来&#xff01;AI大模型正以惊人的速度引领着科技革命。随着科技的发展&#xff0c;人工智能在各个领域展现出了非凡的能力和潜力&#xff0c;大模型更是成为了科技领域的明星。从自然语言处理到图像识别&#xff0c;从智能推荐到语音识别&#xff0c;大模型的应用正在改…

基于ZYNQ PS-SPI的Flash驱动开发

本文使用PS-SPI实现Flash读写&#xff0c;PS-SPI的基础资料参考Xilinx UG1085的文档说明&#xff0c;其基础使用方法是&#xff0c;配置SPI模式&#xff0c;控制TXFIFO/RXFIFO&#xff0c;ZYNQ的IP自动完成发送TXFIFO数据&#xff0c;接收数据到RXFIFO&#xff0c;FIFO深度为12…

word转PDF的方法 简介快速

在现代办公环境中&#xff0c;文档格式转换已成为一项常见且重要的任务。其中&#xff0c;将Word文档转换为PDF格式的需求尤为突出&#xff0c;将Word文档转换为PDF格式具有多方面的优势和应用场景。无论是为了提高文档的可读性和稳定性、保障文档的安全性和保护机制、还是为了…

IDEA运行大项目启动卡顿问题

我打开了很多项目&#xff0c;然后又启动了一个大型项目时&#xff0c;启动到一半&#xff0c;弹出一个窗口&#xff0c;告诉我idea内存不够&#xff0c;怎么解决这个问题&#xff1f; 1、先把多余的项目关掉&#xff0c;再启动这个大项目&#xff0c; 2、如果还是不行就去修改…

一文帮助快速入门Django

文章目录 创建django项目应用app配置pycharm虚拟环境打包依赖 路由传统路由include路由分发namenamespace 视图中间件orm关系对象映射操作表数据库配置model常见字段及参数orm基本操作 cookie和sessiondemo 创建django项目 指定版本安装django&#xff1a;pip install django3.…

Unity使用UnityWebRequest读取音频长度不对的解决方法

在开发的过程中碰到这样一个问题&#xff0c;有的音频文件通过UnityWebRequest读取出来后&#xff0c;AudioClip的Length会不对&#xff0c;比如本身有7秒&#xff0c;读出来只有3秒。代码如下&#xff1a; IEnumerator TestEnumerator() {UnityWebRequest www UnityWebReque…

MySQL查找树形结构中某个节点及其子节点

问题 设计表结构存储树形结构数据时&#xff0c;一般使用 parentId 来记录当前节点的父id。 表结构如下所示&#xff08;以MySQL为例&#xff09; create table test (id varchar(30) collate utf8mb4_general_ci default not nullprimary key,name varch…

gitlab的安装

1、下载rpm 安装包 (1)直接命令下载 wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.6.10-ce.0.el7.x86_64.rpm&#xff08;2&#xff09;直接去服务器上下载包 Index of /gitlab-ce/yum/el7/ | 清华大学开源软件镜像站 | Tsinghua Open Source…