Python面试题究极篇01

Python面试题第一章

深浅拷贝是什么

浅拷贝和深拷贝:
浅拷贝是在内存创建一块新的内存地址,创建一个新的对象,但是里面的元素是原对象中各个子对象的引用
深拷贝是在内存创建一块新的内存地址,创建一个新的对象,并将原对象中的元素,以递归的方式,通过创建新的子对象拷贝到新对象中。 因此,新对象和老对象没有任何关联
深浅拷贝是对数据进行复制,
对于不可变类型来说深浅拷贝都是一样的重新拷贝一份数据,
对于可变类型来说如果内部嵌套的还有不可变类型,
浅拷贝只拷贝第一层,嵌套的拷贝是内存地址,
深拷贝是完全在复制一份出来

魔法方法new和init有什么区别

init是类() 自动触发类中的魔法方法,实例化一个对象
但是在init更早之前其实有个new方法
new方法才是第一个对象实例化的时候所调用的方法,是真正意义上的构造方法
new方法有一个return的返回值 如果new方法没有返回实例对象,init方法不会触发
new是类初始化自动触发,产生一个空对象 第一个参数是传给init的
Init也类初始化自动触发,给new产生的对象设置初始值

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

不可变类型: 数字 字符串str 元组,布尔
值改变 内存地址不变
可变类型:list列表 dict字典 集合 文件对象
值改变 内存地址改变

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

生成器也是迭代器 不过多了一个yield关键字
形成生成器
携程
上下文管理器
进行文件操作时,如果文件过大,一次性打开,会占用过多内存空间可能会造成内存溢出,使用生成器用多少拿多少,减少内存消耗

数据库的三大范式是什么

范式:关系型数据库中,数据表设计的基本原则、规则称之为范式,是我们在设计数据库中需要遵守的规则和方法。

ChatGpt回答:
1.第一范式(1NF):
数据表中的每一列都应该是原子性的,不可再分。也就是说,每个数据表必须有一个主键,并且每一列都应该与主键相关
2. 第二范式(2NF):
在满足第一范式的基础上,非主键列必须完全依赖于非主键列必须完全依赖于主键,而不能只依赖于部分主键。也就是说,每个非主键列都应该与主键有关系,而不能只与某个部分主键相关。
3. 第三范式(3NF):在满足第二范式的基础上,非主键列之间不能相互依赖,而应该互相独立。也就是说,每个非主键列都应该只与主键相关,而不应该与其他非主键列相关。
通过满足这些范式,可以避免数据冗余、数据更新异常等问题,提高数据库的数据完整性和查询效率。
# 自我回答总结:
1.数据库的三大范式
第一范式(1NF)是指数据库表的每一列都是不可分割
第二范式(2NF):如果表是单主键,那么主键以外的列必须完全依赖于主键:如果表是复合主键,那么主键以外的列必须完全依赖于主键,不能仅依赖主键的一部分。
第三范式(3NF)要求: 表中的非主键列必须和主键直接相关而不能间接相关: 也就是说: 非主键列之间不能相关依赖 不存在传递依赖

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

索引:对于数据库中的一行或者多行值进行排序的一种结构---->可以加快检索表中的数据

聚簇索引,聚集索引,主键索引,主键,如果不存在主键,隐藏一个主键,构造聚簇索引
辅助索引, 普通索引 index
唯一索引 unique
联合索引,组合索引,多列索引: unique_togethere
索引的选择应该根据具体的业务需求和数据特点来进行,需要根据实际情况选择合适的索引类型以提高查询效率。

事务的特性和隔离级别

事务的四大特性:
原子性:
# 数据库把"要么全做,要么全不做"的这种规则称为原子性
隔离性:
# 事务之间相互隔离,不受影响,这与事务的隔离级别密切相关
一致性:
# 事务执行前后的状态要一致,可理解为数据一致性
持久性:
# 事务完成之后,她对数据的修改是永恒的,即时出现故障也能够正常保持
隔离级别:
# READ UNCOMMITTED: 未提交读(读未提交)
# READ COMMITTED:已提交读(读已提交)
# REPEATABLE READ:可重复读
# SERIALIZABLE:可串行化

MySQL事务隔离级别:

读取未提交:最低的隔离级别,允许读取尚未提交的数据变更,可能造成脏读,不可重复读,幻读
读取已提交:允许读取并发事物已经提交的数据,可以避免脏读,但是可能造成不可重复读,幻读
可重复读:对于同一字段多次读取的结果都是一致的,除非本身事物修改,可避免脏读和不可重复读,但是可能会造成幻读
可串行化:最高的隔离级别,完全服从隔离级别,所有的事物依次执行,可以避免脏读、不可重复读、幻读
posted @   性格如此w  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示