微软亚洲研究院(MSRA)面经

2023-05-16

我最早把简历投给MSRA是在美国交换的时候,大概11月左右吧。不过估计是因为那时候我人也不在国内,11月也是个收实习生的淡季,没什么空位子,所以在美国期间他们也并没有打国际长途联系我。后来1月初回国后,我就又重新上MSRA网站上看了招聘信息,发现创新工程组新开放出了一个职位,所以我就在春节后第一个工作日给他们投了申请表和简历。

第一轮:简单交流

有开放职位就是不一样,在发出简历的大约一个周后我就收到了研究院打来的电话。说起来可以算是第一轮的电话面试吧。因为电话来的很突然,没什么准备,问什么就答什么,也没有过多的紧张。

打来电话的是一个美国人,一上来就是英语,问一些基本的信息:以前做过些什么项目,C++掌握程度怎么样,读过哪些C++的书,最钦佩C++界的什么人啥的。这些都是小菜一碟,尤其是之前还参加过C++的大师Lippman来我们学院办的讲座,拿出来说一说或许更显得与众不同吧。

简单了解过这些背景后,他又问了一下我愿意做些什么工作。我告诉他说,为了出国读研,我希望能接触一些研究性工作,不知他们组具体在做些什么。据他介绍创新工程组是科研和工程结合的部门,扮演技术孵化的角色,可以接触到一些最新的研究成果,也有一定量的编码工作要完成,成果通常是有一定影响力的产品。虽然与纯科研工作有些不同,不过毕竟也算是科研和工程的结合点,我便也表示有兴趣参与,况且别的组在这个时候也没有合适的职位供我候选。

听到我仍对职位有兴趣,他便继续问我有没有online的code sample,我猜他是想看一看平时写代码的风格和质量。想到平时做的项目都在Google Code和BitBucket上托管,于是我向要了他的email地址,并表示将电话之后选一些代码库地址发给他。

最后他简单跟我确认了一下我可以工作的时间段,然后约了下一轮面试的时间。我接到这个电话是在周五下午四点多钟,于是我便提出下周一的下午进行下一轮面试,不过应他要求改成了晚上(灵活的工作时间可见一斑啊)。他还透露说下一轮大体上会考察我的算法、解决问题的能力,并且实际动手写一段代码给他看。

第一轮的面试就这样结束了,没什么特别的,只是简单聊一聊,了解一些情况,约个下一轮的时间,看来下一轮才是重头戏。

第二轮:编程能力

因为约到了后面的周一,我便有了一个周末可以稍作准备。因为知道要写代码给他看,而且在网上搜到有人说要用一个实时现实键盘动作的会议软件,我便专门在notepad++里用C++把基本的算法(各种排序、搜索)和主要的数据结构(链表、树、图等)都写了一遍。还动手实现了一些简单的C库函数(比如atoi(),itoa() 等)。我也又拿出算法书简单温习了一下。

当然,我也上网搜了一些别人的面经。事实证明,实习生的面经其实很少,大部分都是正式员工的面经,看上去都是过五关斩六将,面试周期拖得很长,那真是体力上和脑力上的双重折磨。看了也没什么用,所以我也放平了心态,格外注意基础知识。准备的过程并不是为了要压到题,而是要把自己的大脑调整到一种活跃的状态,能够对一些常见的问题有比较快的反应,或者能够迅速产生思路。

这轮面试因为事先约定了具体的时间,所以越是快到约定时间的时候就越是紧张。不过等到真的电话准时响起的时候,反而也就平静了。

打来电话的仍然是上次面试的美国人,由于上次已经简单聊过,这次便迅速进入正题。他简单地介绍了一个C语言的库函数的功能,同时通过email发来了函数原型、输入、输出,让我来实现一下这个函数(我写的是strtok())。其实并不像网上流传的用什么网络会议软件来看你键盘的动作,他们大概也没空盯着你写这个小函数,他只是说30分钟后再打回来,看看完成的情况。

有时间限制的编程总是有点让人紧张的,一开始我也有点心慌,不过开始动手写了也就好了。30分钟很快过去,我也写也很顺利,他准时打回电话的时候,我便把写好的代码通过email发给了他。

