1、python基础面试题

该文章只针对面试时面试官提问如何回答的更全更好看此文章没有讲解太多太细节的知识点。如果知识点本身不会,背诵此文章可能能让你找到一份工作,但不能让你持续的干下去。还是需要自身精通对应知识点。

该文章适合有学习过Python基础语法的朋友阅读,主要是针对本科应届生。收录了二十道近几年非常经典的Python面试题。

如果您觉得这篇文章对您有帮助,想深入学习人工智能相关技术可以私信我,谢谢

**1.解释if name == "main":**的作用

当文件被直接运行才会执行下面的代码,被 import 时不会。

**2.**列表推导式与生成器表达式的区别

列表推导式一次性生成完整列表; 生成器表达式惰性迭代,节省内存。

3.解释*args**kwargs

*args 接收多余位置参数形成元组;**kwargs 接收多余关键字参数形成字典。

4.解释newinit****的区别?

new 负责创建实例并返回,先于 init 执行; init 负责初始化已创建好的实例。

5.Python****中的装饰器本质是什么?

装饰器本质是高阶函数,它接收一个函数并返回一个新函数,运行时通过 @ 语法糖应用,常用于日志、权限、缓 存等横切逻辑。

**6.**如何防止列表在遍历时被修改?

遍历时使用切片拷贝:for x in lst:,或用 list(lst) 创建副本后再遍历。

7.with****语句的上下文管理器原理?

对象实现 enterexit 协议。with 块进入时调用 enter ,退出时 exit 负责清理资源(如 关闭文件、释放锁)。

8.==is****有什么区别?

== 比较值是否相等;is 比较对象身份(内存地址)是否相同。类似 id(a) == id(b)。

**9.**解释生成器(generator)和迭代器(iterator)的区别?

迭代器是实现了 iter + next 的任何对象;生成器是用 yield 关键字的函数,自动实现迭代器协议,写 法更简洁。

**10.**怎样实现自定义对象的排序?

实现 lt或在 sorted() 里传 key= 函数。例如 sorted(users, key=lambda u: u.age)。

**11.**列表和元组区别?什么时候用元组?

列表可变、元组不可变;元组能当字典键、集合的元素,占内存更小;函数参数解包、常量数据用元组。

12.解释all****在模块里的作用?

是一个列表形式,定义 from module import * 时哪些名字被导出;未列入的不会导入,可用于隐藏内部实现。

13.解释map**、filterreduce的用法差异。**

map(func, iterable) → 对每个元素调用函数,返回迭代器;
filter(func, iterable) → 保留返回 True 的元素;
reduce(func, iterable) → 连续把函数结果与下一个元素累计,得单一值(需 from functools import reduce)。

14.break**、continuepass各有什么作用?**

break 跳出整个循环;
continue 跳过本次迭代;
pass 占位,啥也不干。

15.del obj****真的立刻释放内存吗?

不一定;del 只是减少引用计数,引用计数为 0 时由解释器择机回收,循环引用要等 GC 触发。

**16.range()**返回的是列表吗?占用内存会随范围变大而变大吗?

不是,是惰性迭代器 range 对象;无论范围多大,它只保存 start/stop/step,占用固定内存。

17.try...finally中如果return**,finally还会执行吗?**

会,finally 的代码一定执行,并且其内部的 return 会覆盖前面的 return。

**18.解释str.join()为什么比循环+=**拼接字符串快?

+= 每次创建新字符串,时间复杂度 O(n²);str.join() 预分配总长度,只拷贝一次,时间复杂度 O(n)。

19.解释import modulefrom module import name在命名空间上的区别。

前者把模块对象绑定到当前命名空间,需 module.name 访问;后者把 name 直接拉进来,后续覆盖同名变量不会 影响原模块。

**20.list.sort()**的稳定性是什么意思?如何利用这一点?

稳定性指相等元素的相对顺序保持不变,可用于多级排序:先按次要键排序,再按主要键排序,无需额外字段。
例如:先按年龄排序,如果年龄相同则按分数排序
从最终结果来看,排序优先级是:

  1. 第一优先级(主要):分数(当年龄相同时,用分数来决定顺序)
  2. 第二优先级(次要):年龄(首先按这个分组)

21.内存只有4G**,如何读取一个大小为8G的文件?**

在Python中读取文件可以先通过open函数获取文件对象,在读取文件时,可以通过read方法的size参数指定读取
的大小,也可以通过seek方法的offset参数指定读取的位置,这样就可以控制单次读取数据的字节数和总字节数

相关推荐
运维行者_1 小时前
网络监控与ITSM集成:从告警到工单,实现运维自动化闭环
开发语言·网络·分布式·后端·架构·flask·php
sunywz1 小时前
【从零搭建物联网智能充电桩系统】2、自定义二进制协议:设备为什么不用 JSON?
python·物联网·json
麻雀聊技术1 小时前
一重启 AI 就失忆?用 Spring AI + PostgreSQL 3步搞定“长期记忆”持久化(附完整代码)
java·spring·openai
小叮当爱咖啡1 小时前
Day3.参数+Prompt三板斧
开发语言·python·prompt
菜冻鱼2 小时前
Python-pandas-索引与筛选
开发语言·笔记·python·numpy·pandas·学习方法
码农进化录2 小时前
Java 程序员的 AI 进化论 | LangChain4j 入门,Java 开发者的 AI 应用框架
java·spring boot·openai
青 春 记 忆2 小时前
LeetCode 53. 最大子数组和|Python 解法详解
python·算法·leetcode
番茄炒鸡蛋加糖2 小时前
中级核心技术1--MySQL/Java 并发
java·数据库·mysql
阿童木写作2 小时前
跨境电商图片翻译工具推荐:批量AI翻译+视频字幕+智能抠图
大数据·人工智能·python·音视频