一共参加了1次笔试,3次面试。总的感觉是,微软暑期实习的笔试难度不算很大,面试难度随面试官而异,毕竟是微软,卧虎藏龙的地方,面试官想虐人还是非常容易的。

1.笔试

笔试挺简单,虽然2013年的题和2012年的一点也不一样,但是大体思路是一样的。前面一部分简单题是考C,C++基础知识的,后面一部分是考算法、概率、信息论等稍微高一些的理论的。全是选择题,答错、不答扣分,少答给一部分分数,全部答对才得满分。考前我看了点C++ Primer,算法导论一直在研究,所以后面答的还不错,基本没错,前面的就比较惨了,C++用的太少,错了好多道。不过微软笔试设的门槛不算高,按照网上的答案我卷面大概有70分,不过40分左右应该就可以进面试了。

2.一面,二面

微软的一面和二面是在一起的,两位面试官,每位面一个小时。规则是:如果两位面试官都对面试者满意/不满意,面试者直接拿到offer/被淘汰,如果两位面试官意见不统一,会在几天之后安排加面,也就是三面,最终的录取结果会在一段时间后通知(今年是五一之后,被淘汰的好像不会收到通知)。我被安排在了4月21日下午面试,面试时间是根据什么安排的众说纷纭,这个也不好揣测,可能微软有自己比较复杂的算法吧。在这之前,Jeans和我gf分别在前一天和上午进行的面试,他们面试的情况比较相似,都是以问算法和数据结构题为主,题的难度是由浅入深,开始的简单题例如:斐波那契数列、判断平衡二叉树、链表反转、字符串转整数等都需要编程,而后面的一些复杂题或者开放性问题只要求说出算法,不太需要实际的编程。然后我抱着这种心态去参加了下午的面试,没想到完完全全被虐了。每个面试官只问了一道题,也就是说,一上来就是比较难的题,完全没有简单题热身。

第一个面试官首先看着我的简历问了一些问题。然后看到我在android手机上写过一个程序,问我这个程序是否考虑过扩展性和移植性。我大致讲了一下我在设计程序的时候是怎么考虑这些问题的,接着掏出手机给他展示了一下,他说做的挺酷的,然后简历部分就结束了,询问简历这部分大概只有15分钟。接下来就是做题了,他出的题目是“输出排序二叉树任意节点的后继”,其实这道题不算很难,就算不能完全写出程序,大致框架写出来应该是没问题的,只是我当时生病&紧张,一上来就问这种难度的,和预期的差距太大,心里有点慌。自己写了大概20分钟,写得不是很对,然后他稍微提示了一下,我又根据新的思路写了20分钟,不过一直到最后,也没有把完整的程序写出来。后来想了想,思路有一定难度,程序编起来也比较费劲,思路如下:

节点的后继指的是二叉树中序遍历时,该节点之后遍历到的节点。分两种情况:

1.如果该节点有右子树,则后继是它的右子树中最左边的节点。

2.如果该节点没有右子树并且该节点是它的父节点的左孩子,则后继是它的父节点。

3.如果该节点没有右子树并且该节点是它的父节点的右孩子,则后继是满足“距离它最近的、左孩子也是它的祖先的”祖先节点。如果找不到这样一个节点,那么该节点没有后继,即该节点是排序二叉树中序遍历的最后一个输出。

回学校之后我在网上找了一下,只找到一个大概80行的代码实现,不过这个实现是给排序二叉树加上了parent指针。按照正常的二叉树来做的话,还需要维护一个栈来存储祖先节点,代码量应该有100行左右。

第一面就这么悲惨的结束了,感觉自己完全被虐了,其实还是自己的准备不太充分,而且状态不够好。

