【后端开发面试题】每日 3 题(三)

news2025/3/3 8:15:24

✍个人博客:Pandaconda-CSDN博客
📣专栏地址:https://blog.csdn.net/newin2020/category_12903849.html
📚专栏简介:在这个专栏中,我将会分享后端开发面试中常见的面试题给大家~
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

1. 在 MySQL 中,如何优化慢查询?

  • 查询分析
    • 使用EXPLAIN关键字:在 SQL 查询语句前加上EXPLAIN,可以查看查询的执行计划,包括表的读取顺序、使用的索引、数据读取类型等信息,从而找出可能存在的性能瓶颈。
    • 分析慢查询日志:开启 MySQL 的慢查询日志功能,它会记录执行时间超过指定阈值的查询语句。通过分析这些日志,可以找出经常出现的慢查询。
  • 索引优化
    • 创建合适的索引:根据查询条件和排序字段,在经常用于WHERE子句、JOIN子句和ORDER BY子句的列上创建索引。例如,对于经常根据用户 ID 查询订单信息的场景,可以在订单表的用户 ID 列上创建索引。
    • 避免过多索引:索引虽然可以提高查询速度,但会增加写操作的开销,并且过多的索引会占用更多的磁盘空间。因此,只创建必要的索引。
    • 使用复合索引:当多个列经常一起用于查询条件时,可以创建复合索引。例如,(col1, col2)的复合索引可以同时优化基于col1和col1 AND col2的查询。
  • 查询语句优化
    • 避免使用SELECT *:只选择需要的列,减少数据传输量。
    • 优化子查询:尽量将子查询转换为JOIN查询,因为JOIN查询通常比子查询性能更好。
    • 避免在WHERE子句中使用函数或表达式:这会导致索引失效,例如WHERE YEAR(create_time) = 2024,可以改为WHERE create_time BETWEEN ‘2024-01-01’ AND ‘2024-12-31’。
  • 数据库配置优化
    • 调整缓冲区大小:根据服务器的硬件资源,调整innodb_buffer_pool_size、key_buffer_size等参数,以提高数据库的缓存效率。
    • 优化查询缓存:对于一些不经常变化的数据查询,可以开启查询缓存,但要注意查询缓存可能会带来额外的开销,需要根据实际情况进行调整。

2. 在 Java 中,synchronized关键字和ReentrantLock有什么区别?

  • 语法层面
    • synchronized:是 Java 的关键字,是内置的语言实现。它可以修饰方法或代码块,使用起来比较简洁。例如:
public synchronized void method() {
    // 同步代码
}
public void method() {
    synchronized (this) {
        // 同步代码
    }
}
  • ReentrantLock:是java.util.concurrent.locks包下的一个类,需要手动创建实例并调用lock()和unlock()方法来加锁和解锁。例如:
import java.util.concurrent.locks.ReentrantLock;

public class LockExample {
    private final ReentrantLock lock = new ReentrantLock();

    public void method() {
        lock.lock();
        try {
            // 同步代码
        } finally {
            lock.unlock();
        }
    }
}
  • 锁的获取和释放
    • synchronized:是隐式获取和释放锁的,当进入同步方法或同步代码块时自动获取锁,退出时自动释放锁。如果发生异常,也会自动释放锁。
    • ReentrantLock:需要手动调用lock()方法获取锁,unlock()方法释放锁。为了确保锁一定会被释放,通常将unlock()方法放在finally块中。
  • 锁的特性
    • 可中断性:synchronized的锁是不可中断的,一旦线程获取到锁,其他线程只能等待。而ReentrantLock可以通过lockInterruptibly()方法实现可中断的锁获取,在等待锁的过程中可以响应中断。
    • 公平性:synchronized是非公平锁,即线程获取锁的顺序是不确定的。ReentrantLock可以通过构造函数指定是否为公平锁,公平锁会按照线程请求锁的顺序依次获取锁。
    • 锁的条件:ReentrantLock可以通过newCondition()方法创建多个Condition对象,实现更灵活的线程等待和唤醒机制,而synchronized只能使用wait()、notify()和notifyAll()方法,功能相对单一。

3. 请简述微服务架构的优缺点

