微软苏州STCA SWE Intern 面试过经
本人东南某省末流985计算数学专业,通过师兄内推投递微软苏州STCA SWE Summer Intern,经过两轮面试最后拿到了offer,现在将面试准备和面试过程与君分享!
面试准备
- 简历:中英文简历各一份,着重介绍项目经历,具体写出自己在项目中的贡献,对程序时间,空间复杂度的优化,遇到的难题是如何解决的这些。 有些同学会觉得自己简历无物可写(大佬除外),我觉得这是很正常的,因为毕竟只是本科生,所以尽可能将自己做过的比赛,大作业这些写上去也是足够的。面试官更关心的是项目背后反应的你的能力!
- 刷题:Leetcode的easy–medium难度的题目,内容至少包括基本的数据结构,即二叉树,链表等。在二面,三面还会涉及一些较难的medium题目,内容涉及动态规划,并查集,拓扑排序,尽量保持每天5-8道题目的训练量
- 面试官有可能会用英文!
- 代码风格要好,注意回车,空格的使用,变量名的命名要符合规范(参照Leetcode的模板)
面试题目
一面
实现一个文件夹内容显示机制,即以一个树状形式展开,首先显示当前文件夹下内容,然后显示子文件夹下的全部文件,如图示
C:\
a.mp4
b.mp4
user:\
c.rmvb
d.jpg
myfile:\
test.text
以上只是一种可能的实现方式,也可以先输出文件再输出文件夹内容,其实就是一个简单的宽度优先搜索,但是会要求使用非递归实现。
给定这样一个二叉搜索树,二叉树中节点有节点值和三个指针,分别指向左右子节点和父亲节点,现在给定一个二叉树节点的指针,请找到二叉树中比当前节点值小的节点中节点值最大的节点
struct{
TreeNode *father,*left,*right;
int val;
}TreeNode;
这道题目就需要对二叉树机制有深刻的认识,注意只给定了当前节点的指针,没有二叉树根节点的值,因此要注意边界情况的考虑。
Hint:若有左子树,则目标节点在当前节点的左子树中,若无左子树,则在一个离当前节点最近的父节点的左子树中。
二面
面试题目:当前有一个正整数组成的数组,和一个正整数的target值,现在要求从数组中删除一些元素,使得无论怎样选取数组中的元素,使他们彼此按位或的结果不等于target值,求要删除的元素的最少的个数
Hint: 不需要深搜,可以从按位或本身出发,考虑元素的删除与target的关系
面试心得
Microsoft STCA的面试过程是我经历过的最人性化的面试,只要你愿意主动交流,面试官会引导你思考,不会看着你无谓的挣扎。从我与面试官的交流来看,他们更关注的是你的自主思考能力,代码风格和性格。
- 对于自主思考能力,当你给出一个OK的代码时,他们会要求你思考可能存在的问题,优化空间这些,你有靠谱的想法后就可以与他们交流,如果不够好他们也会引导你,但一定要体现自己的思路,不能依赖面试官!
- 代码风格:整齐的换行,空格的使用,基于英文单词而不是拼音的变量命名应该足够
- 性格:面试官喜欢主动的,积极沟通的candidate,这是一个能够融入团队的员工必须具备的特质,如果你运气好,他们还会和你开玩笑来环节你的紧张,真的是非常nice的面试官!
总结一下:微软的面试经历很好,面试官很nice,要求也会相应高一些(当面手撕代码,时间在一小时内),欢迎各位大佬投递!