2022 微软暑期实习研发提前批面经(全)

这篇具有很好参考价值的文章主要介绍了2022 微软暑期实习研发提前批面经(全)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

总体流程

【投递信息来源】校招丨微软2022暑期实习研发提前批正式启动!

2021.12.17        投递

2022.01.06        简历筛选通过

2022.01.17        一面

2022.01.19        平行二面

2022.01.21        leader终面

2022.01.26        信息采集

2022.01.27        意向书

一面

【时间】2022.01.17

【时长】约60分钟

【面试前流程】微软招聘推送显示,提前批的筛选时间为1.4到1.10,我是1月6日收到邮件通知简历通过,随后在1月10日接到面试安排电话,然后收到17号的一面邀请。

【求职进程】博主的第(3)场实习面试,总第(3)场面试

1、自我介绍(英语)

2、介绍论文

3、论文(项目)中用了哪些技术,论文数据是怎么收集的

我做的内容是和网络协议、网络体系结构和SDN相关的,主要讲了一下结合机器学习模型在SDN中检测网络攻击的相关论文工作,面试官对如何获取网络数据感兴趣,回答是基于SDN控制器实现数据采集应用模块。

4、TCP拥塞控制,还知道哪些拥塞控制机制

这里回答了TCP Tahoe和Reno的详细机制,其他的讲了New Reno、Cubic、BBR等。

5、C++ vector扩容的工作原理

每次扩容2倍,并且新开一块内存把原来vector的东西拷贝过去(然而事实在visual studio里面测试,扩容的倍率大概是1.5倍上下)

6、考虑vector扩容,求push_back的复杂度期望(均摊复杂度)

常数复杂度,参考:​​​​​动态数组(vector)-详解均摊复杂度分析和避免避免复杂度的震荡(C++实现)_结构设计软件开发-CSDN博客_vector的空间复杂度

这个题我之前没有见过,答得不是很好。我在面试的时候按照每次扩容2倍计算,那么N个元素就要扩容logN次(以2为底的log),但是我是在电脑的记事本上面打了草稿,草稿上写的都是logN,一直忘记了这个玩意是以2为底的,所以有一步计算2的logN次方,那个地方面试官一直提醒我化简,我卡了很久才反应过来(化简结果就是N,因为同底)。

7、算法题:二叉树的直径(Leetcode 543)力扣

【评价】这场面试的题目都比较基础。项目部分,只要是自己做的,能说出总体概况和清楚一些亮点细节基本上没问题,但是由于后续进入了平行二面,也就是这一次面试实际在面试官那里表现得并不算太好,考虑在计算复杂度的时候的那个对数(第6题)卡壳太久,也从一个侧面反映了题目越简单其实容错率也是越低的。

平行二面

【时间】2022.01.19

【时长】约55分钟

【面试前流程】17号一面结束以后接到电话约平行二面时间,当晚收到平行二面会议链接邮件。

【求职进程】博主的第(4)场实习面试,总第(4)场面试

1、自我介绍(中文)

2、介绍论文,论文中的难点,怎么解决的

回答大概是,论文中的难点在于论文所提出的系统各个部分的集成和协同,讲了一些论文提出的系统的框架,以及一个核心的队列式的实时网络流量序列窗口的设计。

3、算法题:剑指54:二叉搜索树最大的第K个结点(要求使用非递归方法遍历)力扣

以下贴出我面试时写的代码(可读比较差,因为是面试共享屏幕写的),非递归方法采用栈实现,找最大的第K结点,基于右子树→根→左子树的“反中序”遍历,生成降序序列,统计遍历过的结点数量,等于K则返回。

有一个点要注意,就是我的代码中函数返回值是TreeNode(树结点),因为考虑到二叉搜索树可能出现结点数量还不到K个的情况,此时int的返回值不知道返回什么才合适,因此返回树结点类型,在主函数里面判空,再提取值。

TreeNode* KBiggestNode(TreeNode *root, int k)
{
	if(root == NULL)
	return;
	stack<TreeNode*> Nodes;
	int curVisitedNodeCount = 0;
	while(!Nodes.empty() || root)
	{
		if(root)
		{
			Nodes.push(root);
			root = root->right;
		}
		// Find the leftmost node where inorder starts.
		else
		{
			root = Nodes.top();
			Nodes.pop();
			// cout<<root -> val<<" ";
			curVisitedNodeCount ++;
			if(curVisitedNodeCount == k)
			return root;
			if(root->left)
			root = root -> left;
		}
	}
	return NULL;
}

