推荐收藏!腾讯算法岗面试题9道(含答案)

44 篇文章 1 订阅
6 篇文章 2 订阅

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂同学、参加社招和校招面试的同学,针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。

今天我整理一下算法岗方向面试题,分享给大家,希望对后续找工作的有所帮助。喜欢记得点赞、收藏、关注。更多技术交流&面经学习,可以文末加入我们交流群。


问题1:描述下 Transformer 的结构

Transformer是一种深度学习模型架构,特别适用于序列到序列的任务,如机器翻译。其主要结构包括以下几个部分:

  • 编码器(Encoder):由多个相同的层组成,每个层包含两个子层,即多头自注意力机制(Multi-Head Self-Attention)和前馈神经网络(Feedforward Neural Network)。

  • 解码器(Decoder):同样由多个相同的层组成,每个层包含三个子层,分别是多头自注意力机制、多头注意力机制(用于处理编码器输出的信息)和前馈神经网络。

  • 嵌入层(Embedding):将输入序列的词嵌入到连续的向量空间中。

  • 位置编码(Positional Encoding):为输入序列的每个位置添加一个表示其位置的向量,以保留序列的顺序信息。

  • Layer Normalization和残差连接:在每个子层的输出上应用Layer Normalization,并使用残差连接将输入添加到子层的输出。

问题2:描述为什么 Transformer 可以处理多种模态,它是怎么处理的

Transformer之所以能够处理多种模态的数据,是因为其核心操作——自注意力机制(Attention Mechanism)是通用的,不依赖于数据的特定结构。自注意力机制能够在输入序列中动态地关注不同位置的信息,从而适应不同模态的输入。

对于多模态数据,例如图像和文本,可以通过将每个模态的数据分别表示为输入序列,然后将这些序列送入Transformer模型。这样,模型可以通过自注意力机制在不同模态之间建立关联,捕捉模态间的复杂关系。

问题3:BN的作用和好处

  • 作用:BN主要用于加速神经网络的训练过程。它在每个批次的数据上进行标准化,即将输入数据减去均值并除以标准差,然后通过缩放和平移进行线性变换。这有助于维持每个神经元激活的分布稳定,防止梯度消失或爆炸问题。

  • 好处:

  • 加速训练:BN有助于减小训练过程中的内部协变量转移(Internal Covariate Shift),从而提高网络训练的稳定性和速度。

  • 降低对初始参数的敏感性:BN使网络对初始权重的选择不那么敏感,减少了需要进行精细调整的依赖。

  • 正则化效果:BN在一定程度上具有正则化效果,可以减轻过拟合问题。

问题4:Dropout 的好处

Dropout通过随机地将一部分神经元的输出置零,强制模型去学习更健壮和泛化的特征,从而降低过拟合风险。

问题5:梯度消失的原因

梯度消失是指在深度神经网络中,梯度逐渐变得极小,导致底层网络参数几乎无法更新。主要原因包括:

  • 链式法则:在链式法则中,每个乘法项都会缩小梯度,多层网络中这些项的连续相乘导致梯度指数级地减小。

  • 激活函数的选择:一些传统的激活函数,如sigmoid和tanh,具有饱和区域,梯度在这些区域非常小,使得反向传播时梯度减小。

  • 深度网络结构:随着网络深度增加,梯度经过多次连续的权重矩阵相乘,导致梯度逐渐衰减。

问题6:Resnet 为什么能减缓梯度消失的原因

ResNet采用了残差连接(Residual Connection),通过将输入直接添加到网络层的输出,形成了一个“跳跃连接”。这种结构有助于缓解梯度消失问题的原因有:

  • 梯度直达:在反向传播中,由于有了跳跃连接,梯度能够直接通过残差块传播到较早的层,减轻了梯度逐层衰减的问题。

  • 易于学习恒等映射:残差连接使得网络可以更容易地学习恒等映射,即将输入直接映射到输出,这有助于减轻梯度消失问题。

问题7:在 nums 寻找最小的连续子数组使得它们的和大于所给的targets

方法:前缀和+二分

