AI-Agent 面试题汇总 - Python基础

1. Python 与 Java/C++ 的核心区别是什么?

答案:

  1. Python 是解释型、动态类型语言;Java/C++通常是编译型(Java半编译半解释)、静态类型。
  2. Python 语法简洁,开发效率高;Java/C++执行性能通常更高。
  3. Python 更适合脚本、数据分析、AI、快速开发;Java/C++常用于大型工程、底层和高性能场景。
  4. Python 内存管理自动(GC+引用计数),C++可手动控制内存。

2. Python 是编译型还是解释型语言?如何理解?

答案:Python通常称为解释型语言,但严格讲是“先编译为字节码,再由解释器执行”。

流程:

  1. 源码 .py
  2. 编译成字节码 .pyc
  3. Python虚拟机(PVM)解释执行字节码

3. Python 的动态类型是什么意思?优缺点是什么?

答案:动态类型指:变量类型在运行时确定,变量本身不绑定固定类型。

优点:

  • 开发快、写法灵活

缺点:

  • 运行时才发现部分类型错误
  • 大型项目类型约束弱(可用 type hint 改善)

4. Python 中标识符命名规则有哪些?

答案:

  1. 由字母、数字、下划线组成
  2. 不能以数字开头
  3. 区分大小写
  4. 不能使用关键字(如 if, for, class)
  5. 推荐:变量/函数小写下划线,类名驼峰(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)的核心区别是什么?

答案:

  1. list 可变,tuple 不可变
  2. list 用 [],tuple 用 ()
  3. tuple 在只读场景更安全,且通常更省内存

12. Python 的可变类型和不可变类型有哪些?

答案:

  • 可变:list, dict, set
  • 不可变:int, float, bool, str, tuple

13. 字典(dict)的底层结构是什么?查找为什么快?

答案:dict 底层是哈希表。 通过 key 计算哈希值直接定位槽位,平均时间复杂度接近 O(1),所以查找/插入快。

14. 集合(set)的主要特点和使用场景是什么?

答案:特点:

  1. 元素无序、不重复
  2. 基于哈希表,查找快
  3. 支持交并差等集合运算

场景:

  • 去重
  • 成员快速判断
  • 标签/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 中如何拷贝一个对象?

答案:

  1. 赋值:b = a(不是拷贝,是同一对象引用)
  2. 浅拷贝:copy.copy

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

AI-Agent面试实战专栏 文章被收录于专栏

本专栏聚焦 AI-Agent 面试高频考点,内容来自真实面试与项目实践。系统覆盖大模型基础、Prompt工程、RAG、Agent架构、工具调用、多Agent协作、记忆机制、评测、安全与部署优化等核心模块。以“原理+场景+实战”为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.

全部评论
mark
点赞 回复 分享
发布于 03-10 23:39 河北
感谢分享 谢谢
点赞 回复 分享
发布于 03-10 21:59 黑龙江

相关推荐

03-05 21:55
门头沟学院 Java
点赞 评论 收藏
分享
评论
6
9
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务