【微软】C++岗-STCA暑期实习(一面,三面)面经

参加的应该是微软正式批第一批,报的是苏州STCA。

  1. 笔试(内推免笔)
  2. 一面(2.28)
    (1)面试官先自我介绍;
    (2)我再中文自我介绍;
    (3)因为本人研究生期间搞的是深度学习,所以只简单问了下:研究期间遇到的最大困难;
    (4)再次提问:假如你遇到了困难,你怎么利用好团队的力量来解决问题;
    (5)算法题:链表排序(LC148)
    第一次面试,有点紧张。但又有点贪心,没选择自顶向下的递归排序方法(递归调用了隐性栈空间,觉得空间复杂度不是最优)。
    于是选择了自底向上的归并排序,但这种解法细节处理有点麻烦,写了二十来分钟,才整理好(太紧张了,脑子一团乱麻)。
    PS:没找到面试官发来的链接,直接共享屏幕在本地ide上写的,面试官看了觉得ok,就没要求拷贝过去。
    (6)反问环节
    很普通地问了问实习生的培养机制。
    顺便还问了下:不管一面过没过,是不是都要参加二面。答曰:是。(实际上,并不用参加二面)
    (7)全程无八股
  3. 二面(一面通过,直接跳过)
  4. 三面(lead面,3.4)
    (1)面试官入场,说英文让你自我介绍。自然是英文自我介绍(感觉自己一股浓浓塑料味的英语口语);
    (2)面试官切回中文,问:你研究生期间搞的是算法,之后工作准备偏算法还是工程?(因为STCA包含算法、开发)。答曰:工程(我对算法十分厌倦)
    (3)继续问:为什么?我讲了一大段,核心意思是觉得神经网络缺乏稳定性与可解释性。(实际上是因为我自己太菜了,不配搞算法)
    (4)开始做题,做了两道题;是在面试官发来的链接里写的,其实就是个接近于txt文档的网页端;
    (5)第一题:二叉树的最近公共祖先(LC236)不用多说,简直是送分题。先简单讲了下思路,速度解决代码。面试官要求继续优化时间复杂度,之后反应过来,加了个减枝。
    写完这题时间还早,于是面试官又出了一题;
    (6)第二题:已知有一个非负整数构成的数组num,寻找它的子集,要求子集的和能被3整除,寻找符合该要求的和最大的那个子集。
    这题和LC1363(形成三的最大倍数)很像,所以思路很简单:先求num中所有元素的和,然后取3的余数,接下来就三种情况:
    情况1:余数为0,返回整个num就行;
    情况2:余数为1,删去 1个最小的(3n+1)或者 2个最小的(3n+2)即可;(这两种删法取删的值之和最小的那种即可);
    情况3:余数为2,和情况2类似。
    和面试官讲了下以上的解决思路之后,面试官直接说对的,就不用写了。
    (7)反问环节
    做完题之后,面试才进行了20分钟出头,于是反问环节的时候,面试官就回答的很详细;(似乎面试官也有最低时间要求)
    大概就问了问实习生转正率,部门分配的方法,实习生培养机制。
    (8)全程无八股。
  5. 面试有感
    (1)微软主要考察手撕代码,八股文问的少,有利于我这种算法转行的。本人八股稀烂无比,才开始看了两周八股。没问到八股,真的是上天保佑。
    (2)微软的面试官态度都很温和,体验不错的。
    (3)感觉两次面试遇到的题目都不算太偏门的,没有奇奇怪怪的题目。其实看了最近的面经,挺怕遇到那道怪题的(设计一种测试方式,测试出L1,L2,L3缓存的大小。)

发表评论

后才能评论