GESP Python 6级 2026.06
下列关于 Python 中继承和多态的描述中,错误的是( )。
当使用父类类型变量指向子类对象并调用方法时,会执行子类重写后的方法
子类通过重写父类中已有的方法,可以实现多态的效果
Python 中不需要手动声明虚方法,普通方法默认就支持多态调用
构造方法 __init__ 可以在运行时动态绑定,因此能像普通方法一样实现多态创建对象
下列代码中,执行 d1.work() 和 d2.work() 输出不同结果的主要原因是( )。
class Device:
def work(self):
print("Device is working")
class Printer(Device):
def work(self):
print("Printer is printing")
class Scanner(Device):
def work(self):
print("Scanner is scanning")
if __name__ == '__main__':
d1 = Printer()
d2 = Scanner()
d1.work()
d2.work()
Printer 和 Scanner 使用了相同的构造函数
子类重写了父类的 work 方法,Python 会根据对象实际类型调用对应版本的方法
d1 和 d2 是不同的变量
程序中使用了 del 释放对象
下面代码在 main() 中有一行会导致错误,请找出来( )。
class Student:
def __init__(self, n, s):
self.__name = n
self.__score = s
def get_name(self):
return self.__name
def set_score(self, s):
self.__score = s
if __name__ == '__main__':
stu = Student("Tom", 85)
print(stu.get_name()) # ①
stu.set_score(90) # ②
print(stu.__score) # ③
print(stu.get_name()) # ④
第 ① 行
第 ② 行
第 ③ 行
第 ④ 行
某文本编辑器把用户输入的字符依次压入栈 S。用户依次输入 X、Y、Z、W 后,连续执行两次撤销操作。每次撤销都会弹出栈顶一个字符。此时栈从栈底到栈顶的内容是( )。
X Y
X Y Z
Y Z
X Z
假设循环队列数组长度为 ,队空判断条件为 front == rear。入队和出队操作如下:
N = 7
q = [0] * N
front = 3
rear = 3
def enqueue(x):
global rear
q[rear] = x
rear = (rear + 1) % N
def dequeue():
global front
front = (front + 1) % N
依次执行:
enqueue(10)
enqueue(20)
enqueue(30)
dequeue()
enqueue(40)
dequeue()
enqueue(50)
最终 (front, rear) 的值是( )。
(5, 1)
(4, 0)
(5, 0)
(3, 1)
以下函数 check() 用于判断一棵二叉树是否为( )。
from collections import deque
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def check(root):
if not root:
return True
q = deque()
q.append(root)
has_null = False
while q:
cur = q.popleft()
if not cur:
has_null = True
else:
if has_null:
return False
q.append(cur.left)
q.append(cur.right)
return True
满二叉树
完全二叉树
二叉搜索树
平衡二叉树
以下代码实现了二叉树的哪种遍历方式?( )
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def traverse(root):
if not root:
return
print(root.val, end=' ')
traverse(root.left)
traverse(root.right)
前序遍历
中序遍历
后序遍历
层序遍历
已知一棵二叉树的先序遍历序列为:A B D E H C F G,中序遍历序列为:D B H E A F C G,则该二叉树的后序遍历序列是( )。
D H E B F G C A
D E H B F G C A
H D E B F C G A
D H E B G F C A
有 个字符,它们出现的次数分别为:,现在用哈夫曼编码为这些字符编码,最小加权路径长度 WPL 的值为( )。
对 个不同符号进行哈夫曼编码。若生成的哈夫曼树共有 个结点,则 的值是( )。
