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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/78823.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机视觉进化论:YOLOv12、YOLOv11与Darknet系YOLOv7的微调实战对比

摘要 YOLO系列作为实时目标检测领域的重要里程碑&#xff0c;持续引领速度与精度的平衡发展。本文围绕YOLOv7&#xff08;基于Darknet框架&#xff09;、YOLOv11及YOLOv12&#xff0c;系统、深入地对比了三款模型的架构创新、微调策略、核心技术及应用场景。我们详细解析了三者…

SQL Server 存储过程开发规范

SQL Server 存储过程开发规范&#xff08;高级版&#xff09; 1. 总则 1.1 目标 本规范旨在&#xff1a; 提高存储过程的事务一致性、异常可追踪性、错误透明度。 统一日志记录、错误码管理、链路追踪&#xff08;Trace ID&#xff09;。 支持复杂事务场景&#xff08;嵌套…

opendds的配置

配置的使用 文档中说明有4种使用配置的方式&#xff1a; 环境变量 命令行参数&#xff08;将覆盖环境变量中的配置&#xff09; 配置文件&#xff08;不会覆盖环境变量或命令行参数中的配置&#xff09; 用户调用的 API&#xff08;将覆盖现有配置&#xff09; 这里对开发…

(Go Gin)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收

1. 路由 gin 框架中采用的路优酷是基于httprouter做的 HttpRouter 是一个高性能的 HTTP 请求路由器&#xff0c;适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用&#xff0c;特别适合需要高性能和简单路由的应用场景。 主要特点 显式匹配&#xff1a;与其他路由…

Marin说PCB之----板材的替换注意事项

由于最近很多武林上的主流门派都需要采用将的本方案&#xff0c;小编所在的宗门古族也是不例外了&#xff0c;宗门大长老韩立现在想把之前一直在用的板材EM370Z替换成生益的Autolad3&#xff0c;让我去拿资料分析一下是否可以替换。下图所示是就是小编我做的一个表格关于两家板…

4月28日信息差全景:国际局势、科技突破与市场震荡一、国际政治与安全:俄乌冲突关键转折

一、国际政治与安全:俄乌冲突关键转折 1. 乌克兰反攻进展与情报差异 前线动态: 俄国防部称在顿涅茨克击退乌军三次进攻,摧毁12辆坦克;乌方则宣布在巴赫穆特南部推进2公里,双方战报存在显著差异。 信息差根源:战场信息管控导致西方媒体与俄媒报道截然不同。 国际援助: 美…

关系数据的可视化

目录 【实验目的】 【实验原理】 【实验环境】 【实验步骤】 一、安装Python所需要的第三方模块 二、实验 【实验总结】 【实验目的】 1.掌握关系数据在大数据中的应用 2.掌握关系数据可视化方法 3. python 程序实现图表 【实验原理】 在传统的观念里面&#xff0…

夏季道路安全的AI革命:节省人力、提升效率

AI夏季道路安全&#xff1a;用智能算法守护每一条街道 背景&#xff1a;夏季道路安全的挑战与机遇 夏季是道路安全事件的高发期。高温天气容易导致驾驶员疲劳、行人行为异常&#xff08;如跌倒或中暑&#xff09;&#xff0c;同时&#xff0c;车流量增加、夜间活动频繁…

HTML标记语言_@拉钩教育【笔记】