接下来是二面,也是一位难对付的面试官。上来看了一下我的简历,基本没问什么,直接就开始做题。题目是:设计一棵多叉树,即一个节点可以有多个孩子节点,不允许用二叉树方法表示。我是从来没有见过&做过类似的题,只能硬想。我提出用孩子,兄弟表示法,但是他说这就是个二叉树,所以不可以。然后我又向他确认了每个节点的孩子数量是否有最大限制,他回答可以有。又想了一会,我把自己的想法整理了一下,跟他说了。简答来说,就是每个节点有几个域:一维父指针、二维孩子指针(存储所有孩子节点指针)、key值。他不置可否,让我继续写一个删除某一节点的操作,我写完之后他又要求输入是根节点,我就又加了一个遍历树的功能。总算是全部都写完了,他说让我分析一下我的代码有什么没考虑到的地方,我指出了几点:需要删除节点、根节点为NULL,需要删除节点不在树里面,需要删除节点的孩子数量+需要删除节点的父节点的孩子数量大于最大数量上限等等。他听了之后,啥也没说,这道题就这么结束了。剩下的二十分钟,他就随意问了我一些简历里面的东西,让我讲解一下adaboost分类器,分析刚才题目里面操作的时间复杂度,甚至还问我怎么看待自己的编程能力。……然后二面就在非常冷气氛中结束了。总结下来就是,他问我,我回答,他无反馈,我问他,他不高兴。

那天走出微软大厦的时候真心感觉和微软无缘了,呵呵。

3.三面

一面二面之后我以为没戏了,没想到微软给我发了三面通知。三面一共一个小时,面试我的是一位女面试官。跟之前一样,首先问了大概5分钟的简历。然后就开始做题,题目如下:

1.两个均大于3的连续奇数,并且都是质数,证明两个连续奇数中间的那个数可以被6整除

解:这是一道数学题,首先,两个连续奇数中间的书肯定是偶数,必能被2整除,因此问题简化成证明中间的这个偶数可以被3整除。因为两个奇数都是质数,因此两数都不能被3整除。假设第一个奇数除以3之后余1,那么因为第二个奇数比第一个奇数大2,因此第二个奇数除以3余1+2=3,因此第二个奇数可以被3整除,这与条件矛盾。所以第一个奇数除以3余2,第二个奇数除以3余1,那么两个奇数中间的那个偶数一定能被3整除,一个数,即可以被3整数又可以被2整除,一定能被6整除。

2.有大量的无序浮点数,取值范围从0到1000,怎样找到这些数的中位数

解:方法类似于桶排序,假设数字的总数量为N,那么根据N的大小,分配每个桶的容量,保证桶的数量不至于大到无法装入内存,并且桶的容量尽量的小。然后将数据依次放入桶中,接下来从最小的桶开始,逐个累计每个桶中数的数量,如果加到第i个桶时,数量首次超过了N/2,那么中位数一定在这个桶中,假设这个桶中浮点数的数量为k,累计的浮点数总数为m(不包括第i个桶),那么只要在这k个数中寻找第(N/2-m)大的数即可。用快排的partition方法就能在o(log k)的时间复杂度内找到。

3.双向链表的逆转

这个比较简单,就不说了,只要代码写的没问题即可。

