#####一面,1.5小时
7月中旬找了蚂蚁金服的师兄内推。之后大概10天后收到蚂蚁金服面试电话,面试官刚开始是用钉钉打过来的,没接到,之后再给他回电话也没人接,没想到面试官在下班路上给我来的电话,可以说很敬业了。

面试官先给我说明一下他所在的部门是支付宝的安全部,然后让我介绍一下自己

我简单说了一下自己现在所在学校,还有自己本科的两个项目,一个是获得全国大学生信息安全竞赛的项目–app(因为是安全部门,所以这个我提了),第二个是本科老师创业的项目–web,然后说明我研究生阶段的研究方向是机器学习,项目还有我在滴滴公司实习的情况。

说一下你具体做的一个项目

这里我就讲自己做的kaggle上的一个竞赛了,关于广告欺诈的,讲了自己的数据处理,特征工程,还有主要用xgboost模型,之后用AUC值评估

说一下你处理数据的过程

这里讲了一下对数据缺失值,异常值的常见处理方式,以及对数据做离散化的操作,以及数据不平衡的处理

为什么对数据做离散化

回答的时候差不多按照这些方向回答的:
0. 离散特征的增加和减少都很容易,易于模型的快速迭代;

  1. 稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展;

  2. 离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰;

  3. 逻辑回归属于广义线性模型,表达能力受限;单变量离散化为N个后,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合;

  4. 离散化后可以进行特征交叉,由M+N个变量变为M*N个变量,进一步引入非线性,提升表达能力;

  5. 特征离散化后,模型会更稳定,比如如果对用户年龄离散化,20-30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完全不同的人。当然处于区间相邻处的样本会刚好相反,所以怎么划分区间是门学问;

  6. 特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险。

    对数据不平衡你怎么处理的
    对样本少的进行过采样,对样本多的进行下采样,或者相结合

    为什么处理不平衡的数据,这样会有什么好处吗
    因为我想先有lr模型拟合一下,但是lr模型对数据不平衡特别敏感,所以需要对数据进行采样,这是好处,但是数据采样之后会丢失一些特征,这个只是单纯的用lr看一下效果,大概的baseline

    那能不能不处理

更换模型,比如我采用xgboost模型,或者nn模型就不用过多的处理不平衡的数据。

那你怎么做特征工程的

我说根据业务的需要,比如广告欺诈里,对于欺诈产生的场景,哪些特征是影响结果的,然后讲了讲我的一些特征,还有为什么选这个特征的原因。

那这些特征你怎么选择的

我用xgboost的特征重要性的函数来筛选,它会给出特征的评分。

xgboost怎么给出评分的,以及xgboost的原理你清楚吗

这个回答我基本是按照我的博客,手推记录——xgboost,评分就是根据节点分割的增益,原理就从目标函数讲起。然后从头到尾基本说了一遍。

我看你的简历,你们还用到了lgbm,lgbm的原理是什么,那这两个有什么区别

我说使用lgbm主要原因是因为lgbm处理大数据集速度更快,自己并不太清楚lgbm的原理,但是目标函数适合xgb一样的,只是分裂节点的方式不一样,xgboost采用的是level-wise的分裂策略,而lightGBM采用了leaf-wise的策略,区别是xgboost对每一层所有节点做无差别分裂,可能有些节点的增益非常小,对结果影响不大,但是xgboost也进行了分裂,带来了务必要的开销。 leaft-wise的做法是在当前所有叶子节点中选择分裂收益最大的节点进行分裂,如此递归进行,leaf-wise这种做法容易过拟合,因为容易陷入比较高的深度中,因此需要对最大深度做限制,从而避免过拟合。lightgbm使用了基于histogram的决策树算法,这一点不同与xgboost中的 exact 算法。然后有讲了一些其他的不同。

我看你现在还在滴滴实习,说一下你在滴滴的工作吧

然后讲了一下我在滴滴实习的一些工作,包括用到的模型,数据等等

最后

你有什么问题问我的吗

我跟面试官提了,为什么拿我的简历,因为他们是安全部门,而我不是做安全的,面试官解释说要AI的同学来搞安全了。很多场景需要用到;我又提了说没有安全基础是不是需要补充一下,有什么途径,之后面试官建议我去看看一些介绍安全的网站,了解一下就行。

#####二面,1.5小时
一面之后一周的时间,二面是一个比较偏向做安全的面试官,但是他说自己也搞机器学习

你本科的那个项目,就是拿一等奖的是什么样的,能介绍一下吗

我就介绍了一下这是一个手机丢失之后,能够远程防护手机,把文件进行取回销毁等等功能的一个产品。跟安全攻防没有什么关系。

我看你做的项目用auc值来评判模型的好坏,能解释一下auc吗

