转帖:飞雪 微软电面总结

2010-05-19 11:42

昨天接到面试官电话,说是第二天面试,他问我第二天什么时候可以,我说随便吧,于是时间定在10点到11点。
他说给我会发个东西到我邮箱然后让我用。
于是用了,发现直接在IE上访问不了,于是用了sogou,说是要下载livemeeting。
点那个下载链接,好几次都跳转到bing去了,最后一次成功。安装后,发现访问不了。
于是用web版的,发现没动静,看了一下requirement,可能是操作系统吧。
于是开了一个虚拟机,用windowsXP,终于正常了。
然后试麦克风,搞了N久才搞好,于是准备第二天面。

到了10点,web开始连接,结果杯具地发现,web下载了一下客户端下来,而明显没有代理的话
是访问不了的,莫非我又要杯具了?后来找同学借宽带,结果同学早就不用宽带了。
搞了大半天,准备打电话过去,但是那边就打电话过来了。
说清楚情况之后,我说可以去网吧,或者等中午找同学借用宽带,不过最后他还是说直接用电
话面吧,但是直接用电话的话不能写代码了。

面试的过程是用中文,面试的开始还是自我介绍。
首先说了近几年的学习,然后介绍了计算机入门,学习计算机,最后到现在。
在过程中,提到了虚函数,他让我介绍了一下虚函数的实现,我也说了一下。最后在多继承,
虚基类的时候还需要一些thunk技术。
然后猥琐地把简历里面的东西说了一下。

接着,第一个问题是memory leak detect。
首先搞清楚了是什么memory leak detect:
比如有动态检查,比如有静态地把代码写入,不过这里说的是第三种,写工具对源文件进行静
态检查。
他提的是对C,C++,C#等文件进行检查,C#我不大会,而知道C++太复杂,于是就把范围限定到
C吧,只考虑标准的内存分配回收。
我认为首先的问题是名字和实体的关系,我提了一下,他问了一下我怎么维护这个关系。
然后是name mangling问题,确保名字的唯一性,我也提了一下,比如加入文件名,函数名,
花括号leve等,还要注意一下名字长短等。
接着是检查的问题,我觉得很复杂,比如有一些是在运行时的条件释放,循环体等问题,我说
很多都只能给出警告。接着他问我如何确保给出报错,程序那样跑下来,确保没有回收或者说
回收多次,我一开始说没有经过一些选择或者迭代语句,后来又加上了在选择语句和迭代语句
中的如何确保。后来忽然想到一个问题:free(&*ptr),这种是匿名的。于是我提到对名字表
进行分类:始终指向这个对象的,临时指向这个对象的,匿名的。

中间貌似还问了一个我关于struct和class的问题,这个我很肯定地回答了,顺便指出了在模板
的模板参数中的不可替代性。另外问我struct可不可以继承,我也肯定地回答了是。

第二个问题是大数阶乘。
我搞清楚了数据范围,大概就几万吧,我加了一个上限,不超过5万。
于是可以直接用朴素乘法,我描述了一下算法(本来应该写代码的),接着说了一下输出的时候
要注意的问题。
我用的是10000进制,首先是数组开多大的问题,直接用stirling公式,然后取对数估算,再加上
进制处理。
接着他问优化,问了好几次,我大概做了下面几种:
1.末尾零的不处理。
2.事先乘出不大的大数,然后进行计算。
3.事先乘出两个大的大数,然后用FFT。
他又问算法瓶颈,我首先回答的是这种朴素乘法的问题,他也说这个很明显的。
注意到其中有一次乘法,一次除法,一次取余。
于是在这个除法和取余上谈了一下,貌似后来又问我继续优化,还用算法特点:
1.就地计算,输入和输出是同一个地方。
2.在上面的分块计算中是可以并行的。
3.可以事先进行因子分解,比如分解出来的2^x*5^y是很好计算的。


整个过程感觉很愉快,感觉并没有事先准备要问的东西,而是和你谈,然后找到问题,和你探讨,
一步步地深入。不一定要做出所谓的圆满的回答,只要有思想就行。

大数阶乘那个写过很多次,闭着眼睛都能写,不过除了末尾零的优化,其它的我还真没仔细考虑过。
和他谈的时候才一边谈一边想到的。

话说中途突然没声音了,我还以为是没话费了,去查了一下话费。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值