优点

  • 可扩展性:每个微服务可以独立进行扩展,根据业务需求对不同的服务进行水平或垂直扩展,而不会影响其他服务。例如,对于一个电商系统中的订单服务和商品服务,如果订单服务的访问量突然增加,可以只对订单服务进行扩展。
  • 技术多样性:不同的微服务可以使用不同的技术栈,开发团队可以根据服务的特点选择最适合的技术。比如,对于计算密集型的服务可以使用 Go 语言,对于数据处理和分析的服务可以使用 Python。
  • 独立部署:微服务可以独立开发、测试和部署,一个服务的更新和部署不会影响其他服务,提高了开发和部署的效率。例如,开发团队可以快速迭代某个微服务的功能,而不需要重新部署整个系统。
  • 团队协作:将一个大型项目拆分成多个微服务后,不同的团队可以负责不同的服务开发,提高了团队之间的并行开发能力,减少了团队之间的沟通成本。
  • 容错性:如果某个微服务出现故障,不会影响整个系统的运行,其他服务可以继续正常工作。同时,可以通过熔断、限流等机制对故障服务进行隔离和处理。

缺点

  • 复杂度增加:微服务架构涉及多个服务之间的通信和协调,系统的复杂度大大增加。需要处理服务之间的调用关系、数据一致性、分布式事务等问题。
  • 运维成本高:每个微服务都需要独立的运维管理,包括服务器配置、监控、日志管理等。此外,还需要考虑服务之间的网络通信和负载均衡等问题。
  • 服务间通信开销:微服务之间的通信需要通过网络进行,会带来一定的延迟和通信开销。如果服务之间的调用频繁,会影响系统的性能。
  • 分布式系统问题:微服务架构是一个分布式系统,会面临分布式系统的各种问题,如数据一致性、服务发现、容错等。解决这些问题需要额外的技术和工具支持。

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

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

相关文章

SpringBoot 端口配置

在Spring Boot中,配置应用程序的监听端口有多种方式。以下是常见的几种方法: 1. 通过 application.properties 或 application.yml 文件配置 application.properties server.port8081application.yml server:port: 8081如果没有显式配置 server.port…

Python 数据结构 4.单向链表

惟愿春日不迟,相逢终有时 —— 25.3.2 一、单向链表的基本概念 1.单向链表的概念 对于顺序存储的结构,最大的缺点就是:插入 和 删除 的时候需要移动大量的元素,所以基于前人的智慧,他们发明了链表。 链表是由一个个结…

LeeCode题库第四十题

40.组合总和II 项目场景: 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意:解集不能包含重复的组合。 示…

玩转大模型——deepseek本地部署与ollama 非C盘安装之ChatBox配置

文章目录 ollama安装ollama是什么DeepSeek是什么下载地址非C盘安装配置大模型目录大模型下载安装deepseek-r1:1.5b安装deepseek-r1:7b ChatBox安装参考资料 ollama安装 ollama是什么 Ollama 是一个专注于本地运行大型语言模型的工具。它允许用户在本地环境中部署和运行各种开…

DAV_postgresql_3-schema

schem介绍: 什么是schema? 用户对象的集合叫做模式 不同模式下的对象可以同名 可以把用户下对象根据业务分类,不同的对象放在不同的模式 一个用户可以创与拥有多个模式 一个模式只能属于一个用户 普通用户创建模式需要授权指定数据库下的创建权限…

Hive-04之存储格式、SerDe、企业级调优

一、主题 hive表的数据压缩和文件存储格式hive的自定义UDF函数hive的JDBC代码操作hive的SerDe介绍和使用hive的优化 二、要点 1. hive表的文件存储格式 Hive支持的存储数的格式主要有:TEXTFILE(行式存储) 、SEQUENCEFILE(行式存储)、ORC&…

信号和槽

connect(信号发送者,发送的信号,信号接收者,信号的处理); 信号函数和槽函数的参数必须是一样的,但信号的参数可以多余槽函数的参数(前面的参数类型必须一致) 是控件和控件间的信号传递,这两个…

从零开始用react + tailwindcss + express + mongodb实现一个聊天程序(八) 聊天框用户列表

简单画了个聊天框 就是咱们的HomePage.jsx 1.后端接口开发 在server/src/index.js 新增 messagesRoutes 先引入 import messageRoutes from ./routes/message.route.js // 消息接口 app.use(/api/messages, messageRoutes) 在routes文件夹下新建message.route.js 有3个路…

关于后端使用Boolean或boolean时前端收到的参数的区别

