面试题目(初级工程师)

13
0
0
2022-09-16

面试题目(初级工程师)

示例题目

给定数组,求数组中最大元素的下标

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