我说,auc值是roc曲线下的面积,用来评判模型结果结果的可信度,可以理解为,在样本里抽一个正样本和一个负样本,正样本的评分高于负样本的概率比较大。然后面试官说是不是可以理解成auc高的话精确率会高,然后这里我其实不太赞同,但是我当时又没想到怎么解释auc和精确率没有必然的联系,没解释好,我们两个讨论了好久,最好面试官说,很多人都解释不清楚。。。然后问我roc曲线怎么画出来。我说先把所有样本给出的评分从高到低排序,然后依次设定阈值,每一次都算出一个真阳率和假阳率,真阳率就是召回,正样本里有多少预测成正的,假阳率,就是负样本里面有多少被预测称正的。然后以真阳率为纵坐标,假阳率为横坐标,打点,连线。曲线就是roc曲线了。

你用的xgboost模型,能解释下gbdt,xgb,rf的区别吗

我先说rf和gbdt/xgb不一样,一个是bagging一个是boosting,rf是将样本抽样,特征抽样,然后训练很多个弱分类器,然后加权求和。gbdt和xgb都是加法模型,串行的,根据上一个弱分类器的结果训练下一个分类器,消除残差。

xgb是怎么消除残差的,目标函数什么

往残差的负梯度方向走,来消除残差。面试问什么是梯度。我说都是当你上山时,最陡峭的位置,就是梯度。面试还问了梯度下降,以及梯度下降的改进和梯度消失的概念。我就把梯低下降的优化算法,比如adam讲了一下。之后我解释了目标函数是损失函数加正则项,面试官接着问正则。我把xgb正则的定义说了一下,他说为什么要加正则,我说是防止过拟合,他说那为什么加了正则可以防止过拟合,我根据xgb的原理,讲了树在分裂时的表达式,分裂的增益需要减去一个r,这个就可以防止树疯长,防止过拟合,然后又讲了l1,l2一般化的是怎么防止过拟合的。

你打算怎么改进自己的项目

我说自己打算用nn模型,因为工业界已经开始往深度学习方向走了,然后面试问我深度学习了解的怎么样,我说知道一点卷积。面试官问,为什么深度学习会好一点,我说深度学习可以帮我提取特征。

那你能解释一下卷积网络吗?

我从卷积,填充,滑步,池化讲了一遍。面试官说,那你觉得卷积有什么好的或者不足,我说卷积最大的好处是参数共享,可以减少求参。不足就是没办法识别大图。就是空间信息不能捕捉,卷积之后特征会丢失。

之后还问了一些和一面有点重复的问题。就不打出来了。
最后问我有什么问题,我就再聊了一下部门的工作内容就结束了。

#####三面,30分钟
二面之后,15天左右,三面应该是部门leader了,搞安全的,主要问我做的安全竞赛项目是什么,对linux系统是否熟悉,对文本数据分析怎么样,我介绍了一下安全竞赛的项目,然后说linux熟悉指令,内核不太熟悉。文本数据没搞过。然后他说如果我要能够检测异常的用户,用AI怎么实现。我就从数据,收益,模型讲了一下。然后他说异常的样本很少的,这种情况怎么处理,我就按数据不平衡的处理方式说了一下,然后建议做迁移学习。讲了一下想法。面试官又问,如果我想有一个模型来定义用户的正常行为呢,我说可以考虑成用户行为画像(胡扯的。。。。)自己说了一下理解。
之后让我提问题,我再聊了一下,就结束了

#####四面,30分钟
三面我以为要凉了,但是第3天hr就打来了电话,问了一下有没有别公司的offer,我说有美团,360,滴滴的。其实都是意向书,然后他说怎么选择offer呢,我说首选杭州,然后公司也是首选阿里,他说为什么是阿里。我说阿里牛逼。。。。
之后聊了一下,对金融未来风险的看法,我说安全第一,然后讲了一下理解。然后他再问了一些个人情况就结束。
结束之前说我有什么问他的,我让他介绍了一下蚂蚁金服晋升体系,还有培训体系,就没有了,之后hr让我月底等消息。

