栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

旷视科技一面 2022.0804

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

旷视科技一面 2022.0804

1.自我介绍
2.介绍AI4Math自动证明三角恒等式的工作
3.算法题,面试节奏还不错,题目循序渐进
第一个简单题热身

"""
a = [3, 94, -59, 23, -48, 7, 5, -92,
    34, 7, 53, -2, 84, 91, -3, 48, 23]


def largest_sum(a, k):
    # 从数组 a 中取 k 个数,
    # 其和最大是多少?返回该值。如果要求是连续的k个数呢
    return
print('largest_sum:',
    [largest_sum(a, i) for i in range(1, 8)])

"""
def largest_sum(a,k):
    cur = sum(a[0:k])
    ans = cur
    for i in range(k, len(a)):
        cur += a[i]
        cur -= a[i - k]
        ans = max(ans, cur)
    return ans

然后还是个难一点点的简单题

"""
cuboids = [
    [( 80, -88,  72), (-45,  65, -46)],
    [( 25, -82, -77), (-80,  34,  76)],
    [( 37, -96, -82), (-86,  63, -27)],
    [( 60,   3,  17), ( -8, -32, -89)],
    [(-81,  80,  48), ( 88, -46, -73)],
    [(-65, -24,  61), ( 40,  68, -81)],
    [(-96,   1, -35), ( -4,  94,  60)],
    [(-45, -13,  17), (-76, -53,  16)]]

def intersect_volume(cuboids):
    # cuboids = [[(x1, y1, z1), (x2, y2, z2)], ...] 是若干个长方体
    # 其中 (x1, y1, z1) -> (x2, y2, z2) 是每个长方体对角线的端点坐标
    # 长方体的边均平行于坐标轴 (所以可由一条对角线唯一确定)
    # 请返回这些长方体相交区域的体积 (该区域与所有长方体都相交)
    return
print('intersect_volume',
    [intersect_volume(cuboids[:i+1]) for i in range(len(cuboids))])
 
def intersect_volume(cuboids):
    (x1, y1, z1), (x2, y2, z2) = cuboids[0]
    x_left, x_right = min(x1, x2), max(x1, x2)
    y_left, y_right = min(y1, y2), max(y1, y2)
    z_left, z_right = min(z1, z2), max(z1, z2)

    for i in range(1, len(cuboids)):
        (x1, y1, z1), (x2, y2, z2) = cuboids[i]
        cur_x_left, cur_x_right = min(x1, x2), max(x1, x2)
        cur_y_left, cur_y_right = min(y1, y2), max(y1, y2)
        cur_z_left, cur_z_right = min(z1, z2), max(z1, z2)
        x_left = max(x_left, cur_x_left)
        x_right = min(x_right, cur_x_right)
        y_left = max(y_left, cur_y_left)
        y_right = min(y_right, cur_y_right)
        z_left = max(z_left, cur_z_left)
        z_right = min (z_right, cur_z_right)

    l_x = max(0, x_right - x_left)
    l_y = max(0, y_right - y_left)
    l_z = max(0, z_right - z_left)
    return l_x*l_y*l_z

"""

然后是逐渐进阶的题目

def robot_num(k, t):
    Big = 0
    Small = 1
    for i in range(t):
        old = Big
        Big += Small
        Small = old*k
    return Small, Big
    # return Big +Small
    # 第 0 天有 1 个小机器人
    # 小机器人用 1 天时间可以自我建造成为大机器人
    # 大机器人用 1 天时间可以建造 k 个小机器人
    # 求第 t 天的机器人总数

def engineer_num(k, t, n):
    # 若小机器人需要 n 个组队协作才能自我建造成为大机器人
    # 当小机器人数量不足时,需要相应数量的工程师协助
    # 求第 t 天需要的工程师数量最少为多少
    Big = 0
    Small = 1
    need = 0

    for i in range(t+1):
        old = Big
        Big += Small
        res = Small%n
        if res != 0:
            need = n - res
        else:
            need = 0
        Small = old * k
    return need


def engineer_num_fast(k, t, n):
    # 若 t 非常大,请优化函数 engineer_num 的复杂度
    return
print('engineer_num_slow:',
    [engineer_num(7, 2**i, 123) for i in [2, 4, 6, 8]])
print('engineer_num_fast:',
    [engineer_num_fast(7, 2**i, 123) for i in [2, 4, 6, 8, 2021]])

#最后的没有想出来,我的想法是记第i天的大小机器人为B_i,S_i
有递推关系式S_i = B_i-1 *k, B_i = B_i-1 + S_i-1。 可以求解出S_i与B_i的表达式, 然后再得到need = n - S_i%n, 求S_i的过程可以提前取mod。 但是面试官反馈好像是应该有更好的做法。

最后是提问环节
1.对我这样转行的有啥建议吗?
学习底层的数据结构与算法(多刷题),至于具体的AI相关的,只要你足够聪明,学得很快
2.对我这样转行的同学,计算机论文是必须的吗?
不是必须的,面试官一般会根据你的简历来提问。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1034117.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号