上周五内推的蚂蚁金服——算法专家。
这周四下午4点收到电话预约当天晚上7点电话面试。
编程面试
1、现在有10亿个随机数,随机数的范围在1到1亿之间。现在要求写出一种算法,找出这些数中最小的k个数,其中k小于10000
堆排序,时间复杂度(K*logN)
2、输入一个数组和一个数字,在数组中查找两个数,使得它们的和与输入的数字差的绝对值最小,比如输入是[8,3,6,1]和13,输出是8和6
类似leetcode的第16题,Three Sum Closet。
选择一题代码实现,另一题说思路。
写完代码后,要求把每一行代码的意思解释一下。
然后计算算法的时间复杂度。
我当时说完第一题就过了50分钟,所以第二题的时候只有5分钟思考。
也是需要计算算法的时间复杂度。
机器学习面试
Logistic Regression 整个原理阐述。
求损失函数极小值的方法。
GBDT原理阐述。
说一下采样和特征选择。
(整个面试这个问题是个大遗憾,我当时以为是针对GBDT的采样和特诊选择,所以就说没做过。但其实通用的方法还是知道的。)
自由提问
面试官他们业务是做什么的?
1 用户推荐
2 用户画像
3 风控,反欺诈
第三部分用些什么方法?
挖掘用户关系,然后对用户进行分类。(我觉得这个是反欺诈的方法。)
为什么用无监督不用有监督?
1 样本里大量是0,极少是1。
2 他说最后还是有人工审核的。
(不知道这个意思是:1 算法对准确度要求不高,无监督就可以,2 他们可能也没有办法获得最后的真值?)
GBDT真的经常用到吗?
GBDT会用来做分类,比如分类是否需要对用户进行推荐。这一块比较常用的是XGBOOST。
还有最新的深度学习也会用,比如wide and deep,去年最新出的。wide and deep是用来做推荐的。