汇总版!美团搜索推荐算法面试题10道(含答案)

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂同学、参加社招和校招面试的同学,针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。

今天我整理一下算法岗方向面试题,分享给大家,希望对后续找工作的有所帮助。喜欢记得点赞、收藏、关注。更多技术交流&面经学习,可以文末加入我们交流群。

问题1:介绍下推荐系统的流程?

推荐系统的流程主要包含一下几个阶段。

索引&特征: 会根据内容特性提前建立若干种类型的索引。

召回阶段: 用户请求时会从各种索引种取出千/万 条item。

粗排阶段: 针对这上千/万条item,进行第一遍打分,再筛选出几百条或者千条。这个阶段的排序模型一般都比较简单,能够过滤掉一些与用户兴趣明显不相关的。

精排阶段: 得到几百条item后,精排阶段会建立相对精细的模型,根据用户的画像,偏好,上下文,结合业务目标进行排序。一般精排后返回50-100条给到engine侧。

重排阶段: engine 侧拿到精排的50条item。还会做很多的人工干预和产品逻辑,比如item之间的多样性,产品策略逻辑,比如热门,置顶,多种内容之间的位置混合等等。最终会返回5-10条左右的item,曝光给客户端。根据业务特性,在线流程还有许多比较细的模块,比如去重服务,避免给用户推荐重复的内容。特征预处理,特征抽取等模块。

问题2:召回和排序的差异?

召回的目的在于减少候选的数量(尽量控制在1000以内),方便后续排序环节使用复杂模型精准排序;

因为在短时间内评估海量候选,所以召回的关键点是个快字,受限与此与排序相比,召回的算法模型相对简单,使用的特征比较少。

而排序模型相对更加复杂,更追求准确性,使用的特征也会较多。

问题3:结果 f1 提升的 1% 怎么保证有效性,如何保证置信呢?

实验过程中固定随机种子、多次实验取平均。

问题4:固定随机种子后,多次实验结果相同吗?

还是会有细微差别,因为在梯度传播过程,梯度(浮点数)精度有差异,随着神经网络层数的增加,梯度差异会从小数后面的位置往前跑。只能设置浮点数精度增加来缓解这个问题。

问题5:召回主流的做法?

主流的召回做法包括:规则召回,协同召回,基于内容语义的 I2I 召回,向量召回(基于embedding),树召回和图召回。

问题6:介绍下 embedding 召回?

举一个文本类embedding的例子。

文本类的Embedding可以分为两种,一种是比较传统的word2vector、fasttext、glove这些算法的方案,叫做词向量固定表征类算法,这些算法主要是通过分析词的出现频率来进行Embedding生成,不考虑文本上下文。

而另一种文本Embedding方法,也是目前最流行的方案是动态词表征算法,比如Bert、ELMo、GPT,这类算法会考虑文本上下文。

问题7:推荐系统冷启动问题,怎么解决?

1. 提供非个性化的推荐

最简单的例子就是热门排行榜,我们可以给用户推荐热门排行榜,然后等到用户数据收集到一定的时候,再切换为个性化推荐。

2. 利用用户注册信息

用户注册时提供包括用户的年龄、性别、职业、民族、学历和居住地等数据,做粗粒度的个性化。有一些网站还会让用户用文字描述他们的兴趣。

3. 利用社交网络信息

引导用户通过社交网络账号登录(需要用户授权),导入用户在社交网站上的好友信息,然后给用户推荐其好友喜欢的物品。

问题8、LeetCode101—对称二叉树

问题9、LeetCode3—无重复字符的最长子串

问题10、LeetcCode130—被围绕的区域

技术交流

前沿技术资讯、算法交流、求职内推、算法竞赛、面试交流(校招、社招、实习)等、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~

我们建了算法岗面试与技术交流群, 想要进交流群、需要源码&资料、提升技术的同学,可以直接加微信号:mlc2060。加的时候备注一下:研究方向 +学校/公司+CSDN,即可。然后就可以拉你进群了。

方式①、微信搜索公众号:机器学习社区,后台回复:技术交流
方式②、添加微信号:mlc2060,备注:技术交流

