首页 > 编程语言 >Python面试题究极篇01

Python面试题究极篇01

时间:2023-04-02 23:26:01浏览次数:46  
标签:面试题 01 范式 Python 查询 索引 幻读 拷贝 主键

目录

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): 最基本的原则,属性不可再分割
    必须确保数据表中灭个字段的值具有原子性,就是数据表中某个字段的值是不可拆分的最小数据单元
  
2.第二范式(2NF):满足第一范式,且不存在部份依赖
    在满足第一范式的基础上,还要满足表里的每条数据,都是可唯一标识的,而且非主键字段必须完全依赖主键,不能只依赖于主键的部分
    
 3.第三范式(3NF):满足第二范式,且不存在传递依赖
    在满足第二范式的基础上,数据表中的所有非主键字段不能依赖其他非主键字段(意思就是所有的非主键之间不能有依赖关系,它们是相互独立的)

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

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

1.B-Tree索引:
    最常见的索引类型。B-Tree索引按照一定的算法,将索引值存储在一棵树中,可以加速单值查询、范围查询和排序等操作。
2.哈希索引:
    哈希索引是将索引值通过哈希函数计算后,存储在哈希表中。哈希索引适合等值查询,但不适合范围查询和排序等操作。
3.全文索引:
    全文索引适用于文本字段的查询,可以提高匹配度和搜索效率。MySQL使用InnoDb存储引擎时支持全文索引,可以使用MATCH AGAINST语法进行查询。
4.空间索引:
    空间索引时针对地理位置信息的索引,可以支持空间距离计算和范围查询。Mysql5.7版本以上支持空间索引
5.R-Tree索引:R-Tree索引是一种基于多维空间的索引结构,适用于范围查询和空间查询等操作。
6.其他特殊索引:如前缀索引、压缩索引等,根据数据类型和数据存储情况,可以选择使用不同的索引类型。

索引的选择应该根据具体的业务需求和数据特点来进行,需要根据实际情况选择合适的索引类型以提高查询效率。

事务的特性和隔离级别

事务的特性和隔离级别
事务的四大特性:
原子性:数据库中的事物执行是作为原子粒度,即不可再分,整个语句要么执行,要么不执行
一致性:事物开始之前和事物结束以后,数据库的完整性约束没有被破坏
隔离性:事物的执行是互不干扰的
永久性:该事物对于数据库所作的更改是永久保存到数据库中的,不会回滚
事务的并发问题:
1.脏读:事物A读取了事物B更新的数据,然后B进行了回滚,A读取到的数据是脏数据
2.不可重复读:事物A多次读取同一数据,事物B 在A读取的过程中对数据进行了更新并提交,导致A多次读取同一数据时,结果不一致
3.幻读:指的是一个事物在前后两次查询同一个范围的时候,后一个查询看到了前一次没有看到的行
(系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。)

不可重复读和幻读很容易混淆的,不可重复读侧重于修改,幻读侧重于新增或者删除
不可重复读------》》解决需要锁满足条件就好了
幻读--------》》解决幻读需要表锁

!!!Innodb存储引擎已解决幻读

MySQL事务隔离级别:

读取未提交:最低的隔离级别,允许读取尚未提交的数据变更,可能造成脏读,不可重复读,幻读

读取已提交:允许读取并发事物已经提交的数据,可以避免脏读,但是可能造成不可重复读,幻读

可重复读:对于同一字段多次读取的结果都是一致的,除非本身事物修改,可避免脏读和不可重复读,但是可能会造成幻读
    
可串行化:最高的隔离级别,完全服从隔离级别,所有的事物依次执行,可以避免脏读、不可重复读、幻读

标签:面试题,01,范式,Python,查询,索引,幻读,拷贝,主键
From: https://www.cnblogs.com/wei0919/p/17281761.html

相关文章

  • python电子商务网站用户行为分析
    1importos2importpandasaspd345#修改工作路径到指定文件夹6os.chdir("C:\Users\86184\Desktop\文件集\data")78#第一种连接方式9#fromsqlalchemyimportcreate_engine1011#engine=create_engine('mysql+pymysql://root:123@192.168.31.......
  • Python 数据结构与算法详解
    一、数据结构与算法1、算法提出1.算法概念算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机按照确切的步骤来执行一个指定的任务。一般地,当算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写入输出设备或某个存储地址供以后再调用。算法是独立......
  • Python图形处理
    一、PillowPIL:PythonImagingLibrary,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。由于PIL仅支持到Python2.7,加上年久失修,于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新Python3.x,又加入了许多新特性,因此,我们可以直接安......
  • Python邮件发送接收实战
    一、电子邮件Email的历史比Web还要久远,直到现在,Email也是互联网上应用非常广泛的服务。几乎所有的编程语言都支持发送和接收电子邮件,但是,先等等,在我们开始编写代码之前,有必要搞清楚电子邮件是如何在互联网上运作的。我们来看看传统邮件是如何运作的。假设你现在在北京,要给一个香港......
  • Python3连接MySQL
    一、安装引入pymysql模块1、安装pipinstallPyMySQL2、Pycharm中引入pymysql3、在文件中引入模块importpymysql如果系统不支持pip命令,可以使用git命令下载安装包安装(也可以手动下载):$gitclonehttps://github.com/PyMySQL/PyMySQL$cdPyMySQL/$python3setup.pyinsta......
  • day01-SpringCloud基本介绍
    SpringCloud基本介绍SpringCloud官方文档1.提出问题先思考一个问题,没有微服务技术,是不是程序员就不能开发大型项目?是可以的,对大型项目进行模块划分,对各个模块进行实现。但模块之间更多地是以API调用完成,耦合度较高,不利于拓展和维护(在没有微服务技术时,很多大型项目就已经使......
  • Flask基础01
    1Flask和pythonweb框架介绍#pythonweb框架本质都一样 -django:大而全,内置的app多,第三方app也多-Flask:小而精,没有过多的内置组件,只完成web框架最基本的功能,需要借助于第三方,完成更丰富的功能-web.py:是一个小巧灵活的Python框架,它简单而且功能强大(国内几乎没有......
  • Python ORM Pony 常用操作(增删改查)
    Pony是一个高级的对象关系映射器ORM框架。Pony它能够使用Python生成器表达式和lambdas向数据库编写查询。Pony分析表达式的抽象语法树,并将其转换为SQL查询。支持SQLite,MySQL,PostgreSQL和Oracle等数据库,本文主要介绍PythonORMPony中常用操作,及数据增加、删除、修改和查询。......
  • python - 邮件发送
    因为公网ip是动态的,想做一个在ip发生改变后邮件提醒1.首先需要开启smtp服务开启后复制授权密码2.邮件发送importsmtplibfromemail.mime.textimportMIMETextFrom='ZZZZZZZZZZZZZZZZ@163.com'#发件人邮箱To=Frompwd='ZZZZZZZZZZZZZZZZ'#授权码smtp=sm......
  • Python
    1.python3中格式化字符串的写法在3.6以前的版本中,可以这样用,也就是利用百分号print("我叫%s今年%d岁!"%('小明',10))2.在3.6之后的版本中,可以利用f-stringname="123123"print(f'hello{name}')注意要用大括号括起来,以及单引号的位置。2.python推导式可......