int main()
{
	TreeNode* root = new TreeNode;
	TreeNode* result = KBiggestNode(root, k);
	if(result)
	return result -> val;
	else
	cout<<"BST中的结点数小于K"<<endl;
	return 0;
}

4、算法题:括号生成(Leetcode 22)力扣

先贴我面试时写的代码:

vector<string> result;

void generate(string currentString, int size, int left, int right)
{
	if(currentString.length() == size*2)
	{
		result.push_back(currentString);
		return;
	}
	if(left < size)
	{
		currentString += "(";
		// 下一步递归即可以插入左括号也可以右括号
		generate(currentString, size, left+1, right);
		currentString.erase(currentString.end()-1);	// currentString.pop_back() 
	}
	if(right < left) // 用当前层的左括号数量限制右括号 
	{
		currentString += ")";
		// 下一步递归即可以插入左括号也可以右括号
		generate(currentString, size, left, right+1);
		currentString.erase(currentString.end()-1); // currentString.pop_back() 
	}
} 

int main()
{
	int k = // 输入 
	string currentString = "";
	generate(currentString, k, 0, 0);
}

写完以后面试官问我如何优化这个代码的性能,我确实不太清楚,我回答了把递归调用返回后的状态复原,即erase string的最后一个括号的操作改成pop_back(),是否能减少STL的调用次数?面试官说其实这两操作是一样的。然后面试就结束了。

事实上确实应该从减少STL调用次数上考虑,但是不是修改erase,而是根本不用频繁的STL操作,把当前的【括号串 + 新加入的括号】作为参数传入下一轮递归(无需在本层递归操作括号串)就可以了,优化的代码应该长这样:

class Solution {
public:
    vector<string> generateParenthesis(int n) {
        vector<string> res;
        func(res, "", 0, 0, n);
        return res;
    }
    
    void func(vector<string> &res, string str, int l, int r, int n){
        if(l > n || r > n || r > l) return ;
        if(l == n && r == n) {res.push_back(str); return;}
        func(res, str + '(', l+1, r, n);
        func(res, str + ')', l, r+1, n);
        return;
    }
};

三面(leader终面)

【时间】2022.01.21

【时长】约55分钟

【面试前流程】19号二面结束以后,当天下午5点收到leader面邀请。

【求职进程】博主的第(5)场实习面试,总第(5)场面试,该场面试后取得了offer

1、自我介绍(中文)

2、介绍研究方向

回答时将我研究的SDN数据平面、控制平面和控制通道的体系结构,及其存在的低速率网络攻击的安全威胁(三篇论文)串起来讲了一遍,约20分钟。

3、算法题:剑指42:连续子数组的最大和(要求:考虑非法输入和int溢出)力扣

这道题本身太基础了,动态规划直接解决,这里就不贴代码了(其实是在一个在线网站上写的代码,我没有保存)

写完追问:

一、怎么考虑非法输入(输入vector为空),回答:抛出异常,或enum类型:为空或不合法时返回特殊全局变量;

二、怎么考虑int类型溢出(我后来把这个代码重构了一遍,数字写成字符串,写了一个字符串相加函数,字符串从后往前相加,结果正序存储在另一个字符串中,最后reverse)

三、怎么考虑负数问题(未实现,仅讲述了思路,回答:首先,看字符串首个元素,判断正负性;第二,比较字符串长度判断绝对值大小;第三,如果字符串数字部分长度一样,逐位比对大小,判断计算结果的正负性;第四:计算出的结果位数可能减小,去除先导零)

4、反问

目前主要是熟悉C++,如果接受实习,语言栈会不会影响我被分配到的产品业务分组(未得到明确回答)。

Offer

2022.01.26        10:46        实习信息补充(学校名称、学校所在地点、入职时间)

2022.01.27        16:49        意向书

2022.01.27        21:59        接受意向书

至此拿下实习的第一个Offer,共计面试5场。

通关配置为:力扣201题(简单106,中等83,困难12)文章来源地址https://www.toymoban.com/news/detail-452536.html

