2022年4月13日——字节(抖音推荐)暑期实习一面
字节的面试体验整体还是不错的,面试官整个过程也比较 nice,整个过程以一种聊天的方式进行。刚开始有点紧张,过了几分钟就平复下来了。
-
自我介绍
简单的自我介绍之后,面试官问了我为什么本科(地质)毕业之后要跨考计算机,聊了一下本科有没有学过编程(大一学过C语言和python版的数据结构,不过都学的一般)。
-
聊项目穿插基础知识考查
项目一:面试官首先重点为了一个 NLP 相关的项目(这个项目时间都比较久远了,而且也做得比较简单,nlp 基础知识复习也没有很多,刚开始还有点害怕)
-
项目的背景,什么样的一个任务(句子对匹配的一个任务)?
-
采用了什么样模型?(做的比较简单,按照 BERT 句子对分类的方法,用 cls 向量做分类)
-
一些提分的手段:问了对抗训练的做法,问了标签平滑的原理是什么,模型融合怎么做的,有多大的提分(整个任务因为数据比较干净,其实这些方法提升都很小)
-
BERT 的模型结构,重点问了 self-attention 是怎么计算的,其中的 q 向量是做啥的,为什么要这么做?可不可以不这么做?
基础知识:
-
LSTM 的结构,几个门分别是干什么的?用的什么激活函数?LSTM 相比于传统的 RNN 有什么优势,为什么会有这样的优势?
-
介绍一下熟悉的优化器,重点讲了 Adam 优化的公式和改进思路;
项目二:微信大数据挑战赛(短视频推荐)
-
树模型的特征工程思路,做了哪些特征工程?为什么要这么做?为什么这么做是有用的?特征选择怎么做的?
-
GBDT 的原理,为什么 GBDT 能去的很好的效果?XGBoost 的原理,相比于 GBDT 的改进在哪儿?这么改进的优势在哪儿?
-
为什么使用 LightGBM?为什么 LightGBM比 XGBoost要快?比赛中是怎么处理大量的缺失值的?LightGBM 又是怎么处理缺失值的?
-
介绍一下 DCN 模型,除了 CrossNet,还知道哪些特征交叉的模块,他们之间的对比,了解 DCNv2 嘛?对比过其他模块的效果嘛?
-
知道哪些 graph embedding 方法,graph embedding 怎么做的?怎么建图?了解其他类型的 graph embedding 嘛(提示用户和物品的二部图,我说没有了解过)。
-
多任务推荐相关的:介绍一下 MMoE,还了解其他的多任务推荐模型嘛?(答了 PLE 和 ESMM)PLE 和 MMoE 的区别是什么?
-
-
代码题
-
数据结构基础怎么样?了解堆排序嘛?
都给予了肯定的回答,然后就让我 C++ 写一个大根堆的实现 (不限制顺序存储或者链式存储) 。
平时都用 priority_queue 用习惯了,还好以前给学生讲课讲过,还有点印象。
#include<iostream> #include<vector> using namespace std; void heap(vector<int> &vec, int n) { // 以 i 为根的树 for(int i = n / 2; i > 0; --i) { int t = i; // 一直向下调整 while(t * 2 <= n) { int l = t * 2, r = t * 2 + 1; // 左右孩子选最大的 if(r <= n && vec[r] > vec[l]) l = r; // 不需要调整 if(vec[t] >= vec[l]) break; // 向下调整 else { int tmp = vec[l]; vec[l] = vec[t]; vec[t] = tmp; t = l; } } } } int main() { int n; cin >> n; vector<int> vec(n + 1, 0); for(int i = 0; i < n; ++i) { cin >> vec[i + 1]; } heap(vec, n); for(int i = 1; i <= n; ++i) cout << vec[i] << endl; std::cout << "hello world" << std::endl; return 0; }
-
-
有什么想要了解的?
问了主要业务和实习生培养方案,需要哪些工业界的技术(强调了大数据相关工具和深度学习框架)。