1. is和==的区别?
is判断两个引用是否指向的是同一个变量,即内存id是否相等,==则是调用的__eq__方法,一般是用于判断值是否相等,也可以重写__eq__方法实现想要的效果。
2. dict与list的查找复杂度?
dict用hash实现,查找的时间复杂度是O(1),list则为O(n)。
3. a/b/c三个装饰器依次装饰函数fun(),装饰器的执行顺序?
注意装饰器函数本身一般有两层,在装饰的时候外层和内层顺序是相反的,参考python 多个装饰器的调用顺序。
4. 如何运行一个字符串?
eval和exec。
5.Python多线程能否充分利用CPU多核心?
GIL相关
6. 什么是上下文管理器?如何实现?
上下文是指程序运行的环境,Python中常见于打开文件或网络连接,其实就是with关键字,如:
with open("test.txt") as file:
print(file.read())确保文件在最后会被关闭,只要对一个对象实现了__enter__和__exit__函数,就可以构造自己的上下文管理器了。
7. 如何判断两个浮点数是否相等?
Math模块中有一个isclose函数用来判断两个浮点数的值是否接近或相等
8. MySQL的索引一般是怎么实现的?
B-Tree(一般是B+Tree)和Hash
9. 一个函数RAND7()随机返回1~7,使用它构造一个RAND10()函数随机返回10。
def rand10():
while 1:
res = (rand7()-1)*7+rand7() # res等概率随机1~49
if res < 40: # 只取出0~39共40个数,每个数出现的概率也是相等的
return res % 10 + 1 # 随机输出1~1010. 给定一个数组,按奇数在前升序,偶数在后降序排列,一行代码实现。
一行代码必然是列表生成式,假设数组是nums,代码如下:
sorted([n for n in nums if n % 2]) + sorted([n for n in nums if not n % 2], reverse=True)11. 实现单例
单例就是说一个class只能有一个instance,实现的方法有很多,例如改写__new__方法:
class Singleton(object):
_instance = None
def __new__(cls, *args, **kw):
if not cls._instance:
cls._instance = super(Singleton, cls).__new__(cls, *args, **kw)
return cls._instance
评论列表(0条)