目录 1.文本标签 2.格式化标签 3.图片标签 4.超链接标签 5.表格标签 6表单标签 6.1 6.2 6.3 7.行内框架(超链接内套一个页面) 8.多媒体标签(音/视频) 1.文本标签 2.格式化标签 3.图片标签 4.超链接标签 5.表格标签 6表单标签 6.1 6.2 6.3 7.行内框架(超链接内套一个…

Python 中调用方法内部定义的类详解(类在方法中的各种操作)

更多内容请见: python3案例和总结-专栏介绍和目录 文章目录 一、基本概念1.1 方法内部定义类概述1.2 方法内部定义类的特点1.3 替代方案二、基本使用2.1 直接在方法内部使用2.2 返回类定义供外部使用2.3 返回类的实例2.4 作为闭包使用(访问外部变量)三、高级用法3.1 动态类创…

第36课 常用快捷操作——用“鼠标右键”退出当前命令

概述 在AD 20软件中&#xff0c;很多的命令都是可以一直连续下去的&#xff0c;比方说放置一个元器件符号&#xff0c;如果你当中不取消的话&#xff0c;那就可以一直执行下去&#xff0c;放完一个接着放下一个&#xff0c;放完一个接着放下一个…… 想要退出这种连续进行的命…

FFTW3.3.10库与QT结合的使用

FFTW&#xff08;Fastest Fourier Transform in the West&#xff09;是世界上最快的FFT&#xff0c; 实测计算长度为10000的double数组&#xff0c; 单次运行时间在2ms左右。为了详细了解FFTW以及为编程方便&#xff0c;特将用户手册看了一下&#xff0c;并结合手册制作了以下…

服务器异地备份,服务器异地备份有哪些方法?

服务器异地备份是应对区域性灾难&#xff08;如地震、火灾、洪水&#xff09;或人为事故&#xff08;如误删除、勒索病毒攻击&#xff09;的关键策略&#xff0c;其核心在于将数据副本存储在物理隔离的地理位置&#xff0c;确保主数据中心故障时仍可恢复业务。 以下是主流的异地…

导轨表面硬化处理有哪些?

导轨是机器工作的重要组成部分&#xff0c;它与滑块紧密配合&#xff0c;保证机器的运转精度和定位精度。为了提高导轨的耐磨性能和使用寿命&#xff0c;通常在导轨表面加工硬化层。硬化层一般是在导轨表面形成一层高硬度和高强度的薄层&#xff0c;有效地提高了导轨的耐磨性能…

Android Compose vs 传统View系统:全面对比与选型指南

Android Compose vs 传统View系统&#xff1a;全面对比与选型指南 一、引言 随着Android Jetpack Compose的正式发布&#xff0c;Android开发迎来了全新的声明式UI框架。本文将全面对比Compose与传统View系统的差异&#xff0c;帮助开发者做出合理的技术选型。 二、核心架构…

C#中实现JSON解析器

JSON(JavaScript Object Notation)即 JavaScript 对象表示法,是一种轻量级的数据交换格式。 起源与发展 JSON 源于 JavaScript 编程语言,是 JavaScript 对象字面量语法的一个子集。但如今它已经独立于 JavaScript,成为一种通用的数据格式,广泛应用于各种编程语言和系统…

【Maven】子POM与父POM

文章目录 子POM与父POM一、继承的内容1.子 POM 可以继承父 POM 的内容2.子 POM 中声明相同配置覆盖规则示例 子POM与父POM 一、继承的内容 在 Maven 项目结构中&#xff0c;子 POM&#xff08;子模块&#xff09;可以继承父 POM 的很多配置。合理使用继承机制可以大大减少重复…

12前端项目----添加购物车1.0

商品添加购物车 商品数量添加购物车浏览器本地存储localStoragesessionStorage添加成功页面 商品数量 输入为数字&#xff0c;最少为1<div class"cartWrap"><div class"controls"><input autocomplete"off" class"itxt&quo…

EasyRTC嵌入式音视频通信SDK助力视频客服,开启智能服务新时代

一、背景 在数字化服务浪潮下&#xff0c;客户对服务体验的要求日益提升&#xff0c;传统语音及文字客服在复杂业务沟通、可视化指导等场景下渐显不足。视频客服虽成为企业服务升级的关键方向&#xff0c;但普遍面临音视频延迟高、画质模糊、多端适配难、功能扩展性差等问题&a…

干货分享|MaxKB智能问数方案及步骤详解

DeepSeek-R1的发布掀起了AI智能变革的浪潮。在过去几个月里&#xff0c;MaxKB开源企业级AI助手已经帮助大量企业和组织快速落地了DeepSeek&#xff0c;让AI在不同的行业土壤中产生持续、可度量的业务价值。 MaxKB&#xff08;github.com/1Panel-dev/MaxKB&#xff09; 可以为本…