<微软面经>2017上海APGC CSS实习共四面回忆录

原创博客,转载请联系博主!

  

  今年微软在线笔试坑了,东拼西凑一共140分,心想哎自己和微软肯定无缘了的时候,忽然收到了微软的email问我愿不愿意接受调剂去CSS部门,抱着“既然笔试坑爹了,那好歹得去微软看两眼的心态就去接受了调剂,然后就是一面二面三四面,遂作回忆录如下(由于我写下这篇博客的时候,时间已经过去了一周,所以有些问题可能会有遗漏):

 

(前三面为SQL Server组)

第一面技术面:

1. “首先用英语做一次自我介绍吧”,于是我就用我的蹩脚的英语勉强完成了个自我介绍,这里应该扣了些分。

2. 第一位面试官对我的博客很感兴趣,所以接下来的几个问题基本上都是围绕我的博客问的

  2.1 她对我是否会做heap dump深表怀疑,我说我做heap dump只是java初级的操作,dump下来后结合jhat分析heap里面哪些对象的存在个数过多并且导致fullGC次数过多的话,就可以怀疑程序之中是否存在内存泄漏,当然工具也可以使用第三方的,功能会更齐全更容易上手,比如MAT。

  2.2(这里具体的问题我有点记不清了)大概是让我描述什么是栈,什么是堆。我说这个要从汇编指令的角度分析最客观,一个程序逐步执行的本质是IP寄存器地址自增逐条访问内存之中的指令,每次函数的调用会将当前IP压入运行栈中,然后再将局部变量压入栈内跳转到其他函数继续进行,这种方式是stdcall,函数调用的方式一共有4种:stdcall,cdecl,fastcall,其中cdel依赖于bp,sp寄存器,c++在此基础上又补充了thiscall,就是在压入IP之前先压入对象的地址,那么一个完整的程序的生命周期无非就是栈空间的变化,栈的本质是记录计算机自身的运行状态。堆的话,应该是依赖操作系统的调用,大多数情况好像是malloc,c++虽然补充了new关键字,但是本质上底层调用依然是malloc,而且c++也比c多了freestore的概念,简单的堆的本质是一个树状的数据结构,在linux中基于堆的内存动态分配,是基于伙伴算法和slob维护的。

3. 情景假设题,假设我使用的是服务器a,而部署在服务器b上的数据库现在出现了问题无法正常连接,要怎么样解决这个问题?我:要解决问题应该自底向上去分析,首先是链路本身的网络是否连通,这个需要一些网络诊断工具去协助我们判断,如果是系统自带的工具的话可以使用ping或者是telnet,但是ping发送的是icmp包,在绝大多数硬件防火墙都是会屏蔽掉icmp包的,所以使用telnet直接尝试建立tcp链接应该是最直截了当的做法。其次要检查os kernel本身的问题,这里首先是检查网卡是否正确放进了pci槽里(lspci),其次检查网络驱动安装是否正常(lsmod,dmesg),如果出现了问题尝试重新安装网络驱动,还有要检查本身的网络安全软件是否限制了一些数据包规则,这个坑我在携程是遇到过的,当时内网连不上smtp站25端口,问题层层排查,最后锁定在了os层,在安全部门沟通后修改了麦咖啡的规则最后fix掉了这个问题。最后如果网络和本机都没有问题的话就ssh到服务器的部署机上检查b的配置状态。

4. 讲讲数据库的索引:我说我对数据库真的了解的不多,oracle的db索引貌似大体是使用b树组织的,而其他主流的数据库是使用b+树及其变形的,论其本质嘛应该是时间和空间的trade-off,使用冗余的数据去加速数据的增删改查的过程。

 

第二面技术面:

1. 聊聊TCP吧:(我擦嘞,TCP这么大的概念怎么聊啊!)嗯,TCP应该是对现代网络通讯作用最重要的协议之一了,然后我就把TCP能想起来的东西都说了一遍,印象里貌似说了挺久的,也应该还算挺全了。

