实验室小师弟的新鲜春招算法面经 (阿里搜索,微信,微软等)

作者: 浅梦的学习笔记

“ 实验室小师弟新鲜出炉的面经,分别投递了腾讯(WXG),美团,阿里(搜索推荐),微软,头条和华为并取得 offer。分享给各位同学,祝大家求职面试顺利!收获满意的 offer”

腾讯

WXG, 开发

上来两道智力题:

  • 25 匹马,5 条赛道,无计时工具,比出前三名最少多少场比赛
  • 牛客上小白鼠试有毒药水的题(LeetCode 458. PoorPigs)

开放问题:一堆服务器组织成完全图,能够互相 Ping, 找出测节点之间延迟的方式,要求 Ping 包数目尽可能少,而且各个节点流量尽可能均匀。

OS:Linux 进程间通信方式(信号量,管道,套接字,共享内存,消息队列, 信号),怎么保证进程只有一个实例(进程表扫描,pid 文件,文件锁,端口锁定)。

MySQL 索引数据结构(B+ 树),为啥不用 Hash / 二叉树。

算法题:二叉树深度,递归非递归两种方式。

聊天,家是哪里的,实习时间 blablabla

向面试官提问

开发觉得不太合适(因为我比较想做算法)然后对方打电话过来沟通,简历就释放掉了,然后被锁了下面的部门。

WXG, 应用研究

「一面」

自我介绍:

简历:论文介绍 -> 项目介绍 论文:

  • 两个方面改进的提升效果对比,哪一个更大一些
  • FM 对 LR 的改进在哪里,Quardric Layer 的细节
  • 特征交叉在推荐场景中为啥有用?

项目:

  • baseline 是什么,最终效果
  • 完全信息?

算法题:打印 00:00 ~ 24:00 分针和时针重合的时间,类似题目 LeetCode 1344。在线写代码:https://code.meideng.net/

Linear Regression: 损失函数,SGD, 参数的导数和更新过程,给了一个式子要写出求导过程。

「二面」

自我介绍:

项目相关:

  • 项目关键点,人员分配,自己主要负责的工作。
  • 简要介绍强化学习,以及为什么可以应用到你们的场景上,应用到你们的场景上的关键点是什么?

有没有用过 Spark. 没有

个人规划:工作城市, 职业规划

向面试官提问。

「三面」

自我介绍

项目介绍:大概说了下,问了问场景,怎么抽象成机器学习问题。

论文:创新点,评价指标。问为啥提升效果不高(因为我菜)。

聊了聊语言,python, C/C++。问我 C/C++ 写的多不多, 感觉他希望问问我了不了解进线程,以及写没写过多进线程相关的程序。

新性的语言了解嘛?Golang? 没有了解过。

职业方向规划?

有没有女朋友?

