AI-Agent 面试题汇总 - Python基础
1. Python 与 Java/C++ 的核心区别是什么?
答案:
- Python 是解释型、动态类型语言;Java/C++通常是编译型(Java半编译半解释)、静态类型。
- Python 语法简洁,开发效率高;Java/C++执行性能通常更高。
- Python 更适合脚本、数据分析、AI、快速开发;Java/C++常用于大型工程、底层和高性能场景。
- Python 内存管理自动(GC+引用计数),C++可手动控制内存。
2. Python 是编译型还是解释型语言?如何理解?
答案:Python通常称为解释型语言,但严格讲是“先编译为字节码,再由解释器执行”。
流程:
- 源码 .py
- 编译成字节码 .pyc
- Python虚拟机(PVM)解释执行字节码
3. Python 的动态类型是什么意思?优缺点是什么?
答案:动态类型指:变量类型在运行时确定,变量本身不绑定固定类型。
优点:
- 开发快、写法灵活
缺点:
- 运行时才发现部分类型错误
- 大型项目类型约束弱(可用 type hint 改善)
4. Python 中标识符命名规则有哪些?
答案:
- 由字母、数字、下划线组成
- 不能以数字开头
- 区分大小写
- 不能使用关键字(如 if, for, class)
- 推荐:变量/函数小写下划线,类名驼峰(PascalCase)
5. Python 中 is 和 == 的区别是什么?
答案:
- ==:比较值是否相等
- is:比较是否是同一个对象(内存地址)
a = [1, 2] b = [1, 2] print(a == b) # True print(a is b) # False
6. Python 中 None、False、0、空字符串的区别是什么?
答案:它们含义不同:
- None:空对象/无值
- False:布尔假
- 0:数值零
- "":空字符串
在布尔上下文中都为假,但互不等价(除部分宽松比较场景)。
print(bool(None), bool(False), bool(0), bool("")) # 全是 False
print(None == 0) # False
print(False == 0) # True(布尔是整型子类)
7. Python 的三元表达式怎么写?
答案:语法:值1 if 条件 else 值2
age = 20 msg = "成年" if age >= 18 else "未成年" print(msg)
8. *args 和 **kwargs 的作用是什么?
答案:
- *args:接收任意数量的位置参数(元组)
- **kwargs:接收任意数量的关键字参数(字典)
def func(*args, **kwargs):
print(args) # tuple
print(kwargs) # dict
func(1, 2, 3, name="Tom", age=18)
9. Python 中常见的数据类型有哪些?
答案:
- 数值:int, float, bool, complex
- 序列:str, list, tuple
- 集合:set
- 映射:dict
- 空类型:NoneType
10. Python 中如何进行输入输出?print() 常用参数有哪些?
答案:
- 输入:input()
- 输出:print()
print() 常用参数:
- sep:分隔符
- end:结尾符
- file:输出到文件
- flush:是否立即刷新缓冲区
name = input("请输入姓名: ")
print("你好", name, sep="-", end="!\n")
11. 列表(list)和元组(tuple)的核心区别是什么?
答案:
- list 可变,tuple 不可变
- list 用 [],tuple 用 ()
- tuple 在只读场景更安全,且通常更省内存
12. Python 的可变类型和不可变类型有哪些?
答案:
- 可变:list, dict, set
- 不可变:int, float, bool, str, tuple
13. 字典(dict)的底层结构是什么?查找为什么快?
答案:dict 底层是哈希表。 通过 key 计算哈希值直接定位槽位,平均时间复杂度接近 O(1),所以查找/插入快。
14. 集合(set)的主要特点和使用场景是什么?
答案:特点:
- 元素无序、不重复
- 基于哈希表,查找快
- 支持交并差等集合运算
场景:
- 去重
- 成员快速判断
- 标签/ID集合计算
15. 如何删除 list 中的重复元素?请给出多种方式。
答案:
lst = [1, 2, 2, 3, 1, 4]
# 方法1:set去重(不保证顺序)
print(list(set(lst)))
# 方法2:保持顺序
print(list(dict.fromkeys(lst)))
# 方法3:手动遍历
res = []
for x in lst:
if x not in res:
res.append(x)
print(res)
16. 列表推导式的语法是什么?相比 for 循环的优势?
答案:语法:[表达式 for 变量 in 可迭代对象 if 条件] 优势:代码更简洁、可读性高,通常性能略优。
nums = [1, 2, 3, 4, 5] squares = [x * x for x in nums if x % 2 == 1] print(squares) # [1, 9, 25]
17. 什么是浅拷贝和深拷贝?两者区别是什么?
答案:
- 浅拷贝:只拷贝最外层,内部嵌套对象共享
- 深拷贝:递归拷贝所有层,互不影响
import copy a = [[1, 2], [3, 4]] b = copy.copy(a) # 浅拷贝 c = copy.deepcopy(a) # 深拷贝
18. Python 中如何拷贝一个对象?
答案:
- 赋值:b = a(不是拷贝,是同一对象引用)
- 浅拷贝:copy.copy
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
AI-Agent面试实战专栏 文章被收录于专栏
本专栏聚焦 AI-Agent 面试高频考点,内容来自真实面试与项目实践。系统覆盖大模型基础、Prompt工程、RAG、Agent架构、工具调用、多Agent协作、记忆机制、评测、安全与部署优化等核心模块。以“原理+场景+实战”为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.
查看8道真题和解析