Akuna OA SDE NG 2027|Hackerrank Python 选择题前六题解析
Akuna Capital NG OA1 是 Hackerrank 上的 Python 选择题,共 20 多道,通过后进入 OA2 编程题。本文逐题解析前六道,覆盖可变默认参数、列表相等性、*args/**kwargs、字典复杂度、稳定排序和共享类属性。
Akuna Capital NG OA 的 Hackerrank 部分是 OA1,主要是 Python 选择题,总共 20 多道,通过后进入 OA2(编程题)。这里把前六道逐题解析,覆盖的可变对象、相等性、参数解包、复杂度、排序稳定性和类属性共享,都是 Python 面试反复出现的考点。
Q1:可变默认参数
题目:def f(x, lst=[]): lst.append(x); return lst,执行 print(f(1)); print(f(2)) 输出什么?
答案是 [1] 然后 [1, 2]。默认参数在函数定义时只求值一次,之后每次调用复用同一个列表对象,第一次调用的结果残留在第二次调用里。正确做法是用 None 作默认值,在函数体内再初始化。
def f(x, lst=None):
if lst is None:
lst = []
lst.append(x)
return lst
Q2:列表的相等与同一性
题目:两个列表做比较时,哪个表达式检查「值相等」而不是「对象同一」?
答案是 a == b。== 比较两个列表的元素是否逐一相等,is 才比较是否指向同一对象。面试里常跟着追问 == 和 is 在不可变小整数、字符串上的差异。
Q3:*args 与 **kwargs
题目:*args, **kwargs 让函数能接收什么?
答案是:任意数量的位置参数(打包成元组)和任意数量的关键字参数(打包成字典)。*args 收集多余位置参数,**kwargs 收集多余关键字参数,常见追问是它们在函数签名里的顺序必须是位置参数、*args、关键字参数、**kwargs。
def show(a, *args, **kwargs):
print(a, args, kwargs)
show(1, 2, 3, x=4) # 1 (2, 3) {'x': 4}
Q4:字典查找复杂度
题目:Python dict 中 key in d 的平均时间复杂度是多少?
答案是 O(1)。字典底层是哈希表,平均情况下按 key 哈希定位是常数时间。追问会到「最坏 O(n)」的退化条件(哈希冲突、key 的 hash 不稳定)以及 set 与 dict 的相似性。
Q5:稳定排序
题目:sorted(data, key=lambda x: x[1]) 在两个元素 key 相等时会怎样?
答案是它们的相对顺序保持不变(稳定排序)。Python 的 sorted 和 list.sort 都是稳定排序,意味着相等 key 的元素保持输入顺序。这一特性常用于「先按次要键排、再按主要键排」的多次排序技巧。
Q6:共享类属性
题目:class Base: items = [],class A(Base) 和 class B(Base) 继承后分别 A.items.append(1)、B.items.append(2),print(A.items) 输出什么?
答案是 [1, 2]。类属性 items 定义在 Base 上,A 和 B 没有覆盖它,所以 A.items 和 B.items 指向同一个列表对象,两次 append 都作用在同一个列表上。若子类需要独立列表,应在子类里重新定义或改在 __init__ 里初始化实例属性。
class Base:
items = []
class A(Base):
items = [] # 覆盖后 A 与 B 各有一份
class B(Base):
items = []
FAQ
Python 可变默认参数为什么是坑?
默认参数在函数定义时只求值一次,之后每次调用复用同一个对象。可变对象(如列表)被共享,前面的调用会污染后面的结果,正确做法是用 None 作默认值再在函数内初始化。
类属性共享和实例属性有什么区别?
类属性定义在类体里、被所有实例和子类共享(未覆盖时指向同一对象);实例属性定义在 __init__ 里、每个实例各自一份。共享可变类属性是选择题和代码审查里的高频坑。
参考来源
联系 VOPathway
如果你希望把这套方法用于自己的 OA 或 VO 准备,可以把目标岗位、当前阶段、面试时间和主要难点发给 VOPathway,我们会据此安排针对性的练习与复盘。
- 微信:Coding0201
- 邮箱:[email protected]
- Telegram:@OAVOProxy
- WhatsApp:+86 178 6396 8105
可提供 OA辅助、OA辅导、VO辅助与 VO辅导。文章用于训练参考,不代表相关公司的官方流程;实际安排请以候选人收到的通知为准。
本文用于面试准备与训练复盘。公司名称仅用于标识题型素材主题,不代表官方合作或录用承诺。
预约一次训练复盘 ↗