面试题新

发布时间 2023-04-03 20:57:04作者: 致丶幻


23年5月31日

1、装饰器是什么

1.装饰器是什么

装饰器的本质是闭包【函数】

2.装饰器的作用

在不改变程序源代码和调用方式的基础上,为程序增加新功能

3.装饰器的本质

被装饰以后,在执行被装饰的函数,其实执行不是之前的函数了,所有才加入了新功能

4.装饰器的语法糖

语法糖 @ python的特殊语法,它有特殊作用----》把被装饰的函数(装饰器下面的函数),当参数传入装饰器,并把装饰器的执行结果赋值给被装饰的函数

2、python深浅拷贝是什么

浅拷贝,指的是重新分配一块内存,创建一个新的对象,但里面的元素是原对象中各个子对象的引用。

深拷贝,是指重新分配一块内存,创建一个新的对象,并且将原对象中的元素,以递归的方式,通过创建新的子对象拷贝到新对象中。因此,新对象和原对象没有任何关联。

3、模仿方法new和init有什么区别

1.__init__
 	类名加括号 给对象添加独有数据时自动触发

2.__new__
    类在创建对象的时候是用魔法方法——双下new,产生空对象。

4、python的可变和不可变数据类型是什么

可变数据类是数据值发生改变,其内存地址不变
不可变数据是,数据值发生改变,其内存地址一定发生改变
可变数据类型有字典,列表,集合,文件对象
不可变数据类型有,整型,小数型,字符串,元组,布尔

5、什么是生成器,有什么应用场景

生成器是程序员在函数内部写的有vield关键字的函数
应用场景:比如说在进行文件操作时,如果文件过大,一次性打开,会占用过多内存空间可能会造成内存溢出,使用生成器用多少拿多少,减少内存消耗

23年4月3日

1、数据库三大范式是什么

参考:https://zhuanlan.zhihu.com/p/618012849

1、第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据线;也就是说:每列的值具有原子性,不可再分割。

解释:

学籍信息可以继续分割,所以不符合1NF

image

2、第二范式(2NF)是在第一范式(1NF)的基础上建立起来得,满足第二范式(2NF)必须先满足第一范式(1NF)。如果表是单主键,那么主键以外的列必须完全依赖于主键;如果表是复合主键,那么主键以外的列必须完全依赖于主键,不能仅依赖主键的一部分。

解释:

学生id和课程id联合主键,非主键列【分数】完全依赖于主键【学生id和课程id】,学生id和课程id两个值才能决定score的值
但是【课程名字】只依赖于课程id,与学生id没有依赖关系,它不完全依赖于主键,只依赖于主键的一部分,不符合2NF

image

3、第三范式(3NF)是在第二范式的基础上建立起来的,即满足第三范式必须要先满足第二范式。第三范式(3NF)要求:表中的非主键列必须和主键直接相关而不能间接相关;也就是说:非主键列之间不能相关依赖。

解释:

表中【部门名称】依赖于【部门id】,而【部门id】依赖于【id主键】,从而推出【部门名称】依赖于id(主键)
【部门名称】不直接依赖于主键,而是通过依赖于非主键列而依赖于主键,属于传递依赖,不符合3NF

image

2、mysql有哪些索引类型,分别有什么作用

什么是索引?

索引是为了加速对表中数据行的检索而创建的一种分散的存储结构。

索引的作用

1)索引就好比一本书的目录,它能让你更快的找到自己想要的内容
2)让获取的数据更有目的性,从而提高数据库检索数据的性能

索引的本质:加快查询

mysql的索引类型

聚簇索引,聚集索引,主键索引,主键,如果不存在主键,隐藏一个主键,构建聚簇索引 primary(key)

辅助索引,普通索引 index

唯一索引 unique

联合索引,组合索引,多列索引:unique_to

3、事务的特性(ACID)和隔离级别

事务的四大特性

  • A:原子性

指事务是一个不可再分割的工作单位,事务中的操作要么都发生,要么都不发生。

  • C:一致性

指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。一致性与原子性是密切相关的。

  • I:隔离性

指在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间(多个事务之间彼此不干扰)。

  • D:持久性

持久性也称永久性,指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的,并不会被回滚。

事务的隔离级别

1.read uncommitted(未提交读)

2.read committed(提交读)

3.repeatable read(可重复读) # MySQL默认隔离级别

4.serializable(可串行读)