面试记录-蚂蚁金服-算法工程师(共四面)通过相关推荐

  1. 【面试】蚂蚁金服4面题目

    蚂蚁金服1面: 1.自我介绍 2.序列化的底层怎么实现的 3.synchronized的底层怎么实现的 4.tomcat集群怎么保证同步 5.了解nosql吗?redis? 6.怎么解决项目中超卖的问 ...

  2. 蚂蚁金服软件测试工程师一面面试题(附答案)建议收藏

    根据面试录音整理,真实有效. 面试时间:2021.4.17. 面试地点:西溪园区. 面试岗位:软件测试工程师. 一:基础部分: 1. 什么是软件测试? 答:软件测试就是发现软件当中存在的缺陷,提高软件 ...

  3. 2021 阿里巴巴和蚂蚁金服 Java实习生 面试经验贴(重要!!!)

    最近面了蚂蚁金服集团的Java实习生,遗憾的是在第三面的时候挂了,不过还是希望能在此博客跟更多人分享我的经验,跟大家一起成长! 由于论文未按照我原本的计划投出去,备战实习的时间被耽搁了,于是乎,从今年 ...

  4. 阿里蚂蚁金服、蘑菇街、腾讯、去哪儿等实习面试

    说在前面的话 今天收到了自己满意的第一个offer也是第二个offer(第一个太low了不好意思说,BAT牛叉不在意,没赶上华为面试可惜了),每次面试都有收获,不愧于自己这段时间的小小努力.其实也没什 ...

  5. 终于拿到蚂蚁金服Offer!!!分享一下全程面试题和面试经验!

    写在前面 很多小伙伴都反馈说,现在的工作不好找呀,也不敢跳槽,在原来的岗位上也是战战兢兢!其实,究其根本原因,还是自己技术不过关,如果你技术真的很硬核,怕啥?想去哪去哪呗!这不,我的一个朋友去面试了蚂 ...

  6. 蚂蚁金服春招算法实习岗电话一面总结 2021.4.3

    总结 整个面试流程比较友好,通话21分钟.蚂蚁金服算法岗主要用到NLP.传统ML运筹优化等相关技术,自己是做CV的,几乎没怎么问自己正在做的东西,论文和比赛内容也没问.问的东西都算比较基础,自己表达得 ...

  7. 记一次蚂蚁金服的面试经历

    2015在实习的时候,当时一个一起实习的朋友在2019年3月份的时候突然在微信上找我,问我要不要面试下蚂蚁金服.问了下相关信息才知道他在2018年11月的时候进到蚂蚁金服,现在招人就想到了我,问我要不 ...

  8. 【面经】超硬核面经,已拿蚂蚁金服Offer!!

    写在前面 很多小伙伴都反馈说,现在的工作不好找呀,也不敢跳槽,在原来的岗位上也是战战兢兢!其实,究其根本原因,还是自己技术不过关,如果你技术真的很硬核,怕啥?想去哪去哪呗!这不,我的一个读者去面试了蚂 ...

  9. 推荐几个华为、字节跳动、蚂蚁金服的大佬公号

    是不是觉得公众号关注得太多,没有目的的看文章,没有学到什么知识,时间白白浪费狼.你需要删除些无价值的公众号,在号的数量上做减法,质量上做加法.接下来给大家推荐一下这段时间一直在阅读的几个优秀公众号.它 ...

  10. b类 蚂蚁金服_【面经】超硬核面经,已拿蚂蚁金服Offer!!

    写在前面 很多小伙伴都反馈说,现在的工作不好找呀,也不敢跳槽,在原来的岗位上也是战战兢兢!其实,究其根本原因,还是自己技术不过关,如果你技术真的很硬核,怕啥?想去哪去哪呗!这不,我的一个读者去面试了蚂 ...

最新文章

  1. 预写式日志(Write-Ahead Logging (WAL))
  2. C/C++ sizeof函数解析——解决sizeof求结构体大小的问题
  3. openresty开发系列15--lua基础语法4表table和运算符
  4. 关于Java序列化你应该知道的一切
  5. 机器学习(八)Apriori算法学习
  6. 程序| 只要使用这个功能,程序运行速度瞬间提升,高到离谱!
  7. CentOS 6.7 升级gcc 至 5.2.0
  8. MySQL数据库的红黑树优化_为什么Mysql用B+树做索引而不用B-树或红黑树
  9. BeanDefinition源码解析
  10. 190815每日一句
  11. Android Jni开发-实战篇(CMake)
  12. 【C语言】排序详解——冒泡排序
  13. cadz轴归零命令_CAD的Z轴归零的插件分享
  14. 学习笔记15-L298N
  15. 新款 2018款macbook Pro 装双系统教程
  16. Fail to open the referenced table
  17. pyvoronoi包 Failed to build pyvoronoi Installing collected packages: pyvoronoi Running setup.py
  18. 如何用PS做出火焰文字的效果?
  19. 消息队列的全双工通信
  20. dotnet 配置 Gitlab 的 Runner 做 CI 自动构建

热门文章

  1. 加点字符就能让qq昵称很酷的神奇代码?
  2. UVALive 3713 Astronauts(2-sat+输出任意路径)
  3. 卸载ps显示无法连接adobe服务器,Solved: photoshop无法卸载 - Adobe Support Community - 7692384...
  4. C++核心准则边译边学-F.6 如果函数不会抛出异常,则声明为noexcept
  5. picgo设置gitee图床
  6. #9733;色盲悖论正解!
  7. 各种软件系统架构图解析
  8. 财务报表分析是在分析什么?如何选择财务报表分析工具
  9. 欧洲批准最强粒子对撞机计划,造价210亿欧元,全长100公里,耗资巨大引争议...
  10. Keil V5.37.0.0 - 按 F12 无法跳转到定义