面试突击78:@Autowired 和 @Resource 有什么区别?

2022-08-29
阅读 4 分钟
1k
@Autowired 和 @Resource 都是 Spring/Spring Boot 项目中,用来进行依赖注入的注解。它们都提供了将依赖对象注入到当前对象的功能,但二者却有众多不同,并且这也是常见的面试题之一,所以我们今天就来盘它。@Autowired 和 @Resource 的区别主要体现在以下 5 点:
封面图

快速搭建 SpringCloud Alibaba Nacos 配置中心!

2022-08-28
阅读 5 分钟
969
Spring Cloud Alibaba 是阿里巴巴提供的一站式微服务开发解决方案,目前已被 Spring Cloud 官方收录。而 Nacos 作为 Spring Cloud Alibaba 的核心组件之一,提供了两个非常重要的功能:服务注册中心(服务注册和发现)功能,和统一配置中心功能。
封面图

面试突击77:Spring 依赖注入有几种?各有什么优缺点?

2022-08-24
阅读 4 分钟
906
IoC 和 DI 是 Spring 中最重要的两个概念,其中 IoC(Inversion of Control)为控制反转的思想,而 DI(Dependency Injection)依赖注入为其(IoC)具体实现。那么 DI 实现依赖注入的方式有几种?这些注入方式又有什么不同?接下来,我们一起来看。
封面图

面试突击76:${} 和 #{} 有什么区别?

2022-08-23
阅读 4 分钟
860
${} 和 #{} 都是 MyBatis 中用来替换参数的,它们都可以将用户传递过来的参数,替换到 MyBatis 最终生成的 SQL 中,但它们区别却是很大的,接下来我们一起来看。
封面图

面试突击75:SpringBoot 有几种读取配置文件的方法?

2022-08-17
阅读 5 分钟
1k
Spring Boot 中读取配置文件有以下 5 种方法:使用 @Value 读取配置文件。使用 @ConfigurationProperties 读取配置文件。使用 Environment 读取配置文件。使用 @PropertySource 读取配置文件。使用原生方式读取配置文件。它们的具体使用方法如下,为了方便测试,我们在 Spring Boot 配置文件 application.properties 添...
封面图

面试突击74:properties和yml有什么区别?

2022-08-15
阅读 2 分钟
1.1k
properties 和 yml 都是 Spring Boot 支持的两种配置文件,它们可以看作是 Spring Boot 在不同时期的两款“产品”。在 Spring Boot 时代已经不需要使用 XML 文件格式来配置项目了,取而代之的是 properties 或 yml 文件。
封面图

面试突击73:IoC 和 DI 有什么区别?

2022-08-10
阅读 3 分钟
918
IoC 和 DI 都是 Spring 框架中的重要概念,就像玫瑰花与爱情一样,IoC 和 DI 通常情况下也是成对出现的。那 IoC 和 DI 什么关系和区别呢?接下来,我们一起来看。
封面图

面试突击72:输入URL之后会执行什么流程?