2013微软暑期实习笔试面试总结相关推荐

  1. 腾讯2013暑期实习笔试面试总结

    我投的是基础研究,感觉自己比较幸运,好像是顺利的走了TST的内推,因为在笔试的时候监考官让我们在试卷右上角标注TST.而且面试通知的也是直接去银科大厦,在腾讯的茶水间面的. 接下来说说面试和笔试. 笔 ...

  2. 2022微软暑期实习笔试

    第一题 模拟,判断enemy是否在上下左右某个方向的半径为radius的范围内,很简单. 第二题 给定一个图,every second度为0或1的节点都会消失,求图从多少second后不再变化. 应该 ...

  3. 2012微软暑期实习笔试

    试卷为英文, 题目形式为20个选择题,1-7难度为easy,打对3分,少选2分,空白0分,打错-2分:8-18,答对5分,少答3分,打错扣3分,空白0分,最后两题貌似答对8分,少答5分 1.对80个题 ...

  4. 暑期实习前端面试笔试总结汇总

    一.面试 腾讯2020暑期实习--前端电话面试(1)回顾 腾讯2020暑期实习--前端视频面试(2)回顾 腾讯2020暑期实习--前端视频面试(3)回顾 阿里巴巴2020暑期实习--前端电话面试(1) ...

  5. 蚂蚁暑期实习前端面试

    蚂蚁暑期实习前端面试 这次面试的是蚂蚁的智能协同事业部,也就是语雀这个产品线,okbug非得给我推,今年到目前为止也就面了两家,再面一家不过分吧,所以okbug就给我推了.2022.03.12上午11 ...

  6. 美团暑期实习前端面试

    美团暑期实习前端面试 这次面试的是美团的到店事业群-平台技术部,在2022.03.01投递之后,直接参加实习招聘的第一次美团统一笔试,因为美团必须是首先笔试了才可以进入下边的流程的,笔试的时间是202 ...

  7. 字节跳动暑期实习前端面试

    字节跳动暑期实习前端面试 现在轮到我这个23届开始真正地找实习了,但是今年的校招情况非常非常差,这个在今年的实习总结再详细说吧.这次投递字节也是非常的有意思,本来我是投递的字节抖音互动部门,然后刚投了 ...

  8. 微软ATC的笔试面试经历

    微软ATC的笔试面试经历 今天总算和一家比较心仪的公司签约了,找工作这么长时间, 经历的正式的面试只有微软ATC.联想和我签的这家公司了,虽然微软在最后一轮被cut了,不过还是想把这一轮笔试和五轮面试 ...

  9. 2015腾讯暑期实习笔试题目

    2015腾讯暑期实习笔试题目 2015腾讯暑期实习笔试题目 (1).层次遍历序列为ABCDEFG的二叉树,其中序遍历的序列是什么? (2).ABCABC为入栈的顺序,倘若出栈的顺序为ABCCBA,那么 ...

最新文章

  1. c++ 编译添加dll_linux下编写C/C++代码须知———串讲
  2. 指定位数%-m.nf与%m.nf的异同
  3. xshell MySQL表备份_shell mysql数据迁移/备份
  4. 为什么MySQL索引要使用 B+树,而不是其它树形结构?
  5. c语言软件幻化,python字符串处理
  6. 【转】数据库软考笔记(一)第一章 计算机硬件基础知识笔记总结
  7. lucene学习5----Field类及辅助类说明
  8. 使用vue搭建项目(创建手脚架)
  9. ios android 性能测试工具,史上最全的 iOS 各种测试工具集锦
  10. 泛泛而谈的菜鸟学习记录(二)—— unity静态和动态批处理
  11. SQL server登录密码重置(忘记密码)
  12. python 圆周率代码_基于Python计算圆周率pi代码实例
  13. nacos的配置管理
  14. 【Mac】动图截图工具Kap
  15. 周涛教授:从窄门进走出宽路来!
  16. 做人的基本原则(看完终身受益)
  17. 从火星的古海洋,读懂蓝星的数据湖之变
  18. C语言中野指针与内存泄漏
  19. Color2Gray: Salience-Preserving Color Removal实现
  20. 极客大学算法课-01

热门文章

  1. Console Utilities API reference
  2. 老友记台词学习笔记 SE01EP02(四)
  3. 第二十一课 新人常见的股市误区:打新一定会稳赚不赔
  4. openstack havana neutron安装
  5. 苹果计算机的优势,买苹果电脑好吗?使用Mac电脑的九大优点与好处
  6. css flex布局,自适应高度
  7. 林元庆离开百度后创办AIbee 估值已达8亿人民币 | 资讯
  8. opencart html模板引擎,Opencart前台HTML、tpl文件的修改,附opencart文件目录
  9. 口臭、牙齿变黄、皮肤粗糙?教你三分钟搞定
  10. C++/C中的Sleep函数