【2020秋招】内推批美团机器学习算法面试经验贴

秋招第一场面试就这么来了,之前休息的不好,太过紧张,发挥的不好,可能就凉了,还是多复盘总结吧,越挫越勇!!!


铺垫

部门:美团地图部/数据组
时间:周日下午四点
形式:远程面试(我必须吐槽一下,面试还是现场面吧,视频面的笔试太难做了吧= =)
面试体验:面试官人挺好的,主要还是以自己讲为主,他也没细问,然后就说我理解的不深入,题目做的不好,准备的差不多都没问,感觉凉了~

问题&答案

  1. 让我自己讲我的所有实习经历和项目经历,然后他也没有细问,他总结了以下,就完了。

  2. 介绍一下word2vec

    1. word2vec是词向量的求解模型,输入:大量已分好词的文本,输出:用一个稠密向量表示每一个词

    2. word2Vec就是简化的神经网络模型
      在这里插入图片描述
      输入的是one-hot vector,隐藏层是没有激活函数,即线性单元,输出层和输入层维度相同,使用的是softmax回归;损失函数是交叉熵(对数)损失函数;我们为每个词获取的稠密向量,其实就是从输入层到隐藏层的权重
      其中,softmax函数如下:
      s o f t m a x ( x ) = e x ∑ i N e x i softmax(x) = \frac{e^x}{\sum_{i}^{N}e^{x_i}} softmax(x)=iNexiex
      交叉熵损失函数如下:
      H ( p , q ) = − ∑ x p ( x ) l o g q ( x ) H(p,q)=-\sum_{x}p(x)logq(x) H(p,q)=xp(x)logq(x)

    3. CBOW和skip-garm的区别
      CBOW是输入某个特征词的上下文相关的词对应的词向量,输出就是这个特定词的词向量,即先验概率;skip garm输入的特定的一个词的词向量,输出是特定词对应的上下文的词向量,即后验概率。

    4. CBOW和skip-garm的应用场景:CBOW对小型数据库比较合适,而Skip-Gram在大型语料中表现更好。

    5. 两种高效的训练方法负采样(negative sampling)和层序softmax(hierarchical softmax)

      1. 负采样(negative sampling)
        将语料中的一个词串的中心词替换为别的词,构造预料D中不存在的词串作为副样本。此种策略下,优化目标变为:较大化正样本的概率,同时最小化副样本的概率。
      2. 层序softmax(hierarchical softmax)
        是一种对输出层进行优化的策略。原始模型的输出层利用softmax计算概率值,层序softmax改为了利用Huffman树计算概率值。一开始我们可以用以词表中的全部词作为叶子节点,词频作为节点的权,构建Huffman树,作为输出。从根节点出发,到达指定叶子节点的路径是概率值。Hierarchical Softmax正是利用这条路径来计算指定词的概率,而非用softmax来计算。
    6. 为了更好的理解,请看以下博文:

    https://www.jianshu.com/p/d6a0aec6e9a1
    https://www.cnblogs.com/zhangyang520/p/10969975.html

  3. GDBT和RF区别
    相同点:都是由多棵树组成,结果由多棵树共同决定。
    不同点:

    1. GBDT是回归树,RF可以是回归树也可以是分类树;
    2. GBDT对异常值特别敏感,RF则没有;
    3. GBDT只能串行生成多个模型,RF可以并行;
    4. GBDT的结果有多个结果求和或者加权求和,RF是由投票选出结果;
    5. GBDT是通过减少偏差来提高模型性能,RF是通过减少方差;
    6. RF对所有训练集一视同仁,GBDT是基于权值的弱分类器。
  4. lightgbm和xgboost的区别

    1. 树的切分策略不同:
      1. xgb基于level-wise,对每一层节点进行无差别分裂,造成不必要的开销;
      2. lgb基于leaf-wise,在当前所有叶子节点中选择分裂增益最大的节点进行分裂;
        实现并行方式不同:
    2. xgb使用基于 pre-sorted 决策树算法;
      lgb使用基于histogram决策树算法,对离散特征进行分裂时,特征的每个取值为一个桶;
    3. lgb支持直接输入categorical feature,对类别特征无须进行one-hot处理;
    4. 优化通信代价不同:lgb支持特征并行、数据并行。
  5. SVM介绍一下?为什么可以使用对偶来求解原始问题?

    1. 凸二次规划问题:基本目标是二次函数,约束条件是线性的这种优化问题被称为凸二次优化问题,应有对偶问题求解更高效;
    2. 满足KKT条件下,对偶问题和原始问题的解是完全等价的。
  6. 核函数了解吗?有几种核函数?核函数解决什么问题?我说核函数解决了当前特征空间中样本不可分的问题,他说只要是样本不可分就用核函数吗?

    1. 核函数的作用:当样本在原始空间线性不可分时,通过核函数将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。
    2. 核函数的种类:
      在这里插入图片描述
    3. 当然不是。在样本近似可分时,我们可以使用软间隔最大化来求解一个线性SVM分类器。
  7. LR说一下?
    没啥可说的,最讨厌面试官问我这种问题了= =。

  8. 介绍一种你熟悉的深度学习网络,我说的LSTM,说完之后他说你GRU了解吗?

    1. LSTM的出现解决了DNN什么问题?
      时序反向传播算法按照时间的逆序将错误信息一步步地往前传递。当每个时序训练数据的长度 T 较大或者时刻 t 较小时,损失函数关于 t 时刻隐藏层变量的梯度比较容易出现消失或爆炸的问题(也称长期依赖问题)。
    2. LSTM 的主要思想是:门控单元以及线性连接的引入
      1. 门控单元:有选择性的保存和输出历史信息;
      2. 线性连接:如下图中的水平线可以看作是 LSTM 的“主干道”,通过加法,Ct−1 可以无障碍的在这条主干道上传递,因此 LSTM 可以更好地捕捉时序数据中间隔较大的依赖关系。
        在这里插入图片描述
    3. LSTM流程(会推导)
      在这里插入图片描述
      在这里插入图片描述
  9. 代码题:

题目描述:牛牛手里有一个字符串A,羊羊的手里有一个字符串B,B的长度大于等于A,所以牛牛想把A串变得和B串一样长,这样羊羊就愿意和牛牛一起玩了。而且A的长度增加到和B串一样长的时候,对应的每一位相等的越多,羊羊就越喜欢。比如"abc"和"abd"对应相等的位数为2,为前两位。牛牛可以在A的开头或者结尾添加任意字符,使得长度和B一样。现在问牛牛对A串添加完字符之后,不相等的位数最少有多少位?
输入描述: 第一行为字符串A,第二行为字符串B,A的长度小于等于B的长度,B的长度小于等于50.字符均为小写字母。
输出描述: 输出一个整数表示A串添加完字符之后,不相等的位数最少有多少位?
输入例子: abe cabc
输出例子: 1

import java.util.*;
public class MinDiff{
    public static void main(String[] args) {
        Scanner in = new  Scanner(System.in);
        String s1 = in.nextLine();
        String s2 = in.nextLine();
        int maxlen = 0;
        for(int i=0; i<=s2.length()-s1.length(); i++) {
            int count = 0;
            for(int j=0; j<s1.length(); j++) {
                if(s1.charAt(j) == s2.charAt(i+j)) {
                  count++;
                }
            }
            maxlen = Math.max(maxlen, count);
        }
        System.out.println(s1.length() - maxlen);
    }
}
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值