牛客网算法面经汇总
链接:https://www.nowcoder.com/discuss/212554
来源:牛客网
作者:caiyue37
链接:https://www.nowcoder.com/discuss/210036
来源:牛客网
链接:https://www.nowcoder.com/discuss/211763
来源:牛客网
一面:
随机森林的随机性怎么体现
Bagging和Boosting区别
三道代码题
1.给一字符串,只包含(和),求最长连续子串
例子:
输入:
)((()))(
答案:
6
2.给一个字符串,列出所有可能的ip组合
3.k个有序链表合并
二面
1.我看你简历上都是CV项目,你愿意转到推荐算法这边还是坚持你的CV
2.你对于机器学习很多东西都不了解么?
3.说说过拟合和欠拟合的概念吧
4.过拟合怎么处理?
5.如何降低模型的容量
6.你用过dropout么?介绍一下
7.逻辑回归了解么?逻辑回归是处理线性问题还是非线性问题的?
8.决策树的ID3和C4.5介绍一下
9.介绍一下TCP和UDP
10.你比较熟悉Python?你了解过他的多线程么?
11.python全局锁是什么?
12.python装饰器介绍一下
13.Python数据结构有哪些?
14.你主要用TensorFlow?它的优化器都是什么?分别介绍一下
15.TensorFlow怎么实现梯度传递?
16.maxPooling怎么传递导数?
17.考一道算法题吧,我给你一个中文数字,比如一百二十,如何转换为整形数字
三面
1.自我介绍
2.项目,问的很细。包括数据量和模型
3.我有一个中文的OCR识别模型,现在如何得到一个日文的识别模型?
(这里我想说翻译,但是感觉OCR本身就有自己的误差,加上翻译的误差可能会导致准确率很低,
链接:https://www.nowcoder.com/discuss/211954
来源:牛客网
链接:https://www.nowcoder.com/discuss/211174
来源:牛客网
一些发散性的题目
算法:
链接:https://www.nowcoder.com/discuss/211326
来源:牛客网
链接:https://www.nowcoder.com/discuss/210829
来源:牛客网
链接:https://www.nowcoder.com/discuss/210333
来源:牛客网
1. 判断二叉树是否包含另一二叉树
2. 有序数组合并
链接:https://www.nowcoder.com/discuss/210508
来源:牛客网
- 再问一个分割检测方面的,了解nms吗,大致介绍一下
- 模型训练过拟合怎么办
答:数据增强,增大数据量;换更大更深的网络,更好的backbone;dropout,BN等
- BN为什么防止过拟合呢?
正确答案应该是
大概意思是:在训练中,BN的使用使得一个mini-batch中的所有样本都被关联在了一起,因此网络不会从某一个训练样本中生成确定的结果。
这句话什么意思呢?意思就是同样一个样本的输出不再仅仅取决于样本本身,也取决于跟这个样本属于同一个mini-batch的其它样本。同一个样本跟不同的样本组成一个mini-batch,它们的输出是不同的(仅限于训练阶段,在inference阶段是没有这种情况的)。我把这个理解成一种数据增强:同样一个样本在超平面上被拉扯,每次拉扯的方向的大小均有不同。不同于数据增强的是,这种拉扯是贯穿数据流过神经网络的整个过程的,意味着神经网络每一层的输入都被数据增强处理了。
- 提出了除了BN外,还有其他方式同样可以达到类似平滑效应,有些甚至效果更好。
- 算法题:判断一棵树是不是完全二叉树
思路:
1>如果树为空,则直接返回错
2>如果树不为空:层序遍历二叉树
2.1>如果一个结点左右孩子都不为空,则pop该节点,将其左右孩子入队列;
2.1>如果遇到一个结点,左孩子为空,右孩子不为空,则该树一定不是完全二叉树;
链接:https://www.nowcoder.com/discuss/209171
来源:牛客网
一面 基本都在聊项目,后面随便问了几个问题。
# ab测试在两个bucket差距比较大,一个bucket量特别小的情况下,如何去更好的估计结果
# 介绍下基本的推荐算法
# 传统的机器学习和深度学习的区别你觉得是什么
# code: 给定一个字符串,和字符串列表,判断能否用字符串列表拼接生成字符串
二面 基本也都在聊项目。。。
# 推下svm? 推的不是很好,很久没看了
# kmeans的收敛性
# 没了好像。。。
链接:https://www.nowcoder.com/discuss/207105
来源:牛客网
链接:https://www.nowcoder.com/discuss/207092
来源:牛客网
链接:https://www.nowcoder.com/discuss/207287
来源:牛客网
- 首先自我介绍
- 自我介绍我提到了数据挖掘,他问那你会大数据吗,我说只会点皮毛
- 那你了解推荐系统吗?答不怎么了解
- 那好,给你个情景题:给你一千万个用户,一千万个商品,怎么把商品推荐给用户?我的内心是崩溃的,这不明显的推荐系统嘛😪
链接:https://www.nowcoder.com/discuss/207712
来源:牛客网
1.写一个计算sqrt的函数,不能使用库函数(我用的牛顿法);
2.然后问了牛顿法和二分法的差别,和各自的优劣;
3.问了c++ vector的实现原理,为什么可以动态增长长度;
4.vector的插入效率(尾后插入)为什么平均来讲是O(1)级别的;
5.项目细节以及比赛的细节(问的非常细)
- 特征工程是怎么实现的,结合比赛具体介绍;举例说明通过特征工程怎么提取到非常有用的强特征的;
- PCA的原理,以及为什么能用于降噪(项目相关);
- 神经网络如何解决过拟合;
- Dropout的原理;
- Bagging ,Dropout还有 Boosting之间的对比;
链接:https://www.nowcoder.com/discuss/209478
来源:牛客网
这一个问题其实我有用过,我也知道原理,但是当面试问具体公示的时候,还是愣了一下,但是BN无疑是一个很火的应用,必须要会。
链接:https://www.nowcoder.com/discuss/206186
来源:牛客网
电面一面(25分钟):(ps: 这一面问的心态爆炸。。。。。)
1. 自我介绍
2. 看你简历是做CV的,我们这边是做推荐的,让你做你愿意做吗?(当然愿意啊,让我进去做啥都行2333)
3. 面试官介绍了他们做的业务(说氛围轻松,几亿条数据随便你玩)
4. 为啥在平安只实习了1个多月啊?现在在哈啰实习做啥业务?
5. 讲一下偏差和方差(楼主从欠拟合和过拟合来讲的)
6. K-means算法中的K怎么确定的?
7. 场景题:打开京东APP,点击一个商品,详情页会显示XXX也买过,这个具体是怎么做的?(楼主扯到了协同过滤和冷启动)
8. 推荐里面的低秩矩阵分解具体是怎么做的?
9. 线性代数里面的矩阵分解你知道吗?具体是怎么做的?
10. 搜索引擎的拼写纠正怎么做的?(楼主说了朴素贝叶斯和词袋模型)
11. 那如果第一个字母就输错了怎么办?
12. 词向量这一块有了解过吗?
13. 讲一下逻辑回归?
14. 当数据量特别大的时候,逻辑回归(LR)怎么做并行化处理?
15. 讲一下SVM?
16. SVM的核函数有哪些?你都用过哪些?
17. 特征工程你知道吗?用过吗?对于连续特征,我们通常有两种处理方式:1. 连续特征离散化;2. 特征缩放,这两种分别在什么情况下做?
18. 算法题:求字符串的最大回文子串(动态规划)
完了就说他没问题了,一会儿还有一轮面试。
总结:面试官一直问我推荐相关,我真的不会。哎,后面场面非常尴尬。。。。
---------------------------------------------------------------------------
电面二面(30分钟) 这一面还行。。。。。
上来我直接认怂,说我一面面得很差,好多都不会。结果二面面试官说我一面面的还行。。。
面试官说了一下他们的部门:京东云下的应用研发部算法推荐团队,以及具体的业务,主要是下面三块:
1. APP的商品推荐
2. 精准营销
3. 客户管理
下面是具体面经:
1. 面试官说对我现在的在公司的业务顺风车感恩费定价策略很感兴趣(怪我,祸从口出。。。),说京东这边最近也在这定价预测,让我给他讲一下。没办法,硬着头皮吹逼。。。
2. 这个用的啥模型啊?具体怎么做的啊?(说到了逻辑回归和机器学习的排序算法)
3. 你这个数据是怎么打标签的?
4. 场景题:现在让你给从未出售的Iphone8进行定价预测,你要从哪些维度考虑?(考察吹逼能力,我吹了很长时间。。。)
5. 接上问,面试官:你说的不错,从那些竞品当中,我们怎么选择出一个与我们的产品(Iphone8)最接近的竞品呢?你怎么考虑?
6. 决策树ID3算法的特征选择指标,口述一下数学公式(信息增益)
7. 场景题:现在我们有两个排序模型,分别是A和B,他们分别预测出了对应的排序的结果在我们的APP上,我们有真实地用户数据,那么怎么来评估这两个模型的好坏呢?用说出数学公式。(继续吹逼、、、)
面试官说我没问题了,问我有啥问题要问的,我就随便问了下。
8. 你是南方人吧,会考虑来北京吗?会不会更多的考虑上海。(哈哈哈,你要我,我去哪儿都行。。。)
9. 提前批还投了哪些公司啊(楼主随便说了几个),面试官对我投了大疆表示有点惊讶。。。说这是你的老本行是吧2333
10. 后面没事了能提前过来实习不?
11. 目前在这家公司不是那种秋招转正的实习吧(23333,我当然说不是啦哈哈哈)
链接:https://www.nowcoder.com/discuss/206593
来源:牛客网
1.自我介绍
4.基础:
梯度爆炸梯度消失
L1范数L2范数原理,公式
过拟合
Yolo ssd fast系列区别
包括yolo 1-3(对于yolo的细节提问)
5.两道简单算法:
判断链表有环
二叉树中序遍历
6.问答环节
面试官建议:基础不错,多比较相关算法,多看state-of-the-art算法
链接:https://www.nowcoder.com/discuss/205841
来源:牛客网
一面:面试官做推荐系统的
LR和SVM的区别(写出各自目标函数)
讲讲决策树(讲了三种决策树及分支点选择策略:手写信息增益和基尼系数等)
过拟合(我结合SVM的参数C讲的)
boosting方法(先讲了总的boosting方法,然后讲了gbdt,手推其原理)
讲讲word2vector
AUC及其几种用途
结合我做的一个比赛项目讲了woe和iv,缺失值处理,集成方法,特征工程
问了一个列表里面有很多英文单词,怎样选出频率出现最高的前几个词(这个没答好我开始以为是一到算法题,,,后来再提示下差不多答出来了:python里先用set处理后用字典储存)
二面交叉面:面试官做大数据的
问了我的实习经历(之前在一家AI医疗公司做CV,主要是器官和肿瘤的语义分割)
问我最近看过的论文:答的是capsule和google的一篇用FFN做细胞分割的论文,然后让我讲了capsule
然后问了CV和机器学习的不同点
我这里二面没有手撕代码
链接:https://www.nowcoder.com/discuss/205467
来源:牛客网
主要问的是项目,很基础的问题:
1. 解释一下LDA主题模型,LDA的求解过程
2. 中文分词器是怎么做的,有没有读过某种分词器的代码
3. SVM解释一下,为什么SVM的复杂度高,怎么解决
4. 为什么过拟合,怎么解决过拟合
链接:https://www.nowcoder.com/discuss/205848
来源:牛客网
链接:https://www.nowcoder.com/discuss/205718
来源:牛客网
第一道是给出一个数组,数组中有正数和负数,要求重新排列这个数组,使得原始数组中的正负数交替排列,且保证各自的相对顺序不变。
第二道题也比较简单,描述是这样的
我手中有一堆扑克牌, 但是观众不知道它的顺序。
第一步, 我从牌顶拿出一张牌, 放到桌子上。
第二步, 我从牌顶再拿一张牌, 放在手上牌的底部。
第三步, 重复第一/二步的操作, 直到我手中所有的牌都放到了桌子上。
最后, 观众可以看到桌子上牌的顺序是:13\12\11\10\9\8\7\6\5\4\3\2\1 请问, 我刚开始拿在手里的牌的顺序是什么?
一面
笔试结束后4天收到了通过的电话,中间隔了个端午节假期。面试官是个挺年轻的小哥,全程在问算法题。
10G文件,每一行一个 uint32 数字。有一台1G内存的机器
A. 找出最大的 k 个数
B. 找出重复数字
已知一天内用户登录登出的日志(数据量较大),求这一天用户在线的最大峰值和持续时间段
日志包含字段(userid, login_time, logout_time)
登录登出时间精确到秒
对输入的unix风格的文件路径做精简。 例如:/a/b/…/./ 精简为 /a
/a/b/…/./…/…/…/./…/a/b/ - > /a
还有几道是面试官口述的,比如Two sum之类的
一面还比较顺利,基本都答上来了
二面
我觉得很奇怪的一点是我投的是ML岗,但笔试和面试里几乎没有问这些话题相关的内容,而且没问项目经历。另外就是两轮面试的面试官都有问我懂不懂计算机网络和操作系统…但实际上我投的岗位要求里并没有提着两样技能,导致我这个面试很被动。
先是手撕算法题
给出字符串x,和字符集合y,求x中包含所有y中元素的最短字串
这个题我在面试官的竭力引导下才把代码写完了…感觉面试官不是很满意,我自己反正也不怎么满意。
面试结束后面试官问我有啥想问的,我简单问了一下岗位的具体工作职责(因为招聘帖写的太不清楚了)。以及问面试官对我有什么建议,他跟我讲招人主要看两点,一点是对算法原理的掌握与了解,熟悉其推导过程;二是代码能力如何。他说从前边的面试和笔试来看,我的代码能力还ok,于是面试里就没太考察我这方面能力(我感觉他对我的原理掌握方面不是很满意吧= =)。
链接:https://www.nowcoder.com/discuss/204240
来源:牛客网
k-means算法简述
svm的优化目标
分别写出线性回归和逻辑回归的损失函数
生成式模型和判别式模型的区别
c 基础语法
过拟合与欠拟合
方差与偏差
linux文件操作
神经网络的特点
总之基本都是机器学习的基础知识,基本不涉及深度学习。
三道编程题分别是:
两个递增链表合并为一个递增链表
二叉树和为某一值的路径(剑指offer原题)
k-means算法
面试是在上周三,去的望京东映客总部,一口气接连三面,基本就是一个下午。
1.首先死磕项目,所以建议大家一定要把项目弄透彻不要在这里卡住自己。我和面试官在其中一个项目上讨论了很久,各持己见。然后我换了一种交流方式。我说,面试官你是不是这么想的,复述了一遍,面试官说对,我说那我回去再研究一下,可能糊涂了。这里不建议抱着说服面试官的念头和其争执,而是展现自己的交流能力和对算法的理解即可。
2.面试官让我说说自己比较熟悉的机器学习算法,我说要不决策树吧,聊了聊决策树
3.又聊了聊逻辑回归,写出了其损失函数和反向传播公式
4.手撕代码。一个数组里,有两个只出现一次的数字,其他都是出现两次,请在o(n)时间复杂度内找出这两个数字
5.python基础语法: 迭代器和列表的差别,装饰器的作用。
然后面试官说你等一会。我等了十几分钟,二面面试官来了。
1.写出逻辑函数的损失函数
2.为何使用交叉熵作为损失函数,与MSE等相比其优点在哪里?
3.word2vec中的skip-garm的下采样简单说一下
4.神经网络中经常遇到收敛速度慢的问题,如何解决?
5.你说优化梯度下降函数,请说出常见的梯度下降函数以及他们的优缺点,最好写出公式
6.你遇到过什么困难,如何解决?
链接:https://www.nowcoder.com/discuss/205260
来源:牛客网
一面
- Power(a,n) 常规递归方法写完让写一个O(1)的方法
- 岛计数问题 dfs
- 哪些处理过拟合的办法:正则,剪枝,dropout
- CNN里面能自然起到防止过拟合的办法
- bagging vs boosting简述
- SGD每步做什么,为什么能online learning
- Logistic Regression损失函数,怎么来的
二面
- CNN反向传播细节,怎么过全联接层、池化层、卷积层
- Adam优化器的迭代公式
- CNN多分类损失函数 softmax
- 字符串最小编辑路径
三面
- 线性回归R^2公式及意义
- p-value意义,怎么算?怎么做单边检验
- 随机过程 稳态是什么
- 时间序列 常用模型,arima模型的公式?自回归在机器学习中的应用?
- 计算几何分布期望
- 熟悉什么机器学习算法(SVM),写损失函数(hinge+正则)
- 找完全二叉树最后一个节点
- 找字典序的第k个数