搜广推校招面经七
抖音推荐算法
- 一、广告系统中的数据流处理方法,怎么避免延迟回流问题
延迟回流问题是指,实时系统(如广告点击预估)中,历史数据未及时更新或发生延迟,导致系统的实时预测偏离实际情况。避免延迟回流的方法有- 使用高效的流处理框架
Kafka、Flink等流处理工具,确保实时性; 使用滑动窗口处理实时数据,允许系统适应一定的延迟 - 特征工程优化
- 消除数据泄漏
严格限制特征只使用过去和当前的可用数据,防止数据泄露。 - 实时与离线特征分层
将特征分为离线特征(如用户画像、历史行为)和实时特征(如当前广告上下文、实时点击行为),根据实时性不同分阶段更新。
- 消除数据泄漏
- 模型训练优化
- 使用增量学习(在线学习)
持续训练模型,吸收最新的数据流输入;在模型训练中,为最新数据分配更高的权重,减小延迟数据对模型影响
- 使用增量学习(在线学习)
- 使用高效的流处理框架
- 二、介绍DeepFM模型
DeepFM 是一种结合了因子分解机(FM)和深度神经网络(DNN)的模型,旨在同时捕捉特征的低阶交互和高阶非线性交互。其结构可以分为两个部分:FM 部分和 DNN 部分,最终两者的输出会结合起来进行预测。
import torch
import torch.nn as nn
import torch.optim as optimclass DeepFM(nn.Module):def __init__(self, n_features, embedding_dim, hidden_units, dropout_rate=0.5):super(DeepFM, self).__init__()self.embedding = nn.Embedding(n_features, embedding_dim)self.dnn = nn.Sequential(nn.Linear(n_features * embedding_dim, hidden_units[0]),nn.ReLU(),nn.Dropout(dropout_rate),nn.Linear(hidden_units[0], hidden_units[1]),nn.ReLU(),nn.Dropout(dropout_rate),nn.Linear(hidden_units[1], 1))# 输出层:FM 和 DNN 部分的输出拼接self.output_layer = nn.Linear(1 + 1, 1) # FM 输出与 DNN 输出拼接def forward(self, x):# FM 部分:计算特征的二阶交互embedding_x = self.embedding(x)fm_output = torch.sum(torch.pow(torch.sum(embedding_x, dim=1), 2) - torch.sum(torch.pow(embedding_x, 2), dim=1), dim=1, keepdim=True)# DNN 部分:通过嵌入层和神经网络计算高阶特征交互x_dnn = embedding_x.view(embedding_x.size(0), -1)dnn_output = self.dnn(x_dnn)# 输出层:将 FM 和 DNN 的输出拼接起来output = self.output_layer(torch.cat([fm_output, dnn_output], dim=1))return output
# 示例
n_features = 10 # 假设有 10 个特征
embedding_dim = 5 # 每个特征的嵌入维度
hidden_units = [64, 32] # DNN 的隐藏层大小
model = DeepFM(n_features, embedding_dim, hidden_units)
# 假设有 4 个样本,每个样本有 10 个特征
x = torch.randint(0, n_features, (4, n_features))
output = model(x)
print("DeepFM 输出:", output)
其中 fm_output = torch.sum(torch.pow(torch.sum(embedding_x, dim=1), 2) - torch.sum(torch.pow(embedding_x, 2), dim=1), dim=1, keepdim=True)这行代码计算了FM的二阶交互

- 三、多任务学习中ESSM有什么特点
- 1.ESSM是一个典型的硬共享早期阶段共享的多任务学习模型,通过共享嵌入层和中间层来学习两个任务的共性特征
- 2.loss函数通过加权平均等计算
L = α ⋅ L 1 + β ⋅ L 2 L = \alpha \cdot L_{1} + \beta \cdot L_{2} L=α⋅L1+β⋅L2
- 四、多任务学习中MMoE(Multi-gate Mixture-of-Experts)有什么特点,如何解决不同任务的梯度冲突
利用 专家网络(Experts) 和 任务门控(Task-specific Gates) 来共享底层特征,同时允许每个任务独立选择适合自己的特征组合,通过门控网络提供动态特征共享机制,有效缓解任务冲突- DWA(Dynamic Weight Average)
DWA 动态调整每个任务的损失权重,目的是平衡任务之间的训练进度。DWA 根据任务的损失下降速率动态调整权重,鼓励更慢收敛的任务获得更多关注。

- PCGrad(Project Conflicting Gradient)
PCGrad 当两个任务的梯度方向冲突时,PCGrad 会将一个梯度在另一个梯度的正交方向上进行投影

