- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(word)微软工程师助理面试经验分享
微软工程师助理面试经验分享这篇文章是我应聘微软亚洲研究院(MSRA)暑期实习的“面经”,由于二位面试官都没有要求我对/zixun/msztjq/面试过程必威体育官网网址,因此我在这儿写出来,但我不想写成纯面经,于是标题后又多了个“总结”。另外,我没去北京,所以两次“/zixun/msztjq/面试”都不是面对面的面试。上周五,我直接把简历投给了MSRA创新工程组(Innovation?Engineering?Group)的邹欣老师,邹老师很快就安排了/zixun/msztjq/面试,正因为太快了所以我错过了——投简历的当天下午就安排了面试,但我去K歌了……由于第二天是周末,所以一面推迟到下个星期的星期一。第一轮的面试官居然是Vczh,惊讶了一下。一面是聊天的形式,结果聊到了school?days……用Vczh的话说就是“反正面试也就是想摸清楚对方的底细而已,形式都是不重要的,啊哈哈哈”。Vczh对?Functional?Programming?也很感兴趣,所以我们首先聊了这方面的话题,比如问我用FP做过什么,有没有折腾过?Church?number?之类的,从Haskell聊到LINQ,Vczh还展示了他在SQL?Server组工作时写的代码。然后Vczh就开始介绍他们现在正在做的项目。之后Vczh说Feedback已发出,充分肯定了我的编程能力和passion,接下来就开始闲扯了,北京烤鸭啊、潮汕牛肉丸啊之类的……总的来说,一面是在轻松加愉快中度过了~一天之后,另一位面试官打电话跟我约了时间,第二天2点,电话很准时地打了过来,开始了第二次面试。我迄今一共参加过5次面试(百度3次,微软2次),这次面试是我最紧张的一次,过后回想起来,也是水平最高的一次,所以在这里详细地说一说。简单地寒暄之后,面试官首先让我做个自我介绍,说说自己的优缺点。我说自己最大的优势是就是热情和兴趣,Software?Development是我愿意做一辈子的事业,并且基础好、基本功扎实;劣势就是缺乏工程经验,没有开发较大型软件经历。尽管如此,面试官还是让我介绍一下自己做过的最满意的软件,我就简单介绍自己写过的一个非常mini的操作系统。面试官问我实现了什么功能,有什么不满意的地方,如果以后继续开发的话会从哪些方面改进。答曰,这个mini?OS非常简单,只实现了引导启动、进入保护模式、多进程、TTY和一个naive的文件系统;不满意的地方就是内存和文件的管理太不灵活,虽然能实现多个进程同时运行,但进程的添加是写死在代码里,不能动态添加和退出,而文件虽然能动态的添加,但只能添加固定大小的文件;如果以后改进,会首先从内存管理入手,增加动态添加进程的功能。(有个小细节就是,面试官还问了我这个mini?OS的引导过程,百度二面的面试官也问了我同样的问题~)既然说到操作系统,面试官接着又问了个底层的问题:一个程序,访问函数中某个变量时,操作系统做了什么事情?我的第一反应是这个变量是存在可执行文件中,所以在访问这个变量的地址时,如果相应的页面加载到内存中了就可以直接访问,否则去交换区里头找;如果连交换区看里都没有,就上硬盘里找……说到这我才意识到,面试官问的是函数中的变量,即局部变量!刚才说的都是错的!哎哟我紧张得要命,赶紧解释说不好意思,刚才说错了……面试官很nice地说没关系,把你知道的说出来就行。我松了口气,把C语言运行时函数调用引起的栈帧变化解释了一下,访问局部变量就是访问fp加上相应偏移的地址。面试官没有纠着我的错误,反而顺着问下去:刚才你说到页错误和交换区,那么操作系统如何处理页错误的呢?交换区的作用是什么?我说有两种情况会引起页错误,一种是访问不存在的页面、一种是对只读页面执行写操作,刚才说的页错误是缺页错误,就是第一种情况。这种情况下,被访问的内存地址会被写入CPU的寄存器中(CR2),操作系统可以访问这个寄存器从而知道引起缺页错误的内存地址,然后在交换区和硬盘中寻找相应的页面。而交换区的作用是利用局部性原理,存放被操作系统置换出来的页面,在物理内存紧缺的时候,某些久不使用的页面就会被交换到交换区,这些页面仍然可能在将来被使用,放在交换区中可以更快地被找到。接下来的阶段,/zixun/msztjq/面试提出两个问题,并让我给出解决方案(中间有个小插曲,面试官一度听不清我说话,我更紧张了-0-,只好去阳台,所以后面的面试我一直坐在阳台的地上……)。第一个问题与内存分配相关。面试官先问我会不会C和C++,我说必须会啊……然后问new和malloc的区别。我说它们的一个主要区别是用new来为自定义类型对象申请空间时,会自动调用默认构造函数,但malloc只是单纯的分配内存,不会执行默认构造函数。面试官说好,现在让你设计一个带有alignment功能的malloc,申请内存
文档评论(0)