快手推荐算法工程师三面回顾

快手三次技术面试+一次HR面试的简单回顾,希望对大家有所启发。

一面

面试官一上来就让写算法题,第一个是计算岛屿数量,第二个是最长回文字串。

然后就是介绍自己的论文。对于论文的工作,面试官只是在问关于论文的问题,并没有表达出自己的观点,像是我在做论文分享(可能做的和我并不是太相关)

1、计算岛屿数量

https://leetcode.cn/problems/number-of-islands/

图片

2、最长回文子串

https://leetcode.cn/problems/longest-palindromic-substring/

技术交流

技术要学会分享、交流,不建议闭门造车。一个人走的很快、一堆人可以走的更远。

各大厂面试资料、数据、技术交流提升, 均可加知识星球交流群获取,群友已超过2000人,添加时切记的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。

方式①、添加微信号:mlc2060,备注:来自 获取推荐资料
方式②、微信搜索公众号:机器学习社区,后台回复:推荐资料

二面

面试官是个小姐姐,没开摄像头,但是感觉对具体的业务不是太熟悉

上来就问我是否能实习,实习的时间之类的,还问了我关于工作的预期(其实没有太明白面试官想问啥)

也是先自我介绍,然后简单概括了一下博士期间的工作

最后是一道算法题:寻找两个正序数组的中位数

https://leetcode.cn/problems/median-of-two-sorted-arrays/

前面没想到用二分,面试官让手写二分这个写出来了,但是算法题只是描述了一下思路,也不知道对不对

最后也没有问我有什么想问的,就结束了。

三面

上来直接干算法题,数组中的第K个最大元素

https://leetcode.cn/problems/kth-largest-element-in-an-array/description/

面试官建议我用快排写,所以让我写了快排算法。

后面问了一下推荐系统相关知识,面试官提及了如何保持嵌入一致性的问题。

后面再介绍了一下自己的论文。阐述了自己设计的损失和BPR损失的差别。

面试官还问到了如果当前用户只有一个正样本,我们的论文该如何使用?

针对高活用户和低活用户,计算UAUC会有问题,高活用户的 UAUC值比较置信,而低活用户的UAUC值不置信,该如何处理?WUAUC

对序列模型是否了解?

开放性问题,优化观看时长,怎么设计模型?针对label的设置聊了一会。

HR面

1、个人介绍

2、论文介绍,其实是研究方向的high level阐述。开放问题,自己的研究方向在推荐系统中的应用。面试官小姐姐大概给介绍了部门的具体工作。

3、是否有接触其他公司?还具体到哪家单位(真要命)

4、快手和字节推荐算法的比较

5、base的选择

6、没有考虑高校吗

最后反问对新入职的员工有无培训计划。后面小姐姐说结果得到九月中下旬才出,因为23年的薪资计划还没有确定。让我别太担心

### 快手推荐算法实现原理 快手作为一个短视频分享平台,其核心竞争力之一在于精准的个性化推荐系统。该系统的目的是通过分析用户的兴趣偏好以及行为数据来提供高度个性化的视频内容。 #### 一、推荐算法的核心理念 快手强调用正确的价值观指导算法设计并不断优化运营机制和规则[^1]。这意味着,在构建推荐系统时,不仅考虑技术层面的因素,还注重社会影响与用户体验之间的平衡。这种设计理念使得快手能够更好地满足用户需求的同时也维护良好的社区氛围。 #### 二、传统方法及其局限性 早期版本可能采用了基于协同过滤或者矩阵分解的方法来进行物品推荐。然而这种方法存在一些明显不足之处: - **解释力差**:因为引入了隐含因素概念所以难以理解具体原因; - **特征单一化问题严重** :仅仅依靠评分作为唯一输入源无法有效融合其他潜在有用的信息如用户个人信息或者其他交互模式下的表现形式等额外维度的数据点 。 因此单纯依赖上述经典模型并不足以支撑起像快手这样复杂多变的应用场景所需的功能扩展性和灵活性要求 [^2]. #### 三、改进方向 - 利用逻辑回归类算法增强表达能力 为了克服之前提到过的那些挑战, 可以采用更加先进的机器学习框架比如广义线性模型(GLMs), 特别是以Logistic Regression为代表的分类预测工具. 这些新型方案具备如下优势特点: - 能够轻松处理大规模稀疏数据集; - 支持多种类型的特征工程操作 (数值型/类别型变量转换); - 易于集成外部辅助信息到现有体系结构当中去. 通过这种方式不仅可以显著提升最终输出结果的质量水平而且还能保持较高的计算效率从而适应实时在线服务环境的要求. 以下是简单的伪代码展示如何应用逻辑回归进行项目开发的一个例子: ```python from sklearn.linear_model import LogisticRegression import numpy as np def preprocess_data(raw_features): """预处理原始特征向量""" processed = ... # 对raw_features做必要的清洗变换等工作 return processed X_train,y_train,X_test=load_dataset() # 加载训练测试集合 clf=LogisticRegression() processed_Xtrain=preprocess_data(X_train) # 训练阶段 clf.fit(processed_Xtrain , y_train ) # 预测新样本标签概率分布情况 new_sample=np.array([...]) # 待评估实例表示成数组格式 proba_distriution=clf.predict_proba(preprocess_data(new_sample)) print(f'Predicted Probability Distribution:{proba_distriution}') ``` 以上片段展示了基本流程包括但不限于加载数据集划分验证组别定义目标函数调参寻优直至部署上线整个生命周期内的各个环节要点概述说明文档编写规范等内容均有所涉及但限于篇幅这里不做详尽展开讨论留给读者自行探索研究空间广阔值得深入挖掘价值非凡!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值