当后端使用的是Boolean时,调用的方法是setIsLoginUser,前端收到的参数的参数名是isLoginUser 而当后端使用的是boolean时,调用的方法是setLoginUser,前端收到的参数的参数名是loginUser 封装类和基本数据类型在使用时需要注意这…

智能称重搬物寻迹小车(论文+源码)

1 系统设计方案确定 本次设计的总系统有以下几个模块分别是避障模块,循迹模块,二维码扫描电路,称重电路,LCD显示电路和电机驱动模块,而且这几个模块都是由单片机stm32控制的,整个系统的框图如下图所示。其…

使用 ASP.NET Core 创建和下载 zip 文件

对于最近的一个功能,我必须从用 ASP.NET Core 编写的内部网站下载一批文件。在下载文件之前对其进行压缩,结果证明这是一种轻松实现多文件下载的好方法。.NET 提供了所有需要的功能,在本文中,我将向您展示如何实现它。 首先&#…

dify绑定飞书多维表格

dify 绑定飞书和绑定 notion 有差不多的过程,都需要套一层应用的壳子,而没有直接可以访问飞书文档的 API。本文记录如何在dify工具中使用新增多条记录工具。 创建飞书应用 在飞书开放平台创建一个应用,个人用户创建企业自建应用。 自定义应…

SQL server配置ODBC数据源(本地和服务器)

本地配置 1. 控制面板中找到系统ODBC数据源(打开控制面板直接搜) 2. 选择“系统DSN”,点击“添加” 3. 选择“SQL server” 4. 名称和描述自己填,服务器选择本机设备名称 5. 选择ID和密码验证,并填写本地SQL server登…

LogiSim教程

一、LogiSim是什么 Logisim是一种设计数字电路的工具。 二、安装LogiSim 下载地址 https://sourceforge.net/projects/circuit/ 此软件需要java运行环境。 三、使用LogiSim (一)界面 Logisim界面分为菜单栏、工具栏、资源管理器,属性表…

RAP: Efficient Text-Video Retrieval with Sparse-and-Correlated Adapter

​​标题:RAP:基于稀疏相关适配器的高效文本视频检索 原文链接:RAP: Efficient Text-Video Retrieval with Sparse-and-Correlated Adapter - ACL Anthology 发表:ACL-2024(NLP领域CCF A类) 摘要 文本-视频检索(TVR&#xff0…

I2C驱动(十一) -- gpio模拟的i2c总线驱动i2c-gpio.c分析

相关文章 I2C驱动(一) – I2C协议 I2C驱动(二) – SMBus协议 I2C驱动(三) – 驱动中的几个重要结构 I2C驱动(四) – I2C-Tools介绍 I2C驱动(五) – 通用驱动i2c-dev.c分析 I2C驱动(六) – I2C驱动程序模型 I2C驱动(七) – 编写I2C设备驱动之i2c_driver I2C驱动(八) – 编写I2C…

不要升级,Flutter Debug 在 iOS 18.4 beta 无法运行,提示 mprotect failed: Permission denied

近期如果有开发者的 iOS 真机升级到 18.4 beta,大概率会发现在 debug 运行时会有 Permission denied 的相关错误提示,其实从 log 可以很直观看出来,就是 Dart VM 在初始化时,对内核文件「解释运行(JIT)」时…

私有化部署大模型推理性能分析

从用户感知角度分析私有化部署的大模型推理性能,这里的用户感知包括响应速度、生成速度、系统可用性以及系统稳定性。大模型首先获取输入内容的字符串,将这部分内容转换为模型token,过模型推理,到最后输出第一个token的时间是ttft,从这以后&a…

EtherCAT总线绝对值伺服如何使用

EtherCAT总线掉线如何自动重启。 EtherCAT总线掉线如何自动重启_ethercat从站断线-CSDN博客文章浏览阅读1.2k次。本文介绍了在EtherCAT通信中,当从站出现掉线情况时,如何通过设置自动重启功能来解决这一问题。详细步骤包括在CODESYS环境中启用从站的自动重启选项。https://r…

可商用街头文化艺术海报封面手写涂鸦标题LOGO排版英文字体 FS163 TYPE FACE

Freestyle 163 (FS163)是一个受街头文化和城市艺术启发的视觉宣言。该字体旨在突出我们的文化和创意根源,反映了街头运动、城市艺术以及来自社会和边缘的故事。 FS163与面临挑战、质疑规范、放大被忽视声音的品牌和个人联系在一起&#xff0c…