Python开发面试题及答案.docx

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

Python开发面试题及答案

一、基础语法与数据类型

问题:列表(list)和元组(tuple)的核心区别是什么?实际开发中怎么选择?

答案:

可变性:list可变(支持append/pop等修改操作),tuple不可变(创建后无法修改元素);

性能:tuple因不可变,内存占用更小,访问速度比list快;

应用场景:存储固定配置(如数据库地址、接口参数)用tuple,避免误修改;存储动态数据(如用户列表、日志记录)用list。

问题:Python中is和==的区别?举个实际例子说明。

答案:

==判断值是否相等,is判断内存地址(是否为同一对象);

例子:a=[1,2],b=[1,2],a==b结果为True(值相同),aisb结果为False(不同内存地址);

注意:小整数(-5~256)和短字符串会被Python缓存,如c=10,d=10,cisd为True,但超过范围的整数无此特性。

二、进阶特性

问题:装饰器(decorator)的作用是什么?写一个实际开发中常用的日志装饰器。

答案:

作用:在不修改原函数代码的前提下,为函数添加额外功能(如日志、权限校验、缓存),符合开闭原则;

日志装饰器示例:

importlogging

fromfunctoolsimportwraps

logging.basicConfig(level=logging.INFO)

deflog_decorator(func):

@wraps(func)#保留原函数的__name__和__doc__,避免调试混乱

defwrapper(*args,**kwargs):

logging.info(f函数{func.__name__}调用,参数:{args},{kwargs})

result=func(*args,**kwargs)

logging.info(f函数{func.__name__}返回:{result})

returnresult

returnwrapper

#使用:给需要打日志的函数加装饰器

@log_decorator

defadd(a,b):

returna+b

问题:生成器(generator)相比普通列表有什么优势?什么场景下用生成器?

答案:

优势:生成器通过yield逐次返回数据,不一次性加载所有数据到内存,大幅节省内存占用;

适用场景:处理大文件(如10G日志文件按行读取)、生成海量数据(如百万级ID列表),避免内存溢出;

例子:读取大文件的生成器函数:

defread_large_file(file_path,chunk_size=1024):

withopen(file_path,r,encoding=utf-8)asf:

whilechunk:=f.read(chunk_size):#3.8+海象运算符

yieldchunk

三、性能与异常处理

问题:Python处理大数据时,有哪些常见的性能优化手段?

答案:

数据结构优化:用collections.defaultdict避免键不存在的判断,用set做成员检测(O(1)复杂度,比list的O(n)快);

循环优化:用列表推导式([x*2forxinlst])代替for循环+append,列表推导式是C级实现,比Python级循环快3~5倍;

缓存优化:用functools.lru_cache缓存重复计算的函数结果(如斐波那契数列、频繁查询的配置);

底层优化:CPU密集型任务用multiprocessing(规避GIL锁),IO密集型任务用asyncio(协程)或threading。

问题:实际开发中,如何合理处理异常?举个文件读取的例子。

答案:

原则:不捕获所有异常(避免bareexcept),只捕获明确需要处理的异常;异常块内做具体处理(如日志、重试),不吞掉异常;

文件读取示例:

defread_file(file_path):

try:

withopen(file_path,r,encoding=utf-8)asf:

returnf.read()

exceptFileNotFoundError:

logging.error(f文件不存在:{file_path})

returnNone#或抛自定义异常让上层处理

excep

文档评论(0)

151****9429 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档