软件工程师的全球分析面试经验|校园 2020
在线测试和面试过程非常标准。大约 280 人参加了在线测试,他们选出了 12 名学生进行面试。面试过程是虚拟的,有 3 轮:
第1轮:
计算二维布尔矩阵中可以由 1 组成的子矩阵的数量。 (在线测试问题的优化解决方案)
在 0s(水)和 1s(陆地)的 2d 矩阵中计算 1s 形成的岛屿的数量。
例如:
[0 0 1] [1 0 0] [1 1 1] #islands=2
给定两个带有一些字符的字符串和 '#' 表示退格...检查在相应地完成退格后它们是否都产生相同的字符串(解决有和没有额外空格)
例如:
ab#c and acbc## result in the same string “ac”
给定一个正整数和负整数数组。您可以在一次跳转中从索引 i 跳转到:i+1、i-1 和 k,其中 k 是数组中的任何其他索引,其中 arr[i]==arr[k]。从第一个索引开始,找到到达数组末尾所需的最小跳转次数。
第 2 轮:
- 解释你的机器学习项目。
- 线性回归如何工作?
- 什么是均方误差?
- 什么是梯度下降?
- 解释您网站的登录模块代码。
- 您将如何使用会话和 cookie?
- 分类与回归
- 规范化形式(1-3)
- RDBMS 中的 ACID 属性
- 您将如何在 RDBMS 中实现隔离?
- 写一段代码来求 BST 的高度。
第 3 轮(导演):基于字符指针和 malloc() 的 ac 程序的输出。解释每一行发生的情况:
该程序是这样的:
C
#include
#include #include void func(char *str) { str=(char*)malloc(500); strcpy(str,"global analytics"); } int main(void) { char *str=(char *)malloc(50); strcpy(str,"hello"); func(str); printf("%s -- %d",str,(int)strlen(str)); return 0; } - 关于内存分配和程序中的指针的一些深入问题,例如变量实际存储在哪里以及它们是如何存储的。
- char 可以容纳的最大数字是多少?
- stdio.h 里面会有什么?
- python的字典有什么用?
- 解释任何一个项目。
- 他还从我的 GitHub 中挑选了另一个项目,并请我解释代码。
最后,一些人力资源问题就是这样。