2. 编程题:输入一个数字,如果被3整除输出bat,如果被5整除输出man,如果同时被3和5整除的话输出batman。(我擦这题好简单!)我就按着他的描述直接翻译成了c语言手写下了代码,但是他说这并不是他想要的答案,叫我继续思考,经过一段思考之后,得出了结论:

if(!num % 3) printf("BAT");

if(!num % 5) printf("MAN");

3. 脑筋急转弯: 一个密闭房间有3个灯泡,在房间外面有3个开关,问怎么样只进入一次房间就知道哪个开关对应哪个灯泡呢?

我:这个好像思维需要发散一下,从线性代数的角度去看,这个问题的系数矩阵的秩小于需要解的向量长度呀!需要额外找到一个条件,那么是不是“蹂躏”一个开关,最后导致房间内的某个灯泡爆掉,再开一个再进入房间内检查呢?面试官:嗯,勉强算一个答案。

4. 编程题:一个单向链表,a->b->c->d->e,怎么在c的位置从链表中删除c(把链表变成a->b->d->e)呢?

把c的地址内存区域覆写成d的数据,当然这里还需要注意一个内存泄漏的问题,在覆写之前把d的数据复制到栈空间,然后再free掉d的数据,再进行覆写就可以完成这次连表的更新操作了。

5. 谈一谈对css部门的理解

然后面试官给我介绍了一些css工作的一些情况,并且把介绍了一些新员工培养的项目比如MACH等等。

第三面经理面:

(这里考验的基本上都是软技能)

1. 英文进行一次自我介绍

2. 英文讲一下前面的面试,讲讲微软有哪些地方让你做的不满意

3. 讲讲你在携程的这段时间的收获

4. 讲讲对技术支持的工作的理解,哪些是你应该注意的

当天下午面完了以上三面之后,又过了一天接到了HR的通知,恭喜我因为在前面的面试中表现得比较好,被经理推荐去了Azure部门,于是就有了第四面:

第四面Azure经理面:

第四面非常轻松,基本上是在聊天的状态,经理和我介绍了很多关于Azure的CSS工作内容。然后我就提了一些关于Azure业务的问题,包括是否可以接触到Azure的源代码等等,第四面结束后不过半小时HR就来电话,告知我不出意外的话是在3天之内拿到offer,准备签定意向书。

有点陷入了迷茫,该选择微软AzureCSS还是阿里淘宝java研发..

ps: 最近身边的朋友据说有点黑携程的言论,我是表示坚决反对的!携程真的是一家非常非常好的雇主,无论是工作压力或者员工福利都是上上层的!不服是伐?看我们员工聚餐!(不好意思,找了找以前照片没找到,就从同事朋友圈扒了几张!来自外滩附近某五星级酒店!)携程真的是好,有点依依不舍..

 

 

时间: 2024-10-25 19:48:44

<微软面经>2017上海APGC CSS实习共四面回忆录的相关文章

2017上海QCon之旅总结(下)

本来这个公众号的交流消息中间件相关的技术的.十月去上海参加了QCon,第一次参加这样的技术会议,感受挺多的,所以整理一下自己的一些想法接公众号和大家交流一下. 三天的内容还挺多的,之前已经有上篇和中篇,这一片是最后一篇,内容包含以下三个议题: <携程第四代架构之软负载SLB实践之路> <恒生中间件如何助理证券经纪业务发展> <Heron的Exactly-Once实现> <携程第四代架构之软负载SLB实践之路> 这场分享主要介绍了携程软负载的设计和实现. 首先

2017 上海车牌(沪牌)标书购买攻略

本文介绍 上海车牌标书购买的攻略,本文会一直跟随政策而更新, 希望对大家有所帮助   本文2017年4月更新 阅读目录 第一步:确认自己是否有资格购买标书 非上海户籍:   需要上海市居住证,驾照,三年社保或者个税(社保,可以自己上上海市社保局申请) 上海户籍:    只需要有驾照就行 名下没有沪牌 (每个人只能有一张沪牌) 驾照没有扣12分,也没有5次违规 一定要确认自己的有资格再去申请,现在购买标书的政策越来越严格 第二步:网上申请资格 1. 打开国拍官方网站 http://chepai.a