2022-08-08
阅读 3 分钟
754
在浏览器中输入 URL 之后,它会执行以下几个流程:执行 DNS 域名解析;封装 HTTP 请求数据包;封装 TCP 请求数据包;建立 TCP 连接(3 次握手);参数从客户端传递到服务器端;服务器端得到客户端参数之后,进行相应的业务处理,再将结果封装成 HTTP 包,返回给客户端;服务器端和客户端的交互完成,断开 TCP 连接(4 次...
封面图

面试突击71:GET 和 POST 有什么区别?

2022-08-03
阅读 2 分钟
1.3k
GET 和 POST 是 HTTP 请求中最常用的两种请求方法,在日常开发的 RESTful 接口中,都能看到它们的身影。而它们之间的区别,也是一道常见且经典的面试题,所以我们本文就来详细的聊聊。HTTP 协议定义的方法类型总共有以下 10 种:
封面图

面试突击70:什么是粘包和半包?怎么解决?

2022-08-01
阅读 10 分钟
1.1k
粘包和半包问题是数据传输中比较常见的问题,所谓的 粘包问题是指数据在传输时,在一条消息中读取到了另一条消息的部分数据,这种现象就叫做粘包。 比如发送了两条消息,分别为“ABC”和“DEF”,那么正常情况下接收端也应该收到两条消息“ABC”和“DEF”,但接收端却收到的是“ABCD”,像这种情况就叫做粘包,如下图所示:
封面图

面试突击69:TCP 可靠吗?为什么?

2022-07-31
阅读 3 分钟
1.1k
相比于 UDP 来说,TCP 的主要特性是三个:有连接、可靠、面向数据流。所谓的“有连接”指的是 TCP 中的连接管理机制,也就是著名的三次握手和四次挥手,就像打电话一样,想要正常的交流,必须先和对方建立起连接,这就是所谓的“有连接”,而面向数据流的机制咱们以后再讲,我们今天要讨论的主题是:TCP 是如何保证可靠性的...
封面图

面试突击68:为什么 TCP 需要 3 次握手?

2022-07-26
阅读 1 分钟
1k
TCP 三次握手是一道经典的面试题,它是指 TCP 在传递数据之前,需要进行 3 次交互才能正式建立起连接,并进行数据传递。TCP 之所以需要 3 次握手是因为 TCP 双方都是全双工的。所谓全双工指的是,TCP 任何一端既是发送数据方,又是接收数据方,因此这就要求 TCP 通讯双方既要保证自己的发送能力,又要保证自己的接收能力...
封面图

面试突击67:说一下 TCP/IP 协议?以及每层的作用?

2022-07-22
阅读 2 分钟
1.4k
TCP/IP 包含四层模型,从上层往下层分别是:应用层、传输层、网络层、数据链路层。有些资料也会说 TCP/IP 是五层模型,所谓的五层模型指的是在数据链路层下面还有一个物理层,而作为软件工程师一般不需要关注物理层,所以通常我们说 TCP/IP 四层模型更多一些。
封面图

面试突击66:请求转发和请求重定向有什么区别?

2022-07-18
阅读 2 分钟
1.2k
在 Java 中,跳转的实现方式有两种:请求转发和请求重定向,但二者是完全不同的,所以我们今天就来盘它。请求转发和请求重定向主要区别,包含以下 5 点:
封面图

面试突击65:为什么要用HTTPS?它有什么优点?

2022-07-13
阅读 3 分钟
927
说到 HTTPS 相信大部分人都是不陌生,因为目前我们使用的绝大数网站都是基于 HTTPS 的,比如以下这些:那么问题来了,他们为什么要使用 HTTPS 呢?HTTPS 有哪些过人之处呢?
封面图

面试突击64:了解 HTTP 协议吗?

2022-07-11
阅读 2 分钟
1k
HTTP(Hyper Text Transfer Protocol)超文本传输协议,下文简称 HTTP,它的作用是用于实现服务器端和客户端的数据传输的。它可以传输任意的数据类型,如文本、HTML、图片、文件、声音等类型。简单来说,HTTP 的作用就像一个“快递”一样,用来承载客户端(浏览器)和服务器端的数据传输,如下图所示:
封面图

面试突击63:MySQL 中如何去重?

2022-07-06
阅读 3 分钟
1.1k
在 MySQL 中,最常见的去重方法有两个:使用 distinct 或使用 group by,那它们有什么区别呢?接下来我们一起来看。1.创建测试数据 {代码...} 最终展现效果如下:2.distinct 使用distinct 基本语法如下: {代码...} 2.1 单列去重我们先用 distinct 实现单列去重,根据 aid(文章 ID)去重,具体实现如下:2.2 多列去重除...
封面图

面试突击62:group by 有哪些注意事项?

2022-07-06
阅读 2 分钟
953
注意:本文以下内容基于 MySQL 5.7 InnoDB 数据库引擎。1.group by 后面不能加 where在 MySQL 中,所有的 SQL 查询语法要遵循以下语法顺序:selectfromwheregroup byhavingorder bylimit以上语法顺序是不能前后互换的,否则报错。比如我们不能在 group by 之后添加 where 查询语句,否则会出现如下错误:语法顺序的执行...

面试突击61:说一下MySQL事务隔离级别?

2022-06-29
阅读 4 分钟
817
MySQL 事务隔离级别是为了解决并发事务互相干扰的问题的,MySQL 事务隔离级别总共有以下 4 种:READ UNCOMMITTED:读未提交。READ COMMITTED:读已提交。REPEATABLE READ:可重复读。SERIALIZABLE:序列化。1.四种事务隔离级别1.1 READ UNCOMMITTED读未提交,也叫未提交读,该隔离级别的事务可以看到其他事务中未提交的...
封面图

面试突击60:什么情况会导致 MySQL 索引失效?

2022-06-27
阅读 3 分钟
826
explain 使用如下,只需要在查询的 SQL 前面添加上 explain 关键字即可,如下图所示:而以上查询结果的列中,我们最主要观察 key 这一列,key 这一列表示实际使用的索引,如果为 NULL 则表示未使用索引,反之则使用了索引。
封面图

面试突击59:一个表中可以有多个自增列吗?

2022-06-22
阅读 3 分钟
924
自增列可使用 auto_increment 来实现,当一个列被标识为 auto_increment 之后,在添加时如果不给此列设置任何值,或给此列设置 NULL 值时,那么它会使用自增的规则来填充此列。
封面图

面试突击58:truncate、delete和drop的6大区别

2022-06-20
阅读 3 分钟
964
在 MySQL 中,使用 truncate、delete 和 drop 都可以实现表删除,但它们 3 个的使用场景和执行效果完全不同,接下来我们来盘点一下。
封面图

33岁程序员的年中总结

2022-06-19
阅读 3 分钟
539
人生在不同的阶段会有不同的生活方式和思考问题的角度,这是一件非常有趣的事~比如,我在 22 岁会想:怎么才能赚大钱,怎么才能升值加薪?在 25 岁会想:去哪买房?什么时候结婚?在 28 岁会想:生活真 TM 的糟透,还房贷什么时候是个头啊?孩子要再听话一点就好了。在 30 岁会想:我去,30 岁,还一事无成,该怎么办呢...
封面图

面试突击57:聚簇索引=主键索引吗?

2022-06-16
阅读 1 分钟
1.5k
在 InnoDB 引擎中,每张表都会有一个特殊的索引“聚簇索引”,也被称之为聚集索引,它是用来存储行数据的。一般情况下,聚簇索引等同于主键索引,但这里有一个前提条件,那就是这张表需要有主键,只有有了主键,它才能有主键索引,有主键索引才能等于聚簇索引。
封面图

面试突击56:聚簇索引和非聚簇索引有什么区别?

2022-06-13
阅读 2 分钟
1.1k
在 MySQL 默认引擎 InnoDB 中,索引大致可分为两类:聚簇索引和非聚簇索引,它们的区别也是常见的面试题,所以我们今天就来盘它们。聚簇索引聚簇索引(Clustered Index)一般指的是主键索引(如果存在主键索引的话),聚簇索引也被称之为聚集索引。聚簇索引在 InnoDB 中是使用 B+ 树实现的,比如我们创建一张 student 表...
封面图

面试突击55:delete、drop、truncate有什么区别?

2022-06-08
阅读 2 分钟
1k
在 MySQL 中,删除的方法总共有 3 种:delete、truncate、drop,而三者的用法和使用场景又完全不同,接下来我们具体来看。
封面图

面试突击54:MySQL 常用引擎有哪些?

2022-06-06
阅读 2 分钟
1.1k
MySQL 有很多存储引擎(也叫数据引擎),所谓的存储引擎是指用于存储、处理和保护数据的核心服务。也就是存储引擎是数据库的底层软件组织。在 MySQL 中可以使用“show engines”来查询数据库的所有存储引擎,如下图所示:在上述列表中,我们最常用的存储引擎有以下 3 种:
封面图

面试突击53:常见的 HTTP 状态码有哪些?

2022-06-01
阅读 3 分钟
1.1k
HTTP 状态码是服务器端返回给客户端的响应状态码,根据(HTTP)状态码我们就能知道服务器端想要给客户端表达的具体含义,比如 200 就表示请求访问成功,500 就表示服务器端程序出错等。HTTP 状态码可分为 5 大类:
封面图

面试突击52:什么是三范式?它有什么用?

2022-05-30
阅读 2 分钟
1k
第一范式规定表中的每个列都应该是不可分割的最小单元。比如以下表中的 address 字段就不是不可分割的最小单元,如下图所示:其中 address 还可以拆分为国家和城市,如下图所示:这样改造之后,上面的表就满足第一范式了。
封面图

面试突击51:为什么单例一定要加 volatile?

2022-05-26
阅读 4 分钟
1.3k
单例模式的实现方法有很多种,如饿汉模式、懒汉模式、静态内部类和枚举等,当面试官问到“为什么单例模式一定要加 volatile?”时,那么他指的是为什么懒汉模式中的私有变量要加 volatile?
封面图