GESP Python 6级 2025.09
关于Python类的说法,错误的是( )。
构造方法( __init__ )不能声明为虚方法,但析构方法( __del__ )可以。
函数参数传递的是对象的引用,不会复制对象。
静态方法属于类、不属于对象,因此不能使用 对象.方法(...) 的形式调用静态方法。
当派生类对象被销毁时,不会自动调用基类的 __del__() 。
下面代码执行结果是( )。
class Vehicle:
def __init__(self, brand):
self._brand = brand # 私有属性用下划线表示
def set_brand(self, brand):
self._brand = brand
def get_brand(self):
return self._brand
def move(self):
print(f"{self._brand} is moving...")
class Car(Vehicle):
def __init__(self, brand, seat_count):
super().__init__(brand)
self._seat_count = seat_count
def show_info(self):
print(f"This car is a {self.get_brand()} with {self._seat_count} seats.")
def move(self):
print(f"{self.get_brand()} car is driving on the road!")
def main():
v1 = Car("Toyota", 5)
v1.move()
if __name__ == "__main__":
main()
Toyota is moving...
Toyota car is driving on the road!
编译错误
运行结果不确定
下面代码中 v1 和 v2 调用了相同接口 move() ,但输出结果不同,这体现了面向对象编程的( )特性。
class Vehicle:
def __init__(self, brand):
self._brand = brand # 私有属性用下划线表示
def set_brand(self, brand):
self._brand = brand
def get_brand(self):
return self._brand
def move(self):
print(f"{self._brand} is moving...")
class Car(Vehicle):
def __init__(self, brand, seat_count):
super().__init__(brand)
self._seat_count = seat_count
def show_info(self):
print(f"This car is a {self.get_brand()} with {self._seat_count} seats.")
def move(self):
print(f"{self.get_brand()} car is driving on the road!")
class Bike(Vehicle):
def __init__(self, brand):
super().__init__(brand)
def move(self):
print(f"{self.get_brand()} bike is cycling on the path!")
def main():
v1 = Car("Toyota", 5)
v2 = Bike("Giant")
v1.move() # 输出: Toyota car is driving on the road!
v2.move() # 输出: Giant bike is cycling on the path!
if __name__ == "__main__":
main()
继承 (Inheritance)
封装 (Encapsulation)
多态 (Polymorphism)
链接 (Linking)
栈的操作特点是( )。
先进先出
先进后出
随机访问
双端进出
循环队列常用于实现数据缓冲。假设一个循环队列容量为 5 (即最多存放 4 个元素,留一个位置区分空与满),依次进行操作:入队数据1,2,3,出队1个数据,再入队数据4和5,此时队首到队尾的元素顺序是( )。
[2, 3, 4, 5]
[1, 2, 3, 4]
[3, 4, 5, 2]
[2, 3, 5, 4]
以下函数 createTree() 构造的树是什么类型?
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
def create_tree():
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
return root
满二叉树
完全二叉树
二叉排序树
其他都不对
已知二叉树的 中序遍历 是 [D, B, E, A, F, C],先序遍历 是 [A, B, D, E, C, F]。请问该二叉树的后序遍历结果是( )。
[D, E, B, F, C, A]
[D, B, E, F, C, A]
[D, E, B, C, F, A]
[B, D, E, F, C, A]
完全二叉树可以用数组连续高效存储。如果节点从 1 开始编号,则对有两个孩子节点的节点 i ,( )。
左孩子位于 2i ,右孩子位于 2i+1
完全二叉树的叶子节点可以出现在最后一层的任意位置
所有节点都有两个孩子
左孩子位于 2i+1 ,右孩子位于 2i+2
设有字符集 {a, b, c, d, e, f} ,其出现频率分别为 {5, 9, 12, 13, 16, 45} 。哈夫曼算法构造最优前缀编码,以下哪一组可能是对应的哈夫曼编码?(非叶子节点左边分支记作 0,右边分支记作 1,左右互换不影响正确性)。
a: 00;b: 01;c: 10;d: 110;e: 111;f: 0
a: 1100;b: 1101;c: 100;d: 101;e: 111;f: 0
a: 000;b: 001;c: 01;d: 10;e: 110;f: 111
a: 10;b: 01;c: 100;d: 101;e: 111;f: 0
下面代码生成格雷编码中, gray_code 的目的是生成所有的长度为n位的格雷码,则横线上应填写( )。
def gray_code(n):
if n == 0:
return ["0"]
if n == 1:
return ["0", "1"]
prev = gray_code(n-1)
result = []
for s in prev:
____________________________
for i in range(len(prev)-1, -1, -1):
result.append("1" + prev[i])
return result
result.append("1" + s)
result.append("0" + s)
result.append("s" + 0)
result.append("0" + 0)
