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

Java[面试题]-真实面试2.0

4.sql语句怎么优化的?

想想面试官问这个问题的目的是什么?是让sql执行的更加快,提高效率对吧

(1)加合适的索引

加索引能大幅度提高查询的性能,但是也不能随便加索引加过多,你想类似于这种性别,0,1加了就没什么意义,一般常用的我们加的每个表的主键就是一个索引

对表进行 JOIN 操作、大量 WHERE 条件筛选、排序(ORDER BY)、分组(GROUP BY)时,加索引能提高效率。

避免过多索引:过多的索引会增加 INSERTUPDATEDELETE 操作的成本,导致数据库性能下降。

(2)避免使用 SELECT *(老生常谈了)

select * 是查询表中所有字段,查对应字段就应该写出对应字段,减少数据传输和内存消耗

(3)减少不必要的 JOIN

避免使用过多的 JOIN,尤其是 CROSS JOINOUTER JOIN。确保 JOIN 操作中使用的字段有索引。过多的 JOIN 会增加查询的计算量和内存消耗

-- 优化前
SELECT * FROM users WHERE user_id = 1;

-- 优化后
SELECT user_id, username, email FROM users WHERE user_id = 1;

(4)使用 EXPLAIN 分析查询

EXPLAIN 命令可以帮助你分析 SQL 查询的执行计划,了解查询的执行顺序、使用的索引以及可能的瓶颈。这有助于识别慢查询和优化的方向

EXPLAIN SELECT * FROM orders WHERE customer_id = 123;

具体查看这个中详细介绍EXPLAIN执行计划以及索引失效的几种情况

Java面试题-基础部分(2)-CSDN博客

5.数据库表有接触过么?你是怎么设计的?

你肯定就说接触过,在和组长确认业务流程,之后根据业务自己设计表。

我们之前用的是mysql数据库嘛,然后就用Navicat,点开个数据库连接之后呢,点击表右键“新建表”==》添加表字段等等一般会设置id为唯一值并设置为主键(就是讲具体怎么设计,不要讲假大空)

6.你做的项目用的Springboot还是SpringCloud?有什么不一样呢?

之前用的是boot,现在我们改成了cloud,我觉得他们最大的区别?

Spring Boot能快速搭建一个生产级别的 Spring 应用,采用大量注解减少了繁琐的配置,而且能够支持SpringCloud。

一个SpringCloud里包含多个Spring Boot子项目,Spring Cloud 是一组工具和框架的集合,用于构建分布式系统,尤其是微服务架构。它为开发者提供了开箱即用的解决方案来处理微服务的各种常见问题,如服务注册与发现、配置管理、负载均衡、断路器、消息传递等。

在微服务架构中,通常会使用 Spring Boot 构建每个独立的微服务,而 Spring Cloud 则用来处理这些微服务之间的交互、管理、监控等问题

SpringCloud核心特性

  • 服务发现:Spring Cloud 提供了服务注册与发现的功能,通常配合 Eureka 或 Consul 等服务注册中心一起使用,使得微服务能够动态发现和访问其他服务。
  • 分布式配置:使用 Spring Cloud Config 实现集中式配置管理,可以将服务的配置与应用解耦,并且支持不同环境的配置文件。
  • 负载均衡:通过 Spring Cloud Netflix Ribbon 或 Spring Cloud LoadBalancer 提供客户端负载均衡。
  • 断路器:集成了 Hystrix 或 Resilience4J 实现断路器模式,防止某个微服务失败影响整个系统。
  • API 网关:Spring Cloud Gateway 或 Zuul 提供网关功能,负责路由、负载均衡、安全控制等。
  • 消息总线:Spring Cloud Stream 和 Spring Cloud Bus 提供了消息驱动的解决方案。


http://www.kler.cn/a/392181.html

相关文章:

  • 区块链技术在慈善捐赠中的应用
  • NVIDIA Isaac Sim 仿真平台体验测评
  • Unity3D学习FPS游戏(12)敌人检测和攻击玩家
  • SAP_MM_SD_PP_FICO_视频课程几乎免费送
  • RAG综述:《A Comprehensive Survey of Retrieval-Augmented Generation (RAG)》
  • 鸿蒙next版开发:订阅应用事件(ArkTS)
  • KALI-sqlmap更新
  • JVM 参数配置入门与优化案例
  • ubantu git
  • 回溯算法(组合问题)-- 游戏分组
  • btstack协议栈实战篇--HID Keyboard Classic
  • 预处理、编译、汇编和链接
  • 力扣 二叉树的直径-543
  • 详解Gemini API的使用:在国内实现大模型对话与目标检测教程
  • SpringBoot 实战:文件上传之秒传、断点续传、分片上传
  • 比速M3比速T3比速T5北汽制造007 勇士 锐铃维修手册电路图资料更新线路接线
  • 高效编程训练:Spring Boot系统设计与实践
  • 试用免费界面美化程序SeelenUI,让你的Windows变得更美
  • Spring 解析xml中的 BeanDefination 大概过程
  • 每日一练:二分查找-x的平方根
  • Unity3D学习FPS游戏(11)敌人AI巡逻(NavMesh)
  • C++多态及其在设计模式中的作用举例
  • 【webrtc】 RTP 中的 MID(Media Stream Identifier)
  • Spring Boot编程训练系统:构建企业级应用
  • 基于BILSTM及其他RNN序列模型的人名分类器
  • 革新农业未来!Dimitra生态币价双双腾飞在即