微软 Visual Studio 2017 中文正式版下载 – 免费社区版/专业版/企业版

作为“宇宙最强”的集成开发环境 IDE,微软的 Visual Studio 不仅破天荒发布了 macOS 版本,如今终于也推出了其 Windows 的最新版本—— VS 2017 正式版了.这对开发者来说无疑是个大消息,无论你是 Windows 还是 Mac 的用户,我们现在都能立即下载到微软最新版本的 VS 开发工具尝鲜了!根据微软的介绍,Visual Studio 2017 相比此前的 Visual Studio 2015 进步巨大,而且还包括一系列的新功能……Visual Studio 2

前端学习笔记2017.6.12 CSS控制DIV

前一篇文章中用div布局了豆瓣东西的页面,如果用html代码表示的话大概是这个样子的 <!DOCTYPE html><html><head></head> <body> <div><!--banner-->    <div></div><!--banner1-->    <div></div><!--banner2--></div> <

2017上海幼升小、小升初 民办学校开放日汇总

包玉刚实验学校 地址:长宁区武定西路1251弄20号(小学部)松江区三新北路900弄1800号(中学部) 开放日信息: 小学部中文组:11月10日 周四 9:30-11:00.11月24日 周四 9:30-11:00: 小学部英文组:10月25日周二 9:30-11:00.11月08日 周二 9:30-11:00 中学部:10月12日(周三)下午2:00-4:00.10月26日(周三)下午2:00-4:00 可在学校官网预约报名 http://www.ykpaoschool.cn/cn/admi

2017年要学习的三个CSS新特性

2017年要学习的三个CSS新特性 这是翻译的一篇文章,原文是:3 New CSS Features to Learn in 2017,翻译的不是很好,如有疑问欢迎指出. 新的一年,我们有一系列新的东西要学习.尽管CSS有很多新的特性,但有三个特性令我最激动并进行学习. 1. Feature Queries(特性查询) 在这之前我写了一篇关于Feature Queries的文章the one CSS feature I really want.现在,它已经在这里了!目前所有主流浏览器都支持特征查

CSS 变量教程(转载)

作者: 阮一峰 日期: 2017年5月 9日 今年三月,微软宣布 Edge 浏览器将支持 CSS 变量. 这个重要的 CSS 新功能,所有主要浏览器已经都支持了.本文全面介绍如何使用它,你会发现原生 CSS 从此变得异常强大. 一.变量的声明 声明变量的时候,变量名前面要加两根连词线(--). body { --foo: #7F583F; --bar: #F7EFD2; } 上面代码中,body选择器里面声明了两个变量:--foo和--bar. 它们与color.font-size等正式属性没有

Css之导航栏下拉菜单

Css: /*下拉菜单学习-2017.12.17 20:17 added by ldb*/ ul{ list-style-type:none; margin:0; padding:0; overflow:hidden; background-color:#333; /*固定在顶部*/ /*position:fixed; top:0; width:100%;*/ } li{ float:left; } li a, .dropbtn { display:inline-block; color:whi

2017年最权威的1000集大型web前端视频教程(爱创课堂出品)文后附录视频下载链接

2017年最新爱创课堂前端开发课程介绍爱创课堂Web前端开发工程师培训-价值1万8课程 资料持续更新中,第一时间领取请加QQ2079576908 Web前端开发工程师,主要职责是利用HTML.XHTML.CSS.JAVAScript.FLASH等各种Web前端技术进行客户端产品的开发.完成客户端程序(也就是浏览器端)的开发,开发JavaScript以及Flash模块,同时结合后台开发技术模拟整体效果,进行丰富互联网的Web前端开发,致力于通过技术改善用户体验. 第一阶段:页面制作基础 从这一基础