千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

当前位置:首页  >  应聘面试  >  软件测试面试题  > 软件测试面试中Python基础题必备清单_千锋教育

软件测试面试中Python基础题必备清单_千锋教育

来源:千锋教育
发布人:cli
时间: 2026-07-03 11:51:45 1783050705

01 基础语法:面试官一眼看穿你的代码功底

Python基础语法是面试的“入场券”。面试官不是要你背语法,而是看你写代码的习惯。一个简单的变量命名、缩进错误,就能让面试官判定你代码质量不合格。

变量与数据类型:面试官常问“Python中可变与不可变数据类型有哪些?”这题考的是内存机制。不可变类型(int、str、tuple)在修改时创建新对象,可变类型(list、dict、set)修改时地址不变。写代码时,用id()函数验证。

python
a = [1, 2, 3]
print(id(a))  # 输出地址
a.append(4)
print(id(a))  # 地址不变,list可变

列表推导式:面试必考。普通写法3行代码,列表推导式1行搞定。面试官看到你用列表推导式,就知道你懂Pythonic风格。

python
# 普通写法
squares = []
for i in range(10):
    squares.append(i**2)

# 列表推导式
squares = [i**2 for i in range(10)]

字典合并:Python 3.9+支持|运算符合并字典。面试官问“如何合并两个字典”,你答出这个方法,瞬间拉开差距。

python
dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}
merged = dict1 | dict2  # 简洁高效

金句:代码不是写给人看的,是写给面试官看的。

02 函数与作用域:面试官挖的坑,你跳了几个?

函数面试题是最容易踩坑的。面试官会从函数参数、作用域、闭包三个维度考察你。

默认参数陷阱:面试官一定会问“默认参数为什么是可变对象会出问题?”因为默认参数在函数定义时创建,多次调用会共享同一个对象。

python
def add_item(item, list=[]):
    list.append(item)
    return list

print(add_item(1))  # [1]
print(add_item(2))  # [1, 2] 结果错误

正确写法:用None作为默认值,函数内部创建新列表。

python
def add_item(item, list=None):
    if list is None:
        list = []
    list.append(item)
    return list

变量作用域:global和nonlocal是高频考点。面试官会给你一段代码,问你输出结果。

python
x = 10
def func():
    x = 20  # 局部变量
    print(x)  # 20

func()
print(x)  # 10

如果要在函数内修改全局变量,必须用global声明。

python
x = 10
def func():
    global x
    x = 20

func()
print(x)  # 20

闭包:面试官考闭包,本质是考你对作用域的理解。闭包可以记住外部函数的变量,即使外部函数已经执行完毕。

python
def outer(x):
    def inner(y):
        return x + y
    return inner

add5 = outer(5)
print(add5(3))  # 8

金句:函数参数默认值,写错一次,面试直接凉。

03 数据结构:面试官最爱的3道必考题

Python数据结构面试题中,列表、字典、集合是三大核心。面试官不会直接问你概念,而是让你解决实际问题。

列表去重:面试官问“如何对列表去重并保持顺序?”普通回答用循环,优秀回答用dict.fromkeys()。

python
# 普通方法
def dedup(lst):
    result = []
    for i in lst:
        if i not in result:
            result.append(i)
    return result

# 高效方法
def dedup(lst):
    return list(dict.fromkeys(lst))

字典排序:面试官问“如何按值对字典排序?”这题考的是sorted()函数和lambda表达式。

python
scores = {'Alice': 88, 'Bob': 95, 'Charlie': 72}
sorted_scores = dict(sorted(scores.items(), key=lambda x: x[1], reverse=True))
print(sorted_scores)  # {'Bob': 95, 'Alice': 88, 'Charlie': 72}

集合运算:测试中经常需要对比两个数据集。集合的并集、交集、差集操作能大幅简化代码。

python
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}

print(set1 & set2)  # 交集 {3, 4}
print(set1 | set2)  # 并集 {1, 2, 3, 4, 5, 6}
print(set1 - set2)  # 差集 {1, 2}

金句:数据结构选对,代码效率翻倍。

04 异常处理与文件操作:面试官的终极考验

异常处理和文件操作是测试工程师的日常工作。面试官会考你如何写出健壮的代码。

异常处理:面试官问“如何捕获多个异常?”新手只会写except Exception,高手会用异常元组。

python
try:
    result = 10 / 0
except (ZeroDivisionError, TypeError) as e:
    print(f"捕获异常: {e}")

自定义异常:面试官问“如何定义自己的异常类?”这题考的是你对面向对象的理解。

python
class ValidationError(Exception):
    def __init__(self, message, code):
        super().__init__(message)
        self.code = code

try:
    raise ValidationError("数据验证失败", 400)
except ValidationError as e:
    print(f"错误代码: {e.code}, 错误信息: {e}")

文件操作:面试官必问“with语句的原理是什么?”with语句会自动调用上下文管理器的__enter__和__exit__方法,确保资源释放。

python
class FileManager:
    def __enter__(self):
        print("打开文件")
        return self
    
    def __exit__(self, exc_type, exc_val, exc_tb):
        print("关闭文件")
        return True

with FileManager() as f:
    print("执行操作")

CSV文件读取:测试中经常需要处理测试数据。用csv模块比手动解析字符串高效10倍。

python
import csv

with open('test_data.csv', 'r') as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(row['username'], row['password'])

金句:异常处理不是救火,是防火。

05 面向对象与测试框架:面试官的终极加分项

面向对象编程是测试框架的基础。面试官会从封装、继承、多态三个角度考察你。

封装:面试官问“如何实现私有属性?”Python用双下划线实现名称改写,但本质是伪私有。

python
class TestCase:
    def __init__(self):
        self.__name = "test_login"
    
    def get_name(self):
        return self.__name

tc = TestCase()
print(tc.get_name())  # test_login
print(tc._TestCase__name)  # test_login 仍可访问

继承:面试官问“如何复用测试代码?”用继承实现基类,子类继承公共方法。

python
class BaseTest:
    def setup(self):
        print("初始化测试环境")
    
    def teardown(self):
        print("清理测试环境")

class LoginTest(BaseTest):
    def test_login(self):
        self.setup()
        print("执行登录测试")
        self.teardown()

多态:面试官问“如何实现不同的测试策略?”用多态让不同子类实现相同接口。

python
class TestStrategy:
    def execute(self):
        pass

class BrowserTest(TestStrategy):
    def execute(self):
        print("执行浏览器测试")

class APITest(TestStrategy):
    def execute(self):
        print("执行API测试")

def run_test(strategy):
    strategy.execute()

run_test(BrowserTest())
run_test(APITest())

unittest框架:面试官问“如何编写测试用例?”用unittest框架展示你的测试功底。

python
import unittest

class TestMath(unittest.TestCase):
    def setUp(self):
        self.data = [1, 2, 3]
    
    def test_sum(self):
        result = sum(self.data)
        self.assertEqual(result, 6)
    
    def test_max(self):
        result = max(self.data)
        self.assertEqual(result, 3)
    
    def tearDown(self):
        print("测试完成")

if __name__ == '__main__':
    unittest.main()

金句:测试框架不是工具,是思维。

---

面试官问的不是代码,是你解决问题的能力。Python基础题只是敲门砖,真正拉开差距的,是你对代码的理解深度。下次面试前,把这5个模块的代码敲3遍,你的通过率至少提升80%。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT