面试题目(初级工程师)
面试题目(初级工程师)
示例题目
给定数组,求数组中最大元素的下标
def func(a):
'''
a: 输入数组
返回值:最大元素的下标
'''
# 这是一个示例题目,如下给出一个完代码实现
if len(a) == 0:
return -1
max_value_index = 0
for i in range(1, len(a)):
if a[i] > a[max_value_index]:
max_value_index = i
return max_value_index
# 在这里编写测试用例,覆盖尽可能多的情况
assert func([]) == -1
assert func([1]) == 0
assert func([1, 5, 2, 4]) == 1
102
给一个有序数组,计算出现次数最多的元素。时间和空间复杂度尽可能低。
def func(a):
'''
a: 输入数组,已经排好序
返回值:出现次数最多的元素,如果有多个,输出最早出现的
'''
return ['TODO']
# 在这里编写测试用例,覆盖尽可能多的情况
assert func([1, 1, 2, 3, 4, 5, 5, 5, 6]) == 5 # 5 出现了3次
复制代码
103
给定一个有序数组,去掉重复元素。时间和空间复杂度尽可能低。
def func(a):
'''
a: 输入数组,已经排好序
返回值:输出数组,去掉重复元素
'''
return ['TODO']
# 在这里编写测试用例,覆盖尽可能多的情况
assert func([1, 1, 2, 3, 4, 5, 5, 5, 6]) == [1, 2, 3, 4, 5, 6]
复制代码
104
给定一个严格递增的有序数组,找到两个数字其和等于给定数字,输出有多少种情况。时间和空间复杂度尽可能低。
# 题目104
#
# [1, 2, 3, 4, 5, 6, 9]
def func(a, b):
'''
a: 严格递增的有序数组
b: 给定数字
'''
# TODO
return 0
# 在这里编写测试用例,覆盖尽可能多的情况
assert func([1, 2], 4) == 0 # 不存在和为4的可能
assert func([1, 2, 3, 4, 5, 6, 9], 8) == 2 # 2+6, 3+5
复制代码
105
给定净值曲线,计算最大回撤。时间和空间复杂度尽可能低。
def func(a):
'''
a: float数组,每日净值,e.g. [1, 1.02, 1.04, 1.03, 1.035, 1.021]
'''
# TODO
return 0.323
# 在这里编写测试用例,覆盖尽可能多的情况
assert abs(func([
0.64375657, 0.04432527, 0.86798049, 0.40215972, 0.60367333,
0.50758005, 0.61454095, 0.62863517, 0.51124636, 0.25925268,
0.32250504, 0.95116211, 0.49463246, 0.52389541, 0.00122682,
0.36948246, 0.36871672, 0.28709673, 0.99692073, 0.55989545]) - 0.99871) < 0.0001
复制代码
106
给定两个时间,计算相差的天数(自己写代码实现,不使用系统时间实现)
def func(y1, m1, d1, y2, m2, d2):
'''
输入参数都是整数
y1 m1 d1 表示第一个时间,年 月 日
y2 m2 d2 表示第二个时间
'''
# TODO
return 0
# 在这里编写测试用例,覆盖尽可能多的情况
assert func(2021, 10, 9, 2021, 10, 3) == 6