蓝色脉动二面 4.25

1.数据库三范式

第一范式:数据表中的每一列(每个字段)都不可以再拆分。

例如用户表,用户地址还可以拆分成国家、省份、市,这样才是符合第一范式

的。

第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主

键的一部分。

例如订单表里,存储了商品信息(商品价格、商品类型),那就需要把商品ID

和订单ID作为联合主键,才满足第二范式。

第三范式:在满足第二范式的基础上,表中的非主键只依赖于主键,而不依赖于

其他非主键。

例如订单表,就不能存储用户信息(姓名、地址)。

2.事务ACID

3.char和varchar有啥区别

char

char表示定长字符串,长度是固定的;

如果插入数据的长度小于char的固定长度时,则用空格填充;

因为长度固定,所以存取速度要比varchar快很多,甚至能快50%,但正因为其长

度固定,所以会占据多余的空间,是空间换时间的做法;

对于char来说,最多能存放的字符个数为255,和编码无关

varchar

varchar表示可变长字符串,长度是可变的;

插入的数据是多长,就按照多长来存储;

varchar在存取方面与char相反,它存取慢,因为长度不固定,但正因如此,不占

据多余的空间,是时间换空间的做法;

对于varchar来说,最多能存放的字符个数为65532

日常的设计,对于长度相对固定的字符串,可以使用char,对于长度不确定的,使用

varchar更合适一些。

4.mysql 内连 左连 右连

5.索引失效

6.数据量特别大的表的优化步骤是什么样的?

7.redis数据类型

8.redis是单线程的吗

9.缓存穿透

10.缓存一致性

11.redis + lua 保证幂等性

12.redis中内存很高,想减小内存怎么优化?

优化键值对的设计:Redis 是一个键值对数据库,因此优化键值对的设计可以有效降低内存使用。例如,可以尝试将多个键值对合并成一个复杂的数据结构(如 hash、zset

等),以减少内存占用。

使用压缩功能:Redis 提供了多种压缩算法,可以将大量数据压缩到较小的空间中,从而降低内存使用。可以通过配置文件中的“maxmemory-policy”选项开启压缩功能。

设置过期时间:可以为 Redis 中的键值对设置过期时间,一旦超过该时间,Redis 就会自动删除这些键值对。这样可以避免 Redis 中出现很多旧的无用数据,从而节省内存。

增加持久性:Redis 支持将内存中的数据保存到磁盘中,这样即使出现服务器宕机等情况,也不会丢失数据。但是,将数据写入磁盘需要消耗额外的内存和 CPU

资源,因此需要在性能和数据安全之间做出权衡。

控制最大内存:可以通过配置文件中的“maxmemory”选项设置 Redis 最大可用内存,当 Redis 内存使用达到该值时,Redis 将自动删除一些键值对,以释放空间。

合理配置并发连接数:可以通过修改 Redis 配置文件中的“maxclients”选项来控制并发连接数。减少并发连接数可以降低 Redis 的内存使用和 CPU 消耗。

定期清理过期数据:可以定期清理 Redis 中的过期键值对,以避免 Redis 中出现大量无用数据,从而节省内存。

13.java创建对象的方式

14.集合 currentHashmap hashtable

15.jvm内存模型

16.堆的分区

17.java当中创建线程有哪些方式

18.官方提供的线程池有哪些

19.java当中IO常用的类有哪些

20.SpringIOC 用到了哪些设计模式 你了解的设计模式

21.SpringBoot的优点

反问

不开摄像头,只问八股 已挂

#软件开发2024笔面经#
全部评论
xd现在拿到多少个offer了呀
点赞
送花
回复
分享
发布于 05-01 18:49 贵州

相关推荐

2 3 评论
分享
牛客网
牛客企业服务