城市选择,我说我还挺喜欢深圳的,好多朋友都在深圳,然后他开始跟我说深圳多好(o

「HR 面」

自我介绍

问了一下项目,讲一个工作中的重难点?

投了那些公司,为啥选择投这些,选公司的时候看重那些方面?

其他公司的流程怎么样了?

个人有哪些爱好

提问

美团

「一面」

自我介绍:

问我为什么没打打比赛(当然是因为我菜了啊,拿不到名次)

项目介绍

论文改进点介绍。

开放问题:猜你喜欢的场景下,你会怎么做?

LR, FM, DeepFM 算法细节?

算法题:

  • LIS(LeetCode 300.)
  • AUC 计算方法。(本来想让我写,我说不会,大概说了一下思路)
  • 那写个快排吧

向面试官提问

「二面」

自我介绍

项目介绍:场景介绍,用的方法,reward 的处理。

聊了会儿天。导师是谁,做军工项目能发论文不 blabla。

论文:创新点,估计面试官看不上水文,随便问问就不想问了

算法题:

  • 分石子:n 堆石子 Ax[i], 每次选一堆分成两堆(>=1),分成 m 堆,求 m 堆石子最小值最大是多上。
    • 一开始想每次分最大的,用堆,但不是最优解,后来一想,这和 kick start Round A 第三题差不多,二分。

你有什么想问的?

「三面」

自我介绍:

论文:创新点,会议还是期刊,什么水平,为啥发期刊(当然是因为菜啊)。

项目:场景介绍,目标,追问了很多细节。

对推荐系统了解吗?

传统的机器学习 和 深度学习在推荐上的异同点,深度学习的优势在哪里?。

深度学习的劣势在哪里?

  • 不可解释
  • 实时性要求
  • 大规模并行化

深度学习特征交叉可能会引入噪声,怎么处理。

  • 我答了 L1 正则以尽可能的使得解稀疏,做一些特征筛选;不满意 -_-;
  • 接着说如果可能知道那一部分交叉引入的噪声的话,将这一部分手动交叉作为 baseline,在最后的得分中将其减掉(糊弄过去了?)

算法题:输入两个整数 n 和 m,从数列 1,2,3.......n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来。

  • 因为要列出所有组合列出来,暴力枚举就完事了

数据样本不平衡问题有哪些解决办法?

实习时间?可以提前不?

职业规划?

最大的优点,最大的缺点?为啥会有这个缺点。

对美团的了解?

对互联网工作氛围的了解?

如果你做了很多工作,很辛苦很累,也有成果,但你的主管给的评价低你怎么办?

提问。

阿里:搜索推荐

「一面」

自我介绍

论文:创新点,细节。

  • FM ,隐向量,为啥这么设计,思想来自哪里(poly2),具体怎么做的。
  • FM -> FFM,让我举个实际的例子说明 FFM 的实际好处,没想出来。。。
    • 事后想了一下应该是特征 one-hot 会导致稀疏性问题,划分了 field 之后就能解决稀疏性问题,而且回忆起来面试官给了提示的(我好菜)。
  • DeepFM 和 NFM 架构的主要区别(串 or 并)
  • 推荐的算法其他了解吗(大概讲了讲其他一些)

项目:强化学习,背景介绍,算法介绍。

  • Q-learning -> DQN -> DDQN。
  • PG 方法, 举了 TD3 的例子
  • 强化学习处理的主要问题,MDP -> DP, MC, TD -> reward 问题。
  • reward reshaping?

你觉得强化学习和推荐有那些关联?

  • 探索&利用 tradeoff
  • bandit -> 与推荐场景的结合

说几个知道的机器学习算法

LR 的公式,sigmoid 的导数。

CV? NLP? 其他任意领域的算法了解吗?了解一些 CNN, NLP 的只看过 word2vec, 另外还看了一些 graph embedding 的。

有其他实习经历/竞赛经历吗? 无(我真的太菜了)

你有什么要问我?

算法题:中缀式 eval 写了无敌暴力法,用栈处理成逆波兰式的过程忘记了(其实是处理运算符优先级比较麻烦),还可以递归建立中缀树

「二面」 一小时,虽然我菜,但是面试体验超好,面试官人太好了。

自我介绍:

问了论文发在哪里(听说是水刊就没往下问了, 我太难了)。

离散化特征处理办法 => Embedding? 好处有哪些?向量空间的度量。

CF 的思想,UserCF, ItemCF。怎样度量用户相似度,怎样度量物品相似度?

有哪些 CF 的模型,答了 Nerual CF 和 MF(感觉自己在强行扯)。

梯度的含义。(是上升方向,老是 SGD 搞傻了我),求出来梯度本身都是有方向的。

开放题:

估计全国中学生身高,假设是高斯分布 $N(u, \sigma^2)$,怎么做。
抽样的细节怎么设计?
最大似然估计的方法。

假设现在我得到了 N 个样本,写一下似然函数?

最大似然求导数,结果是啥(手撸了一遍最大似然求导,纸笔准备好要)。

求出来正好就是样本均值与样本方差,方差是整体方差的有偏估计,什么是有/无偏估计?。

我们直接从经验的判断上也能得出样本均值和方差就是要估计的参数的值,这说明了什么?

大数定理知道吗?(我坑坑巴巴半天错答成了中心极限定理,我好菜,面试官好强)

最大似然估计与最大后验估计,讲讲最大后验估计的过程。

那些模型用到了最大后验估计?

生成模型与判别模型的区别?现在的主流是什么模型?

为啥生成模型复杂还要搞这些模型出来?

生成模型的例子?判别模型的例子?

条件随机场知道不?生成还是判别?

HMM 知道不?生成还是判别?



(问到我哑口无言,感觉我在被吊起来打)

思维题:

❝两个人 A,B;A 红绿色盲,B 声称自己不是红绿色盲,现在 B 两只手上分别有红绿两颗球。问 A 怎么分辨出 B 是不是红绿色盲。

算法题(讲思路):

  1. 生成 N 个自然数的全排列。我觉得我的思路很清晰,可惜表达能力欠缺。
  2. 一个数组找 top-K,堆遍历数组。(k 最大)为啥用小顶堆。大顶堆小顶堆的区别。

提问 + 聊天

「三面」 感觉自己状态不佳,也这就是压力面吧。

自我介绍。

项目:场景,要解决的问题,大概讲讲方法。

论文解决的问题,问为啥在 NFM 上面做,这个已经不新了吧。

强化学习模型 和 CTR 预估模型的区别?

  • 强行扯解决的问题不一样,一个与环境交互的问题,一个分类模型。

你觉得 CTR 是二分类问题?

  • 点击/不点击 处理成二分类

一些分类问题和 CTR 的分类有什么区别?

开放问题:设计推荐系统,商品推荐场景,输入商品,用户信息,输出推荐。

召回怎么做?

  • user 向量和 item 向量,协同过滤,Neural CF

user 的嵌入向量怎么得到的?

冷启动:用户很少交互怎么解决?商品数目很多训练嵌入向量怎么训练?

编程题:2*N 数组,将奇数放到奇数位置,偶数放到偶数位置

提问。

「交叉面」

问有没有实习经历

问有没有论文:讲了一下 CTR 的算法。

CTR 预估中,如果有两个模型 CTR/CVR, 怎么做最后的 item 排序。猜测是问 ensemble 方法,回答了 bagging,然后让我具体描述一下思路。

召回策略的方法:CF -> Nerual CF -> YouTube DNN

讲一下 CF 的思路,UserCF, ItemCF

讲讲 YouTube DNN?

概率题:一段绳子分三段,组成三角形概率?

L1,L2 正则化的区别。

「HR 面」

信息核对

自我介绍,讲了讲项目和论文。

问实验室的情况,老板研究情况,大概的人数(实验室简介来一遍)。

面试流程的感受?(夸奖了二面的面试官)

自己选择公司的标准,未来的职业方向?

为啥想要偏工程业务呢?

拿到了哪些公司的 offer?

提问:问了一下转正的形式以及留用的比例

微软 shanghai SWE

「一面」 中文自我介绍,问项目,问重难点,如何解决的。

英文回答:why MS?

算法题:

  1. 给一个有重复数字的有序数组和一个数 x, 找出 x 在数组中最左和最右的下标,不存在的返回 [-1, -1]
  2. 给一组 http 的请求 pattern, 形如 'post, /names/{name}, updateUser',设计一个类,根据 pattern 查询一个请求 'get, url' 对应的方法名

「二面」 和一面中间间隔 15 分钟,接着来的。

英文自我介绍

说一个工作中值得骄傲的地方。

算法题:

  1. 用栈模拟队列
  2. 最小栈,空间优化
  3. 大数加法

「三面」 前一晚忘记查看邮件,被面试官打电话过来,有点措手不及

英文自我介绍

coding: BST 的类定义,实现 delete。(被面试官挑错两次...,一定要先讲清思路再继续写代码)

问了问项目大概介绍,重难点

如果要把项目的接口开放出去应该怎么设计?如果开放给不同语言的开发者呢?

问问题~

头条 Data

推荐算法实习生 Data

「一面」

自我介绍

先做算法题:

  1. 非负数组(例如:[4, 2, 0, 3, 1]), 给定一个正整数 5,有多少个连续子数组的和大于等于给定的正整数。例子答案(5)
  2. 递增的质数数组(例如:[2, 3, 7, 9, 11]) 任取两个数组成一个 < 1 的真分数,求 k 大的真分数是多少?

论文,问改进点。

Attention 的细节(很细节),不同 Attention 的区别。

NFM 和 FNN 对比

论文中的模型可以怎么继续改进?

embedding 怎么初始化的?有尝试过不同的初始化方法吗?

优化器用的啥?

有试过 embdding + dnn 使用不同的优化器吗?(使用不同的学习率)

「二面」

接着问算法改进的细节,深入问到了 Attention 的粒度,以及增加的复杂度。

评价指标, AUC, 还有别的什么?我说可以算测试集的 log loss, 问含义是什么, 还有 F1。

CTR 预估是个分类问题还是回归问题?binary_cross_entropy 是怎么来的?

算法题:

  • AUC 是怎么计算的?写一下吧
  • 排序知道那些,写个归并吧

提问:团队规模 主要负责的业务 技术栈

「三面」

继续问改进点, Attention(参数数量) ,问有没有对比直接 concat 丢进 NN 中去学的效果?(参数太多了,学不来)

问其他做项目学习比较多的地方,讲了 RL 项目做的过程,对方追问了 PG 中梯度估计,大概讲了下, 不知道有没有讲明白。

算法题:快排

C++ 用的多吗?指针引用的区别。

  • 指针可以为空,可以再赋值;引用必须定义时绑定到对象上。
  • 指针是一个变量在栈上有自己内存空间,引用在语法上不占用空间(底层依然是使用指针实现的)
  • 指针可以多级,引用只能有一级
  • 有指针数组,没有引用数组

头条用过吗? 从用户的角度有哪些不足?(答了新奇度不够)。具体描述一下,以及怎么解决?

  • 补充策略,推荐热门文章,用户兴趣关注的文章, 追问有没有比这更好的方法
  • 考虑用户兴趣(兴趣从行为中抽取),追问如果根据兴趣推荐的文章用户依然不感兴趣?
  • 根据用户早期注册时选择的兴趣点推荐相应的文章

提问

国际化推荐(被捞起来鞭尸)

「一面」

自我介绍:

论文:FFM 本身复杂度很高 + attention 复杂度也很高,怎么处理?

现在用到高阶特征交叉的模型?(CIN, DCN)

详细介绍一下 DCN

LR 损失函数(binary_cross_entropy)为啥用交叉熵,MSE 能不能用。

LR 参数学习的算法(SGD), 不用 SGD 怎么做(矩阵的做法)

LR 并行化怎么做?

算法题:

  • 找链表公共节点,扩展,链表有环怎么办?(讲了用空间和快慢指针判断链表环的方法)
  • 滑动窗口最大值(LeetCode 239.)

概率题:54 张牌分三堆,大小王在同一堆的概率

华为

「一面」 自我介绍

DRL 与 SL 的区别。

model-free 与 model based 区别。列举几个典型的方法

DQN 是哪一类?讲讲 DQN 的主要思想。

讲一讲 KNN, K 的作用,以及选择 K 的方法。

集成学习:bagging, boosting, stacking 的大致思想。

对应的经典算法,以及特点。

算法题:最小栈

讲一讲 LR, SVM。

「二面」

自我介绍

大概介绍一下 RL?

Q-Learning?

RL 做麻将问题怎么建模?在金融场景下呢?

大概介绍一下论文

自己最大的优点(举例说明),最大的缺点?(为什么会有这个缺点)

职业规划?

提问:聊天。


本文地址:https://www.6aiq.com/article/1588125294551
本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出