微软STCA苏州暑期实习一/二/三面
一面
面试刚开始,面试官示意面试开始,我问,是需要中文还是英文的自我介绍?
面试官听后,开启英文模式我: ???(虽然准备了英文自我介绍,但是突如其来的英文让我懵逼了一会儿)
自我介绍结束后,面试官开始用英文问我的项目相关内容,但是我英文回答的实在太捉急,甚至有一句没听懂,面试官才转为中文😅
大概10分钟后,开始手撕代码
题: 给出一个道路的一维数组(形如[0,0,0,1,1,0,0]),其中0代表道路,1代表路障,现在有一只袋鼠,最初它在0号位置,它可以选择向前跳一格,也可以选择向前跳minJump至maxJump格,问袋鼠是否能够跳到终点?
中途手撕代码的时候有一点“小”紧张,导致犯浑了几分钟,果然面试和平常做题心态完全不一样呀
二面
总体下来,懵逼ing。
嗯,懵逼ing。
面试官一上来问,你这个应该是二面吧,我说是的。面试官问,那之前一面的时候,那个面试官问了哪些问题?
我非常简单的概括了一面的情况,真的是非常简单,甚至一面的题意都没有讲,只说了大概......
然后面试官直接就说,那我们来做一道深度优先搜索的题吧!
我说:好的。
题:给一个M*N大小的棋盘,其中有0,1两种状态,0表示可以放置棋子,1表示有障碍物,不能放置棋子。假设,在第0行0列放置了一枚棋子,若同行同列没有障碍物,那么第0行第0列均不能放置新的棋子,若第0行第5列有一个障碍物,那么第0行第6列之后可以继续放置棋子。问给出一个棋盘,如何求到这个棋盘中能够放置棋子的最大数目。
因为面试官直接说的就是深搜,所以我就直接开始在想如何做棋盘的禁放判断了。
第一波思路刚想到,给面试官说到一半,发现不对,而后,继续涂涂画画,想方案。
思考了大约2-3分钟吧,我说给面试官说,我接上个思路讲吧,如果对任意一个i,j的位置成功放置了一枚棋子,那么就记录当前第i行,第j列的禁放区间。
面试官:我觉得可以,那你开始写吧,要么在我提供的白板上写,要么你写好把代码发给我。
我:要不我共享屏幕吧。
面试官:那最好了。
(时间来到了第35分钟,吭哧吭哧写完了100行代码,并且主动给面试官讲这道题目的一个求解思路,但是我的dfs中,在回退状态的时候,忘了写删除集合中对应禁放区间的代码,当时还没反应过来)
我讲完思路后,面试官说:好的
随后我开始做代码调试。
大约半分钟后,面试官问我:你是在做调试吗?
我:是的。
面试官:不用调试了,你这个思路基本上是正确的,现在还有几分钟,进入到反问环节,你有什么问题想问我吗?
我:...(此处省略)
最后,面试官:那就这样,面试结束。
我:好的。(内心OS:发生了什么??我是谁??我在哪儿??这就结束了??)
三面
过程差不多,直接放题吧。
题:给一个数组,判断是否大致有序。
大致有序的要求:
1. 互换某个元素使得原数组有序
2. 互换某段区间使得原数组有序
满足其一即可。
别的不说辣,边界条件!边界条件!边界条件!面试官指出了这个问题,以及代码封装其实可以更好。所以面试官认为这份代码其实是存在诸多问题的。
至于其他的,没啥了。
三面面下来自己都觉得不满意🤣等结果吧!
完全是没想到能走到最后吧,不论结果如何了,感谢MS给的面试机会!
#微软暑期实习春招##面试题目##微软#