2018后台开发(C++)暑期实习面试总结 (2)

  微软没有内推,老老实实投简历然后等笔试。师兄说微软的笔试会很难,战战兢兢了很久,没想到笔试的时候题目水得一匹...倒不是问题多简单,只不过写了个暴力试试水然后就过了也是一脸懵逼。最后4道A了三道半,也就成功进入面试啦。
  4月23日去苏州参加微软正式批的面试。环境相当好,算是又充值了一波信仰。微软面试一天分三批,我是中午11点那一批,首先被带到一个会议室中等候面试,然后会有面试官一个个来门口领人去面试。
  一面面我的是一个外国小哥,人非常nice, 一直叫我放松不要紧张,然后考虑到我的口语水平语速很很慢。上来是一道热身题,问如何判断两个字符串是否是Anagram(组成字符相同但是顺序不同),马上写出了一个用数组模拟哈希表的方法。第二道题是数组中盛最多水的问题,Leetcode原题。之前虽然做过,但是思路一时间想不起来,然后就一直跟面试官探讨,说自己对题目的理解,说暴力的方法,说初步的思考方向。面试官也给了我很多提示,最终想到了用双指针的解法,并在A4纸上实现了。
  中午吃了一顿盒饭,然后一点就开始了二面。自我介绍完后,面试官让我我用英语回答了一些问题,比如HTTP中GET与POST的区别。然后开始写题。第一道热身题非常简单,判断一个字符串是否有重复元素,easy. 然后第二道题说给我一个迭代器和一个数k,迭代器只有next一个接口,现在让我将后面的k个元素删除,只保留前面的。先说了一个暴力的方法,全部遍历完后返回前面的n-k个。面试官不是特别满意,想让我在空间上加以优化,没有想出来,很难受。其实后来觉得可能面试官只是想让我用一个双端队列deque. 最后再做了一道题,给我一个BST和一个数n,找到这个BST中与n最接近的结点。说了递归的思路并加以实现,逐行解释代码,并说了将递归的代码改成非递归的实现。
  刚回到会议室没多久,就被一个和蔼的大叔领去三面。看面相应该级别不低,但是人非常nice,如沐春风般的,语气非常真诚且可爱。让我用英语介绍实验室项目,非常紧张,有些磕磕巴巴,他也还是笑眯眯地听着,并一直安抚我让我别着急。热络下来慢慢也就进入状态了。他问我前面的面试官都让我写过什么题,说完他沉思了一下在黑板上哗哗写了一个二维数组,我的天,这不就是二维数组中的查找,剑指offer第一题。故作沉吟跟他说完了那个从右上角开始查找的思路,以为应该十拿九稳了。但是没想到大叔显然并不十分满意,于是一直交流引导,最后想到用二分的思想来解决这个问题。说完思路他表示很满意,留我在房间里在白板上实现这个思路,他有事出去一趟。其实这份代码只要有思路了写起来并不难,算是写得齐齐整整吧。大叔实力很强,回来后一行行对照着代码看,很快又发现一个进一步优化的地方,佩服之余也立马进行了优化。
  面试结束之后HR说我的面试通过了,问了下面试官评价,反馈都非常好。一周后,收到了offer确认信。
  Tips: 算法题是微软乃至外企的大头,同样的刷题还是必须的。但是外企的面试风格更偏向于了解候选人解决问题的思路,衡量的标准是“我与你做同事我舒不舒服”,因此特别注重交流。因此在整个面试过程中时刻提醒自己不要慌,自己有思路,就要前前后后说明白;没有思路,先说明自己对题目的理解,并给出自己的思考方向,实在不行就要提示。最后,因为是在白板上写出代码,因此平时写代码一定要保证很好的编程习惯。

摩根IT

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzdgdp.html