知乎推荐算法工程师面经 (社招)

1、自我介绍

    balabala......

2、介绍下协同过滤

    我大致介绍了下协同过滤的分类,以及每种分类的主要思想以及优缺点。其中提到了LFM,面试官又追问LFM用来解决什么问题,我从降维和回归两个角度来进行解释的。

3、介绍下SVD与MF的区别

    我把SVD++的公式写下来并进行了解释,其主要是考虑了用户的隐式反馈信息。

    后来面试官说问错了,其实是想问一下BiasSVD的思想,还好我写的公式包含BiasSVD的公式,主要是对于用户和项目更细粒度的建模,因为有的用户可能相对仁慈,所以评分普遍偏高;有的用户可能比较严厉,所以评分普遍偏低;同理对于项目也是如此,有的项目天上质量上乘,有的项目天上质量比较差。所以我们需要增加偏置项来捕获细粒度的影响。

4、问简历中发表的CCF-C类论文的细节

    由于项目中涉及graph embedding的东西,所以介绍了下GE;

    由于GE涉及到word2vec的东西,我又说了下word2vec。

    因为word2vec分为了CBOW和Skip-gram模型,后来面试官又问两种模型的适用场景。

    因为我只介绍了其中一个优化技术Negative Sampling,其中把概率公式写了出来,他又让我分享一下另一个优化技术Hierarchical Softmax,大致说了下,就是把多分类任务转化为了多个二分类任务,同时利用哈夫曼树来将词频高的词尽可能出现在里根节点近的地方。

5、了解最近MF与深度学习结合的东西吗

    我说了下何向南老师的神经协同过滤,并谈了下利用深度学习技术做推荐的看法。

6、了解常见的机器学习算法吗,说一下LR

    了解。我从线性回归入手过渡到逻辑回归,他们是对于特征的线性组合,并且假设数据是线性可分的,同时可以通过超平面将之分离,另外介绍了可以通过最大似然来推导出LR。思路跟我之前写过的这篇文章类似《由Logistic Regression所联想到的...》。

7、介绍一下常用的排序算法

    O(n^2):冒泡,选择、插入

    O(nlogn):快速排序、堆排序、归并排序

8、说一下快速排序的过程以及最好和最坏情况

    大致说了一下分而治之的流程...

9、了解JVM么,介绍一下

    不是很了解

10、了解协程么,介绍一下

    不是很了解

11、说一下进程与线程的区别

    进程可以由多个线程组成,另外线程间可以进行资源的共享,进程间不行。cpu调用的是线程。

12、咱做个简单的算法题吧,给定一个有序数组,然后再给个关键字,写一个函数返回其下标

    我想到了二分查找来解决这个问题。

13、常用的数据结构了解哪些,hashmap以及如何解决冲突,红黑树以及平衡搜索树等

    因为我本科以及研究生的技术栈偏.NET,所以用的java不是很多,所以不是很了解hashmap,对于冲突解决可以采用开放定址法等。平衡树了解一些,红黑树不是很了解了。

14、说一下推荐系统常用的召回策略...

15、介绍一下深度学习常用来缓解过拟合的手段(至少5个)...

16、推导逻辑回归的损失函数以及推导梯度更新公式...

17、利用队列来实现栈的功能...

18、比较e^2与2^e的大小...

19、给你一个数组,求一个k值,使得前k个数的方差 + 后面n-k个数的方差最小 ,时间复杂度可以到O(n),给定方差公式:D(X)=E(x^2)-[E(X)]^2..

 


#知乎##面经##社招#
全部评论
太狠了,算法岗考的够狠
1 回复 分享
发布于 2021-08-13 19:13
大佬几年经验啊
点赞 回复 分享
发布于 2021-08-30 21:02
社招?
点赞 回复 分享
发布于 2021-12-15 23:27
哥,请问下何向南老师的神经协同过滤evaluate部分那里num_thread可以设置为多线程来跑吗
点赞 回复 分享
发布于 01-04 16:08 湖南

相关推荐

评论
6
43
分享
牛客网
牛客企业服务