用通俗易懂的方式讲解系列

  • 用通俗易懂的方式讲解:不用再找了,这是大模型最全的面试题库
  • 用通俗易懂的方式讲解:这是我见过的最适合大模型小白的 PyTorch 中文课程
  • 用通俗易懂的方式讲解:一文讲透最热的大模型开发框架 LangChain
  • 用通俗易懂的方式讲解:基于 LangChain + ChatGLM搭建知识本地库
  • 用通俗易懂的方式讲解:基于大模型的知识问答系统全面总结
  • 用通俗易懂的方式讲解:ChatGLM3 基础模型多轮对话微调
  • 用通俗易懂的方式讲解:最火的大模型训练框架 DeepSpeed 详解来了
  • 用通俗易懂的方式讲解:这应该是最全的大模型训练与微调关键技术梳理
  • 用通俗易懂的方式讲解:Stable Diffusion 微调及推理优化实践指南
  • 用通俗易懂的方式讲解:大模型训练过程概述
  • 用通俗易懂的方式讲解:专补大模型短板的RAG
  • 用通俗易懂的方式讲解:大模型LLM Agent在 Text2SQL 应用上的实践
  • 用通俗易懂的方式讲解:大模型 LLM RAG在 Text2SQL 上的应用实践
  • 用通俗易懂的方式讲解:大模型微调方法总结
  • 用通俗易懂的方式讲解:涨知识了,这篇大模型 LangChain 框架与使用示例太棒了
  • 用通俗易懂的方式讲解:掌握大模型这些优化技术,优雅地进行大模型的训练和推理!
  • 用通俗易懂的方式讲解:九大最热门的开源大模型 Agent 框架来了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2813605.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【算法训练营】:周测5

需要详细的实现代码实现请私信博主 考题10-5 题目描述 平面固定有一些全等的圆角矩形,不同的圆角矩形具有不同的位置和倾斜角。这些圆角矩形都通过将以原本四个直角处距离两条直角边均为 r� 的位置为圆心,半径为 r� 且与两条直…

【蓝桥杯】青蛙跳杯子(BFS)

一.题目描述 二.输入描述 输入为 2 行,2 个串,表示初始局面和目标局面。我们约定,输入的串的长度不超过 15。 三.输出描述 输出要求为一个整数,表示至少需要多少步的青蛙跳。 四.问题分析 注意:空杯子只有一个 …

go test用法(获取单元测试覆盖率)

go test用法(获取ut覆盖率) 为了提升系统的稳定性,一般公司都会对代码的单元测试覆盖率有一定要求。下面针对golang自带的测试命令go test做讲解。 1 命令 1.1 go test ./… (运行当前目录及所有子目录下的测试用例) …

书生·浦语大模型图文对话Demo搭建

前言 本节我们先来搭建几个Demo来感受一下书生浦语大模型 InternLM-Chat-7B 智能对话 Demo 我们将使用 InternStudio 中的 A100(1/4) 机器和 InternLM-Chat-7B 模型部署一个智能对话 Demo 环境准备 在 InternStudio 平台中选择 A100(1/4) 的配置,如下图所示镜像…

pclpy 最小二乘法拟合平面

pclpy 最小二乘法拟合平面 一、算法原理二、代码三、结果1.左边原点云、右边最小二乘法拟合平面后点云投影 四、相关数据 一、算法原理 平面方程的一般表达式为: A x B y C z D 0 ( C ≠ 0 ) Ax By Cz D 0 \quad (C\neq0) AxByCzD0(C0) 即: …

FPGA IO命名与Bank划分

文章目录 IO的命名IO物理命名IO功能命名 Bank简介FPGA器件功能命名与Bank划分查找XILINXIntelLATTICE IO的命名 IO物理命名 FPGA的IO物理命名规则,也就是我们做管脚约束时候的命名。芯片通常是长方体或者正方体,所以命名通常采用字母数字组合的方式&am…

在Pycharm中运行Django项目如何指定运行的端口

方法步骤: 打开 PyCharm,选择你的 Django 项目。在菜单栏中,选择 “Run” -> “Edit Configurations...”。在打开的 “Run/Debug Configurations” 对话框中,选择你的 Django server 配置(如果没有,你…

【经验】vscode 鼠标拖曳不能选中整行文字,只能选中纵向矩形范围

1、问题描述 不知道昨天操作vscode设置界面时,误选择了啥,导致鼠标拖曳不能选中整行文字,只能选中纵向矩形范围,现象如下: 2、解决方法 1)打开设置界面 点击左下角按键,选择“设置” 2&…

