恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

【面试题】Python 面试题

  • 首页
  • 资讯中心
  • /
  • 【面试题】Python 面试题

相关资讯

【C++】 初阶篇 STL简介 -- string 的使用 2026/10/21 11:18:42
成均馆大学/亚洲大学CEJ:焦耳加热双层超快反应器+高熵合金催化聚烯烃共聚废塑料定向解聚乙丙烯不凝气产率达 70% 2026/10/21 11:18:42
Bash 防御式编程实战指南:基于 agentic-awesome-skills 仓库的可靠 Shell 脚本模式 2026/10/21 11:18:42

最新资讯

本地大模型部署实战:从硬件选型到性能调优
Flutter iOS编译报错 FFmpegKitConfig.h file not found?CocoaPods依赖排查指南
WPF上位机设备状态运行图绑定性能优化实战
移动机器人建图模块实践:从SLAM选型到导航部署完整方案
知识工作插件实战复盘:按工序拆解,搭一套轻量高效工作台
厨房食品卫生安全检测数据集:从数据标注到模型部署的实践指南

今日推荐

SAP 屏幕上的金额未必存在数据库表里,从 WB2R_SV 的 Net Amount 看懂运行时计算
具身智能中‘指哪打哪’的视觉语言动作联合建模
AI时代人工翻译技术博客的价值与实践指南

本周热门

基于GMM的语音识别系统原理与MATLAB实现详解
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

【面试题】Python 面试题

