Python常见面试题及解答总结

360影视 国产动漫 2025-05-06 17:29 2

摘要:Ø 不可变:int,float,str,tuple,bool,frozenset

以下是 Python 常见的面试题及简要答案示例,覆盖基础语法、数据结构、算法和高级特性等方向:

一、Python 基础

Python 中可变(Mutable)和不可变(Immutable)数据类型有哪些?

Ø 不可变:int, float, str, tuple, bool, frozenset

Ø 可变:list, dict, set, bytearray

列表(List)和元组(Tuple)的区别?

Ø 列表可变,元组不可变;

Ø 列表用 ,元组用

Ø 元组适合存储固定数据(如配置项),性能略优。

解释装饰器(Decorator)的作用,写一个记录函数执行时间的装饰器。

python

import time

def timer_decorator(func):

def wrapper(*args, **kwargs):

start = time.time

result = func(*args, **kwargs)

print(f"{func.__name__} 执行时间: {time.time - start:.2f}秒")

return result

return wrapper

@timer_decorator

def my_function:

time.sleep(1)

生成器(Generator)和迭代器(Iterator)的区别?

Ø 生成器是迭代器的一种,通过 yield 关键字实现,惰性计算,节省内存;

Ø 迭代器需实现 __iter____next__ 方法。

解释 GIL(Global Interpreter Lock)及其影响。

Ø GIL 是 CPython 解释器的全局锁,同一时刻仅一个线程执行 Python 字节码;

Ø 导致多线程无法充分利用多核 CPU,适合 I/O 密集型任务,计算密集型建议用多进程。

二、数据结构与算法

如何去除列表中的重复元素并保持顺序?

python

def remove_duplicates(lst):

seen = set

return [x for x in lst if not (x in seen or seen.add(x))]

反转字符串(如 "hello" → "olleh")。

python

s = "hello"

reversed_s = s[::-1]

找出列表中重复的元素(时间复杂度 O(n))。

python

from collections import Counter

def find_duplicates(lst):

return [k for k, v in Counter(lst).items if v > 1]

快速排序实现。

python

def quick_sort(arr):

if len(arr)

return arr

pivot = arr[len(arr) // 2]

left = [x for x in arr if x

middle = [x for x in arr if x == pivot]

right = [x for x in arr if x > pivot]

return quick_sort(left) + middle + quick_sort(right)

三、面向对象编程

类变量和实例变量的区别?

Ø 类变量由所有实例共享,实例变量属于特定实例。

实现单例模式(Singleton)。

python

class Singleton:

_instance = None

def __new__(cls):

if not cls._instance:

cls._instance = super.__new__(cls)

return cls._instance

魔术方法 __str__ 和 __repr__ 的区别?

Ø __str__ 用于用户友好的字符串表示(如 print(obj));

Ø __repr__ 用于开发者调试,应明确对象信息。

四、高级特性

深拷贝(Deep copy)和浅拷贝(Shallow Copy)的区别?浅拷贝(copy.copy)复制顶层对象,引用嵌套对象;深拷贝(copy.deepcopy)递归复制所有对象。闭包(Closure)是什么?写一个例子。

python

def outer_func(x):

def inner_func(y):

return x + y

return inner_func

closure = outer_func(10)

print(closure(5)) # 输出 15

五、编码题示例

斐波那契数列生成器:

python

def fibonacci(n):

a, b = 0, 1

for _ in range(n):

yield a

a, b = b, a + b

检查括号是否匹配:

python

def is_valid_parentheses(s):

stack =

mapping = {')': '(', '}': '{', ']': '['}

for char in s:

if char in mapping:

top = stack.pop if stack else '#'

if mapping[char] != top:

return False

else:

stack.append(char)

return not stack

六、其他常见问题

Python 的垃圾回收机制(引用计数 + 分代回收)。多进程 vs 多线程的应用场景。Django 和 Flask 的核心区别?Python 3.8+ 的新特性(如海象运算符 :=,位置参数 /)。

面试时需结合具体场景灵活回答,建议通过实际项目经验举例说明。

来源:老客数据一点号

相关推荐