美文网首页
面经-推荐算法

面经-推荐算法

作者: inspiredhss | 来源:发表于2020-03-05 23:02 被阅读0次

    1、自我介绍
    一、机器学习基础题

    1、LSTM的公式
    随机梯度下降:来一个样本,更新梯度 ; 全量梯度下降; miniBatch
    2、RNN为什么出现梯度消失及BPTT的推导
    卷积:局部相关性;
    RNN 梯度消失 每一步只受前一步的影响;梯度爆炸 ==》LSTM好多门;
    3、DQN的基本原理么

    4、GBDT和随机森林有什么区别

    5、GBDT的原理,如何做分类和回归

    6、随机森林的随机体现在哪方面

    7、Wide &Deep的原理

    8、GBDT+LR是怎么做的?

    9、DQN模型为什么要做经验回放

    10、数据之间如果不是独立同分布的会怎样

    11、AUC的原理介绍一下

    12、XGBOOst和GBDT的区别。

    13、强化学习和监督学习的区别

    14、神经网络里面的损失函数有哪些

    15、机器学习中常见的激活函数有哪些?为什么通常需要零均值?

    16、DeepFM介绍

    17、FM推导

    18、boosting和bagging的区别?

    19、bagging为什么能减小方差?

    20、交叉熵损失函数,0-1分类的交叉熵损失函数的形式。什么是凸函数?0-1分类如果用平方损失为什么用交叉熵而不是平方损失?

    21、L1和L2有什么区别,从数学角度解释L2为什么能提升模型的泛化能力。

    22、深度学习中,L2和dropout有哪些区别?

    23、L1正则化有哪些好处

    24、如果有一万个地理坐标,转换成1-10000的数,可以用决策树么?

    25、CART分类树和ID3以及C4.5有什么区别?

    26、树集成模型有哪几种实现方式:Bagging和Boosting,回答过程中又问到了很多细节。随即森林的随机体现在哪些方面,AdaBoost是如何改变样本权重,GBDT分类树拟合的是什么?

    27、Dueling DQN和DQN有什么区别

    28、early stop对参数有什么影响?

    二、数据结构算法题

    1、K个有序数组,找一个长度最小的区间,在这个区间里至少包含每个数组各一个数

    2、n个[0,n)的数,求每个数的出现次数(不能开辟额外空间)

    3、数组的全排列(空间复杂度O(1))

    4、一堆钞票,尽可能均分(利用背包问题的思想)

    5、无向无环图中,最短路径的最大值(Floyd算法)

    6、层次遍历二叉树

    7、字符串的最长公共子序列(动态规划)

    8、树的前序遍历和zigzag遍历(非递归)

    9、一个数组,所有数组都出现了两次,只有一个数出现了一次,返回这个数(位运算)

    10、一个数组,一个数出现了超过一半次数,返回这个数

    11、将除法的结果用字符串返回,如果能够除尽,则返回相除的结果,如果不能除尽,则无限循环部分用[]标记。

    12、数组排序,假设数组排序后的位次和排序前的位次绝对值差值小于K,有什么比快排好的算法?

    13、树中两个节点的第一个的公共祖先。

    14、判断是否是回文链表

    15、判断两个链表中是否有相同节点

    三、实践题

    1、如果你想往模型中加入一个特征,如何判定这个特征是否有效?

    2、LR和FM的区别?FM需要进行交叉特征的选择么?如果在LR选了一部分特征做交叉之后,取得了比FM更好的效果,这是为什么?如果FM变成DeepFM之后,效果超过了LR,这又是为什么?

    3、如果逻辑回归的所有样本的都是正样本, 那么它学出来的超平面是怎样的?

    4、哪些场景下的分类问题不适用于交叉熵损失函数?

    5、推荐系统中你认为最重要的环节是什么?

    6、多臂老虎机中,有许多方法,比如e-greedy,timponson采样,UCB,这些方法都有哪些适用场景?

    7、如何预测一家店分品类的销量

    8、信息流采样,有n份数据,但是n的长度并不知道,设计一个采样算法,使得每份被选择的概率是相同的。

    9、模型在线下评估和线上使用时,往往出现线上实际效果不如线下效果的情况,请分析可能的原因。

    10、在CTR预估问题中,假设训练数据的正负样本数为1:4,测试数据中的正负样本数也为1:4,那么此时模型对测试集,学到的平均点击率为1/(1+4),假设此时采取了欠采样策略,使正负样本数为1:1,对同样的测试集进行预测,平均点击率应该是多少?(样本量很大,初始总样本数为10亿)

    2、协同过滤

    思想 优缺点 LFM 降维&回归
    3、SVD & MF
    SVD用户隐式反馈;
    BiasSVD细粒度建模 增加偏置项捕获细粒度影响;
    MF
    4、简历中项目细节思想
    DKN word2vec; CBOW Skip-gram 使用场景;
    优化技术: Negative Sampling; Hierarchical Softmax;多分类->二分二里;哈夫曼树将高频词距离根节点近;
    5、MF&深度学习结合
    6、常见机器学习算法 LR;
    7、常用的排序算法;
    O(n^2):冒泡,选择、插入
    O(nlogn):快速排序、堆排序、归并排序
    8、快速排序的过程以及最好和最坏情况
    分而治之
    9、JVM
    10、协程
    11、进程&线程区别
    进程可以由多个线程组成,另外线程间可以进行资源的共享,进程间不行。cpu调用的是线程。
    12、TopK问题; 数组、关键字 下标返回;
    13、常用的数据结构:hashmap以及如何解决冲突,红黑树以及平衡搜索树;
    14、说一下推荐系统常用的召回策略...
    15、介绍一下深度学习常用来缓解过拟合的手段(至少5个)...
    16、推导逻辑回归的损失函数以及推导梯度更新公式...
    17、利用队列来实现栈的功能...
    18、比较e2与2e的大小...
    19、机器学习不只是离线训练模型 还要有部署能力 比如说说要熟悉 配置环境 Docker Microservice Kubernetes Cloud Servies(AWS, Azure, etc.) 但是这些经验新手比较难有。
    20、算法工程师真正在公司工作,很多时间可能是花在普通的软件开发上,尤其大数据与后端的开发能力,这些要求掌握的语言一般有Java,go(专门有协程),Scala等等,会写接口,也要求对各种关系型或非关系型数据库进行操作,另外还有分布式计算,建议至少掌握hive,spark(尤其里面的mllib)的常见用法,有余力还有flink。以上这些东西没有算法理论那么难理解,但是得花很多时间去实践,才能较好地掌握。
    21、要求算法工程师不仅对于机器学习算法需要了如指掌,我们更需要将算法部署到真实环境中,因此不是简单的用python训练个模型就好了,还需要将之部署到服务器上,我们更加注重计算机基础相关的东西,同学你还得加强基础训练啊。希望大家在学好理论的同时,能够把编程基础打好,养成好的习惯,比如每天刷一道算法题,每天看一下相关的知识点等。
    22、项目经历、实习经历、机器学习理论以及手撕算法;偏业务的东西或者工业界独有的东西;

    ———————————————————————
    1、说说矩阵分解
    2、围绕LLE来问:LLE全称是什么;简述LLE和PCA的特点和区别;LLE里面涉及的图拉普拉斯有没有了解(应该问的是LE:Laplace Eigenmaps)(一定要了解相近的一类对比算法)
    3、整体代码的实现(一定要有条理地说清楚啊);deepwalk是手写还是工具包,有没有用numpy;图嵌入的训练集是什么,矩阵分解的训练集是什么
    4、简述word2vec;说说滑动窗口大小以及负采样个数的参数设置以及设置的比例;怎么衡量学到的embedding的好坏
    5、是否了解图卷积
    6、说说推荐系统算法大概可以分为哪些种类:(1)基于内容;(2)基于协同过滤:基于内存(UB IB);基于模型(MF)
    ——————————————————
    1、推导LR
    2、图结构是怎么存储的?利用你所做的这个图结构实现深度/广度优先遍历,格式是:
    def find_path(graph, root, destination)
    深度优先遍历用栈结构实现;广度优先遍历用队列结构实现
    3、聊到了宏观会问到的业务上的问题:
    如果图表只存储了学校这片区域的中心点,但是我们下单的宿舍地址不在中心点附近,怎么去确定这个具体位置?说:可以遍历走过该地址的外卖员的轨迹,大量相交的交点大概率是具体位置;
    还问,如果要给外卖员分配订单,怎么去分配?从外卖员到下单地址的距离远近,下单的紧急程度,外卖员正在派送的位置与下一个要派送的位置是否顺路(不可以时东时西)
    ——————————————————
    1、详细描述工作,画出来整体框架
    2、工作最大创新点,在代码实现方面遇到的难点
    3、看你对比的都是传统的或者是基于图的推荐算法,有没有尝试过对比一下或者有没有了解其他不同数据源的深度学习算法?
    4、说到上面提到了attention机制,问了怎么看待attention机制,为什么有这么多工作去使用它
    5、除了优化模型,还可以从什么方面去取得更好的性能:说了特征工程的处理,GBDT得到feature importance取topk贡献较大的特征作为模型输入
    6、上面说到的特征处理,提到了会筛选出来特别的节日来单独处理,问:为什么要把平常日、周末、节假日分开处理
    7、怎么去规划工作几年中的小目标


    1、推导SVM公式,挨个步骤说清楚,我说错了y的取值范围,应该是{ 1,-1};没说清楚函数间隔和几何间隔的物理含义
    2、问了满二叉树和完全二叉树,大概画了一下;问了红黑树,说没学过,没有接着问了
    3、问了随机森林有了解吗?知道里面的有放回的采样方法吗?后面问了个数学问题:
    给定n个小球,有放回地采样。当n趋向于无穷的时候,某小球不被取到的概率是多少?


    Auc怎么计算,auc的含义
    roc曲线怎么画(本来意思让我写代码,我说我跟你说说思想吧...),复杂度分析


    xgboost原理,推导,调参,(由于kaggle项目里用到过)
    基于商品的协同过滤,公式实现,类似于TF-IDF的思想从而惩罚热门商品
    深度学习的东西,防止过拟合


    分类算法知道哪些

    GBDT的推导,原理。实际项目有用过吗?没有。。。

    GBDT第二棵树的输入是什么?梯度是几阶的?一阶的,xgboost?是二阶的,两者之间的对比等聊了蛮多

    GBDT构造单棵决策树的过程?

    分类模型的评价指标有哪些?。。。准确率,召回率,auc,roc。auc的含义是什么,横纵轴代表什么?

    xgboost用过吗?它有很大改进,有哪些改进?答了特征抽样,是模拟随机森林,防止过拟合;支持线性分类器;可以自定义损失函数,并且可以用二阶偏导;加入了正则化项:叶节点数、每个叶节点输出score的L2-norm在一定情况下支持并行,只有在建树的阶段才会用到,每个节点可以并行的寻找分裂特征。

    分类算法防止过拟合的方法?

    深度学习防止过拟合?
    关于自己的项目或论文,自己掌握的非常好(这点必须的吧),并且与面试工作领域较为切合,与面试官互动很好,你来我往;

    关于算法,有的答的很好,其他至少能大概答出来关键点,不至于完全不知道,没有硬伤;

    3、介绍自己做过的项目以及详细的产出(自已谈到用户画像 所以针对于用户画像有详细展开)

    3、觉得在哪个公司成长最大,为什么?是做了什么事情吗?

    4、介绍一个自己觉得比较重要的项目以及详细产出

    5、开放题:a) 预估一下某某地铁站的人流量 b) 疫情期间,该如何控制控制人流量

    6、针对于该职位,有什么想要了解的?

    2、介绍自己做的项目(按照背景 分析方向 具体产出 难点 收获 这个流程来进行说明)
    4、由于字节是服务客户的全生命周期,问我如果一个客户如果被两个部门接触,应该怎么进行成本核算(我最开始脑残的答平分,明显感觉答案不对。后来我说按获客成本的高低,渠道之前的优先级来区分)


    头条的面试特点基本就是一个套路:【自我介绍】->【项目介绍】->【手撕算法】->【基础知识】,屡试不爽。

    • 自我介绍:我是xxx,来自xxx,毕业后在xxx几年,期间负责xxx。
    • 项目介绍:xxxxx。项目的时候面试官会问你难点和解决方案,同时会给你提出场景,问你更优化的思路。
    • 手撕算法:多刷题,也可以看看别人面过的算法题,可能会重复。
    • 基础知识:针对简历写的东西问,我被问的较多的是一些中间价,Redis、MySQL、Kafka、ElasticSearch,Java基本没问,因为头条这边使用Go。

    MySQL集群。假如集群出现延迟怎么处理。
    Redis的zset实现延时任务
    设计题:如何设计tiny url
    为什么要四次挥手
    HTTPS

    • K Group反转链表。写了栈和迭代两种实现方式,链表的题写起来真痛苦,很容易边界出错。
    • Redis的持久化机制
    • MySQL的隔离级别
    • MySQL索引,聚簇索引和二级索引
    • Redis高可用方案
    • 介绍一些Kafka的一些概念
    • Kafka如何保证消息有序
      第K大的数
      设计题:秒杀系统
      MySql的索引优化
      HTTPS
      阿里的面试特点:【自我介绍】->【项目介绍】->【场景解决】->【基础知识】,阿里面试除了基础以外,也很看重候选人的解决问题的思维。还是需要候选人有点积累的,假如你写的项目不是自己的,很容易就被问出来。

    自我介绍
    项目难度介绍
    如何实现延时任务
    如何实现限流
    线程池的参数
    能不能自己实现一个java.lang.String并加载
    Redis为什么这么快
    epoll和poll的区别
    进程同步的方式

    • MySQL的索引机制
    • 如何自己实现内存分配和管理?不太懂,然后说了jvm的垃圾回收机制
    • 你们公司内部的RPC框架,介绍一下
    • Redis的key过期策略
    • 缓存穿透和缓存雪崩
    • 分布式锁
    • 如何实现全局的id生成策略
    • 悲观锁和乐观锁
    • 红黑树了解么

    如何实现群消息已读
    消息推送如何保证不重复
    Kafka如何保证消息的可靠性
    RPC是什么,和http调用有什么区别
    说一说你项目的架构
    GC
    MySQL的索引原理,给了一个场景,如何优化

    XGB与LGB区别,Bagging和boostting区别
    无向图的迪杰斯特拉算法实现。

    1.lr公式推导
    2.算法题,求a^n
    3.DNN反向传播公式推导
    4.CNN反向传播公式推导

    三面主管面:FM推导,deepfm原理,graph embedding,问了之前的一些项目。

    四面交叉面:模型上线时应该注意的事,如果请求过高模型服务挂了怎么办,tensorflow和torch的区别,如何降低模型复杂度。

    项目叙述关键词(可以展开给面试官说的清楚的,说不清楚的不要提)

    1.Python,DNN,交叉熵,sigmoid;CNN,卷积,池化,对数似然,ReLu

    2.多标签数据,特征选择,潜在语义(LSA),Armijo rule,梯度下降,SVM,宏平均,微平均
    3.HSV特征,KNN,拉普拉斯矩阵,matting方程,guided filter,误差分类率

    Q:项目二中用的libsvm,讲一讲

    A:分类超平面,距离超平面距离最近的点距离最大,间隔,函数间隔,几何间隔,目标函数,拉格朗日乘数对偶化求解

    Q:支撑向量是什么?

    A:距离超平面最近的那些样本

    Q:如何解决线性不可分的情况?

    A:少数点不可分,加入松弛变量。整体都不可分的话,核函数映射到高维空间使得线性可分

    Q:常见的核函数有哪些?

    A:高斯核,多项式核,线性核

    Q:高斯核在delta(方差)变大的情况下,整个模型是overfitting还是underfitting?

    A:没听清这俩单词(过拟合和欠拟合)。问题本身也不知道

    Q:训练之后,需要对模型进行存储,需要存储哪些参数?

    A:权重W和偏置b

    Q:宏平均和微平均如何计算的?

    A:查准率和查全率,F-measure(F值),多分类的宏平均和微平均分别是算数平均数和加权平均数

    Q:一般二分类的问题用什么评价指标呢?

    A:分类准确率,但是样本不均衡的情况,很不准确。因此用查准率和查全率

    Q:知道ROC曲线吗?曲线的物理含义是什么?AOC越高,体现了什么样的东西?

    A:然了一会。(看过记不清了)

    Q:刚提了样本不均衡问题,如何解决?

    A:主要三个方面,数据,模型和评估方法。数据上重采样和欠采样,使之均衡;模型上选对样本不均衡问题不敏感的模型,如决策树,不能用KNN;评估方法,想之前所说查全率,查准率之类

    Q:重采样和欠采样会带来什么问题?

    A:过拟合(猜)

    Q:经常会对连续型特征进行离散化处理,比如年龄分70后,80后,90后,在模型是LR或SVM的情况下,会有什么受益?

    A:不会。没看过

    Q:ok,然后问一些神经网络相关的。输入层特征会标准化,归一化吗?为什么是必须的?

    A:用的mnist数据集不用归一化。。。不知道

    Q:梯度消失产生的原因

    A:反向传播,前一层的梯度是由后一层上一些项目的乘积。假如每一层上的梯度小于1,越乘越小,到最前面的层就会梯度消失。

    Q:只有这一种原因吗?

    A:还有比如S型神经元,在01附近梯度很小,而w和b的梯度是有S函数的梯度因式,从而导致梯度变小。

    Q:relu出现死节点的问题,如何解决?

    A:(想到relu的缺点,那么解决办法就是)初试设置一个比较小的学习速率。(这个回答貌似面试官不满意)

    Q:有没有了解过ReLu的其他变种的方式?

    A:(原来是想问这个)没看过

    Q:卷积神经网络最重要的特性是什么?

    A:卷积。

    Q:一个feature map 的计算题,单(还是三?)通道的2424的图像,有5个卷积核,每个都是55的,步长是1,没有补充(padding),卷积之后的feature map 的尺寸

    A:(不管是单通道还是三通道无所谓)(24-5)/1+1=20,5个卷积核,20205

    Q:常见的池化方式有哪些?

    A:最大池,平均池,l2池

    Q:max-pooling和average-pooling各自的适用情况?

    A:不知道

    Q:比如要检测图像的纹理,那么用什么?

    A:max-pooling,可以进行信息压缩,不关心纹理的具体位置,而是否出现,大概在哪

    Q:了解BN层作用吗?

    A:(就记得几个名词)减少数据分布的偏移,在两个网络层中间加入归一化层,为了避免影响提取的特征,做了一个转换。

    Q:代码考核,无序数组找出第k大的数

    A:用的快速排序思想,找切分点,如果切分点在k之后那么在切分点左边继续切分,如果在切分点在k之前,那么在切分点右边继续切分,直到切分点为k-1

    Q:时间复杂度是多少?

    A:快速排序,对数级别吧。

    producer-consumer
    两线程交替打印
    多线程模拟100分钱随机分给20个人,每个人最少分配到2分钱
    一面,算法题:快排非递归,旋转有序数组找某个值

    二面,算法题:一个二维数组,上有0和1,把所有相邻的1给连起来,求最终有几块连起来的1。 L1和L2正则区别,softmax损失函数。

    三面,MapReduce原理,

    • 写个producer-consumer吧,我说上次写过了。。傻了。。不该说的,然后面试官换了一道题,还好比较简单,写个二分查找,2分钟写完完事。

    • 项目难点

    • MVCC

    • HTTPS

    • ElasticSearch的查询过程

    • Kafka如何保证高可用

    • Reids的集群和选主

    • 知道什么分布式一致性算法

    • 如何实现定时关单

    • 说说看,假如你是部门技术经理,线上商户数据丢失怎么办* 怎么将一个产品推荐给其他的团队,怎么界定边界

    • 怎么样协调关系

    • 你和同事相处的情况怎么样,说说你帮助同事的一次经历

    Python打开一个文件,找出某个字符串最快的方法

    服务器性能怎么优化
    你做的平台,前后端交互怎么实现
    所有项目的实现步骤和详细说明
    拿过公司什么奖励
    其他的公司大同小异

    为啥离职,怎么想的
    介绍项目
    怎么和团队的人沟通,和成员出现冲突时怎么解决。
    期望薪资,你现在的薪资

    最后给技术背景想作产品的人一点建议:

    1. 我在面试中被问到最多的问题:你为什么要从算法转到产品? 一定要准备好一个能说服面试官,更重要的是要能说服自己的回答。

    2. 如果想作产品,要对世界和人敏感,如果不足够敏感,那就在去面试之前把脑海里做好的准备做好index,方便搜索。

    3. 要自信!

    相关文章

      网友评论

          本文标题:面经-推荐算法

          本文链接:https://www.haomeiwen.com/subject/yyrkrhtx.html