之后的内容便是让我稍微解释一下我的程序,探讨这个函数的一些潜在问题,并把情景扩展到多线程,乃至并行处理。这个过程大概又持续了半个多小时,他关心的可能并不是你真的是不是回答的完全正确,只是想看看你的思路、你的知识程度、以及你能不能把各种知识联系起来。所以,一个有效的方法就是尽量把你想到的东西有条理地说出来。

最后,他表示他要和同事商量一下,可能会有其他同事再联系我,让我等消息就好了。由于那天是元宵节,在电话内外传来的节日的爆竹声中,我也祝他元宵节快乐。于是这一轮的测试就这样顺利的结束了。

第三轮:了解知识领域和背景

我本以为需要要至少两三天后才有消息,结果没想到才过了不到半个小时,我便接到微软另一个工程师打来的电话,要约第二天的某个时间聊一聊——效率还真是高啊。因为时值寒假,我正在北京的家里,所以也就不再电话里谈了,而是约了第二天下午直接到公司去实地见一见吧。

第二天下午,我如约来到中关村新落成不久的微软大厦,开始了第三轮的面试。这次的目的大体就是了解一下我的知识领域大体在什么范畴,以便考虑有没有适合我的工作内容。由于他们所做的项目涉及到使用Win32 API开发某种客户端,而且我之前在何宗健老师的Win程课上也花了很大心思做过纯Win32API的Excel,所以问题就从这里开始。面试我的工程师双手空空,就坐在我对面听我讲,我讲到哪就追问道哪。从消息队列、消息循环到注册表、DLL都问了个遍。此外也简单提及了一些Web内容,比如HTML、CSS、动态网页等。这个过程并不是很难,知道什么说什么就好了。由于涉及的东西比较多、比较杂,感觉稍微有点累而已。

经过了一个多小时的“拷问”,我又被要求在纸上写一小段程序,并且要修改到最好,主要是想看一下编程风格,并且谈谈对编程风格的认知。至此所有面试就结束了。我便回家开始等消息了。

录用与入职

他们办事速度确实比我预想得快很多,我回到家后的第二天晚上,最初联系我的美国人(现在我的Mentor)就给我打来电话,告诉我顺利通过的好消息。最后我们简单寒暄了几句,并且再次最终确认了入职的时间。因为2月中下旬我还要回学校办理一些注册报到的手续,所以我正式入职报到的日子定在了2月29日——这个日子距我投出简历整整一个月。总的来说,整个过程并不难,如果你非问我要准备些什么,我会觉得把基本功练好比什么都重要。

当然,这里的时间并不具有普遍的参考性,主要还要看开放职位的情况。如果有开放职位,而且要人比较急迫,可能消息就来得快一些;如果不是,自然也就慢一些。MSRA不太提供什么转正机会,它常年做实习项目,流动性很大,有了空的职位就会招新的实习生来填补进来。大部分的实习生毕业后就该出国出国,该读研读研了。

其他

在我入职后的第二周,参加了一个小型的入职培训。同参与一场培训的同学各自做自我介绍时,我发现清华的实习生比例明显比别的学校多。年长的到硕士生、博士生,年轻的甚至连大二学生都有,他们几乎都是学校老师、联合课程推荐,或者是学长、同学推荐的。看到这种势头,我心里多多少少有一点点不服气,其实我培养出的学生的实践水平还是很高的,大概只是历史不长,资源和人脉上还没有铺的那么广吧。所有后来我在收到内部的推荐邮件时,立刻也就转发给了学院实习办,希望我同学们多多申请来MSRA实习。向这些一流的工程师和研究员们多多学习,一定会有不小的收获。

顺便说一句,非北京的同学也完全不用顾虑交通和住宿的问题,MSRA会给你提供免费住房,如果你自己租房的话也会给你一定的补助。往返上海的路费也不用你自己负担。所以大家放心来实习就是了。

