Skip to content

海隆网讯 已完结

日期

2024 年 9 月 5 日

自我介绍

面试官您好,我是 wmh,是软件工程专业的 25 届应届生。

我的主要技术栈是 Spring Boot、MySQL、Redis。也会使用前端框架 Vue3,有一定的运维经验。

在校参与过学校项目组工作,有在校团队项目经验。参与过需求分析、数据库设计、开发、测试、部署等项目全流程。

在校期间完成了定时微服务、在线判题平台、个人导航站等项目,也与项目组成员合作开发过学校实验室预约系统、低代码平台组件库设计、学校申硕平台的二次开发等。

在校期间多次参与竞赛,曾获蓝桥杯省一和 CCPC 河北省赛的铜奖。

Vue

Vue2 和 Vue3 之间的区别

Vue3 支持组合式 API (Setup API)

MySQL

索引都有什么类型

  1. 主键索引
  2. 唯一索引
  3. 普通索引
  4. 联合索引
  5. 前缀索引

多个字段建立一个联合索引,它的匹配原则是什么?

遵循最左前缀法则,如果跳跃某一列,索引将会部分失效(后面的字段索引失效)。

如果索引了多列(联合索引),要遵守最左前缀法则。最左前缀法则指的是查询从索引的最左列开始,并且不跳过索引中的列。

什么情况会导致索引失效?

  1. 联合索引不遵守最左前缀法则
  2. 列运算(使用字符串函数,数字与字符串转换)
  3. 头部模糊匹配
  4. or 连接条件,其中一边没有索引
  5. MySQL 评估如果使用索引效率更低,就会进行全表扫描
  6. 查询的值是所有的值(避免回表查询)

B+ 树和 B 树的区别?

B 树所有节点都存放数据,B+ 树只有叶子节点才存放数据,对范围查询不友好,且读取索引节点时需要更多的内存和磁盘 IO。

MySQL 使用了优化的 B+ 树,将叶子节点的单项链表改为了双向链表。

Java

链表 LinkedList 和数组 ArrayList 的区别

  1. 数据结构:LinkedList 使用了单链表,ArrayList 使用了数组
  2. 性能:LinkedList 修改插入性能高,ArrayList 查询性能高
  3. 空间:LinkedList 每个节点需要存放前后节点的地址,占用额外空间,ArrayList 存在数组的预留位置

数据结构

常见的排序算法

冒泡排序、快速排序、堆排序、插入排序、选择排序

简述一下快排的基本原理

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递此达到整个数据变成有序序列。

  1. 从数组中任选一个元素作为基准
  2. 使得所有比基准小的元素都在基准的左边,所有比基准大的元素都在基准的右边
  3. 递归左子数组和右子数组

SSM 框架

Spring Boot 和 Spring MVC 的区别

Spring MVC 是 Spring 的一个 Web 框架,处理 HTTP 请求。

Spring Boot 是 Spring 的一个开发脚手架,简化创建和使用流程。

Redis

Redis 的使用场景

  1. 作为 MySQL 的缓存
  2. 分布式锁
  3. 分布式登录,存放 Token
  4. 分布式环境存放登录验证码

怎么保证缓存一致的?

在更新数据库时主动更新或删除缓存

先删缓存还是先更新数据库?

先操作数据库,然后再删除缓存

避免其他线程再删除完缓存且未更新数据库时重建缓存。

Redis 过期数据的返回值?

返回 nil

面试官说的 -1,是错误的。

Redis 的基本数据类型有什么?

  1. String
  2. Hash
  3. Set
  4. ZSet
  5. List

Released under the MIT License.