2022年4月14日——微软工程院暑期实习一面
之前在脉脉上和微软工程院的招聘人员联系上了,他们主要是做 Bing 搜索的。
微软的面试官是一位姐姐,emmm,人很nice,面试体验很好。
上来问了我为什么选择了延毕半年。emmm,我也并不避讳这个事情,很坦诚地说了研一因为疫情被加码被关在老家(湖北西部小山村)八个月,与世隔绝;加上跨考基础薄弱,起步晚(研二开始自学算法),又选择算法这个赛道,导师放养(组会都没开过),研二自学走了很多弯路等等。
面试问题:
虽然面试官主要是做搜索的,但是问题主要针对推荐相关的项目展开。
重点针对 MMoE 多目标框架和 Deep&Cross 问题进行了提问:包括模型的结构,模型的特点(或者说优缺点),还有就是和其他类似的模型的对比,包括多任务推荐模型 PLE 和 ESMM 以及其他的 CTR 预估模型比如 DeepFM、DIN 等等。
还聊到了这个任务场景中的为什么没有采用序列化的模型,以及其他的可以对 item 做 embedding 的方法等等。
可能因为面试官主要不是做推荐的吧,所以整个过程主要是我在介绍一些推荐相关的东西,但是看得出来面试官很感兴趣,也很认真在听,并提出感兴趣的问题,整个过程聊的都比较开心,也没有太多的压力。
笔试题:
emmm,看起来很眼熟,下来后看,是剑指offer的原题,但是记录显示我并没有刷过,很神奇,不过因为对这类问题还比较熟悉,还是很顺利的做出来了。
题目是:剑指offer II 第 112 题:矩阵中的最长递增路径
代码: #include<bits/stdc++.h>
using namespace std;
int direcs[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
int dfs(vector<vector<int>> &graph, vector<vector<int>> &maxlength, int r, int c, int n, int m) {
if(maxlength[r][c] != 0)
return maxlength[r][c];
int res = 1;
for(int i = 0; i < 4; ++i) {
// next point
int nx = r + direcs[i][0], ny = c + direcs[i][1];
if(nx < 0 || nx >= n || ny < 0 || ny >= m)
continue;
else if(graph[nx][ny] >= graph[r][c])
continue;
else
res = max(res, dfs(graph, maxlength, nx, ny, n, m) + 1);
}
maxlength[r][c] = res;
return res;
}
int main() {
int rows, cols, res = 0;
cin >> rows >> cols;
vector<vector<int>> graph(rows, vector<int>(cols, 0));
vector<vector<int>> maxlength(rows, vector<int>(cols, 0));
for(int i = 0; i < rows; ++i)
for(int j = 0; j < cols; ++j)
cin >> graph[i][j];
for(int i = 0; i < rows; ++i) {
for(int j = 0; j < cols; ++j) {
dfs(graph, maxlength, i, j, rows, cols);
}
}
for(int i = 0; i < rows; ++i)
for(int j = 0; j < cols; ++j)
res = max(res, maxlength[i][j]);
cout << res << endl;
return 0;
}
问的问题:
-
主要做的业务是什么?Bing 搜索,优化现有的模型和算法;
-
实习有不有转正的机会?面试官说暑期实习就是希望能转正;
-
面试官问我还有不有其他面试?我说字节、华为、百度、pdd都还在走流程;
-
面试官问我是不是更倾向于以后做推荐?我说搜索和推荐都ok,只希望实习能真正学到东西,不要只是打杂。