蚂蚁金服算法面经秘籍

《AI未来星球》陪伴成长的人工智能社群,价值过万的各种内部资源及活动,限时特惠中,点击查看。

求职跳槽福利:为了便于大家求职、跳槽的准备,大白将45家大厂的面经,按照知识框架,整理成700多页的《人工智能算法岗江湖武林秘籍》,限时开放下载,点击查看下载。


面经整理历程:经过一年多的努力,大白整理了超过3500篇,各类大厂的算法面经资料。

并将涉及到的知识点,按照知识框架,分类汇总,每个公司整理成一篇,比如本文的蚂蚁金服面经

大家对照面经,可以了解心仪的公司,会根据你的简历,问哪些知识点?便于大家对掌握的知识,进行回顾梳理。

希望为大家在求职或者跳槽的道路上,提供一些帮助,为大家取得心仪的offer助力。

面经整理心得:大白也将整理所有面经的心得,写成了一篇文章,点击查看心得

其他大厂面经:国内其他大厂的面经汇总,点击查看目录

蚂蚁金服面经整理:江大白

1 蚂蚁金服面经汇总资料

1.1 面经汇总参考资料

① 参考资料:

(1)牛客网:蚂蚁金服面经-35篇,网页链接

(2)知乎面经:点击进入查看

(3)面试圈:点击进入查看

面经框架及参考答案:

(1)面经知识框架:点击进入查看

(2)面经参考答案:点击进入查看

1.2 面经涉及招聘岗位

(1)实习岗位类

【蚂蚁金服芝麻信用算法实习】

(2)全职岗位类

【NLP算法工程师】、【计算机视觉算法工程师】、【机器学习算法工程师】、【人工智能算法工程师】

1.3 面试流程时间安排

PS以上流程为大白总结归纳所得,以供参考。

其他注意点:

● 感觉实习是四面:技术+技术+技术交叉+技术&HR混合

● 真正工作是六面:技术+技术+技术+技术交叉+HR+杭州终面

● 不过有的人也和实习那个一样,是四面,最后技术大佬+HR是压力面

● 第一面技术面,有的人不是现场面,而是电话面

● 最后的杭州终面,一般是两个技术leader(P9)和 一个 HR,加上两个工作人员,半小时左右

1.4 蚂蚁金服面试心得汇总

★ 项目的熟悉程度,其中涉及的知识点,基础知识,比如机器学习,深度学习问得很多。

★ 整个流程下来感觉蚂蚁非常看重的是你对于自己研究领域的思考和实践,比较注重你是否具有较高的学习热情和个人潜力

★ 蚂蚁金服面试下来的心得就是,一定要梳理好自己以往的项目,不要随意跳槽,每份工作如果不是特殊情况,尽量干满两年,简历太花可能连简历关都过不了。

★ 面试总体来说,我感觉阿里的面试包容性比较强,原意去挖掘你的优势,目前我还没遇到手撕代码, 更多的是对基础的考察。

★ 很多同学交流反馈的不完全统计,阿里面试一面难度最大,之后的面试好多都是只聊简历项目。阿里的HR权利很大,即使面到了最后一面HR面还是有很大可能会被挂掉。

2 蚂蚁金服面经涉及基础知识点

2.1 图像处理基础

● Canny,关键点是如何提取的,关键点是如何匹配起来的?

● SIFT原理讲一下?如何保持尺度不变性的 ?

2.2 深度学习:CNN卷积神经网络方面

2.2.1 讲解相关原理

2.2.1.1 卷积方面

● 知道感知野吗?什么作用?

● 卷积的作用吗?

● 你知道depthwise-CNN吗?讲讲具体原理?那1*1的kernel的作用是什么呢?对网络model有什么影响?

● Dropout怎么实现?

● Dropout使得训练和测试输出不一致,怎么处理?

2.2.1.2 池化方面

● Pooling的原理?

● 有哪些下采样方式?max pooling, average pooling, global average pooling。再问分别有什么用?

答:max pooling我蠢到说提取最有特征的特征,其实就是最具有代表性的特征;average pooling提取的是比较general 的特征;global average pooling用来分类的,因为后面网络的加深,full connected layer参数太多了,不容易训练,为了快速准确得到结果,采用global average pooling,没有参数,但是得到的分类效果跟FC差不多。

2.2.1.3 网络结构方面

● 为什么说SENet泛化性好?SENet为什么效果好?

● 讲一下神经网络的发展?vgg,resnet,densenet和inception v1-4

2.2.1.4 其他方面

● BN原理 ?BN是解决什么问题的?BN为什么有效?

● 说一下视觉的attention?

● 梯度消失怎么造成?什么导致变得平缓,哪些函数会导致梯度消失,为什么?

● 解决Overfitting、regulation的方法?

(1)Dropout

介绍dropout的概念,问了下train和test阶段的不一样过程细节

主要讲了下test把active function的输出都乘以P,这样就把train和test的输出期望都scale到了一个range,这样才是更加准确的

(2)Batch Normalisation

BN的原理,问什么好,好在哪里?

