游戏工程师面试经历

游戏相关

1、登陆流程校验

     ①账号验证(HTTP请求);

     ②与服务器建立连接(Socket);

     ③校验CDN服是否需要更新;

     ④加载游戏资源,进入游戏;

2、缓存

     缓存的意思就是数据库表的数据会在缓存里存一份。数据表的数据是存在硬盘,缓存的数据是存在内存的。缓存读起来更快。第一次读如果没有的话就会去访问数据库的数据并把数据写入缓存。

     游戏开发中,所有被读到的数据都会在内存存一份。当数据发生变化时,先更新缓存的数据,然后标注这个数据被改过,当一定时间过后(定时),统一把标注修改的数据更新到数据库表中。

     过程中碰到的问题:游戏宕机,缓存修改的数据未修改到数据表;数据还没到缓存,战斗服挂了;解决方案:补偿;

3、服务器分配

     我们的游戏一共有12个服务器,其中2个服为登录服。1个服为缓存服,专门缓存玩家数据,包括角色信息、道具信息、经济等。一个服务器可以容纳2500人,当超过人数时会换服。

专项测试相关

1、性能测试

①CPU:主要与DrawCall相关。

DrawCall定义:每次引擎准备好数据并通知GPU的过程称为一次DrawCall。每渲染一次物体,CPU都会调用一次底层图形接口。

DrawCall优化:使用DrawCall Batching,描绘调用批处理;把纹理打包成图集,减少材质的使用;尽量少的使用反光、阴影;

②GPU:

优化:减少顶点数量,简化计算负责度;压缩图片,以适应显存带宽。

③内存:

内存分配:Unity3D内部需要的内存,包括资源及引擎内部逻辑需要的内存;Mono托管内存;程序自己引入的DLL内存;

内存泄露:用户加载后的资源进行储存,更换场景时,没有被清除。

资源冗余:内存中存在两份甚至多份同样的资源。可能原因:打包问题、实例化问题。

C++相关

1、多态

字面意思“多种形态”,即一个接口,多种实现。

2、static用法

3、虚函数表

Shell相关

Python相关

1、概念问题

tuple(元祖):元祖不可变。

list(列表):处理一组有序项目的数据结构。添加(append)、删除(del)、排序(sort)。

dict(字典):键、值。

set(集合):无序不重复元素集。

数据结构算法相关

1、递归计算1+2+3+...+n的和

1 int sum(int n) {
2     if (n == 1){
3         return n;
4     }
5     else {
6         return n + sum(n-1);
7     }
8 }

 

综合相关

1、假设你作为测试主管,怎样进行任务分配

确定工作内容(功能测试+专项测试)——讨论和评估工作内容——制定测试计划——分配工作内容——及时监督把控。

 

posted @ 2018-05-04 09:49  还我酸奶  阅读(229)  评论(0编辑  收藏  举报