腾讯算法实习面经

目录标题

    • 序言
    • 腾讯一面
    • 腾讯二面

序言

周四
个人觉得腾讯的校招实习流程,面试官人都非常的nice。会根据你的需求加快面试流程。我说了我自己的一些情况,有个保底offer在下周三。希望能够加快面试流程,结果面试官人非常的nice,第二天马上面试,然后隔十几分钟,继续第二轮面试。连续说了几个小时的话,喉咙几乎沙哑。

腾讯一面

一面45分钟
(1)介绍项目,我主要介绍了一个文本方面的项目和一个图像方面的项目。在图像方面讲了很久,关于细节上讲了很久,差不多有15-20分钟。然后才开始其他的问题
(2)为什么我们用3x3的卷积核更加常见呢?

因为2个3x3卷积核串联在一起和1个5x5卷积核的感受野是相同的。
还可以减少计算量。

(3)什么时候需要用1x1的卷积核
(4)解释一下你对残差结构
(5)从梯度的角度来说呢 残差块的优势
(6)如果用relu激活函数就不用残差块吗?
(7)交叉熵推导一下,解释一下
(8)优化函数 sgd with 动量
(9)transformer 结构你了解吗 说一下
(10)深度学习框架 tf
(11)常用的tensor的操作 ??
(12)用Linux 找大文件比如1GT的大小,命令 有哪些
查看大文件(超过1G)
find / -type f -size +1000000k | xargs ls -lat
(13)如何查看机器的负载 命令

uptime和top和w
负载(load)是linux机器的一个重要指标,直观了反应了机器当前的状态。如果机器负载过高,那么对机器的操作将难以进行。
Linux的负载高,主要是由于CPU使用、内存使用、IO消耗三部分构成。任意一项使用过多,都将导致服务器负载的急剧攀升

w或者uptime都可以直接展示负载

$ uptime
 12:20:30 up 44 days, 21:46,  2 users,  load average: 8.99, 7.55, 5.40
$ w
 12:22:02 up 44 days, 21:48,  2 users,  load average: 3.96, 6.28, 5.16

load average分别对应于过去1分钟,5分钟,15分钟的负载平均值。

linux提供了更为强大,也更为实用的top命令来查看服务器负载
top命令能够清晰的展现出系统的状态,而且它是实时的监控

仅仅有top命令是不够的,因为它仅能展示CPU和内存的使用情况,对于负载升高的另一重要原因——IO没有清晰明确的展示。linux提供了iostat命令,可以了解io的开销

(1)使用top命令查看负载,在top下按“1”查看CPU核心数量,shift+"c"按cpu使用率大小排序,shif+"p"按内存使用率高低排序
(2)使用iostat -x 命令来监控io的输入输出是否过大

(14)接下来项目主要去做多模态的任务

腾讯二面

二面的面试官人非常nice,就很贴心说他那边可能网络有点差,然后他会慢点讲话,尽量让我听清楚。超级贴心的好吗。我之前面试某大字节公司的面试,因为网络不好,面试官还没开始面试就态度不好,说听不清我说话,如果再听不清,就算了吧。。。 我真的有点无语。我面试了这么多家,从没因为这个而被刁难的,明明是他那边环境特别吵,听不清我的话,而且他也没带耳机,那肯定听不清啊。我保证我说话的声音是特别大的,虽然是女生。总之字节那个面试整个过程很不舒服。

腾讯二面面试官人真的非常好,所以后面的面试体验很好,我也很舒服去表达我自己的观点,去回答问题。真的是畅所欲言。
回到正题,二面的面经。时长40分钟

(1)简单介绍了团队要做的工作,然后针对简历问了很多,包括项目的背景,难度
(2)机器学习和传统机器学习的区别
(3)深度学习的黑盒子,你怎么去解释
(4)什么是模型的可解释性

对于深度学习等黑盒模型,也存在提高可解释性的技术
深度学习模型由于参数的数量以及提取和组合特征的复杂方法而导致其不可解释性

特别是在面向更复杂地文本和图像处理的系统时,很难解释模型实际学到的是什么。研究的主要焦点目前主要是将输出或预测与输入数据关联

两种主要方法是基于梯度或基于注意力机制的。
(1)在基于梯度的方法中,使用反向传播计算目标概念的梯度用于生成一个映射,以突出显示输入中用于预测目标概念的重要区域。这通常应用于计算机视觉领域
LIME是一个更通用的框架,旨在使“任何”机器学习模型的预测更加可解释。

为了保持模型独立性,LIME通过修改本地模型的输入来工作。因此,它不是试图同时理解整个模型,而是修改特定的输入实例,并监控对预测的影响。在文本分类的情况下,这意味着一些词被取代,以确定哪些元素的输入影响了预测。

(5)有什么方法可以改善和提高模型的可解释性,尤其在深度学习中。这个没有回答的很好。面试官有一直问,除了这个还有别的补充。【后面面试官说了 有很多改网络结构,浅层和深层的结合】

获得可解释性的一个非常容易的方法是使用一系列可解释的模型,比如线性回归、逻辑回归、决策树等

Permutation Importance是一种计算模型特征重要性的算法。特征重要性是指,一个特征对预测的贡献有多大。某些模型,例如LR、决策树,lightgbm等模型可以直接计算特征重要性。

基本思想:假设要研究特征的重要性,那么将这列数据打乱,其他列的数据保持不变,然后观察预测的metric(eg.准确率)或者loss变化了多少,根据变化量来决定特征重要性。如果打乱以后对准确率没什么影响的话,可以认为这个特征没什么作用,特征重要性很低

Local Interpretable Model-Agnostic Explanation(LIME) ,通过名字便可以看出,该模型是一个局部可解释模型,并且是一个与模型自身的无关的可解释方法。通过扰动输入样本(perturb the input),来对模型的预测结果进行解释。该算法不止适用于表格型(tabular)数据,而且适用于文本和图片任务。

如电影的推荐系统,推荐错误造成的影响比较低,这时可解释性的需求也会降低。然而,当机器学习模型应用于其他关键领域时,我们对可解释性便会有更多的需求,如科学领域,需要可解释性对模型进行理解、信任和模型结果的理解

(6)解释梯度消失和梯度爆炸
(7)相应的解决方法
(8)之前有没有做多模态的机器学习呀,解释一下你对多模态机器学习的了解
(9)普通的模态的融合方式有哪些呀,你了解过吗?比如文本模态和图像模态的融合你了解吗?
(10)*你说一下bert的主要网络结构和工作原理说一下吗?*还有attention的原理给我介绍一下吧。感觉这个回答的不好。这个回答需要再好好改善
(11)最后一个问题,你会在关注机器学习或者深度学习的哪一些论文领域。
(12)反问环节
做多模态的项目做多久? 如果我参与的部分会是哪些部分?

你可能感兴趣的:(暑期实习-面经,腾讯,面经,实习,算法)