蓝色脉动二面 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笔面经#