人力资源微软面试 经历资料.docx
- 文档编号:9407080
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:9
- 大小:25.52KB
人力资源微软面试 经历资料.docx
《人力资源微软面试 经历资料.docx》由会员分享,可在线阅读,更多相关《人力资源微软面试 经历资料.docx(9页珍藏版)》请在冰豆网上搜索。
人力资源微软面试经历资料
武术期末考试试卷微软面试分享:
开篇
欧洲西部教学反思前两天一个朋友帮着推荐了一个微软的职位,先参加了面试,然后周三收到了offer,在这里把面试的过程和如鹏网的同学们分享一下。
因为我是有工作经验的人,所以走的是社会招聘的流程。
如鹏网的同学们大部分都是在校生,和校园招聘比起来,社会招聘的流程少很多,招聘的形式也有一定的差异,但是相信我的面试经历也会对大家有一定的帮助。
在听到这个职位的机会的时候,我第一时间准备了一份简历,就像我在《软件方向应届生求职面试指导》这个视频教程中讲的那样,我根据这个职位的特点对我的简历进行了个性化的修改,将职位描述(JobDescription)中强调的技术放到了明显的位置,并且进行详细的说明,将招聘人员最关心的信息放到了他们第一眼就看到的位置,做到“三秒之内吸引招聘者”。
收到我的简历以后,微软给我安排了面试,因为从通知面试到最终面试还有几天时间,我就按照我简历中写的内容把简历中写到的自己的技能、项目经验重点复习了一下,并且对于JobDescription提到的、而我不具备的技能也稍微了解了一下。
面试之前我提醒自己:
“一定要和面试官谈笑风生!
像平时和同事交流一样,这样不紧张了,那么就可以超常发挥”,我做到了。
面试一共分为四轮。
第一轮面试侧重于专业基础知识,第二轮面试侧重于具体技术,第三轮侧重于软件测试和其他技能,第四轮则是BOSS面试,侧重于职业规划、项目经验、待遇等。
每轮面试1小时,共持续约4个小时。
第一轮面试。
面试官首先问“你最熟悉的语言是什么”,我回答“很多语言都用过,最近两年最长时间用的语言是C#和Java,不过自己并没有明显的语言偏好,毕竟语言只是表达想法的工具”,我这样回答的目的是让面试官知道我有比较强的适应各种语言的能力,同时也将这个职位中会重点要求的C#放到了明显的位置;
由于这份工作和高性能计算相关,因此面试官接着又问了“什么样的程序可以并行化”,由于之前做了充分的准备(以前对高性能计算了解不多,但是在面试之前突击了一下关于高性能计算的东西,这叫“不打无准备之仗”),因此回答“任务之间互相依赖的就不能并行化,而任务之间不依赖的则可以并行化,比如计算斐波那契数列,由于各步之间互相依赖,因此无法进行并行化,而用累加的方法计算1到N的和,由于可以分成若干组独立的运算,然后运算结果再进行汇总,因此可以进行并行化”;
接着面试官又问了“一个进程是运行在一个CPU上效率高还是运行在多个CPU上效率高”,由于我对多核编程不是很熟悉,本着“不懂得就说不懂,不要不懂装懂”的原则,我首先向面试官说明我对多核编程不熟悉,但是还是说出了自己的一些理解,说“一个进程在多个CPU上运行的话,由于系统需要在多个CPU之间进行时间片的分配、切换、调度,因此比在一个CPU上效率低”,面试官纠正了我的说法,他说“一个进程在多个CPU上的话可以让多个CPU的原件都充分运转起来,因此比运行在一个CPU上效率高,还有一些进程漂移的问题”,这个问题我的回答虽然不是正确的,但是我“不懂得就说不懂,不要不懂装懂”,而且也谈了自己的分析,也表明自己对“时间片”等计算机原理的东西有一定的了解,没有给面试官带来不好的印象,同时问到这个问题面试官也了解到我对多核编程了解不多,因此也就不会继续问这方面的问题,而会更多向其他我可能熟悉的方向问,这相当于“引导面试官”;
我的简历中写了做过WMI方面的开发,因此面试官接着问“WMI不能做什么”,一般的人都会问“WMI能做什么”,这样的话一般就回答“WMI能做性能的监控、资源的管理等”就可以了,而这个面试官问“WMI不能做什么”的目的很明显,就是让我进行更深层次的阐述,因此我就回答“Windows能做到的WMI就能做到,Windows做不到的WMI也做不到,因为WMI只是对WindowsAPI、COM对象等的包装,只是一个胶水”,这样回答基本把我对WMI的深层次理解说了出来;接着面试官问“我在用WMI的时候碰到过这个问题:
有时候执行一个查询的时候第一次很慢,以后就快了”,我说“WMI的架构是这样的:
WMI中有一个CIM做为类似于数据库的东西,然后有Provider向CIM中提供数据,然后WMI查询器去CIM中查询数据。
第一次慢的原因是因为LazyLoad,第一次调用的时候Provider先去进行数据的准备,把找到的数据放到CIM中,然后再查询,这样以后再执行WMI查询的话就快了。
这只是我的猜测,我没做过验证”,我认为这样回答是比较好的,首先我将我了解的WMI的架构说了出来,然后说了我对于“第一次慢”的理解,但是这个理解是我推测出来的,没有得到验证,因此我强调“只是我的猜测,我没做过验证”,那么及时我的推测是错的,面试官也不会因此而降低给我的打分,反而会因为我善于进行分析、推测而给我加分。
接着面试官把他的笔记本电脑放到面前说“我给你出一个很简单的题,你把它用程序实现出来”,他的题是“有一个字符串是用空格分隔的一系列整数,写一个程序把其中的整数做如下重新排列打印出来:
奇数显示在左侧、偶数显示在右侧。
比如‘2783229’显示成‘7392822’。
要求在30分钟只能运行起来”。
说实话拿到这种题,我也懵了。
虽然我经常和咱们如鹏网的同学们说“要学好数据结构、算法这些基础知识”,但是工作很多年了,编的很多软件使用的都是语言、第三方提供好的函数库、类库,突然让自己写这种算法的题目也一时无法适应过来。
不过很快我心态就调整过来了,就像我在《软件方向应届生求职面试指导》那个视频教程中提到的“面试官让当场写程序的时候不是只有‘写出来’与‘写不出来’两种结果,而是面试官是想看你怎么思考、解决问题的”,而且我也提到过“面试时写代码一定要把边界条件、异常情况考虑到,并且和面试官解释在做什么、为什么这么写”。
我定了定神,想“具体算法怎么实现不管,但是要先检查特殊情况,也就是给出的字符串是否是‘用空格分隔的一系列整数’”,因此我先编写了如下的校验代码:
Stringinput=”7392822”;
String[]items=input.Splits(‘’);
foreach(Stringiteminitems)
{
inti;
if(!
int.TryParseInt(item,outi))
{
thrownewException(item+“不是合法的数字,给出的字符串格式错误”);
}
}
很显然,这段校验代码的时间复杂度为O(N),那么整体的复杂度不可能比O(N)更低了,因此下面要写的代码的复杂度只要不高于O(N)就可以了。
然后想了几种可能的解答思路,包括根据字符串的特点直接进行操作、排序等,但是都没想到非常好的方法。
因为有一段时间没写C#程序了,程序调试了几次才编译通过,而且也不太习惯面试官的笔记本电脑的使用,把上面的代码调试通过并且进行刚才的下一步的筹划已经过去10分钟了,我打算在20分钟之内把这道题做完,这样就能有更多时间和面试官交流自己擅长的领域。
既然没想到更好的方法,那只能写“老土”的代码了,毕竟能够运行起来是第一位的。
我写了下面的代码:
List
List
foreach(Stringiteminitems)
{
inti=int.ParseInt(item);
if((i%2)==0)
{
listOdd.Add(i);
}
else
{
listEven.Add(i);
}
}
List
原理很简单,就是建一个奇数队列、一个偶数队列,从前向后扫描各个整数,依次判断整数,如果是奇数则将将整数放入奇数队列,否则放到偶数队列。
最后将偶数队列拼到奇数队列之后形成最终的“奇数在做,偶数在右”的队列。
接着我发现在校验合法性和判断奇偶的地方我遍历了两次items数组,因此我又把这两部分代码合并,这样就只用遍历一次,虽然没有降低复杂度,但是还是降低了执行的步数:
Stringinput=”7392822”;
String[]items=input.Splits(‘’);
List
List
foreach(Stringiteminitems)
{
inti;
if(!
int.TryParseInt(item,outi))
{
thrownewException(item+“不是合法的数字,给出的字符串格式错误”);
}
if((i%2)==0)
{
listOdd.Add(i);
}
else
{
listEven.Add(i);
}
}
List
写完这个程序调试通过。
又想到这个职位要求有一定的测试能力,因此又写了一个单元测试用例。
一看表用了15分钟。
因此把这个程序给面试官看,给面试官解释了我的思路。
面试官说“不错,能在面试的压力下写出可以运行的程序已经很不错了,而且还对异常条件进行了校验,编写了单元测试用例,也用了List、Linq等C#中的高级技术。
这道题确实只能将时间复杂度最多优化到O(N),但是你这里用了两个额外的队列进行存储,空间复杂度为O(N),我最期望的解答结果是你能用交换排序等排序的思路进行解决,这样最多占用一个中间变量就可以实现这个程序,无需消耗额外的内存空间。
”因此在这里提醒如鹏网各位同学,很多像我这样的人写程序的时候总是想着降低时间复杂度,却忘了空间复杂度也是要去尽力降低的。
不过据后来面试官说,他当时对于我在那么大的压力下能写出可以运行程序比较满意,因为这题主要就是想考察我在将近一年没有写C#程序的情况下会不会“手很生”。
接着,面试官又出了一个题“编写一个区间类,并且编写一个进行区间加运算的算法”,由于距本轮面试结束仅有15分钟了,因此面试官说“大体体现你的思路就可以”,因此我首先编写了一个区间类Region,并且为它添加了MinValue、MaxValue两个属性和一个构造函数。
接着我想进行加号的运算符重载,这样使用Region类的人用r3=r1+r2的方法使用了,但是我忘记C#中运算符重载的语法了,因此我就和面试官“我想写一个运算符重载方法,但是忘了C#中运算符重载的语法”,面试官说“没关系,不用关心具体语法,把想法表达出来就可以”,因此我写了一个Add方法:
publicRegionAdd(RegionanotherRegion)
{
//…
}
然后就和面试官交流这个方法实现的细节,包括怎么表示开闭区间、怎么考虑边界条件等问题,而且在面试官说道“区间中的值可能有整数、浮点数、枚举等很多类型”的时候,我抢在他之前说出了“可以用范型来解决,这样实现了IComparable接口的类都可以使用这个Region类”,这向面试官表示我知道范型、IComparable接口等知识。
面试最后面试官说“刚才问你的问题中你没有完全回答出来也没关系,我们只是想从各方面了解你”。
第二轮面试
这轮面试主要侧重对于具体技术点的考察。
问了很多技术问题,由于这些技术问题可能大部分咱们如鹏网的同学都没接触过,因此我这里只讲具体的对应届生求职有用的信息。
下面列的问题我的回答并不是正确答案,只是对当时面试时我回答的一个真实记录而已。
问题1:
看你用过Powershell,能说说Powershell的运行过程吗?
我的回答:
Powershell其实也是编译执行的(这句话一出来,面试官的眼睛就亮了,问了一句“是吗?
”),然后我就将我分析的为什么Powershell也是编译执行的分析过程讲给他。
从这个问题开始我把面试官引导到自己擅长的各个技术的原理、运行机制的层面上。
问题2:
说一下netframework程序的工作过程。
我把CLR、mscoree、mscoree的main、JIT编译等讲了一通,唾沫横飞,基本把面试官“喷晕了”。
问题3:
在以太网中怎么优化网络通讯的效率?
我的回答:
改用UDP协议,然后在需要可靠通讯的地方用UDP协议自行实现Ack。
面试官说:
因为TCP协议是需要三次握手的,但是在HPC通讯中这个三次握手是没必要的,因此微软实现了一个WinSockDirect的技术解决这个问题。
问题4:
看你的项目中用到了SNMP协议,说一下用到了哪些地方?
我就把使用SNMP进行数据汇报,服务器控制agent端等讲了一下,并且讲了MIBOID等我知道的SNMP相关的东西。
问题5:
在团队中有几个人。
我的回答:
以前在金蝶中,整个EASTeam是100人左右,但是一个项目组是7、8人,在赞同的Team中也是这个规模。
问题6:
WCF在之前的项目中的作用是什么?
我就将之前的项目的架构讲了一下,并且说了WCF是怎么在项目中做服务器、客户端的通讯、回调的讲了一下。
问题7:
Silverlight和WPF的区别是什么?
我首先从微软对Silverlight和WPF的战略定位的角度来分析了Silverlight和WPF的关系,然后又从xaml的共同、xaml的执行机制的不同、执行引擎的不同、Silverlight的受限等方面进行了阐述。
基本把自己知道的Silverlight和WPF相关的东西都说出来了。
问题8:
项目中哪些地方用到了WF?
我的回答:
项目中只是把WF当成了流程执行引擎,并没有用其中的长流程的部分。
(我的言外之意是我对WF的长流程不了解,面试官你就别继续问了)
问题9:
说说工作原理。
我首先说了http的工作原理,然后说了viewstate、aspx、postback等的内部机制。
问题10:
Powershell中怎么调用一个别人写好的Assembly呢?
我回答可以自定义cmdlet,也可以在Powershell中通过LoadAssembly加载Assembly,然后调用Assembly中的类、方法。
我知道面试官希望我回答第二种方式,但是我借这个机会表示自己知道Powershell自定义cmdlet的东西,也相当于给自己加分。
“回答要出乎面试官的意料”
问题11:
用到过AJAX吗?
我回答在如鹏网的“输入标题自动显示相关帖”这个功能用到过AJAX。
问题12:
C++掌握的怎么样?
纯C还能写一些程度,C++长时间没用了,需要熟悉一下才能拾起来。
(我的意思还是“不太熟,别继续问了,问其他我更熟悉的吧!
”)
问题13:
看你的简历说对WindowsSDK比较熟?
熟到什么程度?
我回答:
可以用纯SDK写程序。
面试官说:
SDK可不是.net呀。
我回答:
当然了,我说的SDK就是指的CreateWindow、SetWindowLong那些Win32API。
面试官问:
哪些场合用到了SDK?
我回答:
.net并没有封装所有的Win32的功能,还是有一些功能点是需要使用Win32的,我举了“WPF中Host外部程序”的需求中是怎么使用FindWindow、SetParent等Win32API的。
问题14:
这个职位有可能有时需要到客户现场为客户搭建环境、排除故障等,你能胜任吗?
我就回答了在以前公司做项目、准备演示的时候一直是负责安装硬件、安装OS、安装软件、调试网络等一条龙的,还说了有一次在客户现场调试多台服务器、解决网络故障的故事。
“用真实的案例来说明问题比简单的堆砌形容词更有说服力”
问题15:
对网络管理有了解吗?
比如三层交换机、两层交换机之类的?
我首先说自己和以前公司负责IT运维的同事(其实指的就是咱们如鹏网的朱阳光老师)非常熟悉,经常听他讲到怎么用交换机划分VLan,也听到过三层交换机是怎么回事,不同的数据包在交换机中是怎么流转的,不过我强调这些只是平时了解和自己涉猎的,并没有很系统化的知识。
这句话的意思还是:
我不是一点儿都不知道,但是也不是很精通,所以就别继续问这方面的问题了。
问题16:
用过SharePoint吗?
我回答说对SharePoint没有系统性的接触过。
不过在参加Teched的时候对SharePoint印象非常深,回去也系统了解了一下Sharepoint,知道SharePoint能做门户、文档管理、知识库、讨论组等功能,而且也建议过以前公司的IT部门用SharePoint来代替LotusNotes。
问题17:
用过AD吗?
说自己用到AD的地方并不多,但是知道AD可以实现单点登录,谈了域和工作组的区别。
然后很快的把面试官引导到我熟悉的领域,我说我写过程序连接到AD上进行用户名、密码的验证,就是把AD当成普通的LDAP服务器在用。
这番话顺利的把面试官引导到我熟悉的LDAP上,他就问我“LDAP是什么东西?
”,我就谈了LDAP、关系数据库、树状结构数据、LDAP和AD的关系等我熟悉的东西。
问题18:
如果给你自己的开发能力打分,你打几分?
我回答:
8分。
面试官问“那2分差在哪儿”,我就说虽然自己在大学期间系统自学过计算机专业的课程(趁机把这个提出来,就是一个给自己增加砝码的过程),但是毕竟不是科班毕业的,在复杂的算法方面还是有欠缺的,因此这2分差在这里。
这一关面试问的技术点非常多,本着“懂就懂,不懂就说不懂”的原则,然后在自己不懂的领域也尽可能的说自己了解的一些东西,并且适当的引导面试官到自己熟悉的领域。
新军事变革全面发展始于。
新教师听公开课
武汉牛津英语
教育调查报告小学李笑来学习这里
教学设计与反思免费下载第三轮面试
第三轮面试主要侧重于测试、程序故障排查、程序调优等方面。
面试官一上来就说“我看过你的博客了,写了好多文章啊”。
在这里我建议咱们如鹏网的同学们可以经常写博客,无论是平时学习的感想还是一些技术文章,都可以发表到自己的博客上,以后求职的时候你的博客就是说明你学习历程的证明。
但是一定要注意不要把一些影响自己形象的言论放到博客上,否则很可能给别人造成不好的印象。
接着面试官问“你都知道哪些测试呢?
”,我就把自己知道的白盒测试、黑客测试、单元测试、BVT、压力测试(LoadRunner)、界面自动化测试等做了一下介绍,也说了在以前两家公司的测试流程:
开发人员提交代码、日构建、BVT测试、测试人员测试提交bug、开发人员修正bug、标记bug已处理、测试人员重新测试……。
面试官又出了一道题“有一个只能计算两个数加法的计算器,你会怎么测试它”,我就写下了测试两个普通整数的加法、其中一个数含有非数字字符、包含负数、数值超过整数表示范围、重复计算10W次看计算性能及是否崩溃等。
面试官又问是否用过windbg进行过调试,我就说和一位懂windbg的同事一起使用windbg解决过一个VisualStudio崩溃的bug,并且详细讲了解决的过程,但是自己没经常性的用过windbg。
面试官又说“看你简历还写过SQL方面的书,你对SQL掌握的怎么样?
”,我回答:
一般的SQL问题都能解决。
面试官就给我出了一道题:
有如下的一张表t:
教师教材学生
教学诊断No
book
cnt
1
a
100
2
a
150
1
b
50
2
b
180
No是人的编号(人的编号不止有1、2两个),book为书的名字(一共就a、b两本书),cnt表示这个人手中拥有这本书的数量。
要求写一个SQL对这个SQL语句进行转置,输入如下的表格
No
a
b
1
100
50
2
150
180
刚拿到这道题的时候脑子又一片空白,因为最怕这种有点BT的SQL题,甚至有点想放弃。
不过面试官加了一句“这道题很简单”,估计是面试官在给我定心丸,让我不要紧张。
因此我对自己说“不要否定自己,我一定可以”,因此我稳定了一下情绪,然后尽力回忆写《程序员的SQL金典》这本书中的时候参考的那些书中和这个题类似的问题,思路打开,很快写出了下面的SQL语句:
selectNo,SUM(a)aSUM(b)b
(
selectNo,a,0fromtwherebook=’a’
unionall
selectNo,0,bfromtwherebook=’b’
)groupbyNo
对这段SQL不理解的同学可以参考《程序员的SQL金典》的关于Union、子查询等章节的内容。
面试官又问了碰到数据库运行非常慢的时候怎么解决。
我就回答先使用数据库提供的性能查看工具,找出最耗时的SQL,然后逐个进行优化,直到没有明显异常情况的SQL。
具体的优化手法包括:
使用动态参数而非动态拼字符串的方式进行动态查询;为经常进行查询的字段简历索引、联合索引等;调整WHERE子句中的连接顺序;避免隐式的全表扫描。
面试官又问“怎么测试记事本的saveas功能”,我说了“文件已经存在、文件不存在、用户指定了文件后缀、用户取消了保存动作、大文件的保存、覆盖只读文件、文件名过长”等情况,面试官问“还有其他的吗?
”,我想了一下没想到其他的,就果断的说“想到不其他的了”(如果思考几秒钟没有想到其他了,就果断的说想到不了,千万不能延迟太长时间),然后面试官有补充了“文件名中包含非法字符”等情况。
最后面试官问了“如果一个程序一运行就自动退出,你认为可能的原因是什么,怎么排除故障”。
我就说可能是GDI、内存等资源不足造成的,也可能是程序中指针处理错误(但是这种情况会显示内存错误对话框),如果不是这些原因,那么我会查看程序的运行日志、EventLog等,如果还找不到原因的话就会使用Windbg等工具进行深入的调试,然后又复述了一下和同事一起用Windbg排除VisualStudio自动退出bug的过程。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 人力资源微软面试 经历资料 人力资源 微软 面试 经历 资料