Java[面试题]-真实面试2.0
4.sql语句怎么优化的?
想想面试官问这个问题的目的是什么?是让sql执行的更加快,提高效率对吧
(1)加合适的索引
加索引能大幅度提高查询的性能,但是也不能随便加索引加过多,你想类似于这种性别,0,1加了就没什么意义,一般常用的我们加的每个表的主键就是一个索引
对表进行 JOIN
操作、大量 WHERE
条件筛选、排序(ORDER BY
)、分组(GROUP BY
)时,加索引能提高效率。
避免过多索引:过多的索引会增加 INSERT
、UPDATE
和 DELETE
操作的成本,导致数据库性能下降。
(2)避免使用 SELECT *(老生常谈了)
select * 是查询表中所有字段,查对应字段就应该写出对应字段,减少数据传输和内存消耗
(3)减少不必要的 JOIN
避免使用过多的 JOIN
,尤其是 CROSS JOIN
或 OUTER 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 提供了消息驱动的解决方案。