降低了样本之间的差异,scale到(0,1)

降低了层层之间的依赖,主要体现在前一层的输出是下一层的输入,那么我们把所有数据都scale到了(0,1)的distribution,那么降低了层层之间的依赖关系,从而使数据更加准确

● 说一下过拟合怎么造成和解决办法? dropout的原理,怎么抑制过拟合?预测阶段能不能droupout?

2.3 深度学习:RNN递归神经网络方面

2.3.1 讲解相关原理

● RNN模型, LSTM模型讲一下?

● Transformer 与LSTM区别?

2.3.2 手绘网络原理

● 画出LSTM模型细节以及四个门计算公式?

2.4 深度学习:CNN&RNN通用的问题

2.4.1 基础知识点

● 不平衡的label怎么办?

2.4.2 模型评价

● 问怎么衡量模型优劣?答testing error和F1 Score。再问讲一下F1 score的计算方法?

● AUC、ROC曲线了解吗?这两个曲线的应用场景是?

● AUC曲线、precision和recall分别在什么情况下使用?

● AUC一般用于哪些地方,map和AUC区别在哪里什么时候用?

● F1-SCORE和Auc的区别,F1-SCORE比较好或者AUC比较低是什么情况?

2.5 传统机器学习方面

2.5.1 讲解相关原理

2.5.1.1 数据准备

● 处理/清洗过数据吗?

2.5.1.2 特征工程

① 特征降维

● 为什么决策树之前用PCA会好一点?

● 具体讲一下SVD原理,除了降维还有什么作用?SVD分解后怎么用于电影评分?

● 度量分解矩阵的原理?

② 特征选择

● 对于一般的问题你是怎么样处理特征的?

● 高维数据,其中有一维是时间,有缺失,如何处理?

2.5.1.3 有监督学习-分类和回归方面

① 分类回归树(集成学习)

● 随机森林和GBDT的区别?

A.基于bagging:随机森林

● 随机森林的原理?

● 问random forest随机在哪里?

● 为什么随机森林要取2/3的样本构建树?

● 随机森林和GBDT的区别?

● 谈谈随机森林?为什么项目选择随机森林,不选择GBDT?

● 为什么随机森林的树比gbdt的要深一点?

● 怎么使用随机森林做特征多样性选择?

B.基于boosting:Adaboost、GDBT、XGBoost

● 问了解XGBOOST吗?讲一下它和GBDT的区别?

● 说一下GBDT的详细过程?GDBT如何做分类和回归?

● 从方差偏差的角度解释bagging?为什么随机森林范化能力强?

● 讲一下boosting算法?说一下adaboost是怎么更新的?

● XGBoost或GBDT中怎么控制模型复杂度?XGBoost的参数选择(怎么调参)

● 描述一下xgboost,xgboost和gbdt的区别?

② 逻辑回归LR

● LR中参数的意义?

● 如何检验,p-value?LR与线性回归比较?LR的前提假设?

● 逻辑回归原理、手写损失函数?

③ SVM

● SVM和Logistic Regression对比?

● SVM和LR的区别?

● SVM适合什么样的场景?或者说有什么限制?

● 说下SVM,核函数?

● 介绍一下hinge损失函数?

④ 朴素贝叶斯(Naive Bayes)

● 贝叶斯公式知道吗,什么含义?

● 朴素贝叶斯和决策树的差别,各有什么缺点?再加上SVM呢?

⑤ 决策树

● 决策树知道吗?

● 决策树分裂节点的选择?

● 讲一下决策树的优缺点?(优点说了构造比较简单,比较快。然后扯了一下RF,GBDT,XGBoost)

2.5.1.4 无监督学习-聚类方面

● 如何确定k-means的k?

● 聚类算法?k-means的缺点?

2.6 深度学习&机器学习面经通用知识点

2.6.1 损失函数方面

● 使用过哪些损失函数?

● 损失函数怎么设计?平方差损失优缺点?什么时候用交叉熵和平方差区别什么时候用?

● 做损失函数的时候,欧式距离和余弦距离的区别?

● Cross entropy loss交叉熵损失与均方差损失(Mean Squared Error Loss)的差别?

● 常见的损失函数

● LR的损失函数

● LR支不支持非线性分类(映射到高维)

2.6.2 激活函数方面

● Relu小于0的时候也会导致梯度消失怎么办?怎么保证输入不是负数?

2.6.3 网络优化梯度下降方面

● 用什么优化方法,梯度下降的种类,各有什么优点?

● 神经网络为啥不用拟牛顿法而是用梯度下降?

● 说下从sgd到adam的思路?

● Adam优化器是怎么工作的?

可以看做是RMSProp+Momentum

具体说来,就是它使用了一个梯度平方的滑动平均(同RMSProp)

然后使用的是平滑版的梯度m,而不是原始梯度dx,积攒历史梯度(同Momentum)。

2.6.4 正则化方面

● L1和L2的区别?从贝叶斯估计的角度看,他们先验分布是什么?

● L1、L2正则化原理,为什么L1产生的权重稀疏?

