迅雷C++工程师社招面经
一面:
先做题,共五页,不过题量不算太多,因为其中有一页只有两个问答题,而最后一页也只是一道附加题。题目主要集中在另外三张卷子上了。考题的范围比较广,Windows方面包括了SDK、MFC、GDI相关的知识点,C++方面涉及了STL和对象模型,还有几道COM方面的题。SDK方面的题量比较多,第一张上面几乎全是,我把能想起的题列出几道:
1、在WM_TIMER消息处理中弹出模态对话框会发生什么?
2、窗口子类化是什么?
3、PostMessage()和SendMessage()的区别?
4、简单写一下使用SDK创建窗口的过程。
5、WM_PAINT和WM_ERASEBKGND有什么区别?
6. MFC方面考了一道比较难的:解释消息反射机制的原理,MFC或WTL是如何实现消息反射的?
7. GDI考了一道“DDB和DIB的区别“(答案是设备相关位图和设备无关位图,可我答反了 ),还有“什么是DIB SECTION?“另外一道题是“为什么会出现GDI泄漏,应该如何避免?“
8. C++方面关于STL的考了“STL算法的remove方法和erase方法的区别”和“hash_map和map的区别,以及如何选用?”,对象模型方面考了“构造函数里能否调用虚成员方法?”和“C++如何实现运行时类型信息”等 。
9. COM方面则考的不深,第一题是“IUnknow有哪几个接口,分别有什么用?“,另一道好像是”COM连接点事件相比回调函数(Callback)的优点是什么?“,还有几道实在是记不起来了。
10. 最后的附加题是个黑盒测试的,大意是这样的:“你的一个同事编写了一个my_strcat()函数,功能和标准库的strcat()的完全一样,你如何测试这个my_strcat()函数?”
复试:
复试的内容包括:机试、主管面试、HR面试。
1. 一开始是道机试题:扩展MFC里的标准按钮,使之支持鼠标悬浮、离开、按下及不可用四种状态,并支持运行时更换皮肤,皮肤图片能够适应按钮的大小,边缘要支持类似VISTA按钮的阴影效果等,可上网查资料,限时三个小时。
2. 问了我以前参与的项目,还着重问了我在学校时做的NEO SDK,比如算线的算法,曲线算法,矢量文字显示、反走样等等,最后问我对迅雷有没有什么疑问,我之前有在网上查过一些有关迅雷的评论,针对项目流程、加班等情况问了几个问题。
3. 聊职场规划,拿迅雷和腾讯打比方,问在相同的待遇情况下我更愿意去哪一家,为什么选择迅雷,如果腾迅给的待遇更高,而迅雷给期权上市后可以行使你怎么选,有没有自己创业的想法等等等等。
#迅雷##社招##C++工程师##面经#