Python面试题(附答案)

这篇博客主要探讨了Python面试中常见的问题,包括线程与协程的区别及其在项目中的应用,Python2与Python3的主要差异,线程锁Lock和Rlock的细节,以及如何生成唯一ID。此外,还讨论了秒杀系统后台架构设计,数据库设计保证下单成功获取商品的策略,商品信息维护模块的实例模型,以及项目中使用的技术如httpclient、RabbitMQ等。最后,涉及了Python编程中的各种知识点,如列表操作、数据库交互、网络协议等。
摘要由CSDN通过智能技术生成

请解释线程和协程的区别,你曾经在项目中是如何使用它们的,以及效果?
线程

1)线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。线程间通信主要通过共享内存,上下文切换很快,资源开销较少,但相比进程不够稳定容易丢失数据。
2)协程
协程是一种用户态的轻量级线程,协程的调度完全由用户控制。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。

请简单介绍一下python2和python3的区别,你为什么选择python2或者python3?
1)python2的代码混乱,重复较多 冗余,因为当时来编写的人有C 语言的大牛 和 java的大牛等各种大神 所以里面都含有各种语言的影子;python3统一了代码 源码规范 清晰 简单优美。2)python3:print(“内容”)python2:ptint()或者print ‘内容’;3)python3 编码:utf-8
python2编码: 默认编码:ascii 解决办法:在首行 # -- encoding:utf-8--
4)用户交互 input
python2: raw-input()
python3:input ()
5)python2x :unicode 默认2个字节表示一个字符 可以在LINUX 编译安装时做调整
python3x:unicode 默认是4个字节表示一个字符
6)python2x 没有nonlocal
python3x 加入的
7)python3x 新建的包里面的init文件如果你删除该文件 包照样可以被调用
python2x 新建的包如果没有init文件 则包不能够被调用 直接报错
8)python2 中的经典类 遍历方法是以深度优先 新式类是以广度优先
python3 中不存在经典类 所有的类都是新式类 所以都是广度优先

请解释一下python的线程锁Lock和Rlock的区别,以及你曾经在项目中是如何使用的?
从原理上来说:在同一线程内,对RLock进行多次acquire()操作,程序不会阻塞。
资源总是有限的,程序运行如果对同一个对象进行操作,则有可能造成资源的争用,甚至导致死锁 也可能导致读写混乱

如何用python生成唯一的ID(不同的程序之间也要唯一,长度不得超过32个字节),这些ID是如何排序的?
1)uuid1()——基于时间戳
由MAC地址、当前时间戳、随机数生成。可以保证全球范围内的唯一性,
但MAC的使用同时带来安全性问题,局域网中可以使用IP来代替MAC。
2)uuid2()——基于分布式计算环境DCE(Python中没有这个函数)
算法与uuid1相同,不同的是把时间戳的前4位置换为POSIX的UID。
实际中很少用到该方法。
3)uuid3()——基于名字的MD5散列值
通过计算名字和命名空间的MD5散列值得到,保证了同一命名空间中不同名字的唯一性,和不同命名空间的唯一性,但同一命名空间的同一名字生成相同的uuid。
4)uuid4()——基于随机数
由伪随机数得到,有一定的重复概率,该概率可以计算出来。
5)uuid5()——基于名字的SHA-1散列值算法与uuid3相同,不同的是使用 Secure Hash Algorithm 1 算法

如果让你开发一个电商系统的秒杀活动,后台架构你会怎么设计,以确保系统能支撑活动开始后可能导致的交易高峰?
7de75bb93de37ee2ffdc073c5eb3e236.png
参考链接:
https://blog.csdn.net/github_37048196/article/details/83573935

电商系统中,从数据库设计的角度,如何保证用户下单成功后,一定能拿到货?

如果让你来设计一个电商系统的商品信息维护模

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西瓜皮儿的皮儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值