一面(电话面试)
💡
50分钟,本来以为是HR面,还是基础技术面。通过一些问题了解到我对游戏开发的理解,然后主要是MySQL(完全不会,硬是给它推出来了… 沉默真的很尴尬,我:让我想想…能给点提示吗?)最后一个问题我想复杂了,其实人家就是想问最小堆,电面真的很尴尬,老是害怕听不清楚问题。如果说了自己主要会C++似乎就不太会问其他语言的问题,因为毕竟知道你也学不了多深2333今天把自我介绍的内容加长了一些,也表达了自己对公司有一定了解和兴趣,也留给面试官考虑问题的时间,整体感觉和回答方法比昨天面网易要好一些,不过回答情况上还是不太好。
MySQL 索 引 临 时 补 习
https://www.cnblogs.com/williamjie/p/11187470.html
自我介绍
。。。
Q:公司具体在做什么工作?
- 端游、自研引擎
- 客户端组→业务向(核心玩法)| 引擎部分(除了图形渲染之外所有的引擎物理引擎、布料、AI、动画、寻路系统)| 引擎性能优化
- 图形组→引擎图形渲染部分(数学要求+图形学要求)、引擎跨平台
- GamePlay组→游戏逻辑(背包、工会、任务等)C++低、脚本语言Lua高、游戏sense(策划讨论)
- 服务器组→网络消息、数据库、数据存储、全球部署服务器
- 引擎工具组→为游戏引擎开发配套工具链
基础知识
- 你了解我们的游戏是做什么的吗?(战争即时推演)
- 游戏制作一般有什么分工?(客户端、服务器、图形、测试)
- 熟悉C++11吗?(标准回答:使用过一部分特性,没有使用过的不太了解)
- 左值和右值?(不会~x)
- unorder_map和map的区别?(红黑树和哈希表,存储有序和查询速度快)
- unorder_map的缺点?(哈希表是连续空间,红黑树是离散空间,哈希表更占内存)
- vector怎么分配内存空间?(x这个没看过,我只说了自己的想法,超过之后挪移vector的位置并分配两倍空间,直到内存里没有地方存放为止,告诉程序分配新内存失败)
- MySQL如何非主键索引存储?(x不好,提醒了之后才说出了)
B+ Tree,叶子节点存储主键的值。
- MySQL如何存储数据?(我说不太清楚,但如果我做的话我会用B+树,面试官:就是B+树…)
- 联合索引abc中,搜索a的速度和搜索b的速度一样快吗?(x答得不好,只说了不一样,搜索b没有用到索引)
💡对于联合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。
例如索引是key index (a,b,c). 可以支持a 、 a,b 、 a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。
- a值比较大,b值比较小,它们做主键索引时的效率有区别吗? (x答得不行,我说了一句对于长度比较大的数,非叶节点可以不存放全部数据,只存储数据的前几位,他说这是一个办法,但是这道题主要考虑叶节点的大小是一定的,树的高度问题。他问了我一句:“B+树的叶节点一定是数据吗?”给我反应半天)
💡主键字段长度应该尽量小,能使用small integer就不要用integer,否则会占用过多的 index和硬盘空间 (数据量越多,爆增越快),index长度过长,也会影向查找、JOIN 时 index的搜寻性能。
- 在当前帧,如何找到定时事件队列里时间小于它的值?(最小堆!然鹅我还说了一个快排和一个桶排;快排是把当前帧作为关键点sort它两边的数据即可,桶排瞎掰,然后他说其实我想复杂了,不过最后还是把最小堆说了)
- 最小堆是如何实现的?插入、删除操作?(数组、自顶向下删,自底向上插)
*补充:了解AOE网
0 条评论