发布时间:2026/10/21 11:23:43
【面试题】Python 面试题 1. Python中列表和元组的区别是什么分别适合什么场景list 列表 []可变序列增删改内存占用略高。tuple 元组 ()不可变序列元素一旦定义不可修改可哈希能作为字典key内存更省。适用场景list需要频繁增删元素存储接口返回列表、用例数据tuple数据固定不变比如常量配置、坐标作为字典key函数多返回值2. Python中深拷贝和浅拷贝的区别copy.copy和copy.deepcopy有什么区别浅拷贝 copy.copy()只拷贝外层对象内层嵌套对象共用引用修改内层嵌套对象原对象同步变化。深拷贝 copy.deepcopy()递归拷贝所有层级对象完全独立新对象修改副本不影响原对象。注意不可变对象int/str/tuple浅拷贝直接返回原对象引用。3. Python中is和的区别哪些情况下is判断为True调用__eq__判断值是否相等is判断两个变量是不是同一个对象内存地址id相同is为True场景小整数池[-5,256]这些数字常驻内存变量指向同一个对象字符串常量池不可变短字符串自动缓存同一个对象赋值a b注意值相等不一定isis相等值一定相等。4. Python中可变类型和不可变类型有哪些作为函数默认参数会有什么问题不可变int、float、str、bool、tuple可变list、dict、set⚠️坑默认参数在函数定义时只创建一次不是每次调用新建deffunc(arr[]):arr.append(1)print(arr)多次调用会持续累加数据因为arr列表对象只初始化一次。✅ 解决方案默认参数写None函数内部再初始化空列表。5. Python中*args和**kwargs的作用是什么*args接收不定长位置参数打包成元组tuple**kwargs接收不定长关键字参数打包成字典dict常用于封装通用函数比如统一请求封装不确定入参数量。defdemo(*args,**kwargs):print(args,kwargs)6. Python中装饰器的原理是什么如何写一个带参数的装饰器原理闭包高阶函数在不修改原函数代码、不改变调用方式前提下给函数增加额外逻辑统计耗时、日志、鉴权、重试。普通装饰器接收函数带参数装饰器需要多一层外层函数接收装饰器参数返回真正装饰器。# 带参数装饰器模板deftimer(print_log:bool):defwrapper(func):definner(*args,**kwargs):importtime stime.time()resfunc(*args,**kwargs)ifprint_log:print(耗时,time.time()-s)returnresreturninnerreturnwrappertimer(print_logTrue)deftest():pass7. Python中生成器和迭代器的区别yield的作用是什么迭代器 Iterator实现__iter__和__next__可以逐个取出元素消耗完一次性结束。生成器 Generator是一种特殊迭代器用yield关键字定义。yield暂停函数执行保存当前上下文返回值下一次next()从暂停位置继续执行。优势不一次性把全部数据加载内存适合超大序列读取大日志文件。8. Python中闭包是什么闭包使用的变量有什么特点闭包内层函数引用外层函数的变量并且外层函数返回内层函数内层外层环境 闭包。特点内层可以读取外层变量如果要修改外层非全局变量需要加nonlocal外层函数执行完变量不会被回收被闭包持有风险容易造成内存常驻注意内存泄漏。9. Python中GIL是什么对多线程和多进程有什么影响GIL全局解释器锁CPython独有。同一时刻一个进程内只能有一个线程执行Python字节码。影响CPU密集任务多线程无法利用多核并发串行多线程性能提升不大要用多进程IO密集任务接口请求、读写文件IO阻塞时释放GIL多线程效率很好接口自动化非常常用多进程每个进程独立GIL可以利用多核但创建切换开销更大。10. Python中多线程、多进程、协程的区别和适用场景多线程threading轻量IO密集受GIL限制CPU密集不行共享内存要加锁防竞争。多进程multiprocessing独立内存、独立GIL可多核并行创建开销大进程间通信麻烦适合CPU密集。协程asyncio用户态轻量级单线程内切换开销极小需要代码主动await让出控制权高并发IO场景异步爬虫、大量接口压测。接口自动化/接口压测IO密集优先协程或多线程大量数据计算才用多进程。11. Python中asyncio的基本原理是什么如何实现异步接口请求asyncio是单线程事件循环协程在同一个线程内切换遇到IO await主动交出控制权调度器去执行其他就绪协程。异步请求一般用aiohttp库而不是requestsrequests是同步阻塞。importasyncio,aiohttpasyncdeffetch(session,url):asyncwithsession.get(url)asresp:returnawaitresp.text()asyncdefmain():asyncwithaiohttp.ClientSession()assession:resawaitfetch(session,http://xxx)asyncio.run(main())12. Python中垃圾回收机制是什么如何排查内存泄漏GC机制引用计数主对象引用数为0直接回收循环引用无法处理。标记清除解决循环引用定期扫描标记存活对象清理未标记。分代回收按存活时间分0/1/2三代越老扫描频率越低优化性能。内存泄漏排查工具objgraph、tracemalloc常见原因全局列表/字典持续追加对象、闭包长期持有对象、循环引用。打印对象数量对比执行前后对象增长定位泄漏对象类型。13. Python中__new__和__init__的区别__new__创建实例对象静态方法先执行返回实例控制对象生成单例模式核心。__init__实例初始化方法__new__返回实例后给实例属性赋值。一句话__new__造房子__init__装修房子。14. Python中上下文管理器是什么with语句如何实现上下文管理器进入和退出资源自动处理打开/关闭文件、锁获取释放避免忘记释放资源。两种实现方式类方式实现__enter__进入with和__exit__退出处理异常生成器方式contextlib.contextmanager装饰器 yieldwith 执行逻辑调用__enter__拿到返回值执行代码块无论是否异常最后执行__exit__。15. Python中__getattr__和__getattribute__的区别__getattr__访问不存在的属性时触发存在属性不会调用。适合做动态代理。__getattribute__访问任何属性都会优先触发慎用容易无限递归。16. Python中常见魔法方法有哪些分别有什么作用__new__创建实例__init__初始化__str__print打印__repr__调试打印__enter__/__exit__上下文管理器__getattr__/__setattr__属性访问/赋值拦截__iter__返回迭代器__next__迭代取值__call__让实例可以像函数一样调用obj()17. Python中异常处理机制是什么try/except/else/finally执行顺序try:可能报错代码exceptExceptionase:捕获异常执行else:# 没有异常才执行finally:# 无论有没有异常一定执行资源释放执行顺序try → 发生异常进入except无异常走else不管怎样最后一定执行finallyfinally场景关闭连接、释放文件句柄。18. Python中lambda、map、filter、reduce的用法和区别lambda匿名单行函数简单逻辑临时使用map(func, iter)遍历序列每个元素执行func返回迭代器filter(func, iter)func返回True的元素保留过滤reduce(func, iter)累计运算从左到右把前一次结果和下一个元素传入func需要from functools import reduce面试开发中优先用推导式map/filter可读性一般。19. Python中列表推导式、生成器表达式、字典推导式的区别列表推导式[x for x in range(10)]一次性生成完整list全部加载内存适合小数据生成器表达式(x for x in range(10))惰性求值迭代时逐个生成内存友好适合大数据字典推导式{k:v for k,v in data.items()}快速构建字典20. Python中如何实现单例模式有哪些方式单例全局只能创建一个实例重写__new__面试最常讲装饰器实现使用模块导入python模块天然单例简单元类metaclass实现注意多线程场景__new__不加锁会有线程安全问题。21. Python中如何管理依赖和虚拟环境requirements.txt和pyproject.toml有什么区别虚拟环境隔离项目依赖包不同项目包版本互不干扰工具 venv / conda / poetryrequirements.txt旧方案简单记录包名版本无法区分开发/生产依赖不记录元信息。pyproject.toml现代标准poetry/pip区分dev和prod依赖、项目元信息、构建配置是PEP621标准。22. Python中常见的性能优化手段有哪些如何定位Python代码性能瓶颈定位瓶颈cProfile统计各函数耗时找到耗时函数line_profiler逐行耗时分析日志打点记录函数耗时优化手段IO场景用异步协程减少阻塞等待循环优化减少循环内计算优先推导式代替for append数据结构大量查询优先dict/setO(1)少用list遍历O(n)减少属性查找局部变量更快热点计算可Cython/numba加速CPU密集考虑多进程避免全局变量23. Python中如何实现多线程并发请求接口如何控制并发数使用threading或者concurrent.futures.ThreadPoolExecutor线程池。控制并发数设置线程池max_workers限制最大线程数量fromconcurrent.futuresimportThreadPoolExecutorwithThreadPoolExecutor(max_workers5)aspool:pool.submit(request_func,url)也可以用Semaphore信号量手动控制并发数量。24. Python中如何实现线程安全Lock、RLock、Queue分别适用什么场景Lock互斥锁acquire上锁release释放不可重入同一线程重复acquire会死锁RLock可重入锁同一个线程可以多次acquire计数累加适合嵌套锁场景Queue线程安全队列内部自带锁生产者消费者模型多线程安全存取数据自动化多线程任务很常用25. Python中如何实现定时任务有哪些常见方案time.sleep while True简单不支持复杂调度容易漂移适合简单脚本threading.Timer单次定时APScheduler功能强支持cron、interval、date项目最常用自动化定时任务生产环境推荐把定时交给外部调度Linux crontab不依赖Python进程常驻

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号