● 什么时候用L1,什么时候用L2正则,有什么区别?

2.6.5 过拟合&欠拟合方面

● 有没有遇到过过拟合?说一下什么是过拟合,解决方案有哪些?

2.6.6 其他方面

● 距离公式的局限性和改进?什么时候用,优缺点?

● 各种距离公式适用性 ?欧式距离,余弦距离什么时候用?

3 蚂蚁金服面经涉及项目知识点

3.1 深度学习:CNN卷积神经网络方面

3.1.1 目标检测方面

3.1.1.1 讲解原理

● RoI Pooling如何操作?

● 如果有很长,很小,或者很宽的目标,应该如何处理?

● FPN具体是怎么操作的?

● FPN的特征融合具体是怎么做的?

● FPN的特征融合为什么是相加操作呢?

● Soft-NMS是如何操作的?

● Softmax是什么,公式是什么样的?

● Softmax的梯度是什么?

● 对SSD和YOLO有没有什么了解?

● 对SSD做过什么实验吗?

● 介绍一下目标检测有哪些方向,最近的一些新的进展 ?、

● FPN是怎么提升小目标检出率的?

● 大目标如果有2个候选框和gt重合应该怎么处理?

● 分类和定位的不一致具体是什么?

● Faster-RCNN比起RCNN有什么改进的地方?

3.1.1.2 损失函数

● Focal loss怎么操作的?

3.2 深度学习:RNN递归神经网络方面

3.2.1 自然语言处理NLP

① Bert

● Bert 与 Word2vec 区别?

● Bert和Elmo在工程中存在的一些Trick?

② Transformer

● 说一下Transformer的结构

● Transformer中的前馈神经网络的构建的两种方式有什么区别(一个传统的FFNN,一个是基于卷积的,第二种这个根本没有了解过)

③ CRF

● CRF原理?

● CRF怎么接在LSTM后面?

④ HMM隐马尔科夫模型

● 介绍一下HMM?

⑤ Word2vec

● 讲一下Node2vec?

● Word2vec 的Loss及原理?

⑥ 其他

● 了解seq2seq模型?谈谈这个模型是怎么做的?attention是如何实现的?self-attention了解过吗?

● 你知道sequence to sequence吗?

3.3 强化学习

3.4 机器学习方面

3.4.1 推荐系统

● FM模型,FFM模型,WIDE&DEEP模型&DEEP FM模型的区别?

● Deep FM重点询问了细节,画出模型结构图?

● 讲一下FM算法和矩阵分解的区别?具体怎么组合?FFM和FM的区别?

4 数据结构与算法分析相关知识点

4.1 数据结构与算法分析

4.1.1 线性表

4.1.1.1 数组

● 给定一组超大数据的数组,该数组内的数据无法完全存入计算机中,问如何得到第k个小的数?

● 给定一个二维数组,每一行递增、每一列递增,判断目标值target是否存在?

4.1.1.2 链表

● 升序链表找中位数?

4.1.1.3 字符串

● 如果一个list里有空的字符串,怎样最快的速度把空字符串筛去?

4.1.2 树

4.1.2.1 二叉树

● 打印从根结点到叶子节点的所有路径,每条路径一行打印,最后递归方式写完?

● Z字形打印二叉树?

4.1.2.2 堆

● N个有序数组的排序,最后输出一个数组,采用最小堆算法解决 ?

● 一个文件(大小未知),每一行是一个数值,如何找出数值最大的前100个数?要求用大顶堆或小顶堆实现,讲实现过程?

4.1.3 排序

● 快排的时间复杂度和空间复杂度?平均多少?最差多少?

● 还有那些排序的时间复杂度是O(nlogn)?知道排序中的稳定性吗?

● 三路快排?

4.2 算法思想实战及智力题

4.3 其他方面

● 不用math中的取平法差,判断一个自然数是不是可以开方(时间复杂度尽量低)?

● 动态规划:最长公共子序列?

4.4 Leetcode&剑指offer原题

● Leetcode139:单词拆分

5 编程高频问题:Python&C/C++方面

5.1 python方面

● Python多线程有了解吗?

● Pytorch的卷积是如何实现的?

5.2 C/C++方面

● 写过多线程吗?

6 操作系统高频问题:数据库&线程&常用命令等

6.1 数据库方面

6.2 操作系统方面

● 多线程和多进程的区别?

7 技术&产品&开放性问题

7.1 技术方面

● 开放问题:高维数据,每个特征有标签,如何对特征进行聚类/类别划分?

● 场景题:人脸识别如果人脸图像比较少,如何用小样本学习的方法去做?

● 场景题(基于字幕文本,如何把长视频剪切成N个短视频)

7.2 产品方面

● 开放性问题:给你一些用户每天的相对位置信息,怎么区分他们的职业?怎么判断上线的现金贷产品的盈利能力?

本文由 大白智能 作者:凯哲 发表,其版权均为 大白智能 所有,文章内容系作者个人观点,不代表 大白智能 对观点赞同或支持。如需转载,请注明文章来源。

发表评论

This site is protected by wp-copyrightpro.com