def search(s, k, n, t):
    t > s[n]:
        return -1
    l, r = k, n 
    res = n
    while l < r:
        mid = (l + r) >> 1
        if s[mid] >= t:
            res = mid
            r = mid - 1
        else:
            l = mid + 1
    return res


def func(targets, nums):
    if targets < sum(nums):
        return 0
    n = len(nums)
    s = [0] * (n + 1)
    for i in range(1, n+1):
        s[i] = s[i - 1] + nums[i]
    res = n
    for i in range(1, n+1):
        t = targets + s[i - 1]
        d = search(s, i, n, t)
        if d > i and d - i + 1 < res:
            res = d - i + 1
    return res


target = 7
nums = [2,3,1,2,4,3]
print(func(target, nums))

问题8:求一个数的N次幂

def pow(k, n):
    if k == 0 and n == 0:
        return None
    flag = 1
    if n < 0:
        flag = 0
    res = 1
    while n > 0:
        if (n & 1) == 1:
            res = res * k 
        k *= k
        n >>= 2
    if flag == 1:
        return res
    return 1.0 / res

问题9:全排列

输入: 5,3

输出: [(1,2,3),(1,2,4),(1,2,5),(2,3,4),(2,3,5),(3,4,5),…]

import copy
def dfs(l, res, n, m, index, level, tmp):
    if level > m:
        return
    if index > n:
        return
    if level == m:
        t = copy.deepcopy(tmp)
        res.append(tuple(t))
        return
    # print("index  ", index, "  n - m + level + 1  ", n - m + level + 1)
    for i in range(index, n - m + level + 1):
        # print("i ", i, " l[i] ", l[i])
        tmp.append(l[i])
        dfs(l, res, n, m, i+1, level+1, tmp)
        tmp.pop()


def pailie(n, m):
    l = range(1, n+1)
    res = []
    tmp = []
    dfs(l, res, n, m, 0, 0, tmp)
    return res


print(pailie(5, 3))

技术交流

前沿技术资讯、算法交流、求职内推、算法竞赛、面试交流(校招、社招、实习)等、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~

我们建了算法岗面试与技术交流群, 想要进交流群、需要源码&资料、提升技术的同学,可以直接加微信号:mlc2060。加的时候备注一下:研究方向 +学校/公司+CSDN,即可。然后就可以拉你进群了。

方式①、微信搜索公众号:机器学习社区,后台回复:技术交流
方式②、添加微信号:mlc2060,备注:技术交流

用通俗易懂的方式讲解系列

  • 13
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 腾讯android社招面试题除了要求基本的编程基础外,更加注重应聘者的思路和解决问题的能力。例如,有一题目是让应聘者解决一个弹球游戏的碰撞问题,考察了应聘者对物理学原理的了解程度和建模思维的能力。而另外一题则是要求应聘者自己设计一个数据结构,并写出相关的代码,考察了应聘者对数据结构的掌握程度以及解决实际问题的能力。 此外,腾讯面试也注重应聘者的团队合作能力,例如会询问应聘者过往参与的项目经历以及其中的角色和职责。面试官还会关注应聘者平时的兴趣爱好和学习方式,看重自我发展和持续学习的态度。 总的来说,腾讯android社招面试注重应聘者的思考方式和解决问题的能力,希望应聘者能够在面试中展现出技术实力的同时也能够体现出比较全面的素质和团队合作技巧。 ### 回答2: 首先,我认为腾讯是一家非常优秀的公司,成熟的技术、稳定的业务、开放的文化及良好的薪酬待遇,这些都是我希望所在公司所具备的。当然,现如今,安卓技术在移动互联网领域已经越来越普及,所以我对腾讯Android社招面试也充满期待。 鉴于腾讯一贯的严谨和高要求,我认为其社招面试中会涉及到个人技能、团队协作能力、沟通能力及学习能力等,且可能会采用多种形式的测试与考核方式,如笔试、技术面试、项目经历考核等。而我会尽最大努力,从细节和思路等方面准备自己,积极展示自己的能力和素养,在适当的时候提问与反问,来表现出自己的个性魅力和职业素养。总之,我会以最好的状态去应对腾讯Android社招面试,尽我所能去展现自己,来赢得这个职位的机会。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值