到了这里,关于2022 微软暑期实习研发提前批面经(全)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 华为暑期实习

      多行数据 需要输入的时候可以用下面的结构: 输入两组数据: 一次输入两个数组时 ,可以用下面的输入方式:  HJ1 字符串最后一个单词的长度 描述 计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾) 输入描述:

    2023年04月12日
    浏览(39)
  • 美团暑期实习

    (1)数字输入 (2)字符输入 (1) 题目描述: 小美是一个火车迷。最近她在观察家附近火车站的火车驶入和驶出情况,发现火车驶入和驶出的顺序并不一致。经过小美调查发现,原来这个火车站里面有一个类似于栈的结构,如下图所示:例如可能1号火车驶入了火车站中的

    2023年04月09日
    浏览(34)
  • 要不要提前去实习?

    大家好,我是帅地。 秋招结束,很多人在纠结 要不要提前去公司 实习,最近也有一些帅友问了这个问题 说说我去年在腾讯实习的经历给你做个参考吧。 入职前的学习 20年初那会,还是蛮激动,之前我从来没有去打过工,可以说,鹅厂是我人生的第一个东家,满怀激动申请

    2024年02月04日
    浏览(49)
  • 美团后端开发暑期实习一面

    1、为什么使用UDP协议?缺点? 使用UDP协议的主要原因是它能够在网络中提供快速和高效的数据传输。与TCP协议相比,UDP协议没有建立连接和确认数据包的过程,因此具有更低的延迟和更高的吞吐量,适用于需要快速响应的应用场景,如在线游戏、视频和音频流等。 缺点,由

    2023年04月21日
    浏览(68)
  • 三七互娱,oppo,快手25届暑期实习内推

    三七互娱,oppo,快手25届暑期实习内推 ①OPPO 【内推码】:X6866447 【一键内推】:https://careers.oppo.com/university/oppo/campus/post?shareId=4546 【需求岗位】软件类、AI/算法类、硬件类、设计类、产品类 ②快手 【岗位】算法、工程、游戏,产品运营、市场、职能等 【一键内推】https://

    2024年04月27日
    浏览(31)
  • 大二暑期实习记录(一):处理组件绑定数据错误(数组解构,map()方法)

    好家伙,搬砖   今天在做组件迁移(从一个旧平台迁移到一个新平台)的时候,发现了一些小小的问题:   在穿梭框组件中,使用\\\" 节点配置 \\\"方法添加数据的时候,左测数据选择框直接消失了 这里我们猜测一下,大概是数据处理出了问题 此处,我们使用 \\\"数据绑定\\\" 绑定数据方法:    定

    2024年02月15日
    浏览(46)
  • 腾讯 微信公众号&;&;小程序 暑期实习 一面秒挂

    题解 | #Prime Number# import mathdef getprimenum(): list1=[] list1   大数据开发工程师 1v1辅导+提问 大数据开发工程师 1v1辅导+提问里面也有很多干货分享,感兴趣的同学可以来看看https://www   题解 | #日期类# 加1之后处理一下细节就完了#include iostream#include lt   官方题解 题解pdf链接:sol

    2024年03月25日
    浏览(49)
  • C/C++腾讯日常实习面经

    岗位:天美工作室-游戏客户端开发 时间轴:8.5 一面(后续待更新) 研一在读,开学研二,之前有面过一轮的腾讯日常实习,但最后挂在录用评估环节 (没错140min,7点15开始到9点半,面试结束后头晕加嗓子哑掉,后面半个小时基本考本能在面试了笑死) 前20分钟自我介绍加闲聊,

    2024年02月04日
    浏览(72)
  • 米哈游的春招实习面经,问的很基础

    米哈游的春招实习面经,主要考察了java+操作系统+mysql+网络,这四个方面。 面试流程,共1小时,1min自我介绍,20min写题,剩下问题基础知识。 String,StringBuilder, StringBuffer区别?单线程大量操作字符串用哪个? 回答:用StringBuilder 补充: String、StringBuilder和StringBuffer都是Ja

    2024年02月03日
    浏览(38)
  • SAP VT实习(钻石级杰出人才计划)面经&SAP大致介绍

    本文的认识全部基于这一年我与SAP的部门经理的交流,国内外网站上搜集的信息,以及亲自参观SAP大连分公司的经验上建立的。由于还未正式开始工作,了解的不全面,这里的信息仅供参考。 笔者的学校在大连,因此想在大连本地找实习。个人偏向于去外企实习和工作,而大

    2023年04月23日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包