1. 文章
  2. 文章详情

Python 后端开发面试题

1. is==的区别?

is判断两个引用是否指向的是同一个变量,即内存id是否相等,==则是调用的__eq__方法,一般是用于判断值是否相等,也可以重写__eq__方法实现想要的效果。

2. dictlist的查找复杂度?

dicthash实现,查找的时间复杂度是O(1)list则为O(n)

3. a/b/c三个装饰器依次装饰函数fun(),装饰器的执行顺序?

注意装饰器函数本身一般有两层,在装饰的时候外层和内层顺序是相反的,参考python 多个装饰器的调用顺序

4. 如何运行一个字符串?

evalexec

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~10
10. 给定一个数组,按奇数在前升序,偶数在后降序排列,一行代码实现。

一行代码必然是列表生成式,假设数组是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条)