即便内部推送出来的开放职位不一定常常有,大家也完全可以多多关注www.msra.cn上实习生信息,自己看到有职位就鼓起勇气来投简历吧。我在准备面试的时候看到过一句话,我印象很深:“不需要有太多的压力,也不需要对结果有任何担心和顾虑,大胆的面对它,当做证明自己的一个机会,看看自己到底有多大能耐”。我也希望把这种心态传达给大家,不论你毕业后是要去名企工作、去保研、去考研、去出国深造、还是去创业,决定了就勇敢地投身进去吧。祝大家好运!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微软亚洲研究院(MSRA)面经 的相关文章

  • 什么是IaaS,PaaS和SaaS及其区别

    云计算的三种服务模式 xff1a IaaS xff0c PaaS和SaaS Infrastructure xff08 基础设施 xff09 as a Service xff0c Platform xff08 平台 xff09 as a Se
  • Backup for tire

  • 用QXDM获取log的方法说明

    用 QXDM 获取 log 的方法说明 对于获取 LOG 可能我们会有一些误解 测试人员害怕得到的 LOG 信息不全 而将所有的选项都选上 希望能够得到最全的 LOG 其实不然 受到手机及手机与 PC 的通讯限制 如果选择保存所有的 LOG
  • Python环境变量PYTHONPATH设置和easy_install简单使用

    1 把自己编写的 python模块添加到 PYTHONPATH上 要想让 python解释器找到自己编写的模块 xff0c 则该模块必须 PYTHONPATH上 xff0c 否则在导入该模块时会出现找不到该模块的错误 xff0c 因此必须把
  • 超级有用的git reset --hard和git revert命令

    很多时候 xff0c git新手容易误操作 xff0c 比如 xff0c 在levelIISZ 1 4 dev分支下 xff0c 运行了git pull idc cpp 1 0的结果 xff0c 这样做麻烦很大 xff0c 经常导致mave
  • android 为什么需要签名

    所有的Android应用程序都要求开发人员用一个证书进行数字签名 xff0c anroid系统不会安装没有进行签名的由于程序 平时我们的程序可以在模拟器上安装并运行 xff0c 是因为在应用程序开发期间 xff0c 由于是以Debug面试进
  • 高通平台工具使用

    OverView QPST 综合工具 传输文件 查看 device 的 EFS 文件系统 代码烧录 QRCT 测试RF QXDM 看log JTAG trace32调试 QPST QXDM的使用说明 xff0c 具体的可以看我上传到csdn
  • git创建与管理远程分支

    1 远程分支就是本地分支push到服务器上的时候产生的 比如master就是一个最典型的远程分支 xff08 默认 xff09 1 git push origin master 除了master之外 xff0c 我们还可以随便创建分支 xf
  • pthread_key_t和pthread_key_create()详解

    下面说一下线程中特有的线程存储 xff0c Thread Specific Data 线程存储有什么用了 xff1f 他是什么意思了 xff1f 大家都知道 xff0c 在多线程程序中 xff0c 所有线程共享程序中的变量 现在有一全局变量
  • 2016 Personal Training #11 Div.2 B G J

    UVALive 5963 题意 xff1a 给你n个数 xff0c 如果这n个数满足 xff1a 例如n 61 4第一个数前面有0个数后面有三个数那么这第一个位置数可以为0或者3 xff0c 第二个位置可以为1或2等等 给出的n个数满足则输
  • Ubuntu22.04安装CUDA11.8和CUDNN

    下载CUDA11 8 下载CUDA11 8 选择对应的系统 架构 OS 版本 逐步执行上图命令 编辑环境变量文件 sudo gedit bashrc 配置环境变量 export PATH 61 usr local cuda 11 8 bin
  • ACME.SH 申请SSL证书(免费、自动更新)

    1 获取DNS密钥 xff08 1 xff09 获取域名服务商AccessKey ID及AccessKey Secret 我使用的域名是阿里云 xff0c 故需要去阿里云RAM管理平台获取 xff1a 其他服务商 xff0c 可以去指定的服
  • C语言fscanf函数读取结构化数据

    函数原型 xff1a int fscanf FILE restrict stream const char restrict format span class hljs keyword span fscanf 分隔符是 空格 tab 回车
  • 选择法排序

    选择法排序 xff1a 假设有N个数要按照从大到小的顺序排序 xff0c 选择法就是先设第一个数是最大的 xff08 进行第一次大循环 xff09 xff0c 然后将这个数与数组中剩下的数依次比较 xff0c 如果剩下的数中有比这个数大的
  • debian 10的安装DVD

    准备 下载debian 链接 xff1a https pan baidu com s 1BfyVmF3UgiEyKWzgQO90LA 提取码 xff1a evk9 复制这段内容后打开百度网盘手机App xff0c 操作更方便哦 来自百度网盘
  • Linux 最常用命令汇总

    常用命令 一 文件操作进入文件夹查看文件夹下文件创建文件夹复制文件移动文件删除文件查看文件内容实时查看文件内容创建文件编辑文件追加文件内容添加文件内容替换文件内容清空文件压缩解压文件分割文件文件合并文件对比显示文件树软链接一次执行多个she
  • CSP官网题目——炉石传说

    问题描述 玩家会控制一些角色 xff0c 每个角色有自己的生命值和攻击力 当生命值小于等于 0 时 xff0c 该角色死亡 角色分为英雄和随从 玩家各控制一个英雄 xff0c 游戏开始时 xff0c 英雄的生命值为 30 xff0c 攻击力
  • 【C51自学笔记】定时器

    CPU时序 xff1a v 振荡周期 xff1a 为单片机提供定时信号的振荡源的周期 xff08 晶振周期或外加振荡周期 xff09 v 状态周期 xff1a 2个振荡周期为1个状态周期 xff0c 用S表示 振荡周期又称S周期或时钟周期
  • Codeforces Round #706 (Div. 2)

    代码 xff1a span class token macro property span class token directive keyword include span span class token string lt iost
  • Codeforces Round #366 (Div. 2) A和B

    昨晚打了一个小时CF感悟最大的就是英文真是菜的抠脚 xff0c 第二题看了半天再结合样例解释才知道是什么意思 xff0c 第一题第一次提交代码输出漏写个单词真是醉了 xff0c 两题都掉分果真CF A Hulk 题意 xff1a 如果是1就