- 3.Uncertainty Weighting
基于任务输出的不确定性调整权重,不确定性大的任务权重降低。

- DWA(Dynamic Weight Average)
- 五、激活函数sigmoid、tanh出现梯度消失可以怎么处理
- 1.原因分析

- 2.替换其他更加稳定的激活函数

- 1.原因分析
- 3.批归一化 (Batch Normalization)
- 4.正则化
- 5.调整学习率
- 6.残差连接
- 7.梯度裁剪 (Gradient Clipping)
在反向传播过程中,对梯度进行裁剪,防止梯度过小或过大

torch.nn.utils.clip_grad_norm_ # torch中有自带的梯度剪裁方法
- 六、介绍AUC,手撕AUC
AUC有一个常用的定义:随机从正样本和负样本中各选一个,分类器对于该正样本打分大于该负样本打分的概率。基于计算AUC的代码可以写为
def cal_auc_1(label, pred):numerator = 0 # 分子denominator = 0 # 分母for i in range(len(label) - 1):for j in range(i, len(label)):if label[i] != label[j]:denominator += 1# 统计所有正负样本对中,模型把相对位置排序正确的数量r = (label[i] - label[j]) * (pred[i] - pred[j])if r > 0:numerator += 1elif r == 0:numerator += 0.5return numerator / denominator
- 七、手撕:最大上升子序列(LIS)
给定一个无序的整数数组,找到其中的最长严格递增子序列,并返回该子序列的长度,子序列可以不连续。这是一个经典的动态规划问题
def LIS(nums):if not nums:return 0 dp = [1] * len(nums) # dp[i] 表示以 nums[i] 为结尾的最长递增子序列长度# 遍历所有元素,计算以每个元素为结尾的最长递增子序列for i in range(1, len(nums)):for j in range(i):if nums[i] > nums[j]:dp[i] = max(dp[i], dp[j] + 1)return max(dp) # 返回 dp 中的最大值,即最长递增子序列的长度
相关文章:
搜广推校招面经七
抖音推荐算法 一、广告系统中的数据流处理方法,怎么避免延迟回流问题 延迟回流问题是指,实时系统(如广告点击预估)中,历史数据未及时更新或发生延迟,导致系统的实时预测偏离实际情况。避免延迟回流的方法有…...
Leetcode 518. 零钱兑换 II 动态规划
原题链接:Leetcode 518. 零钱兑换 II 可参考官解:零钱兑换 II 和这个解答:[Java/Python3/C]动态规划:拆分零钱兑换子问题(嵌套循环的秘密)【图解】 此题需要仔细想象和Leetcode 377. 组合总和 Ⅳ 动态规划…...
【EI 会议征稿】第四届材料工程与应用力学国际学术会议(ICMEAAE 2025)
2025 4th International Conference on Materials Engineering and Applied Mechanics 重要信息 大会官网:www.icmeaae.com 大会时间:2025年3月7-9日 大会地点:中国西安 截稿时间:2025年1月24日23:59 接受/拒稿通知…...
集合的线程安全
在多线程环境中,Java 的集合框架(Collection Framework)面临着线程安全的问题。当多个线程同时访问同一个集合对象时,可能会导致数据不一致、丢失更新或程序崩溃等严重问题。因此,在并发编程中确保集合操作的安全性至关…...
《深入理解Mybatis原理》Mybatis中的缓存实现原理
一级缓存实现 什么是一级缓存? 为什么使用一级缓存? 每当我们使用MyBatis开启一次和数据库的会话,MyBatis会创建出一个SqlSession对象表示一次数据库会话。 在对数据库的一次会话中,我们有可能会反复地执行完全相同的查询语句&…...
C# 数据拟合教程:使用 Math.NET Numerics 的简单实现
C# 数据拟合实战:使用 Math.NET Numerics 快速实现 引言 在科学计算、工程建模或数据分析中,数据拟合是一个非常重要的技术。无论是线性拟合还是非线性拟合,借助适当的工具都可以快速解决问题。本文将向您展示如何使用 C# 和强大的数值计算…...
C# 中对 Task 中的异常进行捕获
以下是在 C# 中对 Task 中的异常进行捕获的几种常见方法: 方法一:使用 try-catch 语句 你可以使用 try-catch 语句来捕获 Task 中的异常,尤其是当你使用 await 关键字等待任务完成时。 using System; using System.Threading.Tasks;class …...
Android车机DIY开发之软件篇(九)默认应用和服务修改
Android车机DIY开发之软件篇(九)默认应用和服务修改 Car默认应用位置 ~/packages/apps/Car 增加APP 1.增加 XXXX.app 和Android.mk 2. 修改~/build/make/target/product/handheld_system_ext.mk Android默认APK位置 ~/packages/apps 1.增加文件夹 app和mk文件 2.build/mak…...
SimpleFOC01|基于STM32F103+CubeMX,移植核心的common代码
导言 如上图所示,进入SimpleFOC官网,点击Github下载源代码。 如上图所示,找到仓库。 comom代码的移植后,simpleFOC的移植算是完成一大半。simpleFOC源码分为如下5个部分,其中communication是跟simpleFOC上位机通讯&a…...
web.xml常用配置
web.xml是Java Web应用程序的部署描述文件,它位于WEB-INF目录下。web.xml文件主要用于配置Servlet、Filter、Listener、MIME类型、欢迎页面等组件,以及一些Web应用的上下文参数。以下是一些常见的web.xml配置说明: Servlet配置: …...
代码随想录刷题day07|(数组篇)58.区间和
目录 一、数组理论基础 二、前缀和 三、相关算法题目 四、总结 五、待解决问题 一、数组理论基础 数组是存放在连续内存空间上的相同类型数据的集合。 代码随想录 (programmercarl.com) 特点: 1.下标从0开始,内存中地址空间是连续的 2.查询快&…...
【Linux】进程结束和进程等待
进程的结束 退出码的认识 在我们学习C/C的时候我们通常在进行写main函数时,main函数主体写完后通常会进行写一条语句 " return 0 " ,这里的这条语句到底是什么意思呢?? 我们知道当在主函数中调用其他函数或者在其他函…...
可编辑精品PPT | 城投集团(行业)数字化解决方案
这个PPT详细介绍了城投集团的数字化转型解决方案。首先,它概述了数字化转型的背景,包括政策要求和行业趋势,并指出集团在信息化方面取得的阶段性成果及存在的不足。方案提出了数字化转型的总体规划,明确了总体目标、思路和推进策略…...
统计学习算法——决策树
内容来自B站Up主:风中摇曳的小萝卜https://www.bilibili.com/video/BV1ar4y137GD,仅为个人学习所用。 问题引入 有15位客户向某银行申请贷款,下面是他们的一些基本信息,类别列表示是否通过贷款申请,是表示通过贷款申…...
基于网络爬虫技术的网络新闻分析
文末附有完整项目代码 在信息爆炸的时代,如何从海量的网络新闻中挖掘出有价值的信息呢?今天就来给大家分享一下基于网络爬虫技术的网络新闻分析的实现过程。 首先,我们来了解一下系统的需求。我们的目标是能够实时抓取凤凰网新闻、网易新闻、…...
51_Lua面向对象编程
面向对象编程(Object Oriented Programming,OOP)是一种非常流行的计算机编程架构。像C++、Java、Objective-C、Smalltalk、C#、Ruby等编程语言都支持面向对象编程。 1.面向对象编程特性 面向对象编程是一种编程范式,它使用“对象”来设计软件。对象是数据和行为的封装单元…...
关于在 Kotlin DSL 中,ndk 的配置方式
在 Kotlin DSL 中,ndk 的配置方式有所不同,取决于 Android Gradle 插件版本。ndk { abiFilters(…) } 在 Kotlin DSL 中实际上是 externalNativeBuild 的一部分,需要通过正确的上下文调用。 错误代码: ndk {abiFilters("ar…...
【论文阅读+复现】High-fidelity Person-centric Subject-to-Image Synthesis
以人物为中心的主体到图像的高保真合成,CVPR2024 code:CodeGoat24/Face-diffuser: [CVPR2024] Official implementation of High-fidelity Person-centric Subject-to-Image Synthesis. paper:2311.10329 背景 研究问题:这篇文…...
Spring Boot 应用开发入门
一、Spring Boot简介 Spring Boot 是一个基于 Spring 框架的开源 Java 基础框架,它简化了基于 Spring 的应用开发。Spring Boot 提供了一种快速、便捷的方式来创建独立、生产级的基于 Spring 框架的应用程序。它通过提供一系列的“启动器”依赖,帮助开发…...
【C语言】字符串函数详解
文章目录 Ⅰ. strcpy -- 字符串拷贝1、函数介绍2、模拟实现 Ⅱ. strcat -- 字符串追加1、函数介绍2、模拟实现 Ⅲ. strcmp -- 字符串比较1、函数介绍2、模拟实现 Ⅳ. strncpy、strncat、strncmp -- 可限制操作长度Ⅴ. strlen -- 求字符串长度1、函数介绍2、模拟实现(…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
Python 高效图像帧提取与视频编码:实战指南
Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...
