微软最新面试题4-19

一面

英文介绍项目多少人,有商用嘛

中文回答问题

多态,虚函数,怎么实现

Hash红黑树

Tcp udp

ACID

redolog和啥啥log

Docker优点 (轻量,隔离)

合并区间(边界,贪心)复杂度

对微软的实习期待,为什么选择微软

 

二面

编辑距离

优化空间复杂度

Vector怎么实现的,push一个元素是怎么个过程

 


 

一面

  1. 自我介绍,中文。本来准备了一晚上的英文自我介绍,结果面试官直接说用中文就行。。。。。
  2. 问项目,大概有20分钟左右。因为自我介绍说自己有个项目投递了顶会,然后就让我给讲讲这个项目。感觉面试官也不是搞CV的,所以没有挖掘什么东西,就是讲一讲自己论文的背景啥的,所用method的基本原理,做了哪些东西,达到了什么效果。还问了本人是第几作者(哈哈哈,当然是一作啦)
  3. 开始做代码题,问我主要用什么语言,我回答python,明显感觉面试官顿了一下。。。(python果然是鄙视链底层啊)后来解释了一下,之前也学习过C++,但是最近搞科研项目就是python用的多,C++可能不是很熟练了。虽然面试官说用python也行,但是感觉减分不少。
  4. 题目:二维数组从左上角走到右下角最小路径和。剑指 Offer 47. 礼物的最大价值
  5. 使用本地IDE并分享屏幕,虽然一开始面试官说这题简单就不用IDE了吧。。。虽然题目不难,但是微软比较看重代码的可读性、简洁性跟规范性。面试官说我写的代码有一段冗余了,没有非常简洁。然后说我另外创建滚动DP数组,额外增加了空间(不过我解释了滚动数组可以不用改变原数组的值,他说也对,也是一种思路)。可能时间比较紧张,我看快到45分钟了,就没有仔细检查优化代码,所以被挑出毛病。感觉写完代码还是应该仔细检查优化一下,面试官又没说注意时间,他不急我急啥,害
  6. 因为我单方面非常精准的把握时间,所以整个面试45分钟就结束了。最后面试官让我把写的代码复制给他,整个面试就结束了。

提问环节,问了下面试官苏州STCA暑期实习生是不是统一招聘,是所有实习生招过来做软件开发,还是有不同分组?答:录用后根据实习生的个人情况,再分到各个不同小组。

 

 

二面 lead round

  1. 自我介绍,中文
  2. 简单问了下项目,没有怎么深入,问了下自己做的这个项目遇到的最大难题是什么,大概讲了讲。
  3. 问了有没有项目相关的实习,回答没有,然后就直接开始做题了
  4. 第一题:大小为n的数组,范围在1~n之间,数组中有重复,但是重复次数不大于2,求出所有的重复数字。要求:不能使用任何额外空间,快速排序的数字交换那种也不行。
  5. 第二题,一个二叉树,数值为int型,给出从根节点到某一节点的路径最大值。

 

太紧张太紧张太紧张了!!!因为我很想去微软,非常非常想去,期待值过高,导致这一次面试非常非常紧张,面试基本脑子不转了。。。第一题没做出来,在面试官的提醒下,大概有点思路。面试官看我没做出来,出了个简单的第二题,结果我脑子直接瓦特了,第二题也在绕过来绕过去没说对。。。(后面冷静之后一想,这不就是个DFS嘛,太简单了啊!我服了我自己,面试的时候一直想BFS。。。)

面试官因为我这个菜鸡还搞得超时了,一个小时了才结束,题目没做出来最后就那样结束了o(╥﹏╥)o

周一上班应该就能收到感谢信吧,吸取教训,秋招再战吧

 


 

base上海,3.24三面面完,4.17发的offer,之前一直没底不敢写面经怕丢人_(:з)∠)_

一面:

自我介绍

撕代码,判断一个字符串是否为某一单个字串的重复,比如ABABABAB,如果是输出AB4,如果不是输出null

写之前讨论了几个有歧义的情况,时间复杂度线性,空间上多用了一个临时String变量

然后面试官让优化,我一下子没反应过来哪里需要优化,就要了提示,面试官提示说那个String变量是不需要的

优化完之后,面试官让写几个用例进行测试

 

二面:

问了缓存,提到了页面置换算法,让实现LRU,不允许使用java LinkedHashMap

因为之前从没接触过如何实现LRU,比较艰难的硬着头皮写了

然后提问如何把你写的这段代码运用到缓存的页面置换中

好像还问了一些基础知识,比较记不清了

