Python面试题分享与解答

收集了一些 python 的面试题,个人认为是比较全面的 https://github.com/kenwoodjw/python_interview_question 欢迎大家补充。答案还在更新中


Python面试题分享与解答
21 回复

支持


这个帖子标题比较宽泛,没有具体的代码问题。作为Python程序员,我直接分享几个高频且能体现水平的面试题及核心解答思路。

1. Python中 is== 的区别是什么? == 检查是否相等,is 检查两个变量是否指向内存中的同一个对象(即id是否相同)。对于小整数(-5到256)和短字符串,Python会缓存,is可能为True,但绝不能依赖这个。关键点:is 用于比较 NoneTrueFalse 等单例对象。

2. 解释Python的GIL(全局解释器锁)及其影响。 GIL是CPython解释器中的一个互斥锁,它确保同一时刻只有一个线程执行Python字节码。这意味着即使在多核CPU上,纯Python的多线程程序也无法实现真正的并行计算,I/O密集型任务仍可受益,但CPU密集型任务应使用 multiprocessingconcurrent.futures.ProcessPoolExecutor

3. 描述 *args**kwargs 的用法。 *args 用于接收任意数量的位置参数,在函数内部作为一个元组**kwargs 用于接收任意数量的关键字参数,在函数内部作为一个字典。它们主要用于编写可接受灵活参数的函数或装饰器。

4. 什么是装饰器(Decorator)?写一个简单的例子。 装饰器本质上是一个函数,它接受一个函数作为参数,并返回一个新的函数,用于扩展原函数的功能而不修改其代码。这是元编程和遵循“开放-封闭”原则的典型应用。

def my_decorator(func):
    def wrapper():
        print("Something is happening before the function is called.")
        func()
        print("Something is happening after the function is called.")
    return wrapper

@my_decorator
def say_hello():
    print("Hello!")

say_hello()
# 输出:
# Something is happening before the function is called.
# Hello!
# Something is happening after the function is called.

5. 列表(list)和元组(tuple)的主要区别? 最根本的区别:列表可变(mutable),元组不可变(immutable)。这意味着列表可以增删改元素,而元组一旦创建就不能修改。因此,元组可用作字典的键,而列表不能;元组通常用于存储异构数据(如数据库记录的一行),列表用于存储同构数据序列。

总结建议: 理解概念背后的“为什么”比死记硬背答案更重要。

stared

赞一个 顺路问下,楼主有没有爬虫的面试题

Singleton 那儿学到新东西了

stared

有部分爬虫题目

绝大多数我都会,是不是算入门了…我主要使用 Rust…

并发和并行这里还是看 的这篇文章: https://laike9m.com/blog/huan-zai-yi-huo-bing-fa-he-bing-xing,61/ 。 [ IO 密集型操作使用并发更好。CPU 运算量大的程序,使用并行会更好] 这里应该是多进程更适合 cpu bound,多线程更适合 io bound ?

在 python 里面,还有什么场景需要用到 Singleton 么?
https://stackoverflow.com/questions/31875/is-there-a-simple-elegant-way-to-define-singletons 这儿最 upvote 的回答是喷 singleton 的

习惯了,要理解透彻这个问题也不是那么容易。。其实“线程是并发还是并行,进程是并发还是并行?”这个问法就很奇怪,估计是想考察 GIL 吧

这个题考 GIL 也有点牵强
而且这套面试题很多题感觉给我 corner case 的感觉,,除了玩语言的,很少有人会追着这些地方去问。无聊且价值不大

认真看了下。。

![image]( https://user-images.githubusercontent.com/7054676/53797886-143eea80-3f72-11e9-9b06-1e8add83b842.png)

这样的回答,真的不会误导人么?。。

认真看了下。。。很多原理性的错误。。要是面试看这个,怕是真的会很惨。。

https://github.com/kenwoodjw/python_interview_question/issues

回到顶部