基于R语言的Meta分析【全流程、不确定性分析】方法与Meta机器学习技术应用

Meta分析是针对某一科研问题,根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法,对来源不同的研究成果进行收集、合并及定量统计分析的方法,最早出现于“循证医学”,现已广泛应用于农林生态,资源环境等方面。…

再见,Visual Basic——曾经风靡一时的编程语言

2020年3月,微软团队宣布了对Visual Basic(VB)的“终审判决”:不再进行开发或增加新功能。这意味着曾经风光无限的VB正式退出了历史舞台。 VB是微软推出的首款可视化编程软件,自1991年问世以来,便受到了广大…

Doris实战——结合Flink构建极速易用的实时数仓

目录 一、实时数仓的需求与挑战 二、构建极速易用的实时数仓架构 三、解决方案 3.1 如何实现数据的增量与全量同步 3.1.1 增量及全量数据同步 3.1.2 数据一致性保证 3.1.3 DDL 和 DML 同步 Light Schema Change Flink CDC DML 和DDL同步 3.2 如何基于Flink实现多种数…

MySQL(2/3)

select和别名的使用 主要是用以查询数据 语法:select 字段 from 库名 -- *代表全部字段 select * from student; -- 可以查询多个字段,并使用as起别名,as可以省略 select id as bbb ,name as hhh from student; -- 可以使用函数concat(a,b…

【小尘送书-第十一期】编程的基石,开发的核心:《算法秘籍》

大家好,我是小尘,欢迎你的关注!大家可以一起交流学习!欢迎大家在CSDN后台私信我!一起讨论学习,讨论如何找到满意的工作! 👨‍💻博主主页:小尘要自信 &#x1…

【手机端测试】adb基础命令

一、什么是adb adb(Android Debug Bridge)是android sdk的一个工具 adb是用来连接安卓手机和PC端的桥梁,要有adb作为二者之间的维系,才能让用户在电脑上对手机进行全面的操作。 Android的初衷是用adb这样的一个工具来协助开发人…

微服务-实用篇

微服务-实用篇 一、微服务治理1.微服务远程调用2.Eureka注册中心Eureka的作用:搭建EurekaServer服务Client服务注册服务发现Ribbon负载均衡策略配置Ribbon配置饥饿加载 3.nacos注册中心使用nacos注册中心服务nacos区域负载均衡nacos环境隔离-namespaceNacos和Eureka…

C语言题目讲解

一:力扣485. 最大连续 1 的个数 1.题目: 2.思路分析 先设定两个变量,一个变量(ret_e)用来存连续的1的个数,当nums[i]为0时,该变量就置为0,当nums【i】为1时,再重新&…

【k8s配置与存储--持久化存储(PV、PVC、存储类)】

1、PV与PVC 介绍 持久卷(PersistentVolume,PV) 是集群中的一块存储,可以由管理员事先制备, 或者使用存储类(Storage Class)来动态制备。 持久卷是集群资源,就像节点也是集群资源一样…

四、分类算法 - 决策树

目录 1、认识决策树 2、决策树分类原理详解 3、信息论基础 3.1 信息 3.2 信息的衡量 - 信息量 - 信息熵 3.3 决策树划分的依据 - 信息增益 3.4 案例 4、决策树API 5、案例:用决策树对鸢尾花进行分类 6、决策树可视化 7、总结 8、案例:泰坦尼…

机器学习:朴素贝叶斯算法(Python)

一、朴素贝叶斯算法的实现 naive_bayes_classifier.py import numpy as np import collections as cc # 集合的计数功能 from scipy.stats import norm # 极大似然估计样本的均值和标准方差 from data_bin_wrapper import DataBinsWrapperclass NaiveBayesClassifier:"…

基础算法(二)( 枚举)

1.枚举算法介绍: 枚举算法是一种基本的算法思想,它通过穷举所有可能的情况来解决问题。它的基本思想是将问题的解空间中的每个可能的解都枚举出来,并进行验证和比较,找到满足问题条件的最优解或者所有解。枚举算法适用于问题规模…