这一面发挥的不是很好

 

三面:

这一面比较特殊,没有撕代码,是我从没见过的面试形式

上来面试官先问我感觉前面两面怎么样,接着问我为什么想来微软

然后面试官介绍了他们是做云存储的,想问我一些云存储相关的问题

我说我从没有接触过云存储相关的技术

面试官说没事你用你学过的操作系统,计算机网络方面的知识,自己来想

云存储和本地存储相比,需要注意哪些问题,你学过的基础课程里面有什么算法或者策略可以解决这些问题,中间穿插问一些基础知识,比如一些网络协议,http状态码

讨论完之后面试官给我发了三个微软azure的API文档,全英文,让我读,读完他问我问题

当天我是三面连在一起的其实那个时候已经高强度思考了三个小时左右,大脑运转效率真的不高,但是硬是读完了

然后面试官问,这几个blob有什么区别

我解释完之后,他又问你之前做的一些外包项目中,有哪些场景可以用到这四个blob的

后面关于接口的问题我有点忘了,最后让我快速实现一个场景,使用刚刚看的接口文档

那个时候大脑是懵的,我想直接使用这些接口是不行的需要配置相关环境,怎么进行一个快速开发呢

其实面试官的意思是让我百度关键词,我以为不能使用网络查询

最后看时间不够了,就交流了一下结束了

 

总结:我春招从二月份开始走到现在,大多数面试官们都很好,但微软面试官们是我见过的最nice的,他们会和你探讨而且人很耐心,尤其是三面的面试官,历时两个多小时,最后还说抱歉占用了这么多时间,当时感觉不过也不亏了,至少还学到了这么多赚了

是比较新奇的一次面试体验,面完其实也是更加想进微软,所以直接接了offer,希望可以给牛友们带来参考
 

 

一面(2021.4.7)

有一个只有0/1的矩阵,标记为1的是墙不可通行,你有一把锤子,能够砸穿一面墙,问从起点到终点的最短距离。 (偏ACM题目)

 

因为网络问题迟到了,时间不太够没想全情况。 (ノへ ̄、)

其实只需要直接从起点进行bfs,对每个点标记两个状态(到达的时候有没有砸过墙,因为有可能某条更长的没砸过墙的路可行,但是经过的点提前被砸过墙的路访问了),两个状态第一次到达的时候都标记然后入队,就可以解决了。

另外因为这道题只砸一面墙,也可以分别从起点和终点进行bfs,路上不砸墙,再对每个点求取到起点和终点的最短距离和,取最小值(枚举到墙的时候就相当于路上砸了这面墙),脑测了一下应该可行。

 

二面(2021.4.9)

1.在一个排好序的数列中找某个数的第一次出现和最后一次出现

 

因为当时面试官引入问题的时候先提了二分搜索,所以就说二分查找大于这个数和小于这个数的第一个位置,看左右是不是这个数,是就输出。然后写了其中一半的二分。

 

2.实现map

 

说实话这个问题我在面经里看到过,但从没想过有一天真的会被问到。面试官说要问一个我平时接触不到的。 (⊙﹏⊙)

于是就说先求hash值(我知道C++的map是红黑树,但是不会写),然后开了个二维不定长数组,将key-value存进对应的hash值处。插入的时候查询是否存在,存在就修改,不存在就插入,查询的时候也是差不多的流程。

然后针对代码简单讨论了一下多线程和锁的问题,比如写操作可以只锁正在修改的那一个hash值的位置之类的。

 

Leader面(2021.4.13)

英文对话+问题交流+一道简单的算法题(给出年月日,求是这一年的第几天)。

 

这一轮面试的感觉相当糟,对话一塌糊涂不说,这么简单一道题代码还出了纰漏,后面基本就是面试官逮着我的代码格式和变量名挨个怼(因为我是个打比赛的菜鸡,为了追求写代码的速度和表面的简洁,写的过程中会省略掉能省的括号和空行什么的,不符合大众规范)。这事我以前从没注意过,以后真的要多上心。

后面还探讨了一下怎么优化,譬如比起省掉一个小循环,%运算更值得改进之类的。

 

2021.4.16 offer

最后一面这么反常,我觉得我肯定凉了,而且当时脑抽选了个不常用的邮箱,这一周就都没去管。

今天去邮箱看了一眼,发现前天(4.15)收到了信息采集表,昨天(4.16)收到了offer。嘛,这就是意外之喜吧。

也祝大家都收到心仪的offer,心想事成,天天开心。XD

 

你可能感兴趣的:(算法)