西山居面试之旅 - 后台开发

  不想看流水账,想直接看问题的,请直接跳到最下面。 

  时间过得真快,回想一下,原来已经面试完10+天了。感觉最近面试很多,所以一直没有写面经。但是西山居是值得一写的。哈哈。

  这是我人生的第一个准offer,至于为什么叫“准”offer,后文再说。

  最开始,我是从官网看到了西山居的校招,于是就13号跑到中大看宣讲会,并且当场笔试了, 17号收到电话,18号到珠海面试。

  面试时间是中秋节前一天,我们从大学城北出发,40+人左右,坐西山居的车到珠海总部面试。8点到11点,三个小时的车程。。

  面试前一天没睡好,一直在狂复习,才睡了四个小时,三个小时的车程同样也是在看书。

  这是我第一次来珠海。来到这里,空气明显感觉跟广州的不一样(可能又部分是心理感觉),感觉很舒服。

  到了西山居的楼层,感觉环境真的很好啊,大公司应该都这环境吧。想拍下来,,听了hr的话,就没有拍照了。

  还没轮到我,就到了中午饭时间,金山的饭堂都是自助的,环境也很不错,我妥妥的拿了四个菜、一个汤、一块菠萝,哈哈。

  饭后,就准备几轮面试了,跟我坐在一起的还有四五个人,大家聊聊天还不错(三面以后才坑爹的发现基本都是华工中大的研究生,我就一个广工小本),我一共面了四轮,最后一轮是CTO面。

  因为过了很久了,每一面具体什么问题就不一一陈述了,下面会把我记得的问题全部陈列出来。

  针对前面三轮,问题大同小异:问项目、问技术、以及知识面考察。

  一面的面试官很不错,聊得挺合的。主要是先问项目、然后问一些C++的基础,如虚函数的底层实现(其实这个几乎前三面都问过)、printf是怎么实现的(变长参数)、了解过哪些设计模式,举几个例子?、有没有全面地看过C++相关书籍、有没有试过在Linux上运行代码等等,另外还回问有没有看过除技术以外的书或者小说?(果然是做游戏的,课外的东西要有了解,我把我看过的名著都说了出来。) 最后还会有跟宿舍的人相处如何、为什么不考研等问题。

  一面面完以后感觉很好,面试官也夸了我一下知识面还可以。最后我询问了几个问题,面试官说做游戏用到的知识会比较广,可以自己学习一下python、Lua等,还有要看的书:UNIX环境高级编程、UNIX网络编程卷一二、Windows核心编程。当然,还要学好操作系统、计算机网络。

  一面出来才没几分钟,hr就叫我去面二面了,紧张啊。

  二面相对来说严格很多,面试的问题有重复,如项目内容。二面问的比较多的是数据结构,如STL中的Vector是怎样管理内存的?(我说了会自动申请一段固定内存,不够再扩展),然后接着问怎样扩展vector中的内存?连续的吗?(我答了可以用relloc函数来实现,不会改变原有的值);map和set是用什么数据结构实现的?(我答了红黑树,但是具体的没说清楚);比较有意思的环节是,面试官叫我设计雷电这个游戏,子弹有不同种类,该怎么处理?用什么数据结构?该怎么管理子弹?(子弹种类方面,我答了用简单工程模式来生成不同种类的子弹;数据结构方面,我当时答了用vector来保存基类的指针、可以用观察者模式来实现。) 还有飞机左右移动的时候,怎样处理子弹?这个问题问了好久,最终我还没答出为什么用vector实现,面完以后,瞬间想到:最前面的子弹最先碰到物体,最先应该作出处理,用队列或者链表实现不更好么 Orz。。。可惜没有后悔药了。 后面还问了HashMap的实现和什么是存储过程

  三面的时候,感觉面试官是总监级别的,同样是以项目开头,然后注重问的是基础。如虚函数实现(老掉牙)、编译成功而链接不成功可能是什么原因?(我答了有声明、没实现)、说说Windows消息机制SenMessage和PostMessage的区别、进程通信(我答了几种方式后,面试官告诉我其实我说的这几种通信方式底层实现是差不多一样的,你知道是怎样做的吗? 我答了全局变量?跪了Orz。。但他说有点类似...等等,好多记不清楚了。最后“该答的都答上来了,还不错”。

  没多久,就被hr叫到楼下,等CTO面了,此时此刻,我才发现跟我一起那几个都是研究生啊。最后技术类面到CTO的只有三人,另外两人应该都是华工研究生,其中一个应该是搞ACM的。剩下了三个人,我感觉如释重负,好像难关都过的七七八八了。

  CTO是陈总,hr叫他飞舟。一上来先问项目,而且问的明显比前三人更加细致,感觉说到哪里,他就懂到哪里,好厉害。最后说到PE文件的时候,我无意中告诉了陈总我认识的一个同学做这个的,然后陈总可能也是随便的说了一句“叫他来吧。”(事后我告诉了我同学,然后他到微博上直接找到了陈总。。然后,,然后就应该是多了一次面试机会。)

  基本上就差不多了,CTO面给我感觉还好吧,但是没想到CTO面才是鬼门关,我卡在这里了。。

  一个星期后收到了hr的电话(25号),刚接的时候我就猜到是西山居了,兴奋的就要爆血管了!!然后,hr给我解释前面几位面试官都觉得我很不错,但是可能CTO考虑比较全面,说我技术还差那么一点点,后台开发是上w的,我的水平在八九k、、、被通知获得了测试开发岗的offer,问我有木有问题。测试开发组也非常希望我到他们那边,说其实那边要的人也很优秀的,而且还说测试开发可以看到更多不同的源代码。。心情是百感交集啊,蛋蛋的忧伤。我一下子接受不了这个现实,我就跟hr说有点突然,要给我时间考虑一下,hr也叫我考虑好了联系她,就考虑到了现在了。。

  话说回来,我一直提到的这位hr,人真的很好。不方便透露姓名了,我就叫婷姐吧。其实我觉得婷姐真的很好,而且很想交到这位朋友(虽然感觉不太现实,也不敢以朋友相称,好吧,是值得尊敬的长辈)。 同学都叫我先把offer先收了,但是我确实有点犹豫,毕竟不是我最初的选择,我好怕收了offer,然后毁了offer,会进西山居的黑名单,也怕搞的这位婷姐不好做了,同时腾讯这个时候也给我发了二面的通知,我看到这边也有点希望,所以我现在都还没有回复。所以才叫“准”offer。希望我“考虑”这么久婷姐可以理解,如果西山居告诉我进了后台开发,哪怕薪酬再低一点,是我喜欢的,我二话不说就去了。。但是...哎,我也不能挑太多了,感觉自己能获得这样一个机会已经是非常不容易了。

  腾讯的HR面也完了,国庆回来后才有通知,希望西山居的能拖一下,看看tx的怎么样再说吧。话说腾讯的我也好怕啊,hr面不知道刷不刷人的,怕怕。这将是我过的最漫长的一个国庆。

  无论如何,我都非常感谢西山居,给我这样一次机会,我的信心也被西山居锻炼出来了。我非常喜欢西山居,我会永远铭记西山居于心中的!!!

 

  以下是部分问题集:

说说你的项目内容
linux有没有写过代码运行试过?
除了项目内容有没做过其他软件?
yum指令会吗?
有看过汇编吗?
虚函数怎么实现的?
虚函数表是放在内存哪个位置的?在每一个对象中吗?
编译成功、链接不成功可能是什么情况? 有声明,没实现。
设计模式 、了解哪些模式? 观察者模式
C++/C#/Java都是面向对象,他们之间有什么区别?
有看哪些书没?专业以外的呢? (答了几本,专业以外的,我把三国演义、水浒传、巴黎圣母院、海底两万里等都扯上了)

雷电中子弹应该怎么管理?用到STL中的什么数据结构?  时候感觉可能是在说队列实现,当时我扯到了观察者模式去了。回想起来真是扯淡。
STL中vector底层内存管理是怎样的?  我答了预先开辟一段内存,不够用时用realloc函数继续分配内存

听过HashMap吗?(听过,但不太了解)说说哈希表是怎样实现的?(一步一步引导你搞定hash_map,我反应比较迟钝,竟然没想到是在引导我弄出hashmap,不过最终还是说出了一种方案。)

用过那个版本的数据库?说说存储过程是什么?

 

Windows的消息机制?(答了消息队列、消息循环等)
SendMessage和PostMessage的区别?
假如要SendMessage到其他进程,要怎样做?
进程通信有哪几种方式?

 

要补习的:
复习操作系统、计算机网络;
学习一门脚本,入Lua、Python等;
看书《Windows核心编程》、《Unix网络编程》、《Unix环境高级编程》

 

 

posted @ 2013-09-29 21:07  SunboyL  阅读(1267)  评论(0编辑  收藏  举报