随机推荐

  • Matlab进行多项式的因式分解

    clear all span class token punctuation span clc syms x span class token punctuation span f1 span class token operator 61
  • 【linux】详解linux 下安装软件tar.gz, rpm,deb的方法

    在Linux系统中 xff0c 软件安装程序比较纷繁复杂 xff0c 不过最常见的有两种 xff1a 1 xff09 一种是软件的源代码 xff0c 您需要自己动手编译它 这种软件安装包通常是用gzip压缩过的tar包 xff08 后缀为
  • 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第 几号的那位。

    问题 xff1a 有n个人围成一圈 xff0c 顺序排号 从第一个人开始报数 xff08 从1到3报数 xff09 xff0c 凡报到3的人退出圈子 xff0c 问最后留下的是原来第 几号的那位 解决思路 我的解决思路是先给这n个人排序生成
  • 【AtCoder】【模拟】【模型转化】Camel and Oases(AGC012)

    题意 xff1a 有一个骆驼 xff0c n个绿洲遍布在数轴上 xff0c 第i个绿洲的坐标为x i xff0c 保证x i 单增 骆驼的驼峰有体积初始值V 当驼峰的体积变为v的时候 xff0c 驼峰中至多只能够存储v L的水 骆驼希望走完
  • windows10远程桌面登录ubuntu20.04

    一 ubuntu系统共享设置 设置远程共享密码 xff0c 密码要记住 xff0c 一会在windows远程登陆的时候 xff0c 第二步要输入密码 二 安装xrdp sudo apt get install xrdp 三 安装dconf
  • 配置ArchLinux系统

    配置ArchLinux系统环境 文章目录 配置ArchLinux系统环境配置 96 AUR 96 中国源桌面环境安装登录管理器安装字体与其他附加组件安装驱动安装中文输入法安装 xff1a 优化配置 96 TRM 96 磁盘优化 96 tlp
  • Linux字体推荐

    Linux字体推荐 以下是Linux推荐的字体在不同Linux发行版的不同包装名称 xff0c 每款都很精致 xff0c 请欣赏 xff01 ArchLinux字体软件包名称Debian字体软件包名称Fedora字体软件包名称Gentoo字
  • 安装配置fcitx输入法

    安装配置fcitx输入法 文章目录 安装配置 96 fcitx 96 输入法安装输入法引擎可用的 96 fcitx 96 输入法包括 xff1a 中文日文其语言 可用的 96 fcitx5 96 输入法包括 xff1a 中文日文其他语言 输
  • 使用adb安装或卸载卸载手机系统应用

    使用adb安装 卸载手机系统应用 准备工具 在浏览器下载并打开带有adb的工具 xff1b 手机打开 开发者选项 xff0c 在 开发者选项 中开启usb调试并连接电脑 xff0c 手机端选择 传输文件 xff1b 在手机端点击 一律允许计
  • OpenWRT好用的插件

    PPP xff08 连接Internet共享 xff09 xff1a 用于让路由器到外网的连接 xff1b 资源占用小 xff0c 官网有相应版本可供下载 xff0c 软件包名称为 ppp mod pppoe Adblock xff08 广
  • Gentoo Linux查看已安装软件包

    Gentoo Linux查看已安装软件包 对于Gentoo Linux xff0c 需要一个名为Equery的软件来查看已安装软件包的信息 Equery是一个用于简化常用 Portage 操作的工具 此外 xff0c 可以显示包依赖项 元数
  • 2016 Personal Training #4 Div.2 A B C G H

    xff21 URAL 2091 题意 xff1a 有四个类别 xff11 xff0e xff21 和 xff22 都包含 xff0c xff12 xff0e 只包含 xff21 不包含 xff22 xff0c xff13 xff0e 只包含
  • Gentoo Linux系统清理

    Gentoo Linux系统清理 一 清除源码包文件 清除已经下载的软件包 xff0c 步骤如下 xff1a 在这一步中 xff0c 所使用的工具是rm命令 xff0c 将会强制删除 使用前 xff0c 请仔细检查所要删除的目录是否正确 x
  • Gentoo Linux卸载无用内核

    Gentoo Linux卸载无用内核 移除内核源代码 在安装新的内核并正常工作之后 xff0c 旧的内核就可以移除了 emerge的 depclean 选项 xff08 缩写为 c xff09 可以用来移除所有旧的或者不用的软件版本 xff
  • flink学习(一)---Maven配置简单易学

    一 下载Maven 进入官网http maven apache org 点击Download 进入官网之后 xff1a 我演示的是windows的配置步骤 xff1a 1 将安装包放入C盘 xff0c 进行解压 xff0c 将maven文件
  • eclipse括号风格改为独占一行风格

    一 原Eclipse生成的花括号 情形 public class test public static void main String args System out println 34 Eclipse 的花括号 xff08 brace
  • SecureCRT按Ctrl+S后假死问题

    SecureCRT作为著名的SSH客户端 xff0c 经常用于登陆远程服务器 在上面编辑文本 xff0c 特别是用vi打开两个文本 xff0c 并且需要切换时 xff0c 很容易出现卡死的现象 xff0c 不能接受任何的键盘输入 很是郁闷
  • dll和lib(包括静态链接库和与dll同时生成的lib)

    1 xff1a 神马是Dll和Lib xff0c 神马是静态链接和动态链接 大家都懂的 xff0c DLL就是动态链接库 xff0c LIB是静态链接库 DLL其实就是EXE xff0c 只不过没main 动态链接是相对于静态链接而言的 所
  • Doxyfile的使用

    Doxygen是一个开源软件 xff0c 它类似javadoc xff0c 能够根据源代码和源代码中特定格式的注释 xff0c 生成文档和UML图 xff08 如果要生成UML图 xff0c 需要下载可选组件Graphviz xff09 的
  • 微软亚洲研究院(MSRA)面经

    我最早把简历投给MSRA是在美国交换的时候 xff0c 大概11月左右吧 不过估计是因为那时候我人也不在国内 xff0c 11月也是个收实习生的淡季 xff0c 没什么空位子 xff0c 所以在美国期间他们也并没有打国际长途联系我 后来1月