金科文化面试

        现在程序员都这么不值钱了么。招一个有游戏经验,而且相同框架的程序猿,都不高出30%(也可能是我太菜了)。生活太难,不加薪,股市也不赚,程序员该何去何从。

     言归正传。在面试的时候,主程的确很吊,对我单方面碾压。碰到了几个问题。简单记录。

 

1.你们服务器redis是用来做什么的。

       排行榜之类的,具体不是我做的,我不太清楚(面试官应该是想问我关于redis的东西,奈何我没用过)。

2.你们服务器全局邮件是怎么实现的(给每个注册的玩家发一封邮件)。

       1*1.1 (level-1)+(level%5), (level-1)+(level%5)代表次方。

3.现在要你做一个在线活动,你怎么做。

       我之前的做法是每个agent会开一个定时器来计时,面试官要求不用定时器,则可以在登陆的时候记录时间,让客户端自己倒计时,时间够了则向服务端请求,服务端通过判断请求时间与登陆时间的间隔来判断是否可以领取,这样则不用定时器。

4.现在有一个剑士,从1级升到2级需要100的经验,2级升到3级需要之前升级经验的110%,之后都这样,然后每5级再加10%的经验(比如3级到4级要100经验,则4级到5级需要100*110%*110%),写一条公式,传入等级,返回需要的经验。

       我没有写出公式(果然学好数据即可,别的根本不用学),而是用循环写了一个函数,面试的时候怕他等太久了,这道题难点在于每五级的处理。最后面试官说你用循环也可以,但是效率会慢一点,可以分两位维度考虑,一般每级的经验另外算,每五级的经验另外算。

5.map是怎么实现的。

        我没能回答,因为真没了解过,回来后查询到得到结果,http://blog.csdn.net/a29562268/article/details/54604572 linux map结构,采用linux红黑树做数据的储存结构,红黑树绑定适配器达到数据旋转递增或者插入的保存效果(还没看,以后再看,虽然不知道以后会不会看)。

6.lua的table有哪些特性。

         table的负值是浅拷贝,table中还有一些机制,比如垃圾回收,原表,通过原表还能够实现类与对象的操作。

7.说说你对lua原表的理解。

         原表其实是lua表的方法表,设置原表后,就相当于关联了这个方法表,当在表中查找查找key查找不到时,会查找原表(就是对应的原方法),如果原表中原方法对应的值是值,则返回值,如果是方法则返回方法,如果是表则返回这张表对应的key。

7.vector 和 list的区别。

         vector的内存是连续的,对于存取,查找的相关操作效率很高,但是因为是连续的内存,在中间进行插入和删除的时候,会涉及到内存的拷贝、在内存不够的时候,也会重新申请一个当前2倍大小的内存,并进行内存的拷贝,这些都会影响vector的效率。

         list是用双向链表实现的,因为空间是非连续的,查找,存取效率没有vector高,但是能够很好的支持任意地方的插入和删除

8.还问了我们框架上的一些问题,例如我们的多个服务器是怎么通信的、消息怎么转发、玩家是怎么登陆的、当多条消息同时要求修改玩家财富的时候怎么办。

 

       面试的之后的体验就是,还是得重视自己的基础,我已经一年没用C++了,如果做服务器开发C++还是很重要的,另外要对自己现在使用的框架各个方面都要非常熟悉,再熟悉一些主流的数据库。面试最后是通过了,但是并没有能加多少薪水,最后放弃。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章