欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > Python面试问题

Python面试问题

2025/5/4 0:17:39 来源:https://blog.csdn.net/Jcrows/article/details/147594331  浏览:    关键词:Python面试问题

一、Python 基础

1. Python 的特点

  • 动态类型:变量无需声明类型。
  • 解释型语言:逐行解释执行。
  • 支持多种编程范式(面向对象、函数式、过程式)。

2. 列表(List)与元组(Tuple)的区别

特性列表(List)元组(Tuple)
可变性可变不可变
性能较慢较快
使用场景数据需要频繁修改时数据固定且不可更改时

3. 字典(Dict)与集合(Set)的区别

  • 字典:键值对存储,用于快速查找。
  • 集合:无序且唯一的元素集合,用于去重或集合运算。

4. GIL(全局解释器锁)是什么?

  • GIL 是 Python 解释器中的一个互斥锁,确保同一时间只有一个线程执行 Python 字节码。
  • 影响:多线程在 CPU 密集型任务中性能较差,但不影响 I/O 密集型任务。

5. 深拷贝与浅拷贝的区别

  • 浅拷贝:只复制对象的引用,内部元素共享。
  • 深拷贝:递归复制对象及其内部元素。
import copya = [1, 2, [3, 4]]
b = copy.copy(a)  # 浅拷贝
c = copy.deepcopy(a)  # 深拷贝

二、Python 进阶

1. 生成器与迭代器的区别

  • 迭代器:实现了 __iter____next__ 方法的对象。
  • 生成器:通过 yield 关键字定义的函数,返回一个生成器对象。
# 迭代器示例
class MyIterator:def __init__(self, data):self.data = dataself.index = 0def __iter__(self):return selfdef __next__(self):if self.index >= len(self.data):raise StopIterationvalue = self.data[self.index]self.index += 1return value# 生成器示例
def my_generator(data):for item in data:yield item

2. 装饰器的作用与实现

  • 作用:在不修改原函数代码的情况下扩展其功能。
  • 实现
def my_decorator(func):def wrapper(*args, **kwargs):print("Before function call")result = func(*args, **kwargs)print("After function call")return resultreturn wrapper@my_decorator
def say_hello():print("Hello!")say_hello()

3. 上下文管理器

  • 使用 with 语句管理资源(如文件、数据库连接)。
  • 实现方式:
    • 使用类实现 __enter____exit__ 方法。
    • 使用 contextlib 模块的 contextmanager 装饰器。
# 类实现
class MyContextManager:def __enter__(self):print("Entering context")return selfdef __exit__(self, exc_type, exc_val, exc_tb):print("Exiting context")# 使用 contextlib
from contextlib import contextmanager@contextmanager
def my_context_manager():print("Entering context")try:yieldfinally:print("Exiting context")

4. 异步编程

  • 使用 asyncio 模块实现异步操作。
  • 示例:
import asyncioasync def say_hello():print("Hello")await asyncio.sleep(1)print("World")asyncio.run(say_hello())

三、算法与数据结构

1. 常见排序算法

  • 冒泡排序
def bubble_sort(arr):n = len(arr)for i in range(n):for j in range(0, n - i - 1):if arr[j] > arr[j + 1]:arr[j], arr[j + 1] = arr[j + 1], arr[j]return arr
  • 快速排序
def quick_sort(arr):if len(arr) <= 1:return arrpivot = arr[0]left = [x for x in arr[1:] if x <= pivot]right = [x for x in arr[1:] if x > pivot]return quick_sort(left) + [pivot] + quick_sort(right)

2. 查找算法

  • 二分查找
def binary_search(arr, target):left, right = 0, len(arr) - 1while left <= right:mid = (left + right) // 2if arr[mid] == target:return midelif arr[mid] < target:left = mid + 1else:right = mid - 1return -1

四、Python 框架与工具

1. Django 与 Flask 的区别

特性DjangoFlask
复杂度全栈框架,功能强大微框架,轻量级
灵活性较低较高
适用场景大型项目小型项目或 API 开发

2. Pandas 常用操作

  • 读取 CSV 文件
import pandas as pddf = pd.read_csv('data.csv')
  • 数据筛选
filtered_df = df[df['age'] > 30]
  • 数据聚合
grouped_df = df.groupby('category').sum()

3. NumPy 常用操作

  • 创建数组:
import numpy as nparr = np.array([1, 2, 3])
  • 矩阵乘法:
matrix_a = np.array([[1, 2], [3, 4]])
matrix_b = np.array([[5, 6], [7, 8]])
result